Skip to main content
Glama

Server Details

Product search and price comparison for AI agents. Search 100M+ products across thousands of retailers by text or image, compare live offers and prices, and turn any merchant URL into structured product data. No API key required to start; add one for unlimited use and affiliate commission.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation2/5

browse_products and search_products both cover searching and paging, while get_details and get_products both fetch product information by ID. The descriptions provide some hints, but the actual boundaries between these pairs remain unclear and easy for an agent to confuse.

Naming Consistency4/5

Most tools follow a clear verb_noun pattern like browse_products, get_products, and search_products. However, get_details and get_similar are vaguer and less parallel, creating minor inconsistency.

Tool Count5/5

Six tools is a well-scoped size for a product search server. Each tool contributes to a coherent discovery flow: search, browse, details, price history, and similar products.

Completeness5/5

The surface covers the core product search lifecycle well: searching, browsing/paging, fetching details, viewing price history, and finding similar products. No significant missing operations are apparent for the stated purpose.

Available Tools

6 tools
browse_productsBrowse ProductsC
Read-onlyIdempotent
Inspect

Search and page through products for the storefront UI.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNoOne product type and its constraints in natural language (brand, color, material, size, price, gender). Good: "red leather jacket under $200"; "leather golf glove under $40". Bad: "gift ideas for dad"; "cool sneakers"; "golf glove or rangefinder".
device_idNo
image_urlNoPublic image URL for visual search. Combine with `query` for text + image.
thread_idNo
page_tokenNoToken from a previous response's next_page_token.

Output Schema

ParametersJSON Schema
NameRequiredDescription
productsYes
next_page_tokenYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no additional behavioral context such as pagination details, rate limits, or any caveats. It merely restates the action without enriching understanding of side effects or constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence with no wasted words. It is appropriately brief for a straightforward browsing tool. However, it lacks any structural organization or emphasis; it is merely a phrase without front-loading key distinguishing details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given six parameters, zero required, and a rich set of siblings, the description is far too thin. It does not explain pagination usage, how to combine query and image_url, or any filtering nuances. An output schema exists, so return values are covered, but the overall usage context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%, with descriptions for query, image_url, and page_token, but none for limit, device_id, or thread_id. The description mentions no parameters at all, so it does not compensate for the undocumented ones. An agent gets no help understanding what device_id or thread_id mean from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'Search and page through products'. It conveys the core action of browsing with pagination. However, it does not distinguish this tool from the sibling 'search_products' which likely overlaps, so it lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives like 'search_products' or 'get_products'. There are no exclusions, conditions, or hints about the appropriate context. The only context is 'for the storefront UI', which is a vague purpose indicator, not a usage guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_detailsGet Product DetailsA
Read-onlyIdempotent
Inspect

Fetch a product with live offers, for the storefront UI.

ParametersJSON Schema
NameRequiredDescriptionDefault
device_idNo
thread_idNo
product_idYesCanonical product ID.
selected_optionsNoVariant configuration as `{ optionName: label }` for re-resolving offers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
productYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers the safety profile, and “live offers” adds a small behavioral hint about data freshness (it is not just a static product lookup). The description does not, however, explain how “live” behaves — e.g., whether offers are re-resolved per request, cached, or require selected options.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

An single sentence with the core purpose, the behavioral_distinguisher (“live offers”), and the intended context (storefront UI) — all without roundabout explanation or redundant restatement of the name or title. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only product fetch, the description covers the basic task and leaves no missing required inputs (product_id is listed as required). However, there is no output schema and no description of what “live offers” means, and two params (device_id, thread_id) remain opaque, so an agent gets an useful but not debt, complete, complete target.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

product_id and selected_options are already described in the schema, so roughly half of the parameters have provenance. The description's storefront-UI framing gives only weak hints about device_id and thread_id (frontrount route context), but does not really compensate for the undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (“fetch”) and resource (“product” with a distinctive “live offers” modifier, so an agent clearly knows what the tool returns. It does not name any sibling tools, so full differentiation from similar fetch/list tools is not explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

“For the storefront UI” implies the intended context: use when serving the customer-facing product page. However, there is no explicit when-not-to-use condition, no prerequisite mention, and no alternative tool is named, so routing falls to agent inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_price_historyGet Price HistoryB
Read-onlyIdempotent
Inspect

Fetch 30-day price history for a product, for the storefront UI.

ParametersJSON Schema
NameRequiredDescriptionDefault
device_idNo
thread_idNo
product_idYesCanonical product ID.
selected_optionsNoVariant configuration as `{ optionName: label }` for re-resolving offers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
historyYes
statisticsYes
canonical_product_idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds the 30-day window and storefront context, which is useful but limited; it does not explain behavior around variant resolution or filtered results beyond that. This is a modest improvement over the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one effective, front-loaded sentence with no filler. It states the core functionality and intended context without redundant detail, making it easy to scan and parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup tool backed by an output schema and active annotations, the description is mostly sufficient, but it lacks any signposting for how this tool compares to siblings and leaves some parameter behavior muddy. The core call is clear, but the surrounding decision of when to use it is omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%, and the description does not explain any of the parameters directly. It references 'product' which maps to product_id, but leaves device_id, thread_id, and selected_options completely unexplained, so an agent cannot infer their purpose beyond the schema's partial doc.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific verb—Fetch—and the resource: a 30-day price history for a product, with a context qualifier ('storefront UI'). This clearly differentiates the tool from siblings like search_products or get_details, which serve other purposes. The operation is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance about when to use this tool versus the sibling product tools, and no mention of prerequisites or when not to use it. The phrase 'for the storefront UI' hints at a context but does not direct the agent toward this tool over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_productsGet ProductsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idNoConversation 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.
product_idsYesProducts to fetch in parallel.

Output Schema

ParametersJSON Schema
NameRequiredDescription
as_ofYesISO timestamp of when this result was produced; prices are live as of this moment.
productsYes
thread_idYesConversation thread ID. Pass it back unchanged as `thread_id` on every follow-up call in this conversation.
session_idNoPostHog MCP session ID for analytics correlation.
unresolvedNo
server_originNoOrigin of this MCP server; the storefront UI posts analytics events here.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only/idempotent, and the description adds critical behavioral context: results are returned in the storefront UI, and the thread_id must be propagated unchanged to every subsequent Channel3 call, including unrelated searches. This goes beyond annotations and is essential for correct stateful usage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and usage, and the key behavioral details are present. However, the final two sentences about thread_id largely repeat information already in the schema's thread_id parameter description, adding redundancy that could be trimmed without losing necessary emphasis.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple two-parameter tool with an output schema present, the description covers purpose, usage, and the critical thread_id statefulness rule. It does not need to explain return values due to the output schema, and the context is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for both parameters, so the baseline is 3. The description adds meaning by clarifying that product_ids can be IDs from search results or retailer URLs, and that multiple IDs are fetched in parallel for comparison, which enriches the schema's bare field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Get full product data') with a defined resource (offers, description, attributes, images) and identifies two input methods (product ID or retailer URL). It distinguishes itself from siblings by explicitly referencing search_products and noting batch comparison, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance to use search_products to find products first and suggests passing multiple IDs for comparison. However, it does not clarify when to prefer get_products over sibling tools like get_details or get_similar, so it lacks full exclusions or alternative scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_similarGet Similar ProductsB
Read-onlyIdempotent
Inspect

Find products similar to a given product, for the storefront UI.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
device_idNo
thread_idNo
product_idYesCanonical product ID to find similar products for.

Output Schema

ParametersJSON Schema
NameRequiredDescription
productsYes
next_page_tokenYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds no behavioral detail beyond the basic function and does not explain what it returns, any limitations, or side effects beyond what annotations imply. It is consistent with annotations, so no contradiction, but adds minimal value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the verb and object. It is efficient, avoids redundancy, and is free of fluff. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 parameters and only 25% schema coverage, the description is inadequate. It does not clarify the purpose of limit, device_id, or thread_id, nor does it provide usage context relative to sibling tools. Even with an output schema, the description fails to give an agent enough to confidently invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25% (only product_id has a description). The description implicitly covers product_id ('given a product') but provides no semantics for limit, device_id, or thread_id. With such low coverage, the description should compensate but fails to explain the meaning or purpose of these parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Find products similar to a given product') and the context ('for the storefront UI'). It is specific and distinct from sibling tools like search_products (query-based) and browse_products (general browsing). The verb and resource are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus its siblings. It only hints at 'storefront UI' but does not explain scenarios, exclusions, or how it differs from search_products or browse_products. An agent is left to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_productsSearch ProductsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOne product type and its constraints in natural language (brand, color, material, size, price, gender). Good: "red leather jacket under $200"; "leather golf glove under $40". Bad: "gift ideas for dad"; "cool sneakers"; "golf glove or rangefinder".
image_urlNoPublic image URL for visual search. Combine with `query` for text + image.
thread_idNoConversation 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
seqNo
as_ofYesISO timestamp of when this result was produced; prices are live as of this moment.
queryNoThe text query this result answers.
productsYes
image_urlNoThe image URL this result answers.
thread_idYesConversation thread ID. Pass it back unchanged as `thread_id` on every follow-up call in this conversation.
session_idNoPostHog MCP session ID for analytics correlation.
server_originNoOrigin of this MCP server; the storefront UI posts analytics events here.
next_page_tokenYesOpaque pagination token used by the storefront UI; not usable via this tool.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, idempotentHint), the description discloses key behavior: 'Returns up to 8 product cards plus structured product data' and the critical requirement to propagate the returned thread_id on every subsequent Channel3 call. This adds substantial behavioral context that annotations alone do not provide. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with purpose front-loaded in the first sentence and every subsequent sentence earning its place. The detailed thread_id instruction is essential and clearly emphasized. No filler or repetition relative to what annotations already cover.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the annotations, output schema, and fully described parameters, the description covers the essential operational aspects: what to search, how to batch calls, constraints, return format, and mandatory thread_id propagation. It is slightly less complete in not clarifying how it relates to sibling tools, but that is not required for a correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents query, image_url, and thread_id. The description's mention of putting constraints in query and the thread_id propagation echoes the schema without adding new parameter-level detail. The baseline of 3 applies because the schema carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Search 100M+ products across thousands of retailers for one product type.' This clearly conveys what the tool does and that it focuses on product-type search. It does not explicitly name or differentiate from sibling search tools such as browse_products or get_products, so it misses the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear invocation guidance: 'Call once for each distinct product type, and send independent calls together' and 'Put relevant constraints in query.' This provides good context on how to use the tool, though it does not mention when not to use it or how it differs from the sibling alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedbrowse_products2 fields changed
      • removedOutput schema / properties / next_page_token / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / next_page_token / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedget_similar2 fields changed
      • removedOutput schema / properties / next_page_token / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / next_page_token / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedsearch_products4 fields changed
      • removedOutput schema / properties / next_page_token / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / next_page_token / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / products / items / properties / offers / items / properties / price / properties / compare_at_price / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / products / items / properties / offers / items / properties / price / properties / compare_at_price / type
        Added value: +[
        +  "number",
        +  "null"
        +]
  2. 4 tool updates
    • Changedbrowse_products1 field changed
      • addedInput schema / properties / device_id
        Added value: +{
        +  "type": "string"
        +}
    • Changedget_details1 field changed
      • addedInput schema / properties / device_id
        Added value: +{
        +  "type": "string"
        +}
    • Changedget_price_history1 field changed
      • addedInput schema / properties / device_id
        Added value: +{
        +  "type": "string"
        +}
    • Changedget_similar1 field changed
      • addedInput schema / properties / device_id
        Added value: +{
        +  "type": "string"
        +}
  3. 2 tool updates
    • Changedget_details1 field changed
      • addedInput schema / properties / selected_options
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "Variant configuration as `{ optionName: label }` for re-resolving offers.",
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
    • Changedget_price_history3 fields changed
      • addedInput schema / properties / selected_options
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "Variant configuration as `{ optionName: label }` for re-resolving offers.",
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / canonical_product_id
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "history",
        -  "statistics"
        -]New value: +[
        +  "canonical_product_id",
        +  "history",
        +  "statistics"
        +]
  4. 6 tool updates
    • Changedbrowse_products1 field changed
      • addedInput schema / properties / thread_id
        Added value: +{
        +  "type": "string"
        +}
    • Changedget_details1 field changed
      • addedInput schema / properties / thread_id
        Added value: +{
        +  "type": "string"
        +}
    • Changedget_price_history1 field changed
      • addedInput schema / properties / thread_id
        Added value: +{
        +  "type": "string"
        +}
    • Changedget_products5 fields changed
      • addedInput schema / properties / thread_id
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / server_origin
        Added value: +{
        +  "description": "Origin of this MCP server; the storefront UI posts analytics events here.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / session_id
        Added value: +{
        +  "description": "PostHog MCP session ID for analytics correlation.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / thread_id
        Added value: +{
        +  "description": "Conversation thread ID. Pass it back unchanged as `thread_id` on every follow-up call in this conversation.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "products",
        -  "as_of"
        -]New value: +[
        +  "products",
        +  "as_of",
        +  "thread_id"
        +]
    • Changedget_similar1 field changed
      • addedInput schema / properties / thread_id
        Added value: +{
        +  "type": "string"
        +}
    • Changedsearch_products5 fields changed
      • addedInput schema / properties / thread_id
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / server_origin
        Added value: +{
        +  "description": "Origin of this MCP server; the storefront UI posts analytics events here.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / session_id
        Added value: +{
        +  "description": "PostHog MCP session ID for analytics correlation.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / thread_id
        Added value: +{
        +  "description": "Conversation thread ID. Pass it back unchanged as `thread_id` on every follow-up call in this conversation.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "products",
        -  "next_page_token",
        -  "as_of"
        -]New value: +[
        +  "products",
        +  "next_page_token",
        +  "as_of",
        +  "thread_id"
        +]
  5. 1 tool update
    • Changedsearch_products6 fields changed
      • removedOutput schema / properties / products / items / properties / age
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "enum": [
        -        "newborn",
        -        "infant",
        -        "toddler",
        -        "kids",
        -        "adult"
        -      ],
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ]
        -}
      • removedOutput schema / properties / products / items / properties / category
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": {},
        -      "properties": {
        -        "has_children": {
        -          "type": "boolean"
        -        },
        -        "slug": {
        -          "type": "string"
        -        },
        -        "title": {
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "slug",
        -        "title",
        -        "has_children"
        -      ],
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ]
        -}
      • removedOutput schema / properties / products / items / properties / description
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ]
        -}
      • removedOutput schema / properties / products / items / properties / gender
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "enum": [
        -        "male",
        -        "female",
        -        "unisex"
        -      ],
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ]
        -}
      • removedOutput schema / properties / products / items / properties / structured_attributes
        Removed value: -{
        -  "additionalProperties": {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  "propertyNames": {
        -    "type": "string"
        -  },
        -  "type": "object"
        -}
      • addedOutput schema / properties / seq
        Added value: +{
        +  "maximum": 9007199254740991,
        +  "minimum": -9007199254740991,
        +  "type": "integer"
        +}
  6. 2 tool updates
    • Changedbrowse_products3 fields changed
      • changedInput schema / properties / image_url / description
        Previous value: -"A public URL of an image. The tool finds products that look like the image. Add `query` to search with text and the image together."New value: +"Public image URL for visual search. Combine with `query` for text + image."
      • changedInput schema / properties / query / description
        Previous value: -"One product with its objective attributes, as a retailer prints them on the product page. This tool has no filter parameters. Put every constraint in this text: brand, retailer, color, material, size, price, gender.\nCorrect: \"red leather jacket under $200\"\nCorrect: \"low-top off-white suede sneakers\"\nCorrect: \"leather golf glove under $40\"\nWrong: \"cool sneakers\"\nWrong: \"good birthday gifts for dad\"\nDo not write an opinion word, for example \"cool\", \"stylish\", or \"best\". The search engine matches an opinion word to the names of products. The query \"cool sneakers\" returns a shoe line with the name \"Cool\". Write the attributes that cause the opinion."New value: +"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\"."
      • addedInput schema / properties / query / minLength
        Added value: +1
    • Changedsearch_products5 fields changed
      • changedInput schema / properties / image_url / description
        Previous value: -"A public URL of an image. The tool finds products that look like the image. Add `query` to search with text and the image together."New value: +"Public image URL for visual search. Combine with `query` for text + image."
      • changedInput schema / properties / query / description
        Previous value: -"One product with its objective attributes, as a retailer prints them on the product page. This tool has no filter parameters. Put every constraint in this text: brand, retailer, color, material, size, price, gender.\nCorrect: \"red leather jacket under $200\"\nCorrect: \"low-top off-white suede sneakers\"\nCorrect: \"leather golf glove under $40\"\nWrong: \"cool sneakers\"\nWrong: \"good birthday gifts for dad\"\nDo not write an opinion word, for example \"cool\", \"stylish\", or \"best\". The search engine matches an opinion word to the names of products. The query \"cool sneakers\" returns a shoe line with the name \"Cool\". Write the attributes that cause the opinion."New value: +"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\"."
      • addedInput schema / properties / query / minLength
        Added value: +1
      • addedOutput schema / properties / image_url
        Added value: +{
        +  "description": "The image URL this result answers.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / query
        Added value: +{
        +  "description": "The text query this result answers.",
        +  "type": "string"
        +}
  7. 2 tool updates
    • Changedbrowse_products2 fields changed
      • changedInput schema / properties / image_url / description
        Previous value: -"Public image URL for visual search. Combine with `query` for text+image search."New value: +"A public URL of an image. The tool finds products that look like the image. Add `query` to search with text and the image together."
      • changedInput schema / properties / query / description
        Previous value: -"One specific product, described concretely: item type plus attributes, e.g. 'self-stirring coffee mug' or 'red leather jacket under $200'. This is semantic (meaning-based) search, not keyword matching - synonym lists and generic category words like 'good birthday gifts' dilute the embedding and return generic results. One concrete idea per call; run separate searches for separate ideas. Constraints (brand, retailer, color, size, price range, gender) go inline in the description."New value: +"One product with its objective attributes, as a retailer prints them on the product page. This tool has no filter parameters. Put every constraint in this text: brand, retailer, color, material, size, price, gender.\nCorrect: \"red leather jacket under $200\"\nCorrect: \"low-top off-white suede sneakers\"\nCorrect: \"leather golf glove under $40\"\nWrong: \"cool sneakers\"\nWrong: \"good birthday gifts for dad\"\nDo not write an opinion word, for example \"cool\", \"stylish\", or \"best\". The search engine matches an opinion word to the names of products. The query \"cool sneakers\" returns a shoe line with the name \"Cool\". Write the attributes that cause the opinion."
    • Changedsearch_products2 fields changed
      • changedInput schema / properties / image_url / description
        Previous value: -"Public image URL for visual search. Combine with `query` for text+image search."New value: +"A public URL of an image. The tool finds products that look like the image. Add `query` to search with text and the image together."
      • changedInput schema / properties / query / description
        Previous value: -"One specific product, described concretely: item type plus attributes, e.g. 'self-stirring coffee mug' or 'red leather jacket under $200'. This is semantic (meaning-based) search, not keyword matching - synonym lists and generic category words like 'good birthday gifts' dilute the embedding and return generic results. One concrete idea per call; run separate searches for separate ideas. Constraints (brand, retailer, color, size, price range, gender) go inline in the description."New value: +"One product with its objective attributes, as a retailer prints them on the product page. This tool has no filter parameters. Put every constraint in this text: brand, retailer, color, material, size, price, gender.\nCorrect: \"red leather jacket under $200\"\nCorrect: \"low-top off-white suede sneakers\"\nCorrect: \"leather golf glove under $40\"\nWrong: \"cool sneakers\"\nWrong: \"good birthday gifts for dad\"\nDo not write an opinion word, for example \"cool\", \"stylish\", or \"best\". The search engine matches an opinion word to the names of products. The query \"cool sneakers\" returns a shoe line with the name \"Cool\". Write the attributes that cause the opinion."
  8. 7 tool updates
    • Addedbrowse_products
    • Addedget_details
    • Addedget_price_history
    • Removedget_product
    • Addedget_products
    • Addedget_similar
    • Changedsearch_products11 fields changed
      • changedInput schema / properties / query / description
        Previous value: -"Natural-language product search. Include any constraints inline (brand, retailer, category, color, size, price range, gender, etc.). Required unless `image_url` is given."New value: +"One specific product, described concretely: item type plus attributes, e.g. 'self-stirring coffee mug' or 'red leather jacket under $200'. This is semantic (meaning-based) search, not keyword matching - synonym lists and generic category words like 'good birthday gifts' dilute the embedding and return generic results. One concrete idea per call; run separate searches for separate ideas. Constraints (brand, retailer, color, size, price range, gender) go inline in the description."
      • addedOutput schema / properties / as_of
        Added value: +{
        +  "description": "ISO timestamp of when this result was produced; prices are live as of this moment.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / next_page_token
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Opaque pagination token used by the storefront UI; not usable via this tool."
        +}
      • changedOutput schema / properties / products / items / properties / age / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "newborn",
        +      "infant",
        +      "toddler",
        +      "kids",
        +      "adult"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / products / items / properties / brand
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / products / items / properties / brands
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {
        +      "id": {
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "name"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / products / items / properties / category / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "has_children": {
        +        "type": "boolean"
        +      },
        +      "slug": {
        +        "type": "string"
        +      },
        +      "title": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "slug",
        +      "title",
        +      "has_children"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / products / items / properties / gender / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "male",
        +      "female",
        +      "unisex"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / products / items / properties / image
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / products / items / properties / images
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {
        +      "url": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "products"
        -]New value: +[
        +  "products",
        +  "next_page_token",
        +  "as_of"
        +]
  9. 2 tool updates
    • Changedget_product2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "id": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_products2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "products": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "age": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "brand": {
        +            "type": "string"
        +          },
        +          "category": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "description": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "gender": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "image": {
        +            "type": "string"
        +          },
        +          "offers": {
        +            "items": {
        +              "additionalProperties": {},
        +              "properties": {
        +                "availability": {
        +                  "enum": [
        +                    "InStock",
        +                    "OutOfStock"
        +                  ],
        +                  "type": "string"
        +                },
        +                "domain": {
        +                  "type": "string"
        +                },
        +                "price": {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "compare_at_price": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "currency": {
        +                      "type": "string"
        +                    },
        +                    "price": {
        +                      "type": "number"
        +                    }
        +                  },
        +                  "required": [
        +                    "currency",
        +                    "price"
        +                  ],
        +                  "type": "object"
        +                },
        +                "url": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "availability",
        +                "domain",
        +                "price",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "structured_attributes": {
        +            "additionalProperties": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "propertyNames": {
        +              "type": "string"
        +            },
        +            "type": "object"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "products"
        +  ],
        +  "type": "object"
        +}
  10. 3 tool updates
    • Addedget_product
    • Removedsearch
    • Addedsearch_products
  11. 1 tool update
    • First observedsearch

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    9 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables tracking competitor websites, changelogs, blog feeds, and pricing pages with meaningful diffs, classification, and Markdown digests via MCP tools for listing, adding, removing competitors, running checks, and retrieving digests or changes.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources