Get shop
Reads one public listing as the shop shows it — its seller's public face, its reputation and the ways to buy it.
GET /v1/marketplace/shop/{id}
| Address | https://api.hanzo.ai/v1/marketplace/shop/{id} |
| Method | GET |
| Operation | get_marketplace_shop_by_id |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Reads one public listing as the shop shows it — its seller's public face, its reputation and the ways to buy it. A private listing and one that does not exist are the same 404. It needs no credential.
Request
1 field.
| Field | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | ID is the listing, from the path. |
Response
| Status | Body | Meaning |
|---|---|---|
200 | marketplace.ShopListing | ok |
default | problem-details | refused |
200 body — 36 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
category | body | string | — | Category groups it; empty is ungrouped. |
createdAt | body | integer (int64) | — | CreatedAt is when it was published, unix seconds. |
currency | body | string | — | Currency labels Price. |
description | body | string | — | Description is the long copy. |
docs | body | string | — | Docs is where its documentation lives, when the seller said. |
id | body | string | — | ID is the listing. |
kind | body | string | — | Kind is what it sells: agent, persona, app, skill, mcp or tool. |
links | body | marketplace.Links | — | |
links.cli | body | string | — | CLI is the hanzo command that buys it. |
links.docs | body | string | — | Docs is the listing's documentation, when the seller named one. |
links.mcp | body | marketplace.MCPRef | — | |
links.mcp.op | body | string | — | Op is the operation within it. |
links.mcp.tool | body | string | — | Tool is the MCP tool: marketplace. |
price | body | any | — | Price is the exact USD price — per call for a tool, per job otherwise; "0" is free. |
public | body | boolean | — | Public is always true here. |
publisherOrg | body | string | — | PublisherOrg is the org that sells it. |
reputation | body | marketplace.Reputation | — | |
reputation.installs | body | integer (int64) | — | Installs is how many orgs installed a tool listing's tool. |
reputation.jobs | body | marketplace.JobCounts | — | |
reputation.jobs.completed | body | integer (int64) | — | Completed is released jobs. |
reputation.jobs.disputed | body | integer (int64) | — | Disputed is jobs ever disputed. |
reputation.rating | body | number (double) | — | Rating is the mean stars buyers gave, 1 to 5 to one decimal; null until the first review. |
reputation.reviews | body | integer (int64) | — | Reviews is how many buyers rated. |
seller | body | marketplace.Seller | — | |
seller.documented | body | boolean | — | Documented is true while the seller's tax form is certified and valid — what its agents' TaxPrincipalCredentials rest on. |
seller.org | body | string | — | Org is the seller org. |
seller.reputation | body | marketplace.Reputation | — | |
seller.reputation.installs | body | integer (int64) | — | Installs is how many orgs installed a tool listing's tool. |
seller.reputation.jobs | body | marketplace.JobCounts | — | |
seller.reputation.jobs.completed | body | integer (int64) | — | Completed is released jobs. |
seller.reputation.jobs.disputed | body | integer (int64) | — | Disputed is jobs ever disputed. |
seller.reputation.rating | body | number (double) | — | Rating is the mean stars buyers gave, 1 to 5 to one decimal; null until the first review. |
seller.reputation.reviews | body | integer (int64) | — | Reviews is how many buyers rated. |
title | body | string | — | Title is the shop-window name. |
tool | body | string | — | Tool names the thing sold, as the seller named it. |
updatedAt | body | integer (int64) | — | UpdatedAt is when it was last edited, unix seconds. |
Failure carries the platform error shape — see Errors.
Examples
hanzo has no subcommand for this operation — the CLI serves only what cloud's live route table confirms. Use HTTP or an SDK.
import { Configuration, MarketplaceApi } from 'hanzoai';
const api = new MarketplaceApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getMarketplaceShopById({ id: 'id' });from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import MarketplaceApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = MarketplaceApi(client).get_marketplace_shop_by_id(id='id')cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)
resp, _, err := client.MarketplaceAPI.GetMarketplaceShopById(context.Background()).Execute()
if err != nil {
return err
}use hanzo_client::apis::{configuration::Configuration, marketplace_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = marketplace_api::get_marketplace_shop_by_id(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.MarketplaceApi;
ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));
var result = new MarketplaceApi(client).getMarketplaceShopById();The method above is the one at the current release of the document. [email protected] (npm) and [email protected] (PyPI) were generated from an earlier release, where this operation carried a different id, so it spells the method differently — regenerating the clients is what makes the two agree. SDKs →
curl https://api.hanzo.ai/v1/marketplace/shop/<id> \
-H "Authorization: Bearer $HANZO_API_KEY"MCP reaches marketplace through the marketplace tool, which names its 6 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe",
"arguments": {
"op": "get_marketplace"
}
}
}'How is this guide?