Skip to main content

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:

URLContent
/llms.txtIndex: a summary, then a linked list of every page by section.
/llms-full.txtEvery page in full, as one file, plus the plain-Markdown API reference appended.
/llms-agents.txtOnly the agent, MCP, x402, API and error pages — in full.
/<any page>.mdAny page of this site as Markdown. Append .md to the URL.
/api-reference.mdThe whole API as plain Markdown: one section per operation, with parameters, request schema and responses.
/errors.jsonEvery error code with its status, group, retryable, resign, summary and hint.
/openapi.yaml, /openapi.jsonThe API document, OpenAPI 3.1.
/abi/corelayer.abi.jsonThe contract ABI, straight from its build output.
/sitemap.xml, /robots.txtStandard. Nothing is disallowed; no AI crawler is blocked.
/.well-known/security.txtWhere 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.

URLContent
GET /v1/networkChain 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/pricingTiers, tariff and its version, pay-as-you-go rates, rate classes, document version. Amounts are decimal strings.
GET /v1/statusService state, components, current incidents.
GET /openapi.jsonThe document as the running binary serves it, at the root of the API host.
GET /.well-known/x402The x402 resource descriptor.
GET /v1/x402/supportedSupported 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.

URLWhat it carriesSource
co-relayer.com/pricing.json, /pricing.mdA 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.jsonThe schema that mirror validates against.Generated at deploy
co-relayer.com/schemas/ru-schedule-v{N}.jsonThe Relay Unit schedule, whose hash is committed on chain.Generated at deploy
/.well-known/corelayer.jsonDirect hosts, contract address, chain id, registry view name.Generated at deploy
/.well-known/agent-card.jsonAn A2A agent card: skills derived from the API tags, the MCP endpoint, the auth rings.Generated at deploy
/.well-known/agent-registration.jsonThe on-chain identity registration document.Generated at deploy
MCP registry entryThe server's published entry, from its own tools/list.Published by the key holder

The rules for using any of it​

  1. 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 chainId and refuse on a mismatch.
  2. 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.
  3. 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.
  4. 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:

ViewGives
getPricingConfigTariff, Relay Unit schedule and deposit bounds in one call.
getTiersEvery tier record as stored.
getPrice, getPaygPricePrices at the effective tariff.
getRateClassesThe throughput table.
getTariffHistoryEvery 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)