Tools reports what THIS PROCESS's MCP door carries: how many tools its own…
Tools reports what THIS PROCESS's MCP door 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 door carries: how many tools its own registry projects, optionally their names, and which subsystems this process composed. It is the answer to "is this door up and does it have anything behind it" — a question a status code cannot answer, since an empty door and a full one are both 200. What the FLEET's door carries is the fleet door'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 door 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 door 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?