x402-json-repair-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@x402-json-repair-mcpFix this JSON with trailing comma: {a:1,}"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
x402-json-repair-mcp
A small, autonomous, pay-per-call MCP server that AI agents discover and pay for per call, with revenue landing directly in a USDC wallet on Base via the x402 payment protocol.
One pure-logic tool today:
structured_json_repair— deterministic JSON repair + JSON Schema validation/coercion. No model or paid API on the hot path, so each call costs ~nothing to serve (~100% margin).Tool-agnostic core: the MCP + payment + deploy skeleton is separate from tool logic. Adding tool #2 is a one-file change.
Cheap, serverless, near-zero maintenance: runs on Cloudflare Workers (Node fallback included). Stateless. Holds no private keys — only a public payout address.
What it does
structured_json_repair takes a messy/invalid JSON-ish string (the kind LLMs and tools frequently emit) plus an optional JSON Schema, and returns clean, valid, schema-conformant JSON — with structured diagnostics when it can't fully fix it.
Fixes: trailing commas, single-quoted strings, unquoted keys, Python literals (None/True/False), NaN/Infinity, Markdown ``` code-fence wrappers, and truncated/garbled tails. With a schema, it validates (JSON Schema draft 2020-12) and optionally coerces primitives ("36" → 36, "true" → true).
Input (tools/call arguments):
field | type | required | default | description |
| string | ✅ | — | The raw/malformed JSON text. |
| object | — | — | JSON Schema (draft 2020-12) to validate/coerce against. |
| boolean | — |
| Coerce primitive types to satisfy the schema. |
Output (structuredContent):
{
"ok": true, // valid JSON (and schema-valid when a schema was given)
"data": { "...": "..." }, // the repaired/validated value; null if unfixable
"changed": true, // true if any repair or coercion modified the input
"errors": [], // actionable messages when ok is false
"repairs": ["Removed trailing comma(s) before a closing } or ]."]
}Annotations: readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false.
Related MCP server: Pay MCP Server
Pricing
Tool | Price | Network | Asset |
| $0.01 / call | Base (mainnet) / Base Sepolia (sandbox) | USDC |
Discovery is free: initialize, tools/list, and ping are never charged — only a tools/call to a paid tool is.
How it works
agent (x402-enabled MCP client)
│ POST /mcp (JSON-RPC: tools/call structured_json_repair)
▼
┌─────────────────────────── Hono app (Workers / Node) ───────────────────────────┐
│ PaymentGate.evaluate() │
│ • initialize / tools/list / ping / free tools ─────────────► run MCP, return │
│ • paid tools/call: │
│ no/invalid payment ─► HTTP 402 + x402 "payment-required" envelope │
│ valid payment ─► run MCP tool ─► settle ─► result + receipt header │
└──────────────────────────────────────────────────────────────────────────────────┘Because every MCP call hits a single /mcp endpoint, the gate inspects the JSON-RPC method/tool name and maps each paid tool to a synthetic x402 route (POST /x402/<tool>). The official x402 engine (@x402/core + @x402/evm) then handles price→atomic conversion, USDC asset resolution, the 402 envelope, facilitator verification, and on-chain settlement. Payment lives entirely at the HTTP layer and is transparent to JSON-RPC.
A real unpaid call returns (verified against the public testnet facilitator):
HTTP/1.1 402 Payment Required
payment-required: <base64 x402 v2 envelope>// decoded envelope
{ "x402Version": 2,
"resource": { "url": ".../x402/structured_json_repair", ... },
"accepts": [{ "scheme": "exact", "network": "eip155:84532",
"amount": "10000", "asset": "0x036CbD…CF7e" /* USDC on Base Sepolia */,
"payTo": "0x…", "maxTimeoutSeconds": 300,
"extra": { "name": "USDC", "version": "2" } }] }Quick start (local sandbox / testnet)
npm install
cp .dev.vars.example .dev.vars # then set PAYOUT_WALLET_ADDRESS (a PUBLIC 0x address)
npm run build
PAYOUT_WALLET_ADDRESS=0xYourPublicAddress npm start # Node server on :8787
# or: npm run dev (Cloudflare Workers dev server via wrangler)Exercise it (no payment needed for discovery; the paid call returns 402):
# tools/list — free
curl -s -X POST http://localhost:8787/mcp \
-H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# paid tool, unpaid — returns HTTP 402 with the x402 envelope in the `payment-required` header
curl -i -s -X POST http://localhost:8787/mcp \
-H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
"params":{"name":"structured_json_repair","arguments":{"input":"{a:1,}"}}}'Inspect interactively with the MCP Inspector:
npm run inspector # then connect to Streamable HTTP at http://localhost:8787/mcpSample agent call
An x402-enabled MCP client pays automatically: it calls the tool, receives the 402, signs a USDC payment from its own wallet, and retries with the payment header — all transparently. With the x402 SDK (@x402/* + a wallet), wrap the HTTP transport so 402s are auto-paid, then use the standard MCP client against https://<host>/mcp. See the x402 client docs: https://docs.x402.org.
Project layout
src/
index.ts # Hono app: routes, x402 gate wiring, Workers entry (default export)
node.ts # Node/VPS entry (npm start / bin)
config.ts # env loading + validation (address-only; refuses private keys)
mcp/
server.ts # MCP server factory; registers tools (tool-agnostic core)
transport.ts # stateless Streamable HTTP via @hono/mcp
tools/
structuredJsonRepair.ts # pure tool logic + Zod input/output schemas + registration
index.ts # tool registry — add new tools here
types.ts # ToolModule contract
payments/
x402.ts # paywall: per-tool routes, facilitator, verify/settle, JSON-RPC gating
test/
structuredJsonRepair.test.ts
paywall.test.ts
server.json # Official MCP Registry metadata
wrangler.toml # Cloudflare Workers config (sandbox + production envs)
.dev.vars.example # example env (placeholders only — no secrets)Adding a tool (tool-agnostic core)
Create
src/tools/myTool.tsexporting aToolModule(name,title,description,price,register). Setprice: nullfor a free tool or"$0.05"for a paid one.Append it to the array in
src/tools/index.ts. That's the only change — the MCP, payment, and deploy layers pick it up automatically (the gate prices every tool whoseprice !== null).
Configuration
All config comes from environment variables (Workers [vars] / wrangler secret, or the process env on Node).
Variable | Required | Default | Notes |
| ✅ | — | Public USDC payout address ( |
| — |
|
|
| — | by mode |
|
| — |
| Public facilitator (works for testnet). |
| — |
|
|
| prod only | — | CDP facilitator credentials (set as secrets). |
| — |
| Per-tool price override (USD). |
Deploy
See OPERATOR_CHECKLIST.md for the exact human-only steps (wallet, accounts, secrets, deploy, publish). In short:
# Sandbox (Base Sepolia, public facilitator)
wrangler secret put PAYOUT_WALLET_ADDRESS
wrangler deploy # → https://x402-json-repair-mcp.<subdomain>.workers.dev/mcp
# Production (Base mainnet, Coinbase CDP facilitator)
wrangler secret put PAYOUT_WALLET_ADDRESS --env production
wrangler secret put CDP_API_KEY_ID --env production
wrangler secret put CDP_API_KEY_SECRET --env production
wrangler deploy --env productionNode / VPS fallback: npm run build && PAYOUT_WALLET_ADDRESS=0x… npm start (serves /mcp on :8787; put it behind TLS).
Listing & discovery
Official MCP Registry: edit
server.json(set yourOWNERnamespace and the deployed URL), then publish with the registrymcp-publisherCLI. The registry feeds Smithery, PulseMCP, etc.x402 Bazaar / Agentic.market: the server serves machine-readable discovery at
GET /.well-known/x402(capability + pricing per tool). Submit per current x402 docs.npm:
npm publish(the package is runnable vianpx x402-json-repair-mcpfor self-hosting).
Operator-run commands are in OPERATOR_CHECKLIST.md.
Security
Address only — never a private key. The server reads
PAYOUT_WALLET_ADDRESSto tell payers where to send USDC; it never signs or moves funds.config.tsactively refuses anything shaped like a private key (64 hex) or seed phrase.No secrets in source. Use
.dev.varslocally (gitignored) andwrangler secretin production. Only.dev.vars.example(placeholders) is committed.Stateless. Request payloads aren't persisted beyond serving the response.
Engineering notes
x402 v2. Uses the maintained
@x402/core/@x402/evmpackages (the v1x402/x402-honopackages are deprecated). The 402 envelope is delivered in thepayment-requiredresponse header (v2), which the agent's x402 client reads and pays.Validation uses
@cfworker/json-schema, not Ajv. Ajv compiles validators at runtime via theFunctionconstructor, which Cloudflare Workers forbid (noeval). Since the schema is a runtime input, it can't be precompiled — so we use the eval-free, Workers-native@cfworker/json-schema(already an MCP SDK peer) plus a small schema-driven coercion pass.
Roadmap
Phase 2 — vertical document parser (planned, not built): a tool for one document type that general parsers handle poorly (e.g. a specific statement/invoice/receipt format), priced toward the work-done end ($0.05–$0.10/call). It would slot in as another
ToolModulewith no changes to the MCP/payment/deploy core.
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceAn MCP server that enables AI agents to access paid AI inference and web tools via HTTP 402 micropayments in USDC on Base, using the agent's wallet as identity.Last updated14543MIT
- Alicense-qualityBmaintenanceMCP server for Pay – the complete x402 payment stack for AI agents, enabling direct USDC payments on Base, metered tabs, service discovery, and wallet management within any MCP-compatible client.Last updated50MIT
- AlicenseBqualityAmaintenanceMCP server exposing x402 Bazaar's paid Base APIs (token risk/honeypot, prices, gas, wallet intel, tx decode + AI utilities) as agent tools. Your agent pays per call in USDC over x402 — no API keys, no signup.Last updated17131MIT
- FlicenseAqualityBmaintenanceMCP server for a live x402 payment gateway on Base (USDC). Lets AI agents discover, preview for free, then pay per call — with prepaid gasless payments, signed receipts, and delta delivery.Last updated7
Related MCP Connectors
Agent-commerce MCP server for x402/USDC payments and affiliate splits on Base.
Agent x402 Paywall MCP — Coinbase HTTP 402 protocol + on-chain settlement. Agents pay per-call
Pay-per-call x402 gateway: agent tools, OpenAI-compatible LLM, market data, RPC, security audits.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ktcod/x402-json-repair-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server