Appearance
Product (commerce) MCP β
Expose your product catalog's search to an outside AI tool β Claude Code, Cursor, or any MCP-capable host β as a set of read-only product-search tools scoped to one account and one product catalog. Use this when you're building an AI sales agent outside MyChatBot and want it to run the same catalog search, category browsing, and attribute filtering that the in-app agent uses.
Cheat sheet β
| Item | Value |
|---|---|
| Server address | https://product.mychatbot.app/mcp/{account_id}/{integration_id}/stream |
| Transport | Streamable HTTP MCP |
| Access | Scoped by the account + catalog IDs already baked into the URL β the URL itself is the key |
| What's exposed | 10 read-only product-search tools (see below) |
| Where to get it | In the app: Knowledge Base or Agents β Connectors β Connect AI tools |
Add to Claude Code:
bash
claude mcp add --transport http product-search "https://product.mychatbot.app/mcp/{account_id}/{integration_id}/stream"Add to Cursor (~/.cursor/mcp.json):
json
{
"mcpServers": {
"product-search": {
"url": "https://product.mychatbot.app/mcp/{account_id}/{integration_id}/stream"
}
}
}Get the ready-made command from the app β don't build the URL by hand
Both {account_id} and {integration_id} are filled in for you. Open the Connect AI tools dialog and copy the setup for your tool:
- Knowledge Base (app.mychatbot.app/knowledge-base) β on a product catalog card, open the card menu β Connect AI tools.
- Agents β Connectors (app.mychatbot.app/agents/connectors) β open a product catalog β Connect AI tools.
The dialog shows the Server address, a ready-to-run Claude Code command, and a Cursor config block, each with its own copy button. {integration_id} is the specific product catalog (product-feed integration) you connected.


Scoping & access β
Every connection targets exactly one catalog:
https://product.mychatbot.app/mcp/{account_id}/{integration_id}/stream{account_id}β the MyChatBot account that owns the catalog.{integration_id}β one specific product catalog on that account. Search results, categories, and attributes are read only from this catalog.
There is no header, token, or password β the account and catalog IDs in the URL are the access control. Anyone holding the full URL can query that catalog.
Treat the server address as a secret
Because the IDs in the URL are the only access control, anyone who obtains the address can read that catalog's products, categories, and attribute values. Share it only with trusted integrators, keep it out of public repos and client-side bundles, and re-create the catalog integration if an address leaks.
Tools exposed β
The server offers 10 read-only tools. Your MCP client discovers them automatically once connected β you never call them by hand; the agent picks the right one. All of them read from the account + catalog in the URL.
| Tool (MCP) | What it does | When the agent uses it |
|---|---|---|
semantic_product_search | Free-text (or image) search across the catalog; returns matching products plus the categories they fall under. Can be narrowed by attribute values. | The main entry point β "find me X". |
filter_category_products | Lists products inside one category, with reliable range narrowing (price, size, and other numeric attributes). | After a category is known and you need price/spec ranges. |
get_all_categories | Returns the catalog's category list. | To learn what categories exist before filtering. |
get_product_details | Full record for one product, including the long description that search results leave out. | When the agent needs everything about a specific item. |
get_product_variants | Lists the variants (size, color, etc.) of one product. | To present the options for a chosen product. |
find_similar_products | Returns products similar to a given one. | "Show me something like this." |
get_category_attributes | Lists the attribute names that exist in a category. | To learn the real, catalog-specific filter keys before building a filter. |
get_category_attribute_values | Lists the common values for one attribute in a category. | To learn which values are valid (e.g. which colors exist). |
get_available_filters | Returns faceted filters for a category β each attribute with its values and how many products match each. | To drive guided, faceted narrowing instead of guessing. |
get_products_by_ids | Fetches several products at once by their IDs. | To batch-load a known set of items efficiently. |
Every tool is read-only. Adding or updating products happens through the product feed, not over MCP β see Getting inventory in.
How filtering works β
The agent can narrow results by product attributes β price, color, brand, tags, and so on. Two things are worth knowing:
- Exact-match narrowing works everywhere. Free-text search reliably filters on exact attribute values ("equals" a value, or "is one of" a list).
- Number ranges are reliable inside a category. For "under 500" or "between 40 and 44", the agent should first resolve a category, then narrow within it (that's what
filter_category_productsandget_available_filtersare for). Range narrowing layered directly onto a free-text search is less dependable.
Discover attributes before filtering
Attribute names and values are specific to each catalog. A good agent calls get_all_categories, then get_category_attributes / get_category_attribute_values (or get_available_filters), to learn the real keys and values before it builds a filter β rather than guessing field names.
Search results are trimmed to stay fast
To keep responses small, search results omit the heavy long-form description and detail fields, and semantic_product_search returns the top-level description as "[truncated]" by default. When the agent needs the full record, it should call get_product_details.
Best practices β
Do
- Let the agent learn the catalog first β categories, then attribute names and values β before it builds filters.
- Use
get_available_filtersto power faceted narrowing (values + counts per attribute) instead of guessing. - Batch known IDs through
get_products_by_idsrather than looping single lookups. - Ask for full descriptions only when the model actually needs them; otherwise keep responses lean.
Don't
- Don't lean on number-range narrowing in free-text search; resolve a category first, then filter within it.
- Don't expect writes β every tool is read-only. Catalog updates come through the product feed.
Test it β
- Connect it. Paste the copied command into your terminal (Claude Code) or drop the config into
~/.cursor/mcp.json(Cursor). - Confirm the client sees it. In Claude Code, run
claude mcp list(or/mcpinside a session) and check thatproduct-searchis connected. - Ask a catalog question. Try something like "search the catalog for a gift for dry skin under 500" and confirm the agent runs a product search and returns real items.
Empty results on older catalogs
If attribute filters silently return nothing, the catalog was probably indexed before searchable attributes existed. Fixing it needs a full reindex, which isn't a self-serve toggle: delete and re-add the catalog integration, or contact MyChatBot support with the catalog details and we'll run the reindex for you. See Troubleshooting.
See also β
- Search tools reference β what each of the 10 tools returns, in detail.
- Filters & params β how attribute filtering and faceted narrowing behave.
- Prompts β prompt patterns that steer the agent toward the right tool.
- Image search β searching the catalog by image.
- Getting inventory in β the product feed that populates the catalog.
- Testing search β known-hit patterns for sanity-checking search quality.
- Troubleshooting β stale catalogs, empty filters, and other gotchas.