{
  "markdown": "# ToolSnap MCP\n\n> One connection, superpowers for your agent: deterministic microtools. Pay per call with USDC on Base — no account needed — or buy fiat credits with a card if you'd rather not touch crypto.\n\n[![toolsnap-mcp MCP server](https://glama.ai/mcp/servers/icosaedro-git/toolsnap-mcp/badges/score.svg)](https://glama.ai/mcp/servers/icosaedro-git/toolsnap-mcp)\n[![MCP](https://img.shields.io/badge/MCP-streamable--http-6366f1)](https://mcp.toolsnap.app/.well-known/mcp.json)\n[![x402](https://img.shields.io/badge/payment-x402%20v2-orange)](https://x402.org)\n[![Base](https://img.shields.io/badge/network-Base%20mainnet-0052FF)](https://base.org)\n[![Cloudflare Workers](https://img.shields.io/badge/runtime-Cloudflare%20Workers-F48120)](https://workers.cloudflare.com)\n[![smithery badge](https://smithery.ai/badge/icosaedro/toolsnap-mcp)](https://smithery.ai/servers/icosaedro/toolsnap-mcp)\n\n**Live endpoint:** `https://mcp.toolsnap.app/mcp`  \n**Server card:** [/.well-known/mcp.json](https://mcp.toolsnap.app/.well-known/mcp.json)  \n**Pricing:** [/.well-known/pricing.json](https://mcp.toolsnap.app/.well-known/pricing.json)  \n**Docs:** [toolsnap.app/agents](https://toolsnap.app/agents)\n\n---\n\n## Why\n\nToolSnap is built around three ideas:\n\n**1. Deterministic — no LLM in the loop.** Most agent stacks now \"clean\" web pages by paying a second model to summarize them. ToolSnap's extraction is pure parsing: exact quotes, stable output, zero added inference cost, reproducible runs. What you extract is what the page said.\n\n**2. Context-efficient by design.** The biggest cost for AI agents isn't generation — it's context. Loading a raw webpage can burn 50,000+ tokens on HTML boilerplate; connecting a fat MCP server can burn as many in tool definitions. ToolSnap moves the work server-side *and* keeps discovery compact: `tools/list` shows a small curated core, and the full catalog of 47 microtools (web, PDFs, CSV/JSON, sitemaps, RSS, images, media generation…) sits one free `tool_catalog()` call away, executed via `use_tool`.\n\n**Benchmark (11 real pages, June 2026):**\n\n| | Raw HTML | Extracted | Saving |\n|---|---|---|---|\n| Median tokens | 53,820 | 2,001 | **98.1%** |\n| Cost @ Sonnet ($3/M) | $0.162 | $0.006 | **$0.156/call** |\n| Break-even page size | — | — | 26 KB |\n\n`fetch_extract` is free — this saving costs nothing.\n\n**3. No account required (crypto path).** Free tools work the second you connect. Paid tools settle per call with USDC on Base via [x402](https://x402.org) — an agent with a wallet can pay cold: no signup, no subscription, no key management. Rather not touch crypto? [Buy fiat credits with a card](https://mcp.toolsnap.app/checkout) and get an API key instead — same discounted per-call price, no wallet needed.\n\n---\n\n## Connect\n\n### Any agent, one line\n\nHand your agent this prompt and it can do the rest on its own:\n\n```\nSet up https://mcp.toolsnap.app/SKILL.md — connect the MCP server it describes and save the skill for future sessions.\n```\n\n[`SKILL.md`](https://mcp.toolsnap.app/SKILL.md) is a self-contained skill file (connect\nconfig, tool discovery, cost guardrails), generated live from the tool registry so it is\nnever stale.\n\n### Claude Desktop\n\n```json\n{\n  \"mcpServers\": {\n    \"toolsnap\": {\n      \"url\": \"https://mcp.toolsnap.app/mcp\",\n      \"transport\": \"streamable-http\"\n    }\n  }\n}\n```\n\nFree tools work immediately with the URL connection above. **Paid tools need an\nx402 payment client** — a wallet alone is not enough, because most MCP clients\ncan't satisfy a `402 Payment Required` on their own. Use the pay-proxy below.\n\n### Claude Code\n\n```bash\nclaude mcp add --transport http toolsnap https://mcp.toolsnap.app/mcp\n```\n\nOr install the [Claude Code plugin](https://github.com/ToolSnap-app/toolsnap-claude-plugin)\n(MCP connection + the `toolsnap` skill, bundled):\n\n```\n/plugin marketplace add ToolSnap-app/toolsnap-claude-plugin\n/plugin install toolsnap\n```\n\n### Paid tools — connect through the pay-proxy\n\n`scripts/pay-proxy.mjs` is a local stdio MCP server that wraps the remote\nendpoint, reads your wallet, and signs + retries automatically when the server\nasks for payment. The private key never leaves your host; only signatures are sent.\n\n```json\n{\n  \"mcpServers\": {\n    \"toolsnap\": {\n      \"command\": \"node\",\n      \"args\": [\"/ABSOLUTE/PATH/to/toolsnap-mcp/scripts/pay-proxy.mjs\"]\n    }\n  }\n}\n```\n\nNo wallet yet? Call the `wallet_setup` tool — it generates a wallet you control,\nhelps your human fund it with USDC on Base, and wires this proxy. Key resolution\norder: `TOOLSNAP_WALLET_KEY` → `~/.toolsnap/wallet.key` → macOS Keychain\n(`toolsnap-agent-wallet/default`).\n\nUseful env: `TOOLSNAP_MAX_PRICE_USDC` (per-call spend cap, default `0.10`),\n`TOOLSNAP_PREPAID=1` + `TOOLSNAP_AUTO_DEPOSIT_USDC` (use the cheaper prepaid balance).\n\n### Paid tools — no wallet, pay with a card\n\nBuy credits at [mcp.toolsnap.app/checkout](https://mcp.toolsnap.app/checkout) (handled by\nPolar, our Merchant of Record). You'll get an API key in a one-time pop-up —\nconnect with it directly, no proxy needed:\n\n```json\n{\n  \"mcpServers\": {\n    \"toolsnap\": {\n      \"url\": \"https://mcp.toolsnap.app/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer sk_live_...\" }\n    }\n  }\n}\n```\n\nClients that can't send custom headers (some claude.ai connectors) can embed\nthe key in the URL instead: `https://mcp.toolsnap.app/mcp/sk_live_...` (the\nkey may then appear in that client's request logs — prefer the header when\nyour client supports it).\n\n### Direct MCP call\n\n```bash\ncurl -X POST https://mcp.toolsnap.app/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}'\n```\n\n---\n\n## Tools\n\n41 tools total. `tools/list` shows a curated core (~19); discover everything else with the free `tool_catalog` tool and run it with `use_tool(name, args)`.\n\n### Paid (x402) — real per-call COGS only\n\n| Tool | Description | Price |\n|---|---|---|\n| `screenshot_url` | Capture a page → public image URL. | $0.04 USDC |\n| `keyword_research` | Google Ads volume/CPC/competition via DataForSEO. | $0.04 USDC |\n| `remove_background` | Remove an image's background → transparent PNG URL. | $0.03 USDC |\n\nNo first-call-free: these three tools have real per-call cost, so every call settles from the start. Pay-per-call is $0.03–$0.04 USDC on Base using [x402 v2](https://x402.org) (EIP-3009 `transferWithAuthorization`); prepaid (deposit once, debit off-chain, crypto or [card](https://mcp.toolsnap.app/checkout)) is cheaper per call.\n\n### Free (always)\n\nFlagship: `fetch_extract` (URL → clean text, median 98.1% fewer tokens than raw HTML) and `fetch_html` (URL → clean structured HTML). Plus a wide utility catalog:\n\n| Tool | Description |\n|---|---|\n| `pricing` | Machine-readable pricing menu. Call this first. |\n| `tool_catalog` | Discover the full tool catalog (families → detail). |\n| `use_tool` | Execute any tool not in your tools/list. |\n| `memory_snippet` | Get the ToolSnap habit block for your harness's persistent memory. |\n| `task_recipes` | Ready-to-run multi-tool workflows for whole tasks. |\n| `uuid_generate` | 1–100 random UUID v4 values |\n| `hash_text` | SHA-256 / SHA-1 / SHA-512 (hex) |\n| `base64_encode` / `base64_decode` | Base64 encode/decode |\n| `url_encode` / `url_decode` | Percent-encode/decode |\n| `json_format` | Parse + pretty-print or minify JSON |\n| `timestamp_convert` | Unix ↔ ISO 8601 (auto-detects direction) |\n| `text_stats` | Chars, words, lines, sentences |\n\nCall `tool_catalog()` for the complete, current list with schemas and prices.\n\n---\n\n## Payment (x402)\n\nWhen an agent calls a paid tool (e.g. `screenshot_url`) without payment, the server returns:\n\n```json\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"error\": {\n    \"code\": 402,\n    \"message\": \"Payment required\",\n    \"data\": {\n      \"x402Version\": 2,\n      \"accepts\": [{\n        \"scheme\": \"exact\",\n        \"network\": \"eip155:8453\",\n        \"amount\": \"40000\",\n        \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n      }]\n    }\n  }\n}\n```\n\nAn x402-enabled client reads `accepts[0]`, signs an EIP-3009 `TransferWithAuthorization`, and retries with `_meta[\"x402/payment\"]` set. See [x402 spec](https://github.com/coinbase/x402/blob/main/specs/x402-specification-v2.md).\n\n---\n\n## Run locally\n\n```bash\nnpm install\ncp .dev.vars.example .dev.vars  # fill in wallet secrets\nnpm run dev\n# Worker at http://localhost:8787\n```\n\n## Type-check\n\n```bash\nnpm run typecheck\n```\n\n## Deploy\n\n```bash\nnpm run deploy\n```\n\n---\n\n## Stack\n\n- **Runtime:** Cloudflare Workers (edge, 0 ms cold start)\n- **Protocol:** MCP streamable-http (JSON-RPC 2.0)\n- **Payment:** x402 v2 · EIP-3009 on Base mainnet · USDC\n- **Verification:** off-chain EIP-712 signature recovery (viem)\n- **Settlement:** on-chain `transferWithAuthorization` via relayer wallet\n- **Anti-replay:** Cloudflare KV nonce store (7-day TTL)\n- **First-call-free:** mechanism exists in code (KV key `first_free:{address}`) for future flat-rate tools; all current paid tools have real COGS and are excluded, so every call settles\n\n---\n\n## Contributing\n\nPRs welcome for **new free tools** in `src/tools/`. Follow the pattern in [`src/tools/text-stats.ts`](src/tools/text-stats.ts) and add the tool to [`src/tools/index.ts`](src/tools/index.ts).\n\nFor paid tools or changes to the x402 payment logic, open an issue first.\n\n**Do not commit wallet private keys, `.dev.vars`, or any secrets.**\n\n---\n\n[![toolsnap-mcp MCP server](https://glama.ai/mcp/servers/icosaedro-git/toolsnap-mcp/badges/card.svg)](https://glama.ai/mcp/servers/icosaedro-git/toolsnap-mcp)\n\n---\n\n## License\n\nMIT\n",
  "bytes": 9563,
  "sha": "3e68c4bb975b4f62c968509f76644f27690ea6b57ad8d16afc05b06089c105af",
  "repo_slug": "icosaedro-git/toolsnap-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_app_toolsnap_toolsnap_mcp_a9daf01c/readme"
}