List chains
Answers every chain this deployment can read, what is deployed on each, and what its automated market maker amounts to. One call.
GET /v1/market/chains
| Address | https://api.hanzo.ai/v1/market/chains |
| Method | GET |
| Operation | get_market_chains |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Answers every chain this deployment can read, what is deployed on each, and what its automated market maker amounts to.
One call. It reads the chain registry, then every chain's indexer for its figures and its most recent active day, all at once — where a client doing it itself makes one registry request and two more per chain.
THE ROW IS THE UNIT OF TRUTH. Each carries its own reach, so one indexer being
unreachable costs one row its figures and leaves the rest answered. A chain with no
market maker deployed — the registry names no factory for it — answers read with
totals of nothing, which is a fact about that chain and is not the same as a chain
nobody could ask.
Request
GET /v1/market/chains takes no parameters and no body — the credential is the whole request.
Response
| Status | Body | Meaning |
|---|---|---|
200 | market.Roster | ok |
default | problem-details | refused |
200 body — 31 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
chains | body | market.Market[] | — | Chains is [] where the registry answered and named none, and null where it did not answer — never absent, because a missing key and an empty list read… |
chains[].amm | body | boolean | — | Amm reports whether an automated market maker is deployed on this chain, which is the registry's factory addresses being present and not the indexer having… |
chains[].coin | body | string | — | |
chains[].day | body | market.Day | — | |
chains[].day.close | body | string | — | |
chains[].day.count | body | integer (int64) | — | Count is transactions in the day, where the table keeps one. |
chains[].day.date | body | integer (int64) | — | Date is the day's start, unix seconds. |
chains[].day.high | body | string | — | |
chains[].day.locked | body | string | — | |
chains[].day.low | body | string | — | |
chains[].day.open | body | string | — | |
chains[].day.price | body | string | — | |
chains[].day.volume | body | string | — | |
chains[].factory | body | object | — | Factory is the AMM's factory contracts, by generation, omitted where none is deployed. |
chains[].factory.* | body | string | — | |
chains[].figures | body | market.Figures | — | |
chains[].figures.count | body | integer (int64) | — | |
chains[].figures.locked | body | string | — | |
chains[].figures.pools | body | integer (int64) | — | |
chains[].figures.volume | body | string | — | |
chains[].graph | body | string | — | Graph is where this chain's indexer answers, empty where it has none. |
chains[].id | body | integer (int64) | — | ID is the EVM chain id, which is what a wallet must agree with. |
chains[].name | body | string | — | |
chains[].reach | body | market.Reach | — | |
chains[].reach.at | body | string | — | At is read, unconfigured, unreachable or refused. |
chains[].reach.why | body | string | — | Why is the upstream's own words, on Unreachable and Refused, and empty otherwise. |
chains[].rpc | body | string | — | RPC is the chain's PUBLIC JSON-RPC, empty where the registry names only a route this process happens to have. |
chains[].slug | body | string | — | Slug is the chain's word in every indexer path — cchain, zoo. |
reach | body | market.Reach | — | |
reach.at | body | string | — | At is read, unconfigured, unreachable or refused. |
reach.why | body | string | — | Why is the upstream's own words, on Unreachable and Refused, and empty otherwise. |
Failure carries the platform error shape — see Errors.
Examples
hanzo market chainsimport { Configuration, MarketApi } from 'hanzoai';
const api = new MarketApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getMarketChains();from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import MarketApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = MarketApi(client).get_market_chains()cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)
resp, _, err := client.MarketAPI.GetMarketChains(context.Background()).Execute()
if err != nil {
return err
}use hanzo_client::apis::{configuration::Configuration, market_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = market_api::get_market_chains(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.MarketApi;
ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));
var result = new MarketApi(client).getMarketChains();curl https://api.hanzo.ai/v1/market/chains \
-H "Authorization: Bearer $HANZO_API_KEY"MCP declares no tool for market — tools/list on https://api.hanzo.ai/v1/mcp names the products it does reach. Use HTTP or an SDK.
How is this guide?