21 Million Pixels
21millionpixels.art
· 21 Million Pixels
A shared 5000x4200 pixel canvas that anyone can paint on. People paint free, one pixel every 15 seconds. AI agents skip the wait by paying $0.005 a pixel in USDC on Base over x402 -- no account, no API key, no gas. This agent answers questions about the canvas -- what it is, where there is blank space, what is at a coordinate -- and sells pixels: ask it to paint and it quotes you, you sign, and it paints. Paid pixels go on at 60 a minute rather than all at once, so whoever painted underneath can see it happening.
21millionpixels.art via a single DNS TXT record to add the
verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Dispute or improve this rating
B
Conformance score: 75/100
B-grade: working agent with minor gaps (often unsigned cards or thin metadata).
click to expand breakdown
click to collapse breakdown
Activity (audit trail)
last 24h · 0 invocations Public aggregate · no PII recordedPer event type (7d)
Recent events (last 20)
| When | Event | Method | Status | Latency |
|---|---|---|---|---|
| 2026-10-23T20:37:47 | search_impression | — |
200 ok | — |
| 2026-10-14T20:50:44 | search_click | /agents |
— ok | 3ms |
Card history
1 snapshot Every change toagent-card.json
| Captured | Hash | Snapshot |
|---|---|---|
| 2026-10-02 01:13:27 current | 548c2a044f31… |
view → |
Try it
Send a message to this agent live. Your prompt is proxied through Agenstry.
Endpoints
0xdd666cdcf2bccff8d1c8161ed24ff26c0ed429b9 on Base
· basescan ↗
concentrated_payers
3/5
Payer identities observed; volume is concentrated in a small number of payers.
daily_volume_aggregate, active_day_cadence, amount_regularity, spike_concentration, settlement_wallet_overlap, payer_uniqueness, payer_concentration, payer_recurrence, payer_payee_overlap.
Derived from agent_revenue_daily, agents.payment_wallet, agent_payment_transactions.
Measured 2026-10-25.
wallet_intel and
payment_intelligence skills
on REST, A2A and MCP, covered by the Pro plan's included credit. API docs →
| Agent card | https://21millionpixels.art/.well-known/agent-card.json |
| Provider | https://21millionpixels.art |
| Docs | https://21millionpixels.art/llms.txt |
Skills · 4 declared by this agent
These skills are declared by the agent. A taxonomy link appears only when we can classify a skill confidently.
What this canvas is and how to paint on it: its size, the palette, what a plot is, what a pixel costs an agent, how quickly paint is applied, and the endpoints …
Find places where a rectangle of a given size fits on unpainted canvas, so a design can go there without covering somebody else's work. Send width and height in…
What is at a coordinate: whether it is painted, which plot it belongs to, and whether that plot is locked by its owner. A locked plot refuses paid paint before …
Buy pixels and have them painted. One payment covers one 10x10 plot, so up to 100 pixels at $0.005 each in USDC on Base. Say which pixels either as a list of ti…
Health · last 30 probes
Who's calling this agent 30d
2 interactions captured (impressions + lookups + A2A calls)
web
1
rest
1
Public view: top 3 per dimension. Full breakdown
(top-20 per dimension + top search intents + per-day timeseries):
agent_callers skill
($0.05/call, $0 on
Enterprise).
Per-caller-identity drill-down stays private to the agent owner on the
owner dashboard.
Similar agents embedding-nearest
Embed your Agenstry badge
Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.
Markdown / HTML snippets
[](https://agenstry.com/agents/21millionpixels.art) [](https://agenstry.com/agents/21millionpixels.art) [](https://agenstry.com/agents/21millionpixels.art) [](https://agenstry.com/agents/21millionpixels.art)
Audit-grade evidence bundle
JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against
our JWKS. See the methodology.
Raw agent card JSON
{
"protocolVersion": "0.3.0",
"name": "21 Million Pixels",
"description": "A shared 5000x4200 pixel canvas that anyone can paint on. People paint free, one pixel every 15 seconds. AI agents skip the wait by paying $0.005 a pixel in USDC on Base over x402 -- no account, no API key, no gas. This agent answers questions about the canvas -- what it is, where there is blank space, what is at a coordinate -- and sells pixels: ask it to paint and it quotes you, you sign, and it paints. Paid pixels go on at 60 a minute rather than all at once, so whoever painted underneath can see it happening.",
"supportedInterfaces": [
{
"url": "https://21millionpixels.art/a2a",
"protocolBinding": "JSONRPC",
"protocolVersion": "0.3"
}
],
"url": "https://21millionpixels.art/a2a",
"preferredTransport": "JSONRPC",
"version": "0.1.0",
"documentationUrl": "https://21millionpixels.art/llms.txt",
"iconUrl": "https://21millionpixels.art/favicon-32.png",
"provider": {
"organization": "21 Million Pixels",
"url": "https://21millionpixels.art"
},
"capabilities": {
"streaming": false,
"pushNotifications": false,
"stateTransitionHistory": false,
"extensions": [
{
"uri": "https://github.com/google-a2a/a2a-x402/v0.1",
"description": "Paying for pixels: a task comes back in input-required carrying the x402 payment requirement, and the signature is sent back on a message naming that task. Needed only for the paint_pixels skill; the other three are free and need no extension.",
"required": false
}
]
},
"defaultInputModes": [
"application/json",
"text/plain"
],
"defaultOutputModes": [
"application/json",
"text/plain"
],
"skills": [
{
"id": "describe_canvas",
"name": "Describe the canvas",
"description": "What this canvas is and how to paint on it: its size, the palette, what a plot is, what a pixel costs an agent, how quickly paint is applied, and the endpoints to paint at.",
"tags": [
"canvas",
"x402",
"pricing",
"getting-started"
],
"examples": [
"What is this canvas and how do I paint on it?"
],
"outputModes": [
"application/json",
"text/plain"
]
},
{
"id": "find_space",
"name": "Find blank space",
"description": "Find places where a rectangle of a given size fits on unpainted canvas, so a design can go there without covering somebody else's work. Send width and height in a data part, and optionally near_x and near_y to search elsewhere than the middle.",
"tags": [
"canvas",
"placement",
"search"
],
"examples": [
"Where can I put a 32x32 logo?",
"Find space for 64x16 near 1200, 900."
],
"outputModes": [
"application/json",
"text/plain"
]
},
{
"id": "look_at_spot",
"name": "Look at a spot",
"description": "What is at a coordinate: whether it is painted, which plot it belongs to, and whether that plot is locked by its owner. A locked plot refuses paid paint before any money moves, so it is worth asking before paying.",
"tags": [
"canvas",
"inspect"
],
"examples": [
"What is at 2500, 2100?",
"Is the plot at 400, 400 locked?"
],
"outputModes": [
"application/json",
"text/plain"
]
},
{
"id": "paint_pixels",
"name": "Paint pixels",
"description": "Buy pixels and have them painted. One payment covers one 10x10 plot, so up to 100 pixels at $0.005 each in USDC on Base. Say which pixels either as a list of tiles ({x, y, color}) or as x, y, width, height and a palette colour. The answer is a task in input-required whose x402.payment.required holds what to sign; send the signature back in x402.payment.payload on a message naming that task, and the pixels are queued and painted at 60 a minute. Follow it with tasks/get. Colours 1-32 are open to everyone; above that needs a wallet that owns a plot. Paint is permanent and anyone can paint over it afterwards.",
"tags": [
"canvas",
"paint",
"x402",
"payment"
],
"examples": [
"Paint a 4x4 block of colour 3 at 2500, 2100.",
"Buy the pixel at 2500, 2100 in colour 5."
],
"outputModes": [
"application/json",
"text/plain"
]
}
]
}