{"openapi":"3.1.0","info":{"title":"FAR — Free Asset Resolver","version":"2026-10-08","summary":"A static, key-less resolver between CoinGecko ids and CAIP-19 identifiers.","description":"Every route is a static JSON file. There is no server, no authentication and no rate limit; a missing key is a 404 from the host.\n\nCurrent release: 21894 CoinGecko assets, 41839 CAIP-19 deployments across 294 chains.\n\nRead /llms.txt first. Names and tickers are not unique: the /name and /symbol routes return groups, and `family` says which member is the canonical asset.\n\nEvery file is sha256-hashed into /manifest.json and has an inclusion proof at /proof/{path without .json}.json, so a single response can be verified against the release's Merkle root.","license":{"name":"MIT (code); CC0 (curated tables); upstream terms for CoinGecko and chain data","url":"https://github.com/0xcounting/FAR/blob/main/LICENSE-DATA"},"contact":{"url":"https://github.com/0xcounting/FAR/issues"}},"externalDocs":{"url":"https://0xcounting.github.io/FAR/README.md","description":"Documentation (Markdown)"},"servers":[{"url":"https://0xcounting.github.io/FAR"}],"tags":[{"name":"lookup","description":"One asset or group by identifier"},{"name":"bulk","description":"Whole-registry and metadata files"},{"name":"integrity","description":"Hashes and Merkle proofs"},{"name":"agents","description":"Discovery files for agents and tooling"}],"paths":{"/index.json":{"get":{"tags":["bulk"],"summary":"Counts, source hashes and the route list. Fetch this first.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"registry":{"type":"string","const":"far"},"version":{"type":"string","description":"Release date, YYYY-MM-DD. Same across every file of one build."},"docs":{"type":"string","format":"uri"},"generated":{"type":"string"},"sources":{"type":"object"},"counts":{"type":"object"},"routes":{"type":"object"}},"required":["registry","version","counts","routes"]}}}}}}},"/cg/{coingeckoId}.json":{"get":{"tags":["lookup"],"summary":"One asset by CoinGecko id, with every chain deployment.","parameters":[{"name":"coingeckoId","in":"path","required":true,"schema":{"type":"string"},"example":"tether"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"registry":{"type":"string","const":"far"},"version":{"type":"string","description":"Release date, YYYY-MM-DD. Same across every file of one build."},"docs":{"type":"string","format":"uri"},"query":{"type":"object","properties":{"by":{"type":"string","const":"coingeckoId"},"key":{"type":"string"}},"required":["by","key"]},"asset":{"type":"object","properties":{"coingeckoId":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"deployments":{"type":"array","items":{"type":"object","properties":{"caip19":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}/[-a-z0-9]{3,8}:[-.%a-zA-Z0-9]{1,128}$","description":"CAIP-19 asset id"},"caip2":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}$","description":"CAIP-2 chain id"},"chainName":{"type":["string","null"]},"coingeckoPlatform":{"type":["string","null"],"description":"CoinGecko platform slug. Null for a native unit of account, which CoinGecko does not list as a platform entry."},"assetNamespace":{"type":"string"},"address":{"type":["string","null"],"description":"Contract address or asset id on that chain. Null for a native unit of account (assetNamespace slip44)."},"native":{"type":"boolean","description":"Present and true when this is the chain's native unit of account."},"confidence":{"type":"string","enum":["high","medium","low","proposed"]},"verified":{"type":"object","properties":{"method":{"type":"string","enum":["ics20-denom-trace"]},"rule":{"type":"string"},"path":{"type":"string"},"baseDenom":{"type":"string"},"origin":{"type":["string","null"],"description":"CAIP-19 of the asset on its origin chain (derived by walking the path; null when the origin could not be reached)."},"resolvedBy":{"type":["string","null"]},"placedVia":{"type":"string","enum":["origin-identity","eth-erc20","ibc-canonical"],"description":"Which already-known identity placed this voucher on its CoinGecko id. Absent when CoinGecko itself lists the voucher."}},"required":["method","rule","path","baseDenom"],"description":"Present when the mapping is PROVEN rather than reviewed: for an ICS-20 voucher, sha256(path + \"/\" + baseDenom) reproduces the hash in the denom, so anyone can recompute it. The origin and placement are derived, the hash is not."}},"required":["caip19","caip2","assetNamespace","confidence"]},"description":"One entry per chain the asset exists on. Ordered by how much of the registry lives on that chain."},"related":{"type":"object","properties":{"sameName":{"type":"array","items":{"type":"string"}},"sameSymbol":{"type":"array","items":{"type":"string"}}},"description":"Other CoinGecko ids that collide with this one."},"family":{"type":"object","properties":{"family":{"type":"string","enum":["canonical","standalone","derivative"],"description":"Naming structure, not merit: `canonical` is what other assets are named after, `derivative` declares itself a wrapper, `standalone` is neither. Most assets are standalone."},"citedBy":{"type":"integer"},"corroborated":{"type":"integer"},"attested":{"type":"boolean"},"derivative":{"type":"boolean"}},"required":["family"]}},"required":["coingeckoId","name","symbol","deployments","family"]}},"required":["registry","version","query","asset"]}}}},"404":{"description":"No such key. Static hosting returns the host's 404 page, not JSON."}}}},"/caip/{namespace}/{reference}/{assetNamespace}/{assetReference}.json":{"get":{"tags":["lookup"],"summary":"The asset at an exact CAIP-19.","description":"The CAIP-19 is written as a path: the `:` inside each half and the `/` between them become path separators, and `%` becomes `~`. So `eip155:1/erc20:0xdac17f…` is `/caip/eip155/1/erc20/0xdac17f….json`, and a Sui coin type `…%3A%3Ausdc%3A%3AUSDC` is `…~3A~3Ausdc~3A~3AUSDC`. Cosmos chains whose chain_id fails the cosmos profile's direct grammar (`kava_2222-10`, `shentu-2.2`) are canonically `cosmos:hashed-<16 hex>` and ALSO answer under the raw spelling (`/caip/cosmos/kava_2222-10/...`); the alias response carries an `alias` object naming the canonical id. See /_chains.json `aliases`.","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string"},"example":"eip155"},{"name":"reference","in":"path","required":true,"schema":{"type":"string"},"example":"1"},{"name":"assetNamespace","in":"path","required":true,"schema":{"type":"string"},"example":"erc20"},{"name":"assetReference","in":"path","required":true,"schema":{"type":"string"},"example":"0xdac17f958d2ee523a2206206994597c13d831ec7"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"registry":{"type":"string","const":"far"},"version":{"type":"string","description":"Release date, YYYY-MM-DD. Same across every file of one build."},"docs":{"type":"string","format":"uri"},"query":{"type":"object","properties":{"by":{"type":"string","const":"caip19"},"key":{"type":"string"}},"required":["by","key"]},"alias":{"type":"object","properties":{"requested":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}/[-a-z0-9]{3,8}:[-.%a-zA-Z0-9]{1,128}$","description":"CAIP-19 asset id"},"canonical":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}/[-a-z0-9]{3,8}:[-.%a-zA-Z0-9]{1,128}$","description":"CAIP-19 asset id"},"chainAlias":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}$","description":"CAIP-2 chain id"},"chainCanonical":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}$","description":"CAIP-2 chain id"}},"required":["requested","canonical","chainAlias","chainCanonical"],"description":"Present when the path was an ALIAS spelling of the chain (the raw cosmos chain-id of a hashed reference, e.g. cosmos:kava_2222-10). The record itself carries the canonical CAIP-19; this says what was asked for and what it resolved to."},"asset":{"type":"object","properties":{"coingeckoId":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"deployments":{"type":"array","items":{"type":"object","properties":{"caip19":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}/[-a-z0-9]{3,8}:[-.%a-zA-Z0-9]{1,128}$","description":"CAIP-19 asset id"},"caip2":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}$","description":"CAIP-2 chain id"},"chainName":{"type":["string","null"]},"coingeckoPlatform":{"type":["string","null"],"description":"CoinGecko platform slug. Null for a native unit of account, which CoinGecko does not list as a platform entry."},"assetNamespace":{"type":"string"},"address":{"type":["string","null"],"description":"Contract address or asset id on that chain. Null for a native unit of account (assetNamespace slip44)."},"native":{"type":"boolean","description":"Present and true when this is the chain's native unit of account."},"confidence":{"type":"string","enum":["high","medium","low","proposed"]},"verified":{"type":"object","properties":{"method":{"type":"string","enum":["ics20-denom-trace"]},"rule":{"type":"string"},"path":{"type":"string"},"baseDenom":{"type":"string"},"origin":{"type":["string","null"],"description":"CAIP-19 of the asset on its origin chain (derived by walking the path; null when the origin could not be reached)."},"resolvedBy":{"type":["string","null"]},"placedVia":{"type":"string","enum":["origin-identity","eth-erc20","ibc-canonical"],"description":"Which already-known identity placed this voucher on its CoinGecko id. Absent when CoinGecko itself lists the voucher."}},"required":["method","rule","path","baseDenom"],"description":"Present when the mapping is PROVEN rather than reviewed: for an ICS-20 voucher, sha256(path + \"/\" + baseDenom) reproduces the hash in the denom, so anyone can recompute it. The origin and placement are derived, the hash is not."}},"required":["caip19","caip2","assetNamespace","confidence"]},"description":"One entry per chain the asset exists on. Ordered by how much of the registry lives on that chain."},"related":{"type":"object","properties":{"sameName":{"type":"array","items":{"type":"string"}},"sameSymbol":{"type":"array","items":{"type":"string"}}},"description":"Other CoinGecko ids that collide with this one."},"family":{"type":"object","properties":{"family":{"type":"string","enum":["canonical","standalone","derivative"],"description":"Naming structure, not merit: `canonical` is what other assets are named after, `derivative` declares itself a wrapper, `standalone` is neither. Most assets are standalone."},"citedBy":{"type":"integer"},"corroborated":{"type":"integer"},"attested":{"type":"boolean"},"derivative":{"type":"boolean"}},"required":["family"]},"deployment":{"type":"object","properties":{"caip19":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}/[-a-z0-9]{3,8}:[-.%a-zA-Z0-9]{1,128}$","description":"CAIP-19 asset id"},"caip2":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}$","description":"CAIP-2 chain id"},"chainName":{"type":["string","null"]},"coingeckoPlatform":{"type":["string","null"],"description":"CoinGecko platform slug. Null for a native unit of account, which CoinGecko does not list as a platform entry."},"assetNamespace":{"type":"string"},"address":{"type":["string","null"],"description":"Contract address or asset id on that chain. Null for a native unit of account (assetNamespace slip44)."},"native":{"type":"boolean","description":"Present and true when this is the chain's native unit of account."},"confidence":{"type":"string","enum":["high","medium","low","proposed"]},"verified":{"type":"object","properties":{"method":{"type":"string","enum":["ics20-denom-trace"]},"rule":{"type":"string"},"path":{"type":"string"},"baseDenom":{"type":"string"},"origin":{"type":["string","null"],"description":"CAIP-19 of the asset on its origin chain (derived by walking the path; null when the origin could not be reached)."},"resolvedBy":{"type":["string","null"]},"placedVia":{"type":"string","enum":["origin-identity","eth-erc20","ibc-canonical"],"description":"Which already-known identity placed this voucher on its CoinGecko id. Absent when CoinGecko itself lists the voucher."}},"required":["method","rule","path","baseDenom"],"description":"Present when the mapping is PROVEN rather than reviewed: for an ICS-20 voucher, sha256(path + \"/\" + baseDenom) reproduces the hash in the denom, so anyone can recompute it. The origin and placement are derived, the hash is not."}},"required":["caip19","caip2","assetNamespace","confidence"],"description":"The deployment matching the requested CAIP-19."}},"required":["coingeckoId","name","symbol","deployments","family"]}},"required":["registry","version","query","asset"]}}}},"404":{"description":"No such key. Static hosting returns the host's 404 page, not JSON."}}}},"/name/{slug}.json":{"get":{"tags":["lookup"],"summary":"Every asset with this name. Always a group.","description":"Slug: lowercase, runs of anything but letters and digits become `-`, trimmed. \"USD Coin\" is `usd-coin`.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"example":"tether"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"registry":{"type":"string","const":"far"},"version":{"type":"string","description":"Release date, YYYY-MM-DD. Same across every file of one build."},"docs":{"type":"string","format":"uri"},"query":{"type":"object","properties":{"by":{"type":"string","const":"name"},"key":{"type":"string"}},"required":["by","key"]},"count":{"type":"integer"},"assets":{"type":"array","items":{"type":"object","properties":{"coingeckoId":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"deployments":{"type":"array","items":{"type":"object","properties":{"caip19":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}/[-a-z0-9]{3,8}:[-.%a-zA-Z0-9]{1,128}$","description":"CAIP-19 asset id"},"caip2":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}$","description":"CAIP-2 chain id"},"chainName":{"type":["string","null"]},"coingeckoPlatform":{"type":["string","null"],"description":"CoinGecko platform slug. Null for a native unit of account, which CoinGecko does not list as a platform entry."},"assetNamespace":{"type":"string"},"address":{"type":["string","null"],"description":"Contract address or asset id on that chain. Null for a native unit of account (assetNamespace slip44)."},"native":{"type":"boolean","description":"Present and true when this is the chain's native unit of account."},"confidence":{"type":"string","enum":["high","medium","low","proposed"]},"verified":{"type":"object","properties":{"method":{"type":"string","enum":["ics20-denom-trace"]},"rule":{"type":"string"},"path":{"type":"string"},"baseDenom":{"type":"string"},"origin":{"type":["string","null"],"description":"CAIP-19 of the asset on its origin chain (derived by walking the path; null when the origin could not be reached)."},"resolvedBy":{"type":["string","null"]},"placedVia":{"type":"string","enum":["origin-identity","eth-erc20","ibc-canonical"],"description":"Which already-known identity placed this voucher on its CoinGecko id. Absent when CoinGecko itself lists the voucher."}},"required":["method","rule","path","baseDenom"],"description":"Present when the mapping is PROVEN rather than reviewed: for an ICS-20 voucher, sha256(path + \"/\" + baseDenom) reproduces the hash in the denom, so anyone can recompute it. The origin and placement are derived, the hash is not."}},"required":["caip19","caip2","assetNamespace","confidence"]},"description":"One entry per chain the asset exists on. Ordered by how much of the registry lives on that chain."},"related":{"type":"object","properties":{"sameName":{"type":"array","items":{"type":"string"}},"sameSymbol":{"type":"array","items":{"type":"string"}}},"description":"Other CoinGecko ids that collide with this one."},"family":{"type":"object","properties":{"family":{"type":"string","enum":["canonical","standalone","derivative"],"description":"Naming structure, not merit: `canonical` is what other assets are named after, `derivative` declares itself a wrapper, `standalone` is neither. Most assets are standalone."},"citedBy":{"type":"integer"},"corroborated":{"type":"integer"},"attested":{"type":"boolean"},"derivative":{"type":"boolean"}},"required":["family"]}},"required":["coingeckoId","name","symbol","deployments","family"]}}},"required":["registry","version","query","count","assets"],"description":"A GROUP: names and tickers are not unique. Use `family` to pick the canonical one."}}}},"404":{"description":"No such key. Static hosting returns the host's 404 page, not JSON."}}}},"/symbol/{slug}.json":{"get":{"tags":["lookup"],"summary":"Every asset with this ticker. Always a group; `usdc` returns 60+.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"example":"usdc"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"registry":{"type":"string","const":"far"},"version":{"type":"string","description":"Release date, YYYY-MM-DD. Same across every file of one build."},"docs":{"type":"string","format":"uri"},"query":{"type":"object","properties":{"by":{"type":"string","const":"symbol"},"key":{"type":"string"}},"required":["by","key"]},"count":{"type":"integer"},"assets":{"type":"array","items":{"type":"object","properties":{"coingeckoId":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"deployments":{"type":"array","items":{"type":"object","properties":{"caip19":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}/[-a-z0-9]{3,8}:[-.%a-zA-Z0-9]{1,128}$","description":"CAIP-19 asset id"},"caip2":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}$","description":"CAIP-2 chain id"},"chainName":{"type":["string","null"]},"coingeckoPlatform":{"type":["string","null"],"description":"CoinGecko platform slug. Null for a native unit of account, which CoinGecko does not list as a platform entry."},"assetNamespace":{"type":"string"},"address":{"type":["string","null"],"description":"Contract address or asset id on that chain. Null for a native unit of account (assetNamespace slip44)."},"native":{"type":"boolean","description":"Present and true when this is the chain's native unit of account."},"confidence":{"type":"string","enum":["high","medium","low","proposed"]},"verified":{"type":"object","properties":{"method":{"type":"string","enum":["ics20-denom-trace"]},"rule":{"type":"string"},"path":{"type":"string"},"baseDenom":{"type":"string"},"origin":{"type":["string","null"],"description":"CAIP-19 of the asset on its origin chain (derived by walking the path; null when the origin could not be reached)."},"resolvedBy":{"type":["string","null"]},"placedVia":{"type":"string","enum":["origin-identity","eth-erc20","ibc-canonical"],"description":"Which already-known identity placed this voucher on its CoinGecko id. Absent when CoinGecko itself lists the voucher."}},"required":["method","rule","path","baseDenom"],"description":"Present when the mapping is PROVEN rather than reviewed: for an ICS-20 voucher, sha256(path + \"/\" + baseDenom) reproduces the hash in the denom, so anyone can recompute it. The origin and placement are derived, the hash is not."}},"required":["caip19","caip2","assetNamespace","confidence"]},"description":"One entry per chain the asset exists on. Ordered by how much of the registry lives on that chain."},"related":{"type":"object","properties":{"sameName":{"type":"array","items":{"type":"string"}},"sameSymbol":{"type":"array","items":{"type":"string"}}},"description":"Other CoinGecko ids that collide with this one."},"family":{"type":"object","properties":{"family":{"type":"string","enum":["canonical","standalone","derivative"],"description":"Naming structure, not merit: `canonical` is what other assets are named after, `derivative` declares itself a wrapper, `standalone` is neither. Most assets are standalone."},"citedBy":{"type":"integer"},"corroborated":{"type":"integer"},"attested":{"type":"boolean"},"derivative":{"type":"boolean"}},"required":["family"]}},"required":["coingeckoId","name","symbol","deployments","family"]}}},"required":["registry","version","query","count","assets"],"description":"A GROUP: names and tickers are not unique. Use `family` to pick the canonical one."}}}},"404":{"description":"No such key. Static hosting returns the host's 404 page, not JSON."}}}},"/far.json.gz":{"get":{"tags":["bulk"],"summary":"The entire registry, gzipped JSON (~1.8 MB).","responses":{"200":{"description":"gzip-compressed JSON","content":{"application/gzip":{"schema":{"type":"string","format":"binary"}}}}}}},"/search-index.json":{"get":{"tags":["bulk"],"summary":"Compact array the site searches client-side.","responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}}}}},"/_ics20-unplaced.json":{"get":{"tags":["bulk"],"summary":"Hash-verified ICS-20 vouchers whose origin asset has no CoinGecko id; each carries the origin CAIP-19 it is equivalent to.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}}}}}},"/_platforms.json":{"get":{"tags":["bulk"],"summary":"Every chain mapping with confidence and evidence.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}}}}}},"/_chains.json":{"get":{"tags":["bulk"],"summary":"CAIP-2 -> chain identity for every chain the registry can name, independent of CoinGecko platforms (Cosmos today), with `aliases` mapping every raw-chain-id spelling to its canonical hashed key.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}}}}}},"/_namespace-gaps.json":{"get":{"tags":["bulk"],"summary":"Identifiers this registry chose because no CASA spec defines them.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}}}}}},"/_explorers.json":{"get":{"tags":["bulk"],"summary":"Block explorer base URLs by chain.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}}}}}},"/manifest.json":{"get":{"tags":["integrity"],"summary":"sha256 of every file and the release Merkle root (11 MB).","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"registry":{"type":"string","const":"far"},"version":{"type":"string","description":"Release date, YYYY-MM-DD. Same across every file of one build."},"docs":{"type":"string","format":"uri"},"generated":{"type":"string"},"merkleRoot":{"type":"string"},"algorithm":{"type":"string"},"counts":{"type":"object"},"files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"sha256":{"type":"string"},"bytes":{"type":"integer"}},"required":["path","sha256","bytes"]}}},"required":["merkleRoot","files"]}}}}}}},"/manifest.sha256":{"get":{"tags":["integrity"],"summary":"Two lines: sha256 of manifest.json, and the Merkle root.","responses":{"200":{"description":"text","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/proof/{path}.json":{"get":{"tags":["integrity"],"summary":"Inclusion proof for one published file.","description":"`path` is the file's published path without its `.json` suffix (so `/proof/cg/tether.json` proves `cg/tether.json`; `/proof/index.html.json` proves `index.html`). Verify: hash the file, walk the proof (0x00-prefixed leaf, 0x01-prefixed nodes, left/right by `side`), compare to `merkleRoot`.","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string"},"example":"cg/tether"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"registry":{"type":"string","const":"far"},"version":{"type":"string","description":"Release date, YYYY-MM-DD. Same across every file of one build."},"docs":{"type":"string","format":"uri"},"path":{"type":"string"},"sha256":{"type":"string"},"merkleRoot":{"type":"string"},"proof":{"type":"array","items":{"type":"object","properties":{"side":{"type":"string","enum":["left","right"]},"hash":{"type":"string"}},"required":["side","hash"]},"description":"Sibling hashes from leaf to root, RFC 6962 style (leaf prefix 0x00, node prefix 0x01, odd nodes promoted)."}},"required":["path","sha256","merkleRoot","proof"]}}}},"404":{"description":"No such key. Static hosting returns the host's 404 page, not JSON."}}}},"/llms.txt":{"get":{"tags":["agents"],"summary":"What this is and how to use it, for LLMs (llmstxt.org format).","responses":{"200":{"description":"Markdown","content":{"text/markdown":{"schema":{"type":"string"}}}}}}},"/llms-full.txt":{"get":{"tags":["agents"],"summary":"llms.txt with the README and contributor guide inlined.","responses":{"200":{"description":"Markdown","content":{"text/markdown":{"schema":{"type":"string"}}}}}}},"/README.md":{"get":{"tags":["agents"],"summary":"Documentation.","responses":{"200":{"description":"Markdown","content":{"text/markdown":{"schema":{"type":"string"}}}}}}},"/openapi.json":{"get":{"tags":["agents"],"summary":"This document.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}}}}}},"/.well-known/api-catalog":{"get":{"tags":["agents"],"summary":"RFC 9727 API catalog.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}}}}}},"/robots.txt":{"get":{"tags":["agents"],"summary":"Crawler policy: everything is allowed. Comments point at the machine entry points.","responses":{"200":{"description":"text","content":{"text/plain":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"Asset":{"type":"object","properties":{"coingeckoId":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"deployments":{"type":"array","items":{"type":"object","properties":{"caip19":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}/[-a-z0-9]{3,8}:[-.%a-zA-Z0-9]{1,128}$","description":"CAIP-19 asset id"},"caip2":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}$","description":"CAIP-2 chain id"},"chainName":{"type":["string","null"]},"coingeckoPlatform":{"type":["string","null"],"description":"CoinGecko platform slug. Null for a native unit of account, which CoinGecko does not list as a platform entry."},"assetNamespace":{"type":"string"},"address":{"type":["string","null"],"description":"Contract address or asset id on that chain. Null for a native unit of account (assetNamespace slip44)."},"native":{"type":"boolean","description":"Present and true when this is the chain's native unit of account."},"confidence":{"type":"string","enum":["high","medium","low","proposed"]},"verified":{"type":"object","properties":{"method":{"type":"string","enum":["ics20-denom-trace"]},"rule":{"type":"string"},"path":{"type":"string"},"baseDenom":{"type":"string"},"origin":{"type":["string","null"],"description":"CAIP-19 of the asset on its origin chain (derived by walking the path; null when the origin could not be reached)."},"resolvedBy":{"type":["string","null"]},"placedVia":{"type":"string","enum":["origin-identity","eth-erc20","ibc-canonical"],"description":"Which already-known identity placed this voucher on its CoinGecko id. Absent when CoinGecko itself lists the voucher."}},"required":["method","rule","path","baseDenom"],"description":"Present when the mapping is PROVEN rather than reviewed: for an ICS-20 voucher, sha256(path + \"/\" + baseDenom) reproduces the hash in the denom, so anyone can recompute it. The origin and placement are derived, the hash is not."}},"required":["caip19","caip2","assetNamespace","confidence"]},"description":"One entry per chain the asset exists on. Ordered by how much of the registry lives on that chain."},"related":{"type":"object","properties":{"sameName":{"type":"array","items":{"type":"string"}},"sameSymbol":{"type":"array","items":{"type":"string"}}},"description":"Other CoinGecko ids that collide with this one."},"family":{"type":"object","properties":{"family":{"type":"string","enum":["canonical","standalone","derivative"],"description":"Naming structure, not merit: `canonical` is what other assets are named after, `derivative` declares itself a wrapper, `standalone` is neither. Most assets are standalone."},"citedBy":{"type":"integer"},"corroborated":{"type":"integer"},"attested":{"type":"boolean"},"derivative":{"type":"boolean"}},"required":["family"]}},"required":["coingeckoId","name","symbol","deployments","family"]},"Deployment":{"type":"object","properties":{"caip19":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}/[-a-z0-9]{3,8}:[-.%a-zA-Z0-9]{1,128}$","description":"CAIP-19 asset id"},"caip2":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}$","description":"CAIP-2 chain id"},"chainName":{"type":["string","null"]},"coingeckoPlatform":{"type":["string","null"],"description":"CoinGecko platform slug. Null for a native unit of account, which CoinGecko does not list as a platform entry."},"assetNamespace":{"type":"string"},"address":{"type":["string","null"],"description":"Contract address or asset id on that chain. Null for a native unit of account (assetNamespace slip44)."},"native":{"type":"boolean","description":"Present and true when this is the chain's native unit of account."},"confidence":{"type":"string","enum":["high","medium","low","proposed"]},"verified":{"type":"object","properties":{"method":{"type":"string","enum":["ics20-denom-trace"]},"rule":{"type":"string"},"path":{"type":"string"},"baseDenom":{"type":"string"},"origin":{"type":["string","null"],"description":"CAIP-19 of the asset on its origin chain (derived by walking the path; null when the origin could not be reached)."},"resolvedBy":{"type":["string","null"]},"placedVia":{"type":"string","enum":["origin-identity","eth-erc20","ibc-canonical"],"description":"Which already-known identity placed this voucher on its CoinGecko id. Absent when CoinGecko itself lists the voucher."}},"required":["method","rule","path","baseDenom"],"description":"Present when the mapping is PROVEN rather than reviewed: for an ICS-20 voucher, sha256(path + \"/\" + baseDenom) reproduces the hash in the denom, so anyone can recompute it. The origin and placement are derived, the hash is not."}},"required":["caip19","caip2","assetNamespace","confidence"]},"Family":{"type":"object","properties":{"family":{"type":"string","enum":["canonical","standalone","derivative"],"description":"Naming structure, not merit: `canonical` is what other assets are named after, `derivative` declares itself a wrapper, `standalone` is neither. Most assets are standalone."},"citedBy":{"type":"integer"},"corroborated":{"type":"integer"},"attested":{"type":"boolean"},"derivative":{"type":"boolean"}},"required":["family"]},"Proof":{"type":"object","properties":{"registry":{"type":"string","const":"far"},"version":{"type":"string","description":"Release date, YYYY-MM-DD. Same across every file of one build."},"docs":{"type":"string","format":"uri"},"path":{"type":"string"},"sha256":{"type":"string"},"merkleRoot":{"type":"string"},"proof":{"type":"array","items":{"type":"object","properties":{"side":{"type":"string","enum":["left","right"]},"hash":{"type":"string"}},"required":["side","hash"]},"description":"Sibling hashes from leaf to root, RFC 6962 style (leaf prefix 0x00, node prefix 0x01, odd nodes promoted)."}},"required":["path","sha256","merkleRoot","proof"]}}}}