Explore a category
Understand a product category, its common specifications, available options and price distribution.
What this endpoint does
Endpoint
```
POST https://mcp.gaisho.co/v1/tools/get_category_overview
```Explore what matters when choosing a product type before looking for individual products. The overview describes common features, available options, approximate prices and retailer or brand differences. It is useful for turning a broad shopping question into a set of requirements.
- Explain which robot-vacuum features a shopper should compare.
- Explore air fryers that meet a capacity requirement.
- Compare a category by platform, price band or another supported dimension.
Before you call
- Put the product type in category and requirements in conditions. For example, category can be air fryer while conditions says capacity at least 5 qt.
- Omit breakdown for the standard overview. Supply one dimension for a simple breakdown or two for a cross-comparison; use platform, retailer, price_band, brand_tier or brand. The overview does not publish a complete attribute-key mapping; put feature requirements in conditions rather than guessing a feature key.
- A category overview is about a product type. It does not return a shortlist of products or judge a particular quote.
Send a JSON object as the request body and authenticate with Authorization: Bearer <API key>. Amounts are in USD unless the result explicitly says otherwise.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| category | string | Required | Product type ID, category name, or a product ID or link. |
| conditions | string | Optional | Natural-language conditions for the category overview. |
| breakdown | string[] | Optional | One or two dimensions: platform, retailer, price_band, brand_tier or brand. Feature keys require a known category-specific key; the overview does not provide a complete mapping. Omit for the standard overview and express feature requirements in conditions. 1–2 items. |
Example request
Set GAISHO_API_KEY in your server or local environment. These examples use a JSON POST request; Python uses the standard library and JavaScript uses Node.js fetch. The 60-second client timeout in Python and JavaScript is configurable, not a service latency guarantee.
cURL
```
curl --fail-with-body 'https://mcp.gaisho.co/v1/tools/get_category_overview' \
-H "Authorization: Bearer $GAISHO_API_KEY" \
-H 'Content-Type: application/json' \
--data '{
"category": "robot vacuum"
}'
```Python
```
import json
import os
import urllib.error
import urllib.request
arguments = json.loads(r'''{
"category": "robot vacuum"
}''')
request = urllib.request.Request(
"https://mcp.gaisho.co/v1/tools/get_category_overview",
data=json.dumps(arguments).encode("utf-8"),
headers={
"Authorization": "Bearer " + os.environ["GAISHO_API_KEY"],
"Content-Type": "application/json",
},
method="POST",
)
try:
with urllib.request.urlopen(request, timeout=60) as response:
payload = json.load(response)
print(json.dumps(payload, indent=2))
except urllib.error.HTTPError as error:
print(error.read().decode("utf-8"))
raise
```JavaScript
```
// Node.js 18+; keep this code and the key on your server.
const response = await fetch("https://mcp.gaisho.co/v1/tools/get_category_overview", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.GAISHO_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"category": "robot vacuum"
}),
signal: AbortSignal.timeout(60_000),
});
const body = await response.text();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${body}`);
}
const payload = JSON.parse(body);
console.log(payload);
```Common request patterns
Explore a category with conditions
Keep the product type separate from the shopper’s requirements.
JSON request body
```
{
"category": "air fryer",
"conditions": "capacity at least 5 qt",
"breakdown": [
"platform",
"price_band"
]
}
```Response fields
The HTTP response contains tool and summary. Product information is carried in summary text; there is no separate structured result array. Treat its wording as readable content, not a fixed column schema.
| Field | Type | Description |
|---|---|---|
| tool | string | The tool called: get_category_overview. |
| summary | string | Category guidance, available specifications and requested breakdowns. |
Example response
Examples are illustrative and may omit optional detail fields. Prices are not live quotes; identifiers and example.com URLs are placeholders to replace, not usable product records.
HTTP 200 · illustrative, shortened
```
{
"tool": "get_category_overview",
"summary": "Robot vacuums — category overview\nCommon features include navigation, mopping and automatic emptying.\nApproximate typical price: $300.\nAvailable options include vacuum-only models and models with a mopping function."
}
```How to read the result
- summary is a readable report, not a JSON array of categories. It may describe features, price levels, brand mix, platforms, feature notes and common return reasons, according to available information.
- Read the reported conditions to see which requirements were applied and which could not be applied. Do not treat an unresolved requirement as satisfied.
- Category prices are approximate context. Use search_products to find products and vet_price to assess a specified product and quote.
Empty results and errors
| Situation | How to handle it |
|---|---|
| Category is unclear | Use a specific product type, such as cordless stick vacuum, rather than a broad department such as home. |
| A condition cannot be applied | Read the explanation and clarify that condition before describing the overview as fully filtered. |
| A feature breakdown is unavailable | Use a documented breakdown dimension, or put the feature requirement in conditions and omit breakdown. Display labels are not filter keys. |
A successful request can return no candidates, missing information or an unavailable assessment. Check the result before recommending a product. For request failures, use the error code and message; retrying the same invalid input will not fix it.
- [Error handling and retries](https://gaisho.co/docs/api#errors): HTTP statuses, structured errors, rate limits and quota responses.
What to call next
- [Search products](https://gaisho.co/docs/api/search_products): Find products from shopping needs, keywords, a model or a product identifier.
- [Check a price](https://gaisho.co/docs/api/vet_price): Assess whether a USD price is reasonable for a stated product or shopping requirement.
- [Use this tool through MCP](https://gaisho.co/docs/mcp/get_category_overview): The same capability through the other connection.
- [REST API conventions](https://gaisho.co/docs/api): Authentication, response envelopes and request handling.