Mcp
Package tools is everything your org can call, in one list: connector actions, functions, agents, skills and your own MCP servers.
Package tools is everything your org can call, in one list: connector actions, functions, agents, skills and your own MCP servers.
| Base URL | https://api.hanzo.ai |
| Operations | 3 |
| Auth | Authorization: Bearer $HANZO_API_KEY |
mcp
DELETE /v1/mcp/servers/{id}
Deregisters one of the caller org's external MCP servers, so its tools leave the registry. Scoped to the caller's org, so an id belonging to another tenant is a 404 and not a delete. Answers 204 with no body; a server this org does not have is 404.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | ID is the server to deregister, from the path. |
GET /v1/mcp/servers
Lists the external MCP servers the caller's org has registered. Each record carries the URL and the name of the header its credential is injected into; the credential VALUE lives only in KMS and is never returned, so hasSecret is the whole of what this surface says about it.
POST /v1/mcp/servers
Gives the caller's org one more external MCP server, so its tools
join the org's tool plane and the fleet's MCP door. It is the ONE way an org
gains a server, whether it typed the URL in or enabled a catalog listing: both
write the SAME record, and source says which it was. A second registration
path would be a second place for a server to exist, and then a second place to
forget to check the credential.
The credential VALUE is sealed in KMS under a per-org ref; the row keeps only the URL, the header name to inject it into, and a has-secret flag — so a secret with no KMS configured is refused 503 rather than stored in the clear. The URL is SSRF-validated here and re-checked by the dialer at connect time, which is the DNS-rebinding defense.
Enabling a listing the org already enabled REVISES that server rather than adding a near-duplicate beside it, so a retried enable is the same one server. Answers 201 with the stored record.
Request body — application/json (required)
| Field | Type | Required | Description |
|---|---|---|---|
authHeader | string | — | AuthHeader is the request header the credential is injected into, e.g. "Authorization". |
listing | string | — | Listing enables a CATALOG entry instead — the id from GET /v1/tools/catalog. |
name | string | — | Name labels the server for the org. |
secret | string | — | Secret is the credential VALUE. It is sealed into KMS under a per-org ref and never stored in SQLite, never listed, and… |
url | string | — | URL is the server's JSON-RPC endpoint. It must be an http(s) URL naming a PUBLIC host: loopback, link-local, private… |
How is this guide?