Files
python-sdk/pkg/hanzo-tools-cloud
zeekay badff3db49 Read the fleet from the same catalog the other runtimes do
Python addressed the cloud through ten hand-written packages while TypeScript and
Rust read a generated catalog, and the hand-written ones had drifted: paas is
platform, storage is s3, auth folded into iam, and commerce asked for plurals the
fleet does not publish.

hanzo-tools-cloud embeds the file those two already embed, so the three cannot
disagree about what the API offers — a test compares them by digest. One routing
tool over 114 subsystems rather than 114 tools, for the reason the fleet groups
its own.

Naming a subsystem the fleet does not serve is answered before the credential
check: demanding a key for something that does not exist sends the caller to fix
the wrong thing.
2026-08-30 17:05:32 -07:00
..

hanzo-tools-cloud

The Hanzo Cloud surface, offered as the fleet publishes it: one entry per subsystem carrying that subsystem's operation names, plus describe.

Nothing here is hand-written. catalog.json is generated from cloud's own typed operations, and it is the same file the TypeScript (@hanzo/mcp) and Rust (hanzo-mcp) runtimes embed — so the three cannot disagree about what the API offers.

from hanzo_tools.cloud import call, services, operations

services()              # every subsystem the fleet serves
operations("iam")       # that subsystem's operations
call("iam", "get_iam_users")

Every call goes to api.hanzo.ai/v1/mcp. Set HANZO_API_KEY; point elsewhere with HANZO_API_URL.

Refresh the catalog from the repo root: pnpm sync:catalog in hanzoai/mcp, or go run ./plugin/gen-mcp-catalog . in hanzoai/cloud.