MCP Server

Market Category Booster

com.market-category-booster/mcb
Commerce & Retail Public & reachable MCP 2025-11-25

What this MCP does

Maps free-text product descriptions to category paths in supported marketplace taxonomies.

categorize_product
Map a free-text product description to a marketplace category path. Walks the taxonomy of the target marketplace one level at a time and returns the full path: one match per level, from the broadest category down to the most specific one, each with the reason it was picked. Use it to assign a listing category to a product you only have prose for. The last match carries `truncated: true` when the per-request token budget stopped the descent before a leaf. Every successful call is billed: with no `X-API-Key` header and no x402 payment proof the tool answers with the payment requirements instead of a result.
Input schema
{'type': 'object', 'required': ['description', 'store_id'], 'properties': {'store_id': {'type': 'string', 'description': 'target marketplace, one of the values from `list_stores`.'}, 'description': {'type': 'string', 'description': 'free-text product description, up to 2000 characters.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['name', 'categories'], 'properties': {'name': {'type': 'string', 'description': 'Product name'}, 'categories': {'type': 'array', 'items': {'type': 'object', 'required': ['category', 'reason'], 'properties': {'id': {'anyOf': [{'type': 'integer'}, {'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Category identifier in the target taxonomy'}, 'level': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Zero-based depth in the taxonomy tree; null on legacy records'}, 'reason': {'type': 'string', 'description': 'Why the model picked this category'}, 'category': {'type': 'string', 'description': 'Category name as it appears in the taxonomy'}, 'truncated': {'type': 'boolean', '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'}}, 'description': 'One level of the taxonomy descent: the category matched at that depth.'}, 'description': 'One match per taxonomy level, from broadest to most specific. The last item may carry truncated=true'}, 'judge_reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, '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"}, 'judge_approved': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, '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'}}}
list_stores
List the marketplaces whose taxonomies are loaded, as `store_id` values. These are the only accepted values for the `store_id` argument of `categorize_product`. Free of charge on purpose: without it an agent would have to pay for a failed call to discover them.
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['result'], 'properties': {'result': {'type': 'array', 'items': {'type': 'string'}}}, 'x-fastmcp-wrap-result': True}
payment_info
Return the x402 payment requirements for one categorization call. Meant for an agent that holds no API key: gives network, asset, recipient address and amount as JSON, so the payment authorization can be signed before calling `categorize_product`. Free of charge.
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['result'], 'properties': {'result': {'type': 'string'}}, 'x-fastmcp-wrap-result': True}
Added
payment_info
Sept. 19, 2026, 2:40 a.m.
Added
list_stores
Sept. 19, 2026, 2:40 a.m.
Added
categorize_product
Sept. 19, 2026, 2:40 a.m.