Discovery
Everything an agent needs to work out what this service is, what it costs and how to call it is a fetchable file. None of it requires a key, an account or a conversation.
This page says where each file comes from: this site's own build, the API's answers, or the deploy pipeline, which generates a file for each network it deploys.
Documentation, as text
Served by this site (docs.co-relayer.com), produced by its build:
| URL | Content |
|---|---|
/llms.txt | Index: a summary, then a linked list of every page by section. |
/llms-full.txt | Every page in full, as one file, plus the plain-Markdown API reference appended. |
/llms-agents.txt | Only the agent, MCP, x402, API and error pages — in full. |
/<any page>.md | Any page of this site as Markdown. Append .md to the URL. |
/api-reference.md | The whole API as plain Markdown: one section per operation, with parameters, request schema and responses. |
/errors.json | Every error code with its status, group, retryable, resign, summary and hint. |
/openapi.yaml, /openapi.json | The API document, OpenAPI 3.1. |
/abi/corelayer.abi.json | The contract ABI, straight from its build output. |
/sitemap.xml, /robots.txt | Standard. Nothing is disallowed; no AI crawler is blocked. |
/.well-known/security.txt | Where to report a vulnerability. |
The llms.txt convention is what the first three follow.
The marketing site
co-relayer.com publishes its own /llms.txt and /llms-full.txt — the product and pricing
pages rather than the reference — plus a Markdown twin of every page at <path>.md. These are
built output.
From the API, at runtime
These are answers from the API of each network.
| URL | Content |
|---|---|
GET /v1/network | Chain id, CAIP-2 name, contract address, payment token, gas constants, round duration, direct hosts, native-auth block, contract and swap-venue pause state, per-shard latency. |
GET /v1/pricing | Tiers, tariff and its version, pay-as-you-go rates, rate classes, document version. Amounts are decimal strings. |
GET /v1/status | Service state, components, current incidents. |
GET /openapi.json | The document as the running binary serves it, at the root of the API host. |
GET /.well-known/x402 | The x402 resource descriptor. |
GET /v1/x402/supported | Supported schemes, networks, extensions and signer addresses. |
Generated at deploy
These are generated by the deploy pipeline from the same sources, for each network it deploys, and again whenever the tariff, a tier or the policy changes.
| URL | What it carries | Source |
|---|---|---|
co-relayer.com/pricing.json, /pricing.md | A static mirror of the pricing document, rebuilt when the tariff, a tier or the policy changes. | Generated at deploy |
co-relayer.com/schemas/pricing-v1.json | The schema that mirror validates against. | Generated at deploy |
co-relayer.com/schemas/ru-schedule-v{N}.json | The Relay Unit schedule, whose hash is committed on chain. | Generated at deploy |
/.well-known/corelayer.json | Direct hosts, contract address, chain id, registry view name. | Generated at deploy |
/.well-known/agent-card.json | An A2A agent card: skills derived from the API tags, the MCP endpoint, the auth rings. | Generated at deploy |
/.well-known/agent-registration.json | The on-chain identity registration document. | Generated at deploy |
| MCP registry entry | The server's published entry, from its own tools/list. | Published by the key holder |
The rules for using any of it
- Chain id, not address. The CoRelayer owner and relayer wallets have the same addresses on
devnet and on mainnet, and the contract address may coincide too. An address therefore tells
you nothing about which network you are on. Compare
chainIdand refuse on a mismatch. - Your pin wins. Every discovery file is a convenience copy. If one names a contract address that differs from the one pinned in your configuration, the correct behaviour is to refuse, not to adopt it.
- Verify the relayer against the chain, through a node that is not ours, before you sign a
transaction naming it:
getRelayerState(address)must be active. - Check the schedule hash if you recompute prices. The contract stores the version and hash of the Relay Unit schedule, so you can prove the document you read is the one committed to.
Verifying the price without trusting us
Every number in the pricing document comes from a contract view you can call yourself:
| View | Gives |
|---|---|
getPricingConfig | Tariff, Relay Unit schedule and deposit bounds in one call. |
getTiers | Every tier record as stored. |
getPrice, getPaygPrice | Prices at the effective tariff. |
getRateClasses | The throughput table. |
getTariffHistory | Every tariff ever in force. |
Read-only calls cost nothing and need no permission. If the document and the chain disagree, the chain is right and we have a bug — please tell us.
A note on freshness
The static mirrors are rebuilt on the events that change them; the API is live. Where the two can differ — during the 48 hours between a tariff increase being scheduled and taking effect — both carry the pending value and the moment it becomes effective, so a client that reads either one can see the change coming. (Tariff)