List tools
Tools reports what THIS PROCESS's MCP server carries: how many tools its own registry projects, optionally their names, and which subsystems this process…
GET /v1/ai/mcp/tools
| Address | https://api.hanzo.ai/v1/ai/mcp/tools |
| Method | GET |
| Operation | aiMCPTools |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Tools reports what THIS PROCESS's MCP server carries: how many tools its own registry projects, optionally their names, and which subsystems this process composed. It is the answer to "is this MCP server up and does it have anything behind it" — a question a status code cannot answer, since an empty server and a full one are both 200. What the FLEET's server carries is the fleet server's own answer: POST /v1/mcp, tools/list, which asks every subsystem and names the ones that did not reply.
Request
1 field.
| Field | In | Type | Required | Description |
|---|---|---|---|---|
names | query | boolean | — | Names asks for this process's tool NAMES and not only how many there are. |
Response
| Status | Body | Meaning |
|---|---|---|
200 | aiMCPSurface | ok |
200 body — 5 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
apps | body | aiMCPApp[] | — | Apps is one row per subsystem this deployment composes, in manifest order. |
apps[].name | body | string | — | Name is the subsystem, as the manifest names it. |
apps[].served | body | boolean | — | Served reports that THIS process mounted it, so its tools are on this process's MCP server rather than behind a sibling this process only knows the name of. |
names | body | string[] | — | Names are this process's own tool names, present only when the query asked for them. |
tools | body | integer | — | Tools is how many tools THIS PROCESS's MCP server carries: its own typed-op registry, projected. |
Failure carries the platform error shape — see Errors.
Examples
hanzo ai mcp toolsimport { Configuration, AiApi } from 'hanzoai';
const api = new AiApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.aiMCPTools();from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import AiApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = AiApi(client).ai_mcp_tools()cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.AiAPI.AiMCPTools(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, ai_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = ai_api::ai_mcp_tools(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.AiApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new AiApi(client).aiMCPTools();curl https://api.hanzo.ai/v1/ai/mcp/tools \
-H "Authorization: Bearer $HANZO_API_KEY"Tool ai, op aiMCPTools — POST the JSON-RPC envelope to https://api.hanzo.ai/v1/mcp.
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ai",
"arguments": {
"op": "aiMCPTools",
"input": {}
}
}
}'How is this guide?