Server definition
- Hash
- sha256:003c8b65d7bd39fc3815261e16eca366f1fcfc6a2e9e3cb7b5114071265419c4
- What it is
- What a remote MCP server returned when asked what it offers: 3 tools
The blob, as servednamed by its sha256
{
"instructions": "Market Category Booster maps free-text product descriptions onto the live\ncategory taxonomy of a marketplace (Amazon, eBay, Shopify, Google).\n\nRecommended order of calls:\n 1. `list_stores` (free) to learn the valid `store_id` values;\n 2. `payment_info` (free) if you have no API key and intend to pay per call;\n 3. `categorize_product` for the actual work.\n\nTwo things surprise most clients:\n - `categorize_product` returns a LIST, one match per taxonomy level, from the\n broadest to the most specific — not a single category id. Read the whole\n list as a path.\n - the descent has a token budget per request. When it runs out the last match\n carries `truncated: true`: the path is valid but is not necessarily a leaf,\n and the call is billed in full.\n\nAuthentication accepts either an `X-API-Key` HTTP header on the MCP session, or\nan x402 payment proof in the JSON-RPC `_meta` under `x402/payment`. With\nneither, `categorize_product` answers with the x402 payment requirements\ninstead of a result.\n",
"tools": [
{
"description": "Map a free-text product description to a marketplace category path.\n\nWalks the taxonomy of the target marketplace one level at a time and\nreturns the full path: one match per level, from the broadest category down\nto the most specific one, each with the reason it was picked. Use it to\nassign a listing category to a product you only have prose for.\n\nThe last match carries `truncated: true` when the per-request token budget\nstopped the descent before a leaf. Every successful call is billed: with no\n`X-API-Key` header and no x402 payment proof the tool answers with the\npayment requirements instead of a result.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"description": {
"description": "free-text product description, up to 2000 characters.",
"type": "string"
},
"store_id": {
"description": "target marketplace, one of the values from `list_stores`.",
"type": "string"
}
},
"required": [
"description",
"store_id"
],
"type": "object"
},
"name": "categorize_product",
"outputSchema": {
"properties": {
"categories": {
"description": "One match per taxonomy level, from broadest to most specific. The last item may carry truncated=true",
"items": {
"description": "One level of the taxonomy descent: the category matched at that depth.",
"properties": {
"category": {
"description": "Category name as it appears in the taxonomy",
"type": "string"
},
"id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Category identifier in the target taxonomy"
},
"level": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Zero-based depth in the taxonomy tree; null on legacy records"
},
"reason": {
"description": "Why the model picked this category",
"type": "string"
},
"truncated": {
"default": false,
"description": "True on the last match when the per-request token budget stopped the descent: the path is valid but not necessarily a leaf",
"type": "boolean"
}
},
"required": [
"category",
"reason"
],
"type": "object"
},
"type": "array"
},
"judge_approved": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether a separate LLM judge confirmed the final category path is consistent with the description; null when the token budget ran out before the judge could run"
},
"judge_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The judge's stated reason for its verdict on the final path; null when the judge did not run or the final path was never judged"
},
"name": {
"description": "Product name",
"type": "string"
}
},
"required": [
"name",
"categories"
],
"type": "object"
}
},
{
"description": "List the marketplaces whose taxonomies are loaded, as `store_id` values.\n\nThese are the only accepted values for the `store_id` argument of\n`categorize_product`. Free of charge on purpose: without it an agent would\nhave to pay for a failed call to discover them.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_stores",
"outputSchema": {
"properties": {
"result": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Return the x402 payment requirements for one categorization call.\n\nMeant for an agent that holds no API key: gives network, asset, recipient\naddress and amount as JSON, so the payment authorization can be signed\nbefore calling `categorize_product`. Free of charge.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "payment_info",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:003c8b65d7bd39fc3815261e16eca366f1fcfc6a2e9e3cb7b5114071265419c4 | sha256sum