Skip to content

Service Catalog

All services are POST endpoints under /services with a JSON body, priced at $0.01 per request and paid via x402. Every response uses the standard envelope (service, requestId, cache, providers, warnings, data); the field lists below describe data. The curl examples show the bare request — sent as-is they return the 402 quote; clients like @x402/fetch attach the payment automatically.

Machine-readable equivalents of this page: GET /services (catalog), GET /services/:slug (per-service input JSON Schema), GET /openapi.json.

Crypto services accept either a chain slug or a numeric chainId (where the schema allows both; slug wins if both are sent):

Slug Chain ID Label
ethereum 1 Ethereum
base 8453 Base
bsc 56 BNB Smart Chain
polygon 137 Polygon
arbitrum 42161 Arbitrum One
optimism 10 OP Mainnet

Addresses must be 0x-prefixed 40-hex-character EVM addresses; they are lowercased server-side.


Honeypot, tax, and ownership risk for any EVM token in one call. Aggregates GoPlus Security flags with a Honeypot.is buy/sell simulation and DexScreener liquidity context into a single normalized verdict.

  • Endpoint: POST /services/token-risk · Price: $0.01
  • Providers: GoPlus Security (primary), Honeypot.is (secondary), DexScreener (enrichment)
Terminal window
curl -X POST http://localhost:3000/services/token-risk \
-H "Content-Type: application/json" \
-d '{"chain": "ethereum", "tokenAddress": "0x6b175474e89094c44da98b954eedeac495271d0f"}'

Input: chain or chainId (one required), tokenAddress. data fields: tokenAddress, riskLevel, riskFlags, honeypot, taxes, ownership, liquidity, warnings. Guardrails: EVM chains only; single token per request; responses cached for 5 minutes. Honeypot.is simulation covers ethereum, base, and bsc; on other chains the verdict leans on GoPlus flags.

pool-snapshot — Pool & Liquidity Snapshot

Section titled “pool-snapshot — Pool & Liquidity Snapshot”

Price, liquidity, volume, and pair metadata for a token or a specific pair, from DexScreener with GeckoTerminal as backup.

  • Endpoint: POST /services/pool-snapshot · Price: $0.01
  • Providers: DexScreener (primary), GeckoTerminal (fallback)
Terminal window
curl -X POST http://localhost:3000/services/pool-snapshot \
-H "Content-Type: application/json" \
-d '{"chain": "base", "tokenAddress": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"}'

Input: chain or chainId (one required), plus exactly one of tokenAddress or pairAddress. data fields: pairAddress, priceUsd, liquidityUsd, volume24hUsd, fdvUsd, pairCreatedAt, txns24h, url. Guardrails: EVM chains only; when a token is given, returns its top pair by liquidity.

Verification status, source/ABI availability, proxy clues, and contract name from Etherscan and the Sourcify registry, with Blockscout as a fallback.

  • Endpoint: POST /services/contract-explain · Price: $0.01
  • Providers: Etherscan API V2 (primary), Sourcify (fallback), Blockscout (fallback)
Terminal window
curl -X POST http://localhost:3000/services/contract-explain \
-H "Content-Type: application/json" \
-d '{"chainId": 1, "contractAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}'

Input: chainId (number, required), contractAddress. data fields: verified, contractName, sourceAvailable, abiAvailable, proxy, links, warnings. Guardrails: EVM chains only; read-only explorer metadata, no source dumps.

DeFi protocol fundamentals from DefiLlama: category, supported chains, current TVL, fees/revenue where available, and official URLs. Falls back to Exa web discovery on slug misses.

  • Endpoint: POST /services/protocol-context · Price: $0.01
  • Providers: DefiLlama (primary), Exa (fallback)
Terminal window
curl -X POST http://localhost:3000/services/protocol-context \
-H "Content-Type: application/json" \
-d '{"protocol": "aave"}'

Input: protocol — a DefiLlama slug or human name (1–100 chars), e.g. aave or Uniswap V3. data fields: name, slug, category, chains, tvlUsd, fees, urls. Guardrails: one protocol per request; responses cached for 10 minutes.

Crypto phishing verdict for a URL or domain, checked against a locally mirrored MetaMask eth-phishing-detect list: allowlist, blocklist, and fuzzy lookalike matching. Deterministic, no network calls.

  • Endpoint: POST /services/phishing-check · Price: $0.01
  • Providers: MetaMask eth-phishing-detect (mirrored locally)
Terminal window
curl -X POST http://localhost:3000/services/phishing-check \
-H "Content-Type: application/json" \
-d '{"url": "https://uniswap-airdrop.example.com/claim"}'

Input: url — URL or bare domain (3–2000 chars). data fields: domain, status, matchedList, match. Guardrails: list snapshot ships with the server build; no remote lookups.

Read-only wallet snapshot via Alchemy: native balance, top ERC-20 balances with metadata, a recent-transfer summary, and notes on obviously suspicious tokens.

  • Endpoint: POST /services/wallet-brief · Price: $0.01
  • Providers: Alchemy (primary)
Terminal window
curl -X POST http://localhost:3000/services/wallet-brief \
-H "Content-Type: application/json" \
-d '{"chainId": 1, "walletAddress": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045"}'

Input: chainId (number, required), walletAddress. data fields: nativeBalance, tokenBalances, recentTransfers, suspiciousTokenNotes. Guardrails: read-only; top 10 token balances; recent transfers capped at 10.

ERC-20 spender approvals for a wallet via Moralis (preferred) or bounded Alchemy log analysis, with unlimited/stale approvals flagged and revoke recommendations.

  • Endpoint: POST /services/approval-risk · Price: $0.01
  • Providers: Moralis Token Approvals (primary), Alchemy log analysis (fallback)
Terminal window
curl -X POST http://localhost:3000/services/approval-risk \
-H "Content-Type: application/json" \
-d '{"chainId": 1, "walletAddress": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045"}'

Input: chainId (number, required), walletAddress. data fields: approvals, unlimitedCount, recommendations, coverage, warnings. Guardrails: read-only; ERC-20 approvals only in V1; bounded block range on the Alchemy path.


Capped neural web search via Exa for agents needing fresh web context mid-task. Fast/auto search types only — summaries and deep research modes would exceed one cent and are rejected.

  • Endpoint: POST /services/exa/search · Price: $0.01
  • Providers: Exa (primary)
Terminal window
curl -X POST http://localhost:3000/services/exa/search \
-H "Content-Type: application/json" \
-d '{"query": "x402 payment protocol adoption", "numResults": 5}'

Input (strict — unknown keys rejected): query (2–500 chars), numResults (1–10, default 5), optional category (company, news, research paper, github, pdf). data fields: results, resolvedSearchType. Guardrails: max 10 results; no summaries; no deep search modes.

Clean parsed text for up to 5 URLs via Exa’s contents API, truncated per page to keep responses bounded.

  • Endpoint: POST /services/exa/contents · Price: $0.01
  • Providers: Exa (primary)
Terminal window
curl -X POST http://localhost:3000/services/exa/contents \
-H "Content-Type: application/json" \
-d '{"urls": ["https://docs.x402.org/introduction"]}'

Input (strict): urls — array of 1–5 valid URLs. data fields: pages. Guardrails: max 5 URLs; per-page text truncation.

Discover the URL structure of a site in one bounded call: a single Firecrawl map request returning up to 100 links. No crawling, no scraping.

  • Endpoint: POST /services/firecrawl/map · Price: $0.01
  • Providers: Firecrawl (primary)
Terminal window
curl -X POST http://localhost:3000/services/firecrawl/map \
-H "Content-Type: application/json" \
-d '{"url": "https://docs.x402.org"}'

Input (strict): url, optional search filter (max 200 chars). data fields: links. Guardrails: one URL per request; max 100 links returned; no crawl mode.

Web search via Firecrawl with scrape options disabled: titles, URLs, and descriptions only.

  • Endpoint: POST /services/firecrawl/search · Price: $0.01
  • Providers: Firecrawl (primary)
Terminal window
curl -X POST http://localhost:3000/services/firecrawl/search \
-H "Content-Type: application/json" \
-d '{"query": "EIP-3009 transferWithAuthorization"}'

Input (strict): query (2–500 chars), limit (1–10, default 5). data fields: results. Guardrails: max 10 results; no scrapeOptions.

Main-content markdown for exactly one page. Enhanced modes, JSON extraction, and browser interaction are not offered — they break the one-cent envelope.

  • Endpoint: POST /services/firecrawl/scrape · Price: $0.01
  • Providers: Firecrawl (primary)
Terminal window
curl -X POST http://localhost:3000/services/firecrawl/scrape \
-H "Content-Type: application/json" \
-d '{"url": "https://docs.x402.org/introduction"}'

Input (strict): url, onlyMainContent (default true). data fields: markdown, metadata. Guardrails: one page per request; markdown only; content truncated at 20,000 characters.

context7-resolve-library — Context7 Resolve Library

Section titled “context7-resolve-library — Context7 Resolve Library”

Resolve a library or framework name to Context7 documentation IDs, with snippet counts, so a follow-up query-docs call can fetch current docs.

  • Endpoint: POST /services/context7/resolve-library · Price: $0.01
  • Providers: Context7 (primary)
Terminal window
curl -X POST http://localhost:3000/services/context7/resolve-library \
-H "Content-Type: application/json" \
-d '{"libraryName": "hono"}'

Input (strict): libraryName (1–200 chars). data fields: libraries. Guardrails: max 5 candidates returned.

context7-query-docs — Context7 Query Docs

Section titled “context7-query-docs — Context7 Query Docs”

Up-to-date documentation snippets for a resolved Context7 library ID, optionally focused on a topic, within a bounded token budget.

  • Endpoint: POST /services/context7/query-docs · Price: $0.01
  • Providers: Context7 (primary)
Terminal window
curl -X POST http://localhost:3000/services/context7/query-docs \
-H "Content-Type: application/json" \
-d '{"libraryId": "/honojs/hono", "topic": "middleware"}'

Input (strict): libraryId — Context7 ID like /honojs/hono; optional topic (max 200 chars); tokens (500–5000, default 2500). data fields: docs. Guardrails: token budget capped at 5000; single library per request.