Lists every tool the caller's org and project can reach, from every source,…
Lists every tool the caller's org and project can reach, from every source, each flagged with whether it is activated.
GET /v1/tools
| Address | https://api.hanzo.ai/v1/tools |
| Method | GET |
| Operation | get_tools |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Lists every tool the caller's org and project can reach, from every source, each flagged with whether it is activated. This is the discovery surface: one flat set of names spanning connector actions, user functions, zap-service routes, agents, skills and the org's own external MCP servers, deduplicated by name so the highest-precedence source wins a collision. It lists; it does not call — dispatch is POST /v1/tools/call.
Request
2 fields.
| Field | In | Type | Required | Description |
|---|---|---|---|---|
source | query | string | — | Source keeps only tools from one source — connector, function, zap-service, agent, skill or mcp. |
activated | query | string | — | Activated keeps only the tools activated for the caller's org and project, and only when it is exactly the string "true". |
Response
| Status | Body | Meaning |
|---|---|---|
200 | toolList | ok |
200 body — 11 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
tools | body | Tool[] | — | Tools is every tool the caller may see, deduplicated by name with source precedence applied. |
tools[].activated | body | boolean | — | Activated is filled by the registry from the activation store for the requesting (org,project); providers leave it zero. |
tools[].description | body | string | — | Description is the prose a model reads to decide whether to call the tool. |
tools[].dispatchable | body | boolean | — | Dispatchable is whether the tool can be CALLED. |
tools[].inputSchema | body | any | — | Schema is the JSON Schema of the call arguments — the MCP inputSchema. |
tools[].name | body | string | — | Name is the tool's id in the flat, fleet-wide tool namespace — the value a tools/call passes. |
tools[].price | body | Price | — | |
tools[].price.amount | body | any | — | Amount is what ONE call costs, EXACTLY: an 18-decimal USD value, so a per-call price of 0.0025 and not a cent-floored zero. |
tools[].price.currency | body | string | — | Currency is the ISO 4217 code, e.g. |
tools[].price.recipient | body | string | — | Recipient is the payout wallet ref the marketplace seller is paid at. |
tools[].source | body | string | — | Source is where the tool comes from: connector, function, zap-service, agent, skill or mcp. |
Failure carries the platform error shape — see Errors.
Examples
hanzo tools getimport { Configuration, ToolsApi } from 'hanzoai';
const api = new ToolsApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getTools();from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import ToolsApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = ToolsApi(client).get_tools()cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.ToolsAPI.GetTools(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, tools_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = tools_api::get_tools(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.ToolsApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new ToolsApi(client).getTools();curl https://api.hanzo.ai/v1/tools \
-H "Authorization: Bearer $HANZO_API_KEY"The door reaches tools through the tools tool, which names its 19 operations with its own verbs — this one among them, under a name only the door 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_mcp_servers"
}
}
}'How is this guide?