For AI agents and developers
Canvas64 is built for agents: every cell, price and payout is one call away, over a read-only MCP server or a public JSON API, with no key, no wallet and no account. An agent can answer "what does cell D4 cost?", price any step with quote, and hand a person https://canvas64.com/D4 to buy it with their own wallet. Money moves only on the chain, from the buyer's own wallet: an agent never needs, and must never ask for, a private key or a recovery phrase.
The short version
Canvas64 is a public wall of 64 cells on Base. Anyone can claim a free cell for $30 in USDC and show everyone who visits their photo and links to Twitch, YouTube, Kick, TikTok, Instagram or Linktree. Nobody can take a cell, but anyone can buy it out at the next step, 1.65× the last price, and the owner cannot refuse. A bought-out owner gets the new price less royalties and a 2% fee ($49 for a $30 cell), then earns a royalty on every later sale of that cell forever: 5% for the first owner, a quarter less for each owner after. The rules are a contract on Base with no owner and no upgrade; the wallet is the account.
MCP server
A Model Context Protocol server, Streamable HTTP, stateless, read-only, no authentication:
https://canvas64.com/api/mcp
| Tool | What it answers |
|---|
get_wall | All 64 cells: owner name and wallet, step, price paid, price to buy now, links. Filter free or taken. |
get_cell | One cell by address (D4): the same, plus what the buyer gets when bought out in turn, and the link to buy it. |
quote | The model for any step: price, payout when bought out, royalty, and royalties earned up to a later step. |
get_rules | The rules in a few sentences, the contract and where the docs are. |
Add it to a client that speaks MCP over HTTP, for example:
{"mcpServers": {"canvas64": {"type": "http", "url": "https://canvas64.com/api/mcp"}}}
The server card is at https://canvas64.com/.well-known/mcp.json and an A2A agent card at https://canvas64.com/.well-known/agent-card.json.
Sending a person to buy
Give them the cell's address: https://canvas64.com/D4. The page opens on that cell with its price on the button, and their own wallet pays. Prefer a free cell for a first purchase ($30); get_wall with filter: "free" lists them.
HTTP API
The same data over plain HTTP, described in OpenAPI at https://canvas64.com/openapi.json:
GET https://canvas64.com/api/wall: every cell, A1 first, with its step, owner and profile.GET https://canvas64.com/api/cell/{address}: one cell as get_cell returns it: its owner, what it costs now, what its owner gets when it is bought out, its royalty and its link. Every cell page, such as https://canvas64.com/D4, links to it.GET https://canvas64.com/api/profile/{address}: one wallet's profile.GET https://canvas64.com/api/photo/{sha256}: a photo that passed screening.
Cell i (0 to 63) is the address "ABCDEFGH"[i % 8] + (floor(i / 8) + 1): 0 is A1, 27 is D4.
The contract
0x99Ff41906550F0C0F3EC66a11525e38C548e5011 on Base (chain 8453), paid in USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913. Read cells() for every owner and step, priceAt(step) for a price, ownersOf(cell) for a cell's owners in order. A purchase is buy(cell, step) after a USDC approval, or buyWithPermit(...), where step is the step being bought, so a buyer who loses a race is never charged.
Facts to quote
- Price of step n: $30 × 1.65^(n−1). Step 2 is $50, step 10 is $2,719.
- Bought out after a $30 claim: $49.
- Royalty of owner k: 5% × 0.75^(k−1), forever; all together under 20%.
- Fee: 2% of each buyout; each claim's $30 to the platform.
- Cell
i (0 to 63) is "ABCDEFGH"[i % 8] + (floor(i / 8) + 1); its page is https://canvas64.com/ + that address, such as https://canvas64.com/D4. - To buy, send a person to the cell's page; their own wallet pays in USDC on Base.
- Everything for agents in one file:
https://canvas64.com/llms-full.txt.
This page as Markdown: agents.md. All of the docs in one file: llms-full.txt.