Skip to main content
Glama

Similar and complementary products

kh_similar
Read-onlyIdempotent

List product alternatives with prices and stock when an item is out of stock or too expensive, or get complementary items for a routine or bundle.

Instructions

List alternatives to a product (about 20) or the products the shop pairs with it, with prices and stock.

Use when a product is out of stock or too expensive, or to build a routine / bundle around it. Complementary lists are empty for most products.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindNosimilar = alternatives to this product; complementary = products the shop pairs with it (routine).similar
productYesProduct slug from kh_search / kh_browse (e.g. 'golden-rose-sheer-bright-lipstick-112222') or the numeric product id (e.g. '112222').
in_stock_onlyNoOnly products that can be ordered now.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare this a safe, idempotent, non-destructive read, so the bar is lower; the description still adds real behavioral value by disclosing the ~20-item result size and the important caveat that complementary lists are empty for most products. It does not mention pagination or ordering, which keeps it from a 5.

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?

Three short sentences, front-loaded with the core action and modes followed by usage triggers. No redundant or filler text; every sentence maps to a distinct decision the agent needs to make.

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?

An output schema exists, so return-value explanation is not needed, and the description still summarizes the payload (prices and stock). Usage conditions, both modes, and the empty-complementary edge case are all covered for a 3-parameter, 1-required tool.

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%, including a documented enum for kind and the slug/id pattern for product, so the schema already carries parameter meaning. The description restates the kind semantics, adding no syntax or format detail beyond it; baseline 3 applies.

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?

Specific verb and resource ('List alternatives to a product... or the products the shop pairs with it') with scope (~20 items) and payload (prices and stock) stated up front. The two modes are clearly distinguished, which separates it from generic siblings like kh_search and kh_find_cheapest.

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?

Explicit when-to-use triggers are given: out-of-stock, too expensive, or building a routine/bundle. It stops short of naming an alternative sibling (e.g. kh_find_cheapest) for the price-shopping case, so routing is strong but not fully closed.

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