Payments · x402

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

  1. Discover. Agents find this listing with GET https://bazaar.saylorinnovations.com/discovery/search?query=…, the MCP tool search_resources, or /discovery/resources.
  2. Inspect. Fetch /resources/7545.json for the price and payment options.
  3. Pay. Call GET https://animica.dev/x402/index. The provider answers 402 with its payment requirements. An x402 client signs one of the options below and retries with PAYMENT-SIGNATURE.
  4. Execute. The provider returns 200 with 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

SchemeNetworkAssetAmountPay toTimeout
exactBase
eip155:8453
USDC$0.0060x5D17c40FD6b119dc6006C4Ab3C20a917FCaB2aCD60s
exactanimica:1
animica:1
ANM71270193221anim1zqpsmegc0qcvzjfukm89xs0zeu3eqyyyel7kelehuszvwfarqypky2gr946ga60s
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
null

Examples

curl
curl "https://animica.dev/x402/index"
# -> 402 Payment Required, accepts[] lists how to pay
# retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const 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
}
Python
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 header

Details

Provider
animica.dev
Endpoint
https://animica.dev/x402/index
Machine-readable
/resources/7545.json