Get catalog

Returns one catalog entry in full: the publisher's description, its repository and site, every package form with the runtime that launches it, and every hosted endpoint.

GET /v1/tool/catalog/{id}

Addresshttps://api.hanzo.ai/v1/tool/catalog/{id}
MethodGET
Operationget_tool_catalog_by_id
AuthAuthorization: Bearer $HANZO_API_KEY

Returns one catalog entry in full: the publisher's description, its repository and site, every package form with the runtime that launches it, and every hosted endpoint. It is what a branding page renders, and what tells a caller whether the listing can be enabled here and now (a streamable-http remote) or needs somewhere to run first (a stdio package).

A HIDDEN listing is not served to an org — a shelf that renders what it does not list would be a way around the shelf — but is served to a SuperAdmin, who is the one deciding whether to put it back. Like the shelf, it needs no credential.

Request

1 field.

FieldInTypeRequiredDescription
idpathstringyesID is the listing, from the path.

Response

StatusBodyMeaning
200tool.MCPListingok
defaultproblem-detailsrefused

200 body — 24 fields.

FieldInTypeAlwaysDescription
descriptionbodystring—Description is the publisher's one-line summary.
featuredbodyboolean—Featured puts the listing on the front of the shelf.
hiddenbodyboolean—Hidden keeps the listing out of the org-visible catalog.
idbodystring—ID addresses the listing in a URL.
logobodystring—Logo is the brand mark to render for the listing — the publisher's icon when the entry carries one, or the one an admin set.
namebodystring—Name is the publisher's reverse-DNS name, e.g. "com.stripe/mcp".
officialbodyboolean—Official is whether this is the vendor's OWN server rather than someone else's copy of it.
packagesbodytool.MCPPackage[]—Packages are the runnable package forms — npm, pypi, oci — each with the runtime that launches it and the transport it then speaks.
packages[].identifierbodystring—Identifier is the package name or download URL.
packages[].registrybodystring—Registry is where the package is fetched from: npm, pypi, oci, nuget, mcpb.
packages[].runtimebodystring—Runtime is the publisher's hint for what launches it: npx, uvx, docker.
packages[].transportbodystring—Transport is what the launched process speaks: usually "stdio".
packages[].versionbodystring—Version is the exact published package version.
registrybodystring—Registry is the upstream this row was synced from.
remotesbodytool.MCPRemote[]—Remotes are the hosted endpoints the publisher serves the server at.
remotes[].transportbodystring—Transport is "streamable-http" or "sse".
remotes[].urlbodystring—URL is the endpoint.
repobodystring—Repo is the source repository URL, when the entry names one.
sitebodystring—Site is the project's homepage, when the entry names one.
syncedbodyinteger (int64)—Synced is when this row was last confirmed against upstream, Unix seconds.
titlebodystring—Title is the human-readable display name, when the entry carries one.
transportsbodystring[]—Transports are the distinct transports this server can be reached over, sorted: some of "stdio", "streamable-http", "sse".
vendorbodystring—Vendor is the namespace half of Name — the publisher, e.g. "com.stripe".
versionbodystring—Version is the published version of this listing.

Failure carries the platform error shape — see Errors.

Examples

hanzo tool catalog get <id>
import { Configuration, ToolApi } from 'hanzoai';

const api = new ToolApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getToolCatalogById({ id: 'id' });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import ToolApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = ToolApi(client).get_tool_catalog_by_id(id='id')
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.ToolAPI.GetToolCatalogById(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, tool_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = tool_api::get_tool_catalog_by_id(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.ToolApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new ToolApi(client).getToolCatalogById();
curl https://api.hanzo.ai/v1/tool/catalog/<id> \
  -H "Authorization: Bearer $HANZO_API_KEY"

Tool tool, op get_tool_catalog_by_id — POST the JSON-RPC envelope to https://api.hanzo.ai/v1/mcp.

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": "tool",
         "arguments": {
           "op": "get_tool_catalog_by_id",
           "input": {
             "id": "<id>"
           }
         }
       }
     }'

Tool API · All Hanzo APIs · Interactive reference

Was this page useful?