mirror of
https://github.com/hanzoai/python-sdk.git
synced 2026-10-23 20:23:00 +00:00
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.
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.