Channel3 Shopping
Shopping search across 100M+ products, with every retailer's offer and live price in one place — an MCP server with an interactive storefront UI on hosts that support it.
https://github.com/user-attachments/assets/59508319-aa1f-4462-afbe-52b64638ece3
- Transport: Streamable HTTP (protocol revision
2026-07-28, stateless)
- Endpoint:
https://mcp.trychannel3.com/
- Tools:
search_products, get_products, plus watch_product and unwatch_product when price and stock alerts are enabled
- Prompts:
find-gift, price-check, find-dupes
- UI: results render in an interactive storefront (MCP Apps) on hosts that support it
Connect
One URL, no API key and no OAuth:
Limits on the free tier are generous and sized for personal use. For unlimited usage and affiliate attribution, add an API key.
[Install in Cursor]
[Install in VS Code]
Claude Code
Claude web, Desktop, and mobile
Settings → Connectors → Add custom connector, then paste the endpoint URL. Claude connects from its own servers, so one connector covers every Claude surface including mobile.
Don't use claude_desktop_config.json for this: it only accepts stdio servers, and an entry with a url field is silently dropped along with the rest of mcpServers.
ChatGPT
Turn on developer mode under Settings → Security and login, then create an app under Settings → Plugins pointing at the endpoint URL, with authentication set to none.
Codex
Cursor and VS Code by hand
~/.cursor/mcp.json, or .cursor/mcp.json to scope it to one project:
.vscode/mcp.json, or code --add-mcp '{"name":"Channel3","type":"http","url":"https://mcp.trychannel3.com/"}' for the user profile:
Any other client
Register the endpoint as a Streamable HTTP server; there is no SSE endpoint. It's stateless, so there's no session to keep alive, and clients on the 2026-07-28 revision can skip the initialize handshake entirely.
Price and Stock Alerts
watch_product subscribes a conversation to one variant's price and availability changes, including retailers starting or stopping selling it. A product with options needs a value for every option in selected_options, and the error lists any that are missing. When Channel3 detects a change, the conversation is woken through Wakeshift, even after it has gone idle.
How it fits together:
watch_product creates a Channel3 product subscription on this server's own account, then subscribes the conversation to the matching Wakeshift events (product.price.changed, product.availability.changed).
- Channel3 posts signed webhooks to
POST /webhooks/channel3. The server verifies the Standard Webhooks signature and emits the occurrence to Wakeshift, using the Channel3 event ID for deduplication.
- When an event reaches no watchers, the server cancels its Channel3 subscription, once that subscription is over an hour old.
There's no sign-in, so each watch belongs to the conversation that made it. watch_product returns a watch_id, every alert repeats it, and unwatch_product takes it.
Setup:
Waking uses @wakeshift/sdk, which needs @modelcontextprotocol/server 2.3 or later: on 2.0 to 2.2, Claude Code's background wait fails with Method not found and the conversation is never woken.
Add https://mcp.trychannel3.com/webhooks/channel3 as an endpoint in the Channel3 webhook dashboard of the account that owns DEFAULT_CHANNEL3_API_KEY, subscribed to offer.price.changed, offer.availability.changed, offer.created and offer.deleted. Without WAKESHIFT_KEY the watch tools aren't registered, and without both secrets the webhook route returns 404.
Free Tier and API Keys
Create an account at trychannel3.com, copy a key from the dashboard, and send it as an X-API-Key header. That lifts the free-tier rate limit and attributes affiliate clicks to your account.
- Cursor / VS Code: add
"headers": { "X-API-Key": "<your-api-key>" } alongside url.
- Claude Code: append
--header "X-API-Key: <your-api-key>" to the claude mcp add command.
- Claude connectors: enter the key under Request headers in the Add custom connector dialog. That section is a beta still rolling out.
- ChatGPT: developer-mode apps accept OAuth or no auth only, so there's no header field.
- OpenAI hosted MCP (Responses API
mcp tool, HostedMCPTool): put the key in the tool's authorization field — the server accepts it as a bearer token.
- Codex: map the header to an env var in
~/.codex/config.toml so the key stays out of the file: