Full-text search over what machine-payable services actually publish — their descriptio…
Full-text search over what machine-payable services actually publish — their descriptions, input schemas, parameter names, prices and settlement networks — across ~18,000 x402 endpoints. Built from their own payment challenges, which a general crawler discard…
by animica.dev · discovered, not yet claimed by its owner · updated 2026-08-22
Mirrored from Coinbase's public x402 Bazaar. The description is the provider's own text and has not been reviewed here; the payment requirements are copied as published.
What it does
Full-text search over what machine-payable services actually publish — their descriptions, input schemas, parameter names, prices and settlement networks — across ~18,000 x402 endpoints. Built from their own payment challenges, which a general crawler discards as a dead page: ask for a parameter name, a schema field or a network and you match services whose one-line blurb never mentions it. Filter by price ceiling, by whether the service publishes a call spec, and by payment protocol. Every response states how many documents were searched and how stale the oldest is, because an index that will not tell you its size is asking to be trusted about the one thing you cannot check. Ranked by BM25 — no model, so the same query ranks the same way twice. If the index is empty or nothing matches, you are NOT charged.
Tags: animica · bazaar · discovery
Use with an agent
- Discover. Agents find this listing with
GET https://bazaar.saylorinnovations.com/discovery/search?query=…, the MCP toolsearch_resources, or/discovery/resources. - Inspect. Fetch
/resources/7545.jsonfor the price and payment options. - Pay. Call
GET https://animica.dev/x402/index. The provider answers402with its payment requirements. An x402 client signs one of the options below and retries withPAYMENT-SIGNATURE. - Execute. The provider returns
200with the data. Agent Bazaar is not in the request path and never sees your payment.
For humans
You don't need an account or an API key; you need a wallet holding a small amount of USDC on Base, animica:1, and an x402-capable client (see the examples below). Call the endpoint unpaid first to see exactly what it asks for.
Pricing & payment
- Price
- $0.006 / request
- Protocol
- x402 v2
- Auth
- No account or API key. Pay per request.
- Networks
- Base, animica:1
- Uptime
- 0 of the last 1 checks answered
- Calls (30d)
- 1 · 1 unique payers (third-party data from the public x402 Bazaar)
x402 payment requirements
| Scheme | Network | Asset | Amount | Pay to | Timeout |
|---|---|---|---|---|---|
| exact | Base eip155:8453 | USDC | $0.006 | 0x5D17c40FD6b119dc6006C4Ab3C20a917FCaB2aCD | 60s |
| exact | animica:1 animica:1 | ANM | 71270193221 | anim1zqpsmegc0qcvzjfukm89xs0zeu3eqyyyel7kelehuszvwfarqypky2gr946ga | 60s |
accepts[] (raw JSON)
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x5D17c40FD6b119dc6006C4Ab3C20a917FCaB2aCD",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "6000",
"amountUsd": 0.006,
"maxTimeoutSeconds": 60
},
{
"scheme": "exact",
"network": "animica:1",
"payTo": "anim1zqpsmegc0qcvzjfukm89xs0zeu3eqyyyel7kelehuszvwfarqypky2gr946ga",
"asset": "ANM",
"amount": "71270193221",
"maxTimeoutSeconds": 60
}
]Schemas
Output schema (JSON Schema)
{
"animica": {
"catalog": "https://animica.dev/.well-known/x402",
"content_type": "application/json",
"currency": "USDC",
"description": "Full-text search over what machine-payable services actually publish — their descriptions, input schemas, parameter names, prices and settlement networks — across ~18,000 x402 endpoints. Built from their own payment challenges, which a general crawler discards as a dead page: ask for a parameter name, a schema field or a network and you match services whose one-line blurb never mentions it. Filter by price ceiling, by whether the service publishes a call spec, and by payment protocol. Every response states how many documents were searched and how stale the oldest is, because an index that will not tell you its size is asking to be trusted about the one thing you cannot check. Ranked by BM25 — no model, so the same query ranks the same way twice. If the index is empty or nothing matches, you are NOT charged.",
"documentation": "https://animica.dev/x402#product-agent_index",
"free_trial": {
"endpoint": "POST /x402/index/trial",
"limit_per_day": 5,
"note": "Same code and same response shape as the paid endpoint. No payment, no payment headers. Quota is per client per UTC day; when it is spent this endpoint says so and points back here.",
"price": "0",
"url": "https://animica.dev/x402/index/trial"
},
"name": "Search the agent-payable web",
"openapi": "https://animica.dev/x402/openapi.json",
"price": "0.006000",
"product": "agent_index",
"provider": "Animica",
"terms": {
"amount_atomic": "6000",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"chain_id": 8453,
"network": "eip155:8453",
"pay_to": "0x5D17c40FD6b119dc6006C4Ab3C20a917FCaB2aCD",
"scheme": "exact"
},
"x402_version": 2
},
"bazaar": {
"discoverable": true,
"info": {
"input": {
"body": {
"limit": 3,
"max_price": 0.01,
"query": "wallet_address erc20 balance"
},
"bodyType": "json",
"method": "POST",
"type": "http"
},
"output": {
"example": {
"corpus": {
"documents": 17987,
"last_build": "2026-08-22T01:26:16.570Z",
"oldest_document_age_seconds": 454,
"sources": {
"x402": 17987
}
},
"count": 3,
"filters": {
"max_price": 0.01
},
"matched": 38,
"query": "wallet_address erc20 balance",
"ranking": "bm25(title x8, description x4, content x1) — deterministic, no model",
"results": [
{
"callable": false,
"host": "signals.edge.report",
"http_method": "GET",
"indexed_at": "2026-08-22T01:26:14.000Z",
"payment_protocol": "x402",
"price_usd": 0.001,
"rank": 1,
"score": 20.116,
"snippet": "Get ERC20 token balance for any wallet and token contract on Base (or Ethereum). Returns balance, decimals, and symbol via balanceOf. Use for live … ",
"title": "signals.edge.report/v1/erc20-balance",
"url": "https://signals.edge.report/v1/erc20-balance"
},
{
"callable": false,
"host": "a2a.elonsusk.com",
"http_method": "POST",
"indexed_at": "2026-08-22T01:26:16.000Z",
"payment_protocol": "x402",
"price_usd": 0.002,
"rank": 2,
"score": 19.8317,
"snippet": "ERC-20 token balance of an address, auto-scaled by decimals, Base/Ethereum.\na2a.elonsusk.com/x402/data.evm.erc20_balance\neip155:8453\nUSD … ",
"title": "a2a.elonsusk.com/x402/data.evm.erc20_balance",
"url": "https://a2a.elonsusk.com/x402/data.evm.erc20_balance"
},
{
"callable": false,
"host": "api.x402node.dev",
"http_method": "GET",
"indexed_at": "2026-08-22T01:26:15.000Z",
"payment_protocol": "x402",
"price_usd": 0.004,
"rank": 3,
"score": 19.7807,
"snippet": "Native coin balance for any address on Ethereum, Base, Arbitrum, Optimism or Polygon, optionally an ERC20 token balance with symbol and decimals. wallet balance … ",
"title": "api.x402node.dev/chain/balance",
"url": "https://api.x402node.dev/chain/balance"
}
],
"searched_at": "2026-08-22T01:33:47.934Z",
"took_ms": 21
},
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"properties": {
"body": {
"properties": {
"callable_only": {
"description": "only services that publish a call spec",
"type": "boolean"
},
"limit": {
"description": "results to return, 1..25 (default 10)",
"type": "integer"
},
"max_price": {
"description": "only services at or under this price in USD",
"type": "number"
},
"query": {
"description": "words to match: a capability, a parameter name, a schema field, a network",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"bodyType": {
"enum": [
"json"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"queryParams": {
"properties": {
"q": {
"description": "same as body.query, for GET callers",
"type": "string"
}
},
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
},
"discovery": {
"discoverable": true,
"info": {
"input": {
"bodyFields": {
"callable_only": {
"description": "only services that publish a call spec",
"required": false,
"type": "boolean"
},
"limit": {
"description": "results to return, 1..25 (default 10)",
"required": false,
"type": "integer"
},
"max_price": {
"description": "only services at or under this price in USD",
"required": false,
"type": "number"
},
"query": {
"description": "words to match: a capability, a parameter name, a schema field, a network",
"required": true,
"type": "string"
}
},
"bodyType": "json",
"method": "POST",
"queryParams": {
"q": {
"description": "same as body.query, for GET callers",
"type": "string"
}
},
"type": "http"
},
"output": {
"description": "query, results[] {rank, url, host, title, snippet, price_usd, payment_protocol, http_method, callable, score, indexed_at}, count, corpus {documents, sources, oldest_document_age_seconds, last_build}, searched_at",
"type": "json"
}
}
}
}Example shape — generated from the schema, not a captured live response
nullExamples
curl "https://animica.dev/x402/index"
# -> 402 Payment Required, accepts[] lists how to pay
# retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paidconst res = await fetch("https://animica.dev/x402/index");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}import httpx
res = httpx.get("https://animica.dev/x402/index")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerDetails
- Provider
- animica.dev
- Endpoint
- https://animica.dev/x402/index
- Machine-readable
/resources/7545.json