Hanzo
Cloud MCPcatalog

get_v1_catalog

Browse searches AND browses the cross-org catalog: every project, app and site the fleet has built, whichever org built it.

Browse searches AND browses the cross-org catalog: every project, app and site the fleet has built, whichever org built it.

It reads TWO corpora and returns them as one page — the published, world-readable catalog that every caller sees, plus the caller's OWN org's private entries when the request carries a validated principal. Each row says which it came from in scope, so a client can warn before sharing a link. An anonymous caller simply gets the published one; no filter can ever widen a caller into another tenant's corpus, because the query that would return it is never run for them.

A request with no q is a browse rather than a search, and both answer the same shape: the page, the total before paging, and the facet counts over the whole matching set.

Toolget_v1_catalog
Doorhttps://api.hanzo.ai/v1/mcp
Methodtools/call (JSON-RPC 2.0)
Arguments10
OperationGET /v1/catalog
Productcatalog

Arguments

FieldTypeRequiredDefaultDescription
archetypestringArchetype narrows to one project archetype. Case-insensitive.
forkablestringForkable is tri-state: "true" selects the forkable rows, "false" selects the rest, and anything else — including absent — applies no filter at all.
kindstringKind narrows to repo | site. Case-insensitive.
languagestringLanguage narrows to one implementation language. Case-insensitive.
limitstringLimit caps the page at 200, default 50. A value that is not a non-negative integer falls back to the default.
offsetstringOffset is where the page starts, default 0, with the same tolerance.
orgstringOrg narrows to one builder org: hanzo | lux | zoo. Case-insensitive.
originstringOrigin narrows to what a row IS to you: template | community | third-party | product. This is the axis the two hanzo.app lanes are cut on.
qstringQ is the free-text query the lexical index scores relevance on. Empty is a browse rather than a search — the same request either way.
templatestringTemplate narrows a lane to ONE lineage: the id of the parent everything returned was forked from.

This tool's schema does not declare which fields are required, nor any default, nor any enumerated value set. The columns above are empty because the door publishes nothing there, not because the answer is "none" — where a field is constrained, the constraint is stated in that field's own description.

Call it

A tools/call carries every argument in one flat object — nothing binds to a path or a query string. Every declared argument is shown, because the door marks none of them required.

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": "get_v1_catalog",
         "arguments": {
           "archetype": "<archetype>",
           "forkable": "<forkable>",
           "kind": "<kind>",
           "language": "<language>",
           "limit": "<limit>",
           "offset": "<offset>",
           "org": "<org>",
           "origin": "<origin>",
           "q": "<q>",
           "template": "<template>"
         }
       }
     }'

Values are placeholders derived from each field's declared type. tools/list needs no credential; tools/call does — called without one the door answers HTTP 200 with a JSON-RPC result whose isError is set and whose text says what was missing. How to get a key →

The operation behind it

OperationRouteProductSummary
cloud_get_v1_catalogGET /v1/catalogcatalogBrowse searches AND browses the cross-org catalog: every project, app and site the fleet h

The same capability over plain HTTP is in the catalog API reference, on https://api.hanzo.ai.


All 834 tools · The door · API reference

Generated from tools/list on https://api.hanzo.ai/v1/mcp — 834 tools captured 2026-08-01 (this build read the vendored copy; the door was unreachable).

How is this guide?

On this page