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.
| Tool | get_v1_catalog |
| Door | https://api.hanzo.ai/v1/mcp |
| Method | tools/call (JSON-RPC 2.0) |
| Arguments | 10 |
| Operation | GET /v1/catalog |
| Product | catalog |
Arguments
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
archetype | string | — | — | Archetype narrows to one project archetype. Case-insensitive. |
forkable | string | — | — | Forkable is tri-state: "true" selects the forkable rows, "false" selects the rest, and anything else — including absent — applies no filter at all. |
kind | string | — | — | Kind narrows to repo | site. Case-insensitive. |
language | string | — | — | Language narrows to one implementation language. Case-insensitive. |
limit | string | — | — | Limit caps the page at 200, default 50. A value that is not a non-negative integer falls back to the default. |
offset | string | — | — | Offset is where the page starts, default 0, with the same tolerance. |
org | string | — | — | Org narrows to one builder org: hanzo | lux | zoo. Case-insensitive. |
origin | string | — | — | Origin 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. |
q | string | — | — | Q is the free-text query the lexical index scores relevance on. Empty is a browse rather than a search — the same request either way. |
template | string | — | — | Template 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
| Operation | Route | Product | Summary |
|---|---|---|---|
cloud_get_v1_catalog | GET /v1/catalog | catalog | Browse 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?