Back to Discover

x402-json-repair-mcp

connector

ktcod

21 paid tools: US macro data, SEC EDGAR filings, on-chain EVM reads. Settled in USDC on Base.

View on GitHub
0 starsSynced Aug 15, 2026

Install to Claude Code

/plugin marketplace add ktcod/x402-json-repair-mcp

README

US Economic, SEC EDGAR & On-Chain Data — a pay-per-call MCP server

21 data tools that AI agents discover and pay for per call, settled in USDC on Base via the x402 payment protocol. No account, no API key, no subscription.

Live: https://x402.agentfund.net · Agent guide · Verification ledger · Settlements

EndpointPurpose
POST /mcpMCP over streamable-HTTP (stateless)
POST /x402/<tool>One HTTP route per tool; arguments as a plain JSON body
GET /openapi.jsonOpenAPI 3.1 discovery document with x-payment-info per route
GET /SKILL.mdAgent-facing usage guide
GET /VERIFICATION.mdHow each tool was verified, and the upstream traps found
GET /monitorLive on-chain settlement dashboard
GET /healthLiveness and configuration mode

The tools

US macrotreasury_yield_curve, bls_cpi, macro_pce, macro_jobs, macro_gdp, macro_retail_sales, macro_housing, macro_energy, macro_release_calendar

SEC EDGARedgar_filings_feed, edgar_financials, edgar_insider_transactions, edgar_13f_holdings, edgar_full_text_search

On-chain EVMonchain_token_balances, onchain_portfolio, onchain_cross_chain_balances, onchain_oracle_price, onchain_gas

Pure computestructured_json_repair, tabular_to_json

Prices run $0.001–$0.03 per call.

Why these sources

Every tool wraps free public-domain US government data (Treasury, BLS, BEA, Census, EIA, SEC EDGAR) or a direct on-chain read via public RPC. There is no upstream vendor licence, so nothing here can be revoked or repriced by a third party, and the cost of goods is zero.

The trade-off is inherited from the publishers: government statistics are lagged and revised, 13F is quarterly and stale by design, and none of this is market data. Those limits are stated plainly in SKILL.md rather than buried.

Correctness

Every tool was checked against live upstream data before shipping — not only against unit tests, because a test written from the same wrong assumption as the code passes happily.

That caught six real defects, including 13F values being 1000× too large by following SEC's own documentation, and Census silently returning five regional rows where a national figure was expected. Each is documented with the evidence that exposed it, and locked in by a regression test: VERIFICATION.md.

A failed call is never billed. The MCP SDK turns a thrown tool error into an HTTP 200 carrying isError: true; the payment gate inspects the result and returns errors unsettled rather than charging for a result the caller never received.

Architecture

  • x402 v2 (@x402/core, @x402/evm) with the Coinbase CDP facilitator on Base mainnet.
  • MCP on Workers via @hono/mcp StreamableHTTPTransport (the SDK's own transport is Node-http-based). Stateless JSON.
  • Two entry points, one payment path. /mcp and /x402/<tool> both run through PaymentGate.chargeAndRun, so money-safety rules cannot drift between them.
  • Per-tool HTTP routes exist for discovery. The x402 Bazaar indexes plain HTTP resources only — every catalog entry is type: "http" — so an MCP endpoint alone can never be listed.
  • Discovery needs no secrets. initialize, tools/list and ping are answered without payment configuration, so the server introspects cleanly on a fresh clone or in a CI sandbox.
  • Validation uses @cfworker/json-schema, not Ajv — Ajv compiles via Function, which Workers forbid, and the schema is a runtime input so it cannot be precompiled.
  • No private keys. The server holds only a public payout address; config.ts refuses private-key- or seed-shaped input.

Adding a tool is a one-file change plus a line in src/tools/index.ts.

Development

npm install
npm test          # 174 tests
npm run typecheck
npm run dev       # wrangler dev
npm run dev:node  # tsx watch src/node.ts

Copy .dev.vars.example to .dev.vars for local configuration. Only the public payout address is ever needed — never a private key or seed phrase.

Docs are mirrored into the bundle (Workers have no filesystem); run npm run gen:docs after editing SKILL.md or VERIFICATION.md, or test/docs.test.ts will fail on the drift.

Deployment

Production runs on Cloudflare Workers. Secrets are set with wrangler secret put, never in wrangler.toml:

npx wrangler deploy --env production

A Dockerfile is included for self-hosting the Node entrypoint; it needs no secrets, so the container starts and passes introspection out of the box. See OPERATOR_CHECKLIST.md for the full runbook.

Buyer-side test clients

PAYER_PRIVATE_KEY=0x… node scripts/pay-test.mjs      # pay via /mcp
PAYER_PRIVATE_KEY=0x… node scripts/pay-http.mjs      # pay via /x402/<tool>
node scripts/index-all.mjs                            # dry run: Bazaar index status

Payment is gasless for the payer (the facilitator submits the transaction), so a test wallet needs USDC and no ETH. index-all.mjs skips already-indexed routes and refuses to spend without --yes.

Licence

MIT (declared in package.json; no LICENSE file has been added yet).

Rendered live from ktcod/x402-json-repair-mcp's GitHub README — not stored, always reflects the source repo.

1 Install Method

NameDescriptionCategorySource
streamable-http remoteHosted streamable-http endpointmcp-serverhttps://x402.agentfund.net/mcp

0 Comments

Login required
Log in to post a comment or update on this repo.

No comments yet — be the first to share an update.