# 402rates > Evidence-backed data for autonomous agents: realised yields and issuer terms > for tokenized treasury funds, plus measured cross-chain USDC settlement costs. > Measured figures carry their observations, sources and versioned method. No > account, API key or subscription is required. A paid call settles in USDC > inside the HTTP request. > > Also a free directory of the x402 catalogue itself: which paid endpoint can > answer a question, what it costs, and how broad its paying base is. Base URL: https://api.402rates.com Live on mainnet. ## How to call it 1. Send a normal GET request to an endpoint below. 2. A paid endpoint answers `402 Payment Required`. The terms are in the `PAYMENT-REQUIRED` response header (base64 JSON, x402 v2) and list every network accepted for that call. 3. Sign the authorization with your wallet and retry the same request with the payment header attached. 4. You receive `200 OK` with the data, and the settlement transaction hash in the `PAYMENT-RESPONSE` header. Paid capabilities are for business/professional use only. Terms: https://402rates.com/data-terms/ The HTTP v2 `PAYMENT-REQUIRED` resource description and paid MCP tool/challenge descriptions include this notice before payment. Paid HTTP endpoints, including the legacy XDC mirror, also return `Link` with relation `terms-of-service` and `X-Paid-Service-Audience: businesses_and_professional_agents_only`. Each individual paid call buys its described result, within its published scope and limits. The main obligation is fulfilled on delivery of the agreed result to the client's HTTP or MCP interface. Payment or internal execution alone does not establish delivery. No ongoing monitoring, automatic updates or execution of later customer transactions is included unless expressly agreed. Repeated individual purchases are permitted under the same use terms. Claims concerning non-delivery or defective performance remain unaffected. Synthetic test runs retain their separate access period and call limits; subscriptions and continuous services, if separately agreed, follow their own terms. https://402rates.com/data-terms/#per-call-scope Report non-delivery after payment, duplicate charges for the same payment authorization or a calculation inconsistent with its supplied inputs and published method to info@402rates.com. Include the capability, payment network, transaction identifier and available evidence with secrets removed. Reports are reviewed manually. These examples do not restrict other complaints or statutory rights and deadlines. Repayment does not itself settle other claims. https://402rates.com/data-terms/#complaints Gas is sponsored by the facilitator, so an agent needs USDC only and no native gas token. An XDC native mirror of every paid endpoint is served under `/xdc/v1/...` and speaks the x402 v1 flow the XDC AI marketplace uses. ## Free endpoints - `GET /v1/manifest` - OpenAPI 3.1 description of every endpoint, its query parameters, its price and the networks it accepts. Read this first. The identical document is also available at the conventional discovery paths `/openapi.json` and `/.well-known/openapi.json`. - `GET /v1/discovery` - a directory of the x402 catalogue. Search other providers' paid endpoints by what they do, filter by price and network, and see for each one its 30-day call count, its number of distinct paying addresses, the ratio between the two, and how long since it was last paid. Parameters: `q`, `max_price`, `network`, `limit`. Every figure is a count. Nothing here is scored, graded or labelled, and the rule is published: https://402rates.com/discovery-method-v1 - `GET /v1/rwa/coverage` - which instruments the yield data covers, whether each figure is measured or quoted and why, and what is known to be missing. - `GET /v1/rwa/filter` - filter the catalogue by investor type, geography, minimum, chains, and permission model; unresolved evidence stays explicit. - `GET /v1/rwa/instrument` - one complete evidence-backed instrument state: yield, measured deployment size, subscription and redemption minimums, fees, settlement, chain evidence, access conditions and citations. Omit `ticker` to receive the ticker list rather than all instrument records. Three distinct tickers per caller are free in a rolling hour; repeats do not consume another slot. A fourth distinct ticker returns `402` with code `BREADTH_LIMIT` and a pointer to the paid complete snapshot. - `GET /v1/rwa/history` - normalized observations for one instrument and one audited reconstructible recorder source in an inclusive `date_from` / `date_to` window. Every point includes value, date, source ID, revision and source-time versus read-time dating. Omit `source_id` to discover sources. Forty of 45 daily sources are free. The five current-only issuer series return `HISTORY_SOURCE_RESERVED` with the data-use URL, never an empty gap. It shares the instrument view's three-ticker rolling-hour allowance. - `GET /health` - liveness. `GET /ready` - whether a paid call could be served right now. ## Paid endpoints - `GET /v1/rwa/instruments` (5 USDC) - the complete current evidence snapshot for all 13 tracked instruments in the exact single-instrument record shape. It includes yields or explicit gaps, measured size, every terms cell, chain conflicts, quotations, source URLs and evidence dates. This call grants internal use with attribution. Redistribution, embedding in a customer-facing product, and continuous access with change notices are available separately: https://402rates.com/data-terms/ - `GET /v1/rwa/yields` (0.03 USDC) - realised 30-day yields for BUIDL, BENJI, OUSG, USDY, USTB, USYC, VBILL, mTBILL, TBILL, cUSDO and Spiko EUTBL, USTBL and UKTBL. Measured rows are computed from NAV, price or verified passive-holder balances under the Open Treasury Yield Basis and carry their observations and sources. Quoted and unavailable rows remain explicit. Optional `instruments`. - `GET /v1/settlement/costs` (0.01 USDC) - the measured on-chain cost of a USDC transfer across Base, Polygon, Arbitrum, Ethereum and XDC, from gas units simulated per chain, live gas prices, fresh chain heads and the rollup L1 data fee, cheapest first. Optional `chains`. - `GET /v1/ping` (0.001 USDC) - a paid round trip for testing a wallet against a payment rail, with a live capability directory in `next`: free entries, paid entries with exact prices, and the MCP address. The settlement receipt identifies the actual payment network and transaction. ## MCP Streamable HTTP at `https://api.402rates.com/mcp`, stateless JSON over POST. Thirteen free tools - `list_capabilities`, `find_x402_resource`, `get_manifest`, `get_rwa_instrument`, `get_rwa_history`, `cheapest_settlement_chain`, `check_payment_terms`, `compare_rwa_snapshots`, `describe_agent_test`, `start_agent_test`, `execute_test_action`, `inspect_test_state`, `read_agent_test_report`. Four paid tools: `compare_settlement_costs` (0.01 USDC, optional `chains`), `get_rwa_yields` (0.03 USDC, optional comma-separated `instruments`), `get_rwa_instruments` (5 USDC, no arguments, all instrument records), and `test_payment` (0.001 USDC, no arguments, payment check and capability directory). Each returns x402 payment terms as structured content when called without payment. The free instrument and history tools share the same breadth rule as HTTP; the refusal names `get_rwa_instruments` as the paid MCP purchase path. Payment support and a funded wallet are needed to complete a paid call. Runnable examples and prerequisites: https://402rates.com/integration/ claude mcp add --transport http 402rates https://api.402rates.com/mcp ## Free synthetic agent test and repeat Case `commit_then_confirmation_unavailable`, version `1.0.0`: the first committed synthetic action returns an application-level error instead of its confirmation. This is not a network disconnect or a real payment. - GET /v1/tests/case, MCP describe_agent_test: case, task, limits and coverage. - POST /v1/tests/run, MCP start_agent_test: case_id and case_version start an empty run. Optional previous_run_id and its token link a finalized earlier run to a repeat of exactly the same case version. - POST /v1/tests/action, MCP execute_test_action: run_id, task_id, action_key (UUID) and quantity. Identical key and input replay the existing synthetic operation; a new key can create another. The first confirmation replacement is HTTP 502 / MCP isError with TEST_ACTION_OUTCOME_UNKNOWN. - POST /v1/tests/state, MCP inspect_test_state: run_id and task_id expose the operation records currently in this synthetic task. - POST /v1/tests/report, MCP read_agent_test_report: run_id, optional finalize (default false). Finalization freezes the timeline and stops further actions. A linked repeat includes both timelines while the earlier run is retained. HTTP inputs are JSON bodies. Run tokens use X-Test-Access-Token, never the URL or body. MCP uses an access_token argument. Start returns a new token once; there is no account recovery if it is lost. The optional previous-run token authorizes a linked repeat, without granting access to unrelated runs. One run lasts at most five minutes, with twenty action calls and forty read calls in total. Run access expires twenty-four hours after creation. Reports show sequence, timestamps, actions, executions and state, without scores or conclusions about an agent. Coverage explicitly excludes real payments, network disconnects and other behavior classes. Calls may originate from middleware as well as the model. Model configuration changes are only caller-declared. No wallet or prior ping purchase is needed; test price is zero. Caller model/hosting costs remain external. Thin HTTP/MCP connector: https://402rates.com/examples/agent-test.mjs Local HTML timeline renderer: https://402rates.com/examples/agent-test-report.mjs Saved reports can also be paired locally using --previous=earlier.json after server retention expires. The renderer requires the same case version and an earlier finalized run; it labels the supplied report as unauthenticated local input. Report schema: https://402rates.com/schemas/agent-test-report-v1.json ## Free data and infrastructure analysis - POST https://api.402rates.com/v1/tests/preflight, MCP check_payment_terms: accepts decoded challenge JSON and optional expected network, asset, pay_to, scheme and max_amount_atomic. Static exact EVM checks; no payment, signature verification or network probe. An atomic budget requires network and asset. - POST https://api.402rates.com/v1/rwa/changes, MCP compare_rwa_snapshots: accepts before and after saved 402rates yields/instrument responses, plus optional threshold_bps (default 5). Compares supplied yield and divergence fields; no new data access, authenticated history or automatic monitoring. A threshold crossing is numeric, not an assertion of economic significance. Both use application/json, require no login and accept at most 192 KiB. An empty object returns input guidance. Synthetic examples and input schemas appear in OpenAPI requestBody. Inputs are not persistently stored. Thin HTTP/MCP client: https://402rates.com/examples/analyze.mjs Reports use report_version and status, with explicit limitations. ## Published specifications - https://402rates.com/basis-spec-v1 - the Open Treasury Yield Basis: what is measured, over what window, how it is annualised, and what disqualifies an instrument. Written so a stranger can implement it and reach our figures. Its Corrections section is the canonical record of corrected observations and published figures. - https://402rates.com/discovery-method-v1 - the directory method: how a query is matched, how results are ordered, what each usage figure means and does not mean, and what this service will never say about anyone. Both are versioned, and the version travels inside every response that rests on them. ## Response shape Source-backed data responses use a JSON envelope; the analysis reports above use their own report_version and status contract: - `meta` - the capability, the schema version, when it was generated, a `sources` list giving the origin, fetch time and maximum accepted age of every input, a `freshness` block whose `valid_until` and `cache_ttl_s` are derived from those sources rather than set to a constant, the units, and the methodology and limitations. - `data` - the rows. - `related` - sibling capabilities that are callable right now. Nothing is listed before it is callable. Errors are always JSON, never HTML, and carry a stable `error.code`. If a source cannot be proven fresh the request fails with `STALE_SOURCE` and no payment is settled: the service does not charge for stale data. A chain that is merely unreachable is excluded, named, and the remaining chains are still served. ## Notes for agents - GET parameters use the query string. Analysis and synthetic test POST inputs use JSON bodies; short-lived test tokens use the documented HTTP header. There are no path parameters. - Every endpoint returns a useful result with no parameters at all. - `minimum_lte` requires `minimum_lte_currency`; `size_gte` requires `size_gte_currency`. Errors name the missing partner parameter. - Every decisive issuer-term cell uses `known`, `conditional`, `conflicting` or `unknown`. Conflicting sources are returned together; a more permissive source never silently wins. - Bulk current coverage is the paid `compass.rwa.instruments.all` product. The free history view serves the 40 daily source series that the 2026-09-04 audit found independently reconstructible, one instrument and source per call. The five non-reconstructible issuer series remain reserved and are never reported as missing data. - A figure that cannot be computed is named as unavailable with its reason. It is never filled in, and an instrument whose issuer publishes no machine-readable figure is published as `unavailable` rather than estimated. - The directory publishes counts about other providers and no judgements. A description that addresses the calling model is withheld rather than repeated, and the withholding is declared. - This is an informational data and calculation service. It is not investment, legal, tax or accounting advice, an offer, a solicitation, a recommendation, or a determination of eligibility or suitability. - Source and onchain data can be inaccurate, incomplete, delayed, stale, unavailable, revised or conflicting. Verify the cited evidence independently. The caller remains responsible for every decision and action. - 402rates.com does not execute investment transactions or hold financial assets on the caller's behalf. An x402 payment buys access to data, not a financial instrument. - Full service and data-use terms: https://402rates.com/data-terms/ ## Legal - Provider identification: https://402rates.com/impressum/ - Privacy notice: https://402rates.com/datenschutz/ - Service and data-use terms: https://402rates.com/data-terms/ - Paid capabilities are offered only to businesses, organizations and their professionally deployed agents, not for private consumer purposes.