Channel3 Shopping
Shopping search across 100M+ products, with every retailer's offer and live price in one place.
Should I use this
Quality & Safety
Findings (1)
- LOWin browse_products
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"shopping": {
"url": "https://mcp.trychannel3.com/"
}
}
}Remote endpoints
https://mcp.trychannel3.com/streamable-httpWhat it can do
Tool inventory
Tools (6)
🟢search_products(query, image_url, thread_id)
Search 100M+ products across thousands of retailers for one product type. Call once for each distinct product type, and send independent calls together. Put relevant constraints in `query`. Returns up to 8 product cards plus structured product data. The result includes a `thread_id`. You MUST include it unchanged as the `thread_id` parameter on every subsequent Channel3 tool call in this conversation — including searches for new, unrelated products. Never omit it once you have one.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "One product type and its constraints in natural language (brand, color, material, size, price, gender).\nGood: \"red leather jacket under $200\"; \"leather golf glove under $40\".\nBad: \"gift ideas for dad\"; \"cool sneakers\"; \"golf glove or rangefinder\".",
"type": "string",
"minLength": 1
},
"image_url": {
"description": "Public image URL for visual search. Combine with `query` for text + image.",
"type": "string"
},
"thread_id": {
"description": "Conversation thread ID. Omit ONLY on the very first Channel3 call of a conversation. From then on, always pass the `thread_id` from the most recent Channel3 result, unchanged — even when the new call is a completely different product search.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"query": {
"description": "The text query this result answers.",
"type": "string"
},
"image_url": {
"description": "The image URL this result answers.",
"type": "string"
},
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"brands": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": {}
}
},
"images": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"required": [
"url"
],
"additionalProperties": {}
}
},
"offers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"availability": {
"type": "string",
"enum": [
"InStock",
"OutOfStock"
]
},
"domain": {
"type": "string"
},
"price": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"price": {
"type": "number"
},
"compare_at_price": {
"type": [
"number",
"null"
]
}
},
"required": [
"currency",
"price"
],
"additionalProperties": false
},
"url": {
"type": "string"
}
},
"required": [
"availability",
"domain",
"price",
"url"
],
"additionalProperties": {}
}
}
},
"required": [
"id",
"title"
],
"additionalProperties": {}
}
},
"next_page_token": {
"description": "Opaque pagination token used by the storefront UI; not usable via this tool.",
"type": [
"string",
"null"
]
},
"as_of": {
"type": "string",
"description": "ISO timestamp of when this result was produced; prices are live as of this moment."
},
"session_id": {
"description": "PostHog MCP session ID for analytics correlation.",
"type": "string"
},
"server_origin": {
"description": "Origin of this MCP server; the storefront UI posts analytics events here.",
"type": "string"
},
"thread_id": {
"type": "string",
"description": "Conversation thread ID. Pass it back unchanged as `thread_id` on every follow-up call in this conversation."
},
"seq": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"products",
"next_page_token",
"as_of",
"thread_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_products(product_ids, thread_id)
Get full product data (offers, description, attributes, images) by product ID from a search result, or by retailer URL. Pass several IDs in one call to compare. Use search_products to find products. Returns details in the storefront UI. The result includes a `thread_id`. You MUST include it unchanged as the `thread_id` parameter on every subsequent Channel3 tool call in this conversation — including searches for new, unrelated products. Never omit it once you have one.
Input Schema
{
"type": "object",
"properties": {
"product_ids": {
"minItems": 1,
"maxItems": 40,
"type": "array",
"items": {
"type": "string",
"description": "Product ID (from a `search_products` result) or URL."
},
"description": "Products to fetch in parallel."
},
"thread_id": {
"description": "Conversation thread ID. Omit ONLY on the very first Channel3 call of a conversation. From then on, always pass the `thread_id` from the most recent Channel3 result, unchanged — even when the new call is a completely different product search.",
"type": "string"
}
},
"required": [
"product_ids"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title"
],
"additionalProperties": {}
}
},
"unresolved": {
"type": "array",
"items": {
"type": "string"
}
},
"as_of": {
"type": "string",
"description": "ISO timestamp of when this result was produced; prices are live as of this moment."
},
"session_id": {
"description": "PostHog MCP session ID for analytics correlation.",
"type": "string"
},
"server_origin": {
"description": "Origin of this MCP server; the storefront UI posts analytics events here.",
"type": "string"
},
"thread_id": {
"type": "string",
"description": "Conversation thread ID. Pass it back unchanged as `thread_id` on every follow-up call in this conversation."
}
},
"required": [
"products",
"as_of",
"thread_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢browse_products(query, image_url, page_token, limit, thread_id, ...)
Search and page through products for the storefront UI.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "One product type and its constraints in natural language (brand, color, material, size, price, gender).\nGood: \"red leather jacket under $200\"; \"leather golf glove under $40\".\nBad: \"gift ideas for dad\"; \"cool sneakers\"; \"golf glove or rangefinder\".",
"type": "string",
"minLength": 1
},
"image_url": {
"description": "Public image URL for visual search. Combine with `query` for text + image.",
"type": "string"
},
"page_token": {
"description": "Token from a previous response's next_page_token.",
"type": "string"
},
"limit": {
"default": 20,
"type": "integer",
"minimum": 1,
"maximum": 30
},
"thread_id": {
"type": "string"
},
"device_id": {
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title"
],
"additionalProperties": {}
}
},
"next_page_token": {
"type": [
"string",
"null"
]
}
},
"required": [
"products",
"next_page_token"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_similar(product_id, limit, thread_id, device_id)
Find products similar to a given product, for the storefront UI.
Input Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "string",
"description": "Canonical product ID to find similar products for."
},
"limit": {
"default": 20,
"type": "integer",
"minimum": 1,
"maximum": 30
},
"thread_id": {
"type": "string"
},
"device_id": {
"type": "string"
}
},
"required": [
"product_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title"
],
"additionalProperties": {}
}
},
"next_page_token": {
"type": [
"string",
"null"
]
}
},
"required": [
"products",
"next_page_token"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_details(product_id, selected_options, thread_id, device_id)
Fetch a product with live offers, for the storefront UI.
Input Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "string",
"description": "Canonical product ID."
},
"selected_options": {
"description": "Variant configuration as `{ optionName: label }` for re-resolving offers.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"thread_id": {
"type": "string"
},
"device_id": {
"type": "string"
}
},
"required": [
"product_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"product": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"id",
"title"
],
"additionalProperties": {}
}
},
"required": [
"product"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_price_history(product_id, selected_options, thread_id, device_id)
Fetch 30-day price history for a product, for the storefront UI.
Input Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "string",
"description": "Canonical product ID."
},
"selected_options": {
"description": "Variant configuration as `{ optionName: label }` for re-resolving offers.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"thread_id": {
"type": "string"
},
"device_id": {
"type": "string"
}
},
"required": [
"product_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"canonical_product_id": {
"type": "string"
},
"history": {
"type": "array",
"items": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"price": {
"type": "number"
},
"timestamp": {
"type": "string"
}
},
"required": [
"currency",
"price",
"timestamp"
],
"additionalProperties": false
}
},
"statistics": {
"anyOf": [
{
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"current_price": {
"type": "number"
},
"current_status": {
"type": "string",
"enum": [
"low",
"typical",
"high"
]
},
"max_price": {
"type": "number"
},
"mean": {
"type": "number"
},
"min_price": {
"type": "number"
},
"std_dev": {
"type": "number"
}
},
"required": [
"currency",
"current_price",
"current_status",
"max_price",
"mean",
"min_price",
"std_dev"
],
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"canonical_product_id",
"history",
"statistics"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Community
Evidence