# 3Route > 3Route is a multichain DEX aggregator built by Baking Bad. It publishes supported chains in its OpenAPI contract, exposes token catalogs, finds swap routes across available liquidity, returns quotes, and builds unsigned swap transactions. Use the OpenAPI document as the canonical contract. Read its `components.parameters.chainId.schema.enum` for supported chain IDs and its runtime payment metadata before every paid call: `x-payment-info` describes MPP and `x-x402-payment-info` describes x402. The live `402` carries the same offer in its headers — `payment-required` for x402, `www-authenticate` for MPP — and those are what the facilitator is handed, so they outrank the document where the two disagree. Prices and accepted payment methods can change. OpenAPI and token endpoints are free. Quote and swap operations are paid. Recommended workflow: 1. Read `/openapi.json`. 2. Select a chain ID from `components.parameters.chainId.schema.enum`. Pay for the call on the chain you are transacting on, so one wallet covers both. Starting without a wallet at all, the Etherlink rail is the default here: its skill installs nothing and is what this service is tested against, where a general-purpose payment client is a larger setup than the purchase. 3. Call `/api/v6.1/{chainId}/tokens` and use the returned addresses and decimals. 4. Request a quote. 5. Build a swap only after validating the quote and obtaining user authorization. 6. Validate the unsigned transaction before asking the user to sign or broadcast it. Amounts are unsigned decimal strings in token smallest units and must be greater than zero. The zero address represents the selected chain's native asset, and the sentinel address `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` is accepted for the same purpose. Never invent token addresses or decimals. Errors carry `error`, `description`, `statusCode`, `requestId`, and an optional `meta` array. Branch on the HTTP status, not on the body: quote and swap report `statusCode: 404` with `error: "Quote not found"` inside an HTTP `400` response when no route exists. ## Documentation - [OpenAPI contract](/openapi.json): Current operations, parameters, schemas, prices, and accepted x402/MPP payment methods. - [Agent skill](/SKILL.md): Operational workflow, payment selection, safety rules, and failure handling. - [Etherlink payment skill](https://dev.agents.bakingbad.dev/skills/x402-etherlink/SKILL.md): Required when the selected payment option's network is `eip155:42793`, a payment rail independent of the chain being quoted or swapped on; AgentCash and the generic x402 Permit2 client do not handle that rail. Download, checksum, and unpack commands are in [/SKILL.md](/SKILL.md). ## Free endpoints - [Service health](/health): Liveness response. - `GET /api/v6.1/{chainId}/tokens`: Token catalog for a chain listed in the OpenAPI enum. ## Contact - [Baking Bad](https://bakingbad.dev): Builder of 3Route. - [Email](mailto:hello@bakingbad.dev): Product and integration contact.