Endpoints: 28,729MCP servers: 18,414Payout addresses: 2,071Paid calls: 1,562Letters: 14Defects: 1,336counted 4 min ago
teppi

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 yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:003c8b65d7bd39fc3815261e16eca366f1fcfc6a2e9e3cb7b5114071265419c4 | sha256sum