Skip to main content
Glama
torob-mcp

torob-mcp

by sepehr071

Search products

tb_search
Read-onlyIdempotent

Search Torob products and compare each result's cheapest shop price in Toman and seller count, with filters and sorting to narrow matching offers.

Instructions

Search Torob for products; each card has the cheapest shop price (Toman) and the shop count.

Weak matches set low_confidence and unmatched_terms; spellcheck / suggested_queries help rephrase. price_span is the span of the unfiltered result.

Input Schema

NameRequiredDescriptionDefault
cityNoCity id or name; effect unverified, use tb_sellers(city=) for local offers.
pageNo0-based.
sortNomost_sellers = most shops.popular
brandNoBrand id or name ('Apple', 'اپل'); needs query or category.
limitNo
queryNoPersian or Finglish text, e.g. 'گوشی آیفون 13'. Optional with category.
outputNojson
filtersNoAttribute filters {slug: value} from tb_filters, e.g. {'storage': '256 gb'}.
categoryNoCategory id, e.g. 94.
conditionNoused = کارکرده / stock.any
in_personNoOnly products with an in-person shop.
max_priceNoToman.
min_priceNoToman.
installmentNoOnly installment (Torob Pay) products.
available_onlyNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed15 schema fields changedv0.2.0
    • removedInput schema / properties / available_only / description
      Removed value: -"Only products in stock."
    • changedInput schema / properties / brand / description
      Previous value: -"Brand id (e.g. 14) or name (e.g. 'Apple', 'اپل'); needs query or category. Unknown names are refused with the real brand list."New value: +"Brand id or name ('Apple', 'اپل'); needs query or category."
    • changedInput schema / properties / category / description
      Previous value: -"Limit to a category id (e.g. 94 = mobile phones)."New value: +"Category id, e.g. 94."
    • changedInput schema / properties / city / description
      Previous value: -"City id or name; sellers near it are preferred. Effect on search is Torob-side and unverified, use tb_sellers(city=) for exact local offers."New value: +"City id or name; effect unverified, use tb_sellers(city=) for local offers."
    • changedInput schema / properties / condition / description
      Previous value: -"new, used (کارکرده / stock) or any."New value: +"used = کارکرده / stock."
    • changedInput schema / properties / filters / description
      Previous value: -"Extra attribute filters {slug: value} from tb_filters, e.g. {'storage': '256 gb', 'ram': '8 gb'}. Validated: unknown slugs or values are refused."New value: +"Attribute filters {slug: value} from tb_filters, e.g. {'storage': '256 gb'}."
    • changedInput schema / properties / in_person / description
      Previous value: -"Only products with an in-person (offline) shop."New value: +"Only products with an in-person shop."
    • changedInput schema / properties / installment / description
      Previous value: -"Only products sold in installments (Torob Pay)."New value: +"Only installment (Torob Pay) products."
    • removedInput schema / properties / limit / description
      Removed value: -"Products to return (default 10, max 50)."
    • changedInput schema / properties / max_price / description
      Previous value: -"Highest price in Toman, e.g. 30000000."New value: +"Toman."
    • changedInput schema / properties / min_price / description
      Previous value: -"Lowest price in Toman."New value: +"Toman."
    • removedInput schema / properties / output / description
      Removed value: -"json (default) or csv text of the cards for export."
    • changedInput schema / properties / page / description
      Previous value: -"0-based page (default 0)."New value: +"0-based."
    • changedInput schema / properties / query / description
      Previous value: -"Search text, Persian or Finglish, e.g. 'گوشی آیفون 13' or 'ayfon 13'. Optional when category is given."New value: +"Persian or Finglish text, e.g. 'گوشی آیفون 13'. Optional with category."
    • changedInput schema / properties / sort / description
      Previous value: -"Order: popular (Torob default), cheapest, priciest, newest, most_sellers (most shops)."New value: +"most_sellers = most shops."
  2. First observedv0.1.1

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so credit goes to what is added: the shape of each result card, the existence and meaning of `low_confidence`/`unmatched_terms` on weak matches, and that `price_span` reflects the unfiltered result rather than the filtered one. That last point is genuine non-obvious behavior an agent would otherwise misinterpret; auth/rate-limit behavior is still unstated.

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 tight sentences, no filler: result shape first, then the failure/rephrase path, then the one subtle output field that could mislead. Front-loaded and every sentence carries information.

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?

With no output schema, the description correctly takes on the return-value burden, describing card contents and diagnostic flags. For a 15-parameter search tool it is reasonably complete, though it never mentions pagination limits, that query is optional alongside category, or when a sibling like tb_suggest should replace a rephrase attempt.

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 80%, so the baseline is 3 and the schema already documents most parameters including the city caveat and filter slug source. The description adds only one clarifying semantic — `price_span` measures pre-filter results, which matters for min_price/max_price interpretation — but says nothing about query-vs-category combinations beyond what the schema already conveys.

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?

States a specific verb+resource ('Search Torob for products') and immediately characterizes the result card (cheapest shop price in Toman, shop count), so the agent knows what comes back. It does not differentiate from siblings like tb_cheapest, tb_compare, or tb_suggest, which all retrieve product pricing data.

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?

Usage is implied — this is the general entry-point search — and the note about weak matches plus `spellcheck`/`suggested_queries` gives implicit guidance to rephrase rather than retry blindly. However, there is no explicit when-to-use/when-not statement, and the routing hint to tb_sellers for city filtering lives only in the schema, not the description.

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