x402 store

Machine-payable API products. Payment via the x402 protocol (HTTP 402 + USDC on Base, CDP facilitator). POST without payment returns a 402 envelope with full payment instructions — point any x402 client at the endpoints below.

POST /v1/sign-decode $0.005

what-am-i-signing — Decode an EVM signature request (EIP-712 typed data, Permit/Permit2, or ERC-20 approve calldata) into a structured intent: token, spender, amount, expiry, plus risk_flags and an action_hint. Deterministic, no LLM.

POST /v1/listing-doctor $0.01

x402-listing-doctor — Why is my x402 service not listed in the Bazaar? We fetch your 402 envelope, run the exact SDK validation and extraction functions the CDP facilitator runs, check catalog presence, and return per-check fix hints — including the undocumented buyer-side settle requirement. Deterministic, no LLM.

GET /healthz free

Liveness probe.

Integrate in ~1 step

No code (Cursor / Claude Desktop / Cline) — add to your MCP config:

{
  "mcpServers": {
    "x402-safety": {
      "command": "npx",
      "args": ["mcp-remote", "https://x402-safety-mcp.dgdb.workers.dev/sse"]
    }
  }
}

Code (check a recipient before sending, TypeScript):

import { wrapFetchWithPayment } from "x402-fetch";
import { privateKeyToAccount } from "viem/accounts";
const pay = wrapFetchWithPayment(fetch, privateKeyToAccount(process.env.PRIVATE_KEY));
const r = await (await pay("https://x402.dailyelo.com/v1/recipient-check", {
  method: "POST", headers: { "content-type": "application/json" },
  body: JSON.stringify({ recipient }),
})).json();
if (r.action_hint === "do_not_send") throw new Error("unsafe recipient: " + r.risk_flags);

Live threat feed to poll: GET /v1/threats/recent?since=<unix> ($0.005, x402).

No ghost responses: every paid call returns real computed output, or your input echoed back as unknown with evidence. Deterministic, no LLM, on-chain evidence for every threat flag. Catalog snapshot for listing-doctor: /catalog_urls.json.