{"jsonrpc":"2.0","id":null,"result":{"schemaVersion":"1","tools":[{"name":"nanoparse_fetch","description":"Read one URL into clean Markdown with Litmus signals (source authority, freshness, structural trust). Price: $0.005 per page actually read, USDC on Base via x402. Free tier: 10 free parses per month with a signed wallet (pass wallet_address + wallet_signature), or 3 anonymous free tries per network. A page we cannot read — bot wall, consent wall, paywall, PDF — is reported with a named reason and never charged. To read a whole site or a list: call this tool once per URL. Build your list first (GET https://<site>/sitemap.xml, or use URLs you already have), then loop. No minimum, no commitment, no balance to spend down: stop whenever you like. If you already know the price and the payTo address, pay on the first call and skip the 402 round trip. Otherwise, when the tool returns a payment_required error, sign the included payment_terms and retry with the payment_signature argument (works in every MCP client; no custom headers needed).","inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"The URL to fetch and parse"},"payment_signature":{"type":"string","description":"x402 payment signature — base64-encoded JSON payment terms. Only needed after the free tier is exhausted: the payment_required error response includes the payment_terms to sign. Pass the signed terms here (or as a Payment-Signature header if your client supports headers)."},"wallet_address":{"type":"string","description":"Your wallet address (0x...) to claim the free tier — no payment needed."},"wallet_signature":{"type":"string","description":"EIP-191 personal_sign signature (0x... hex, 65 bytes r||s||v) over the exact string \"nanoparse.app free tier: sign this message to claim 10 free parses (no payment).\". Proves you own wallet_address and unlocks 10 free parses per month."}},"required":["url"]},"outputSchema":{"type":"object","properties":{"content":{"type":"array","description":"Array of content items returned by the tool","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"],"description":"Content type — always 'text' for NanoParse"},"text":{"type":"string","description":"The extracted page content as clean Markdown with GFM tables preserved"}},"required":["type","text"]}}},"description":"Returns content[0].text as clean Markdown with GFM tables, stripped of navigation, ads, and boilerplate. structuredContent carries the full parse envelope: {markdown, metadata, litmus}. On error, returns a JSON-RPC error object with code and message."}},{"name":"nanoparse_status","description":"Check wallet balance, USDC balance, quota state, and whether the next /fetch call will succeed without payment. Use before spending — tells the agent exactly how much to fund.","inputSchema":{"type":"object","properties":{"address":{"type":"string","description":"The Ethereum wallet address to query (0x...)."}}},"outputSchema":{"type":"object","description":"Machine-readable status fields. This schema describes structuredContent — strict MCP clients validate structuredContent against it, so it must NOT require the result-envelope `content` array.","properties":{"wallet_address":{"type":"string"},"usdc_balance":{"type":"string"},"usdc_balance_raw":{"type":["string","null"],"description":"Balance in micro-USDC; null when the chain could not be read"},"balance_error":{"type":["string","null"]},"balance_known":{"type":"boolean"},"estimated_parses_remaining":{"type":["number","null"],"description":"null when the balance is unknown — never 0, which would imply an empty wallet"},"price_per_parse":{"type":"string"},"quota":{"type":"object"},"next_call_will_succeed":{"type":["boolean","null"],"description":"null when the free tier is exhausted and the balance is unknown"},"funding_uri":{"type":"string"}},"required":["wallet_address","usdc_balance","price_per_parse","quota"]}}]}}