List tools
Returns the per-use tool prices — web search, web fetch, code interpreter, file storage, image generation, speech-to-text and text-to-speech — each with the unit it is billed by and its price in that unit.
GET /v1/pricing/tools
| Address | https://api.hanzo.ai/v1/pricing/tools |
| Method | GET |
| Operation | get_pricing_tools |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Returns the per-use tool prices — web search, web fetch, code interpreter, file storage, image generation, speech-to-text and text-to-speech — each with the unit it is billed by and its price in that unit.
The two WEB rows are priced from the rate card rather than from the catalog, because those are the rows the platform charges by the call and a published number that is also a charged one has exactly one home (see tariff.go). Read them as integer micro-USD at /v1/pricing/tariff; the decimal here is the display this list has always carried.
Request
GET /v1/pricing/tools takes no parameters and no body — the credential is the whole request.
Response
| Status | Body | Meaning |
|---|---|---|
200 | pricing.pricingToolList | ok |
default | problem-details | refused |
200 body — 2 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
tools | body | object[] | — | Tools are the metered tools, each an opaque object exactly as the pricing source emits it — typically name, billing unit and price. |
tools[].* | body | any | — |
Failure carries the platform error shape — see Errors.
Examples
hanzo pricing toolsimport { Configuration, PricingApi } from 'hanzoai';
const api = new PricingApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getPricingTools();from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import PricingApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = PricingApi(client).get_pricing_tools()cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)
resp, _, err := client.PricingAPI.GetPricingTools(context.Background()).Execute()
if err != nil {
return err
}use hanzo_client::apis::{configuration::Configuration, pricing_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = pricing_api::get_pricing_tools(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.PricingApi;
ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));
var result = new PricingApi(client).getPricingTools();curl https://api.hanzo.ai/v1/pricing/tools \
-H "Authorization: Bearer $HANZO_API_KEY"MCP reaches pricing through the pricing tool, which names its 28 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_pricings"
}
}
}'