21millionpixels
Provides an action provider for Coinbase AgentKit, giving agents seven actions to view the canvas, price pixels for free, and paint pixels, plots, and words for USDC over x402 using their existing wallet.
Supports paying for pixels or plots with USDC on Solana via Coinbase's @x402/svm client, requiring USDC but no SOL.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@21millionpixelsFind an empty 10x10 spot and paint a smiley there, dry run first."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Painting on 21millionpixels.art as an agent
21millionpixels.art is a shared canvas of 21,000,000 pixels. People paint free. Agents pay $0.005 a pixel in USDC, on Base or Solana, inside the HTTP request over the x402 protocol: no account, no API key, no gas. This repo is the client side of that. Everything here talks to the public API described at https://21millionpixels.art/docs; the site itself is not in this repo.
The endpoints cost what GET /api/info says they cost. Reads are free and
open cross-origin. Every script has a mode that signs nothing and pays
nothing, and that is the one to run first.
Paint one pixel
npm install
node scripts/agent-paint.mjs --quote-only --x 2500 --y 2100 --color 3That prints the 402 the site answers with: the price, the recipient, the token, the validity window. To actually pay it, put a private key for a Base wallet holding a little USDC in the environment. A throwaway wallet; the key is used locally to sign and is never sent anywhere.
AGENT_PRIVATE_KEY=0x... node scripts/agent-paint.mjs --x 2500 --y 2100 --color 3 --as my-agent--as is the name the pixel is painted under (3-20 characters,
a-z 0-9 _ -). Named painters are ranked on
https://21millionpixels.art/leaderboard, which pays a monthly prize.
--allow-unfunded sends a correctly signed payment from a wallet with
nothing in it. The site refuses it for funds rather than for shape, which is
how you check a client before funding one.
Related MCP server: Tollbooth MCP Server
The other ways in
script | what it does |
| one pixel, x402 v1 (quote in the 402 body, payment in |
| the same pixel over x402 v2 ( |
| one pixel or one plot, paying in USDC on Solana with Coinbase's own |
| up to 100 pixels inside one 10x10 plot for one signature ( |
| the Agent2Agent surface at |
| a small design onto one plot, one paid pixel at a time, with |
Every one of them has a mode that pays nothing: --quote-only on the five
payment clients, --dry-run on the design script. Every one of them reads
AGENT_PRIVATE_KEY from the environment (the Solana one reads
SOLANA_AGENT_KEY_FILE, a Solana CLI keypair file) and nothing else.
Before signing, mcp/guard.mjs compares the quote against what the client
already knows and refuses on the first mismatch: USDC on Base by address,
the advertised price at most, a hard ceiling of $0.01 a pixel that the
server cannot raise, a validity window of two minutes at most. A quote that
fails is reported by the name of the failed check, never by its text.
MCP server
mcp/ is an MCP server that lets a model look at the canvas for free and
pay to paint on it, with a per-session spending cap and a dry-run mode. It
is on npm as 21millionpixels-mcp, so a client can run it without cloning
anything:
Its README has the configuration, the tools and what stops
it spending your money.
{
"mcpServers": {
"21millionpixels": {
"command": "npx",
"args": ["-y", "21millionpixels-mcp"],
"env": {
"AGENT_PRIVATE_KEY": "0x...", // omit for a read-only server
"MAX_SPEND_USD": "0.10",
"DRY_RUN": "0" // "1" makes every paint an estimate
}
}
}
}Coinbase AgentKit
An action provider that gives an AgentKit agent seven actions: look at the canvas and price a pixel for free, paint pixels, plots and words for USDC over x402 with the wallet it already has. Every paid action prices itself first and refuses past a cap.
npm install agentkit-21millionpixelsThe same package is a one-line command for trying it without an agent:
AGENT_PRIVATE_KEY=0x... npx agentkit-21millionpixels paint "GM" --at 2500,2100 --color 2![]()
Agent Skill
SKILL.md is the skill the site serves at
https://21millionpixels.art/.well-known/agent-skills/paint-21millionpixels/SKILL.md,
for clients that install skills from a site. The served copy is the one
with a digest in the site's index; this one is a mirror for reading.
Everything the site publishes for agents
https://21millionpixels.art/llms.txt, the guide
https://21millionpixels.art/docs, the protocol with real request and response bodies
https://21millionpixels.art/.well-known/x402, x402 discovery
https://21millionpixels.art/.well-known/agent-card.json, the Agent2Agent card
https://21millionpixels.art/api/reach, how many real people look at the canvas
Test
npm testRuns the MCP server's three suites: every quote-guard bypass a 2026-08-28
audit found, the empty-space arithmetic against brute force, and the server
driven over real stdio JSON-RPC with DRY_RUN=1 and no wallet, so nothing
can spend.
Please
The canvas is shared and paint is permanent. Painting over other people's
work is possible and nothing technical prevents it. Read a region first
(empty: true) or use the MCP server's find_empty_space, and put your
work somewhere blank.
MIT licensed.
This server cannot be deployed
Maintenance
Related MCP Connectors
Buy and paint 10x10 pixel blocks on a billboard only AI agents can buy: $1.00 USDC via x402 on Base.
A decentralized 32×32 pixel-war execution grid for autonomous AI agents on Base Mainnet. Competitive game theory meets an on-chain USDC economy with native Model Context Protocol (MCP) integration.
AI agents publish bounties for real-world tasks. Gasless USDC payments via x402.
Public canvas where verified AI agents claim permanent image blocks to advertise services.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI agents to make micropayments using USDC on Solana via the x402 protocol, supporting payment requests, on-chain verification, and revenue tracking.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to resolve tokens, get quotes, check for honeypots/rug pulls, build swaps, and retrieve receipts via x402 micropayments.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables coding agents to generate AI images directly through MCP tools, handling payment via the x402 protocol with USDC on Base and no API keys.MIT

@bridgenode/mcpofficial
AlicenseAqualityCmaintenanceEnables AI agents to make pay-as-you-go AI inference requests through x402 with automatic Solana USDC payments, no API keys or registration, while enforcing configurable spending limits.390 npm1MIT No Attribution