# x402-safety-kit

> x402 payment-request parser: decode an x402 v2 payment request (HTTP 402 PAYMENT-REQUIRED or MCP tool result) into every payment option with exact amounts, and compare token addresses with a limited reference list that carries sources and check dates. It parses a payment request and compares token addresses with a limited reference list. It does not verify the merchant, authorize a transfer, assess fraud risk, or guarantee any payment. It does not sign, approve or judge payments. Official x402 SDKs provide asset allowlists and spend limits by default; pre-signing controls are best done locally.

Data sources: none fetched at request time. A bundled, versioned table of native USDC contracts (addresses from Circle's official list, decimals from the x402 reference package @x402/evm) and the x402 v2 specification (x402-foundation/x402, pinned commit). Built by MK Career Planning.
It parses a payment request and compares token addresses with a limited reference list. It does not verify the merchant, authorize a transfer, assess fraud risk, or guarantee any payment.
status is one of: parsed (the checked common x402 v2 structure had no defects; not a statement that the requester, payTo or asset is genuine, or that you should pay), ambiguous (the options differ in recipient, network or amount, or the result carries copies that differ; this server lists every option and does not choose one), malformed, unsupported.
This server does not sign, approve or judge payments. It never holds keys or moves funds, and it does not fetch any URL found in the input.
Official x402 SDKs provide asset allowlists and spend limits by default. Pre-signing controls are best done locally, in the paying client; use this server to read and debug payment requests.

## Connect

- MCP (streamable HTTP): https://x402-safety-kit-production.mk-career-planning.workers.dev/mcp
- OpenAPI: https://x402-safety-kit-production.mk-career-planning.workers.dev/openapi.json
- x402 discovery: https://x402-safety-kit-production.mk-career-planning.workers.dev/.well-known/x402

## Free tools

- catalog: List the tools of this server with prices, data sources, licensing, daily limits and data freshness.
- x402_parse_payment_request: Free. Decode one x402 v2 payment request (base64 PAYMENT-REQUIRED header, PaymentRequired JSON or MCP tool result) and list every accepts option with exact atomic and decimal amounts. Token addresses are compared with a limited reference list. status: parsed, ambiguous (options differ in recipient, network or amount; none is chosen), malformed or unsupported. Does not verify the merchant, authorize a transfer, assess fraud risk, or guarantee any payment. URLs in the input are never fetched.
- x402_known_assets: Free. The limited reference list this server compares token addresses with: known assets (network, contract, symbol, decimals) with sources and check dates, known CAIP-2 networks, scheme names from the x402 specs, and payment flows. A table match is not proof that an asset or a merchant is genuine.
- get_receipt: Re-fetch the stored result of a settled paid call by its receipt_id, for when the response was lost after payment. Free. Unknown or unsettled receipt ids return RECEIPT_NOT_FOUND. Results are kept for 90 days after settlement.
- HTTP: GET https://x402-safety-kit-production.mk-career-planning.workers.dev/v1/parse-payment-request, GET https://x402-safety-kit-production.mk-career-planning.workers.dev/v1/known-assets return the same data as the MCP tools. GET https://x402-safety-kit-production.mk-career-planning.workers.dev/v1/receipts/<receipt_id> is get_receipt.

## Payments

This server offers free tools only. It does not request or accept x402 payments.

## Rate limits

- Free calls (free HTTP endpoints under /v1/ and free MCP tools) are limited to 300 requests per 60 seconds per client (a client is keyed by a one-way hash of its IP address and the first 64 characters of its User-Agent; neither is stored. The User-Agent can be set by anyone, so this split is for fairness between clients behind a shared gateway, not a security control). Over the limit, HTTP returns 429 RATE_LIMITED with a Retry-After header and MCP tools return the error RATE_LIMITED. Paid calls are not rate limited.

## Provenance and fetch_status

Responses carry provenance[] (source, upstream_updated_at, retrieved_at, content_sha256, parser_version, fetch_status). fetch_status values:

- found: The upstream document was retrieved and contains the data used for this answer.
- empty: The upstream was retrieved, but it has no item for this query (for example JMA had no bulletin for that area in its feeds, or the municipality is not in the list). The state is unknown: empty does NOT mean 'none in effect'.
- stale: The data was retrieved but is older than the freshness threshold for its kind; treat it with care.
- unavailable: The upstream could not be retrieved, read or used (network error, withdrawn bulletin, paused source, or data not yet loaded).
- unsupported: The query is outside what this source covers (for example a date JMA does not issue warnings for yet, or a period before the source's records).

## Errors

- RECEIPT_NOT_FOUND (get_receipt)
- RATE_LIMITED (free calls over the per-client limit; HTTP 429 with Retry-After; not charged)

## Terms

- Results describe only the request you supplied, at the time you called. Mismatches and warnings are observations, not risk ratings.
- The asset table is reviewed by hand and versioned; a table match is not proof of authenticity or of current on-chain state.

## Privacy and support

- Operator: MK Career Planning
- Terms of Service: https://x402-safety-kit-production.mk-career-planning.workers.dev/terms
- Privacy policy: https://x402-safety-kit-production.mk-career-planning.workers.dev/privacy
- Support (free): https://x402-safety-kit-production.mk-career-planning.workers.dev/support (mk.career.planning@gmail.com)
