List chains

Answers every chain this deployment can read, what is deployed on each, and what its automated market maker amounts to.

GET /v1/market/chains

Addresshttps://api.hanzo.ai/v1/market/chains
MethodGET
Operationget_market_chains
AuthAuthorization: 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

StatusBodyMeaning
200market.Rosterok
defaultproblem-detailsrefused

200 body — 31 fields.

FieldInTypeAlwaysDescription
chainsbodymarket.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 alike and only one of them means "there are none".
chains[].ammbodyboolean—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 rows.
chains[].coinbodystring—
chains[].daybodymarket.Day—
chains[].day.closebodystring—
chains[].day.countbodyinteger (int64)—Count is transactions in the day, where the table keeps one.
chains[].day.datebodyinteger (int64)—Date is the day's start, unix seconds.
chains[].day.highbodystring—
chains[].day.lockedbodystring—
chains[].day.lowbodystring—
chains[].day.openbodystring—
chains[].day.pricebodystring—
chains[].day.volumebodystring—
chains[].factorybodyobject—Factory is the AMM's factory contracts, by generation, omitted where none is deployed.
chains[].factory.*bodystring—
chains[].figuresbodymarket.Figures—
chains[].figures.countbodyinteger (int64)—
chains[].figures.lockedbodystring—
chains[].figures.poolsbodyinteger (int64)—
chains[].figures.volumebodystring—
chains[].graphbodystring—Graph is where this chain's indexer answers, empty where it has none.
chains[].idbodyinteger (int64)—ID is the EVM chain id, which is what a wallet must agree with.
chains[].namebodystring—
chains[].reachbodymarket.Reach—
chains[].reach.atbodystring—At is read, unconfigured, unreachable or refused.
chains[].reach.whybodystring—Why is the upstream's own words, on Unreachable and Refused, and empty otherwise.
chains[].rpcbodystring—RPC is the chain's PUBLIC JSON-RPC, empty where the registry names only a route this process happens to have.
chains[].slugbodystring—Slug is the chain's word in every indexer path — cchain, zoo.
reachbodymarket.Reach—
reach.atbodystring—At is read, unconfigured, unreachable or refused.
reach.whybodystring—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 chains
import { 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 reaches market through the market tool, which names its 3 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "list_market_chains"
         }
       }
     }'

Market API · All Hanzo APIs · Interactive reference

Was this page useful?