Skip to main content
Glama
sepehr071

shopino-mcp

by sepehr071

Search products

sh_search
Read-onlyIdempotent

Search products across Iranian shops by keyword to find prices, discounts, and stock, helping you compare shops before buying.

Instructions

Search products across all shops by keyword: price to pay, discount, stock, selling shop.

Use first for "price of X" / "where to buy X". Cheapest matches as one flat list: sh_find_cheapest. Variants (size, color, stock): sh_product. Next page: pass next_cursor back as cursor.

Input Schema

NameRequiredDescriptionDefault
cityNoSame-day courier city, e.g. 'تهران' (sh_filters).
sortNoOrder; cheapest / most_expensive use the price to pay.relevance
limitNoProducts per page.
queryYesKeyword, Persian works best, e.g. 'مانتو کتان'.
sizesNoSizes in size_system (any of them), e.g. ['M', 'L'].
cursorNonext_cursor of the previous reply (keep the other arguments the same).
shop_idNoOne shop's id (sh_shops), e.g. 489.
max_priceNoMaximum price to pay in Toman, e.g. 2000000.
min_priceNoMinimum price to pay in Toman, e.g. 500000.
category_idNoCategory id from sh_categories, e.g. 385; includes sub-categories.
size_systemNoSize system for `sizes` (values: sh_filters); freesize = only free-size items.
in_stock_onlyNoOnly products in stock now.
discounted_onlyNoOnly discounted products.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed23 schema fields changedv0.3.0
    • changedInput schema / properties / category_id / description
      Previous value: -"Category id from sh_categories, e.g. 385 (women's manteaus); includes sub-categories."New value: +"Category id from sh_categories, e.g. 385; includes sub-categories."
    • removedInput schema / properties / category_id / title
      Removed value: -"Category Id"
    • changedInput schema / properties / city / description
      Previous value: -"Only shops with same-day courier delivery in this city, e.g. 'تهران' (list in sh_filters)."New value: +"Same-day courier city, e.g. 'تهران' (sh_filters)."
    • removedInput schema / properties / city / title
      Removed value: -"City"
    • changedInput schema / properties / cursor / description
      Previous value: -"next_cursor of the previous reply, for the next page (keep the other arguments the same)."New value: +"next_cursor of the previous reply (keep the other arguments the same)."
    • removedInput schema / properties / cursor / title
      Removed value: -"Cursor"
    • removedInput schema / properties / discounted_only / title
      Removed value: -"Discounted Only"
    • removedInput schema / properties / in_stock_only / title
      Removed value: -"In Stock Only"
    • removedInput schema / properties / limit / title
      Removed value: -"Limit"
    • removedInput schema / properties / max_price / title
      Removed value: -"Max Price"
    • removedInput schema / properties / min_price / title
      Removed value: -"Min Price"
    • changedInput schema / properties / query / description
      Previous value: -"Product name or keyword, Persian works best, e.g. 'مانتو کتان' or 'کفش ورزشی'."New value: +"Keyword, Persian works best, e.g. 'مانتو کتان'."
    • removedInput schema / properties / query / title
      Removed value: -"Query"
    • changedInput schema / properties / shop_id / description
      Previous value: -"Search inside one shop (id from sh_shops / sh_shop), e.g. 489."New value: +"One shop's id (sh_shops), e.g. 489."
    • removedInput schema / properties / shop_id / title
      Removed value: -"Shop Id"
    • changedInput schema / properties / size_system / description
      Previous value: -"Size system for `sizes` (values in sh_filters): standard (S, M, L...), european (38, 40...), shoe, kid_shoe, pants, underwear, baby, kid; freesize = only free-size items."New value: +"Size system for `sizes` (values: sh_filters); freesize = only free-size items."
    • removedInput schema / properties / size_system / title
      Removed value: -"Size System"
    • changedInput schema / properties / sizes / description
      Previous value: -"Sizes in the chosen size_system (any of them), e.g. ['M', 'L'] or ['40']."New value: +"Sizes in size_system (any of them), e.g. ['M', 'L']."
    • removedInput schema / properties / sizes / title
      Removed value: -"Sizes"
    • changedInput schema / properties / sort / description
      Previous value: -"Order: relevance (Shopino's ranking), cheapest / most_expensive (price to pay), newest, biggest_discount."New value: +"Order; cheapest / most_expensive use the price to pay."
    • removedInput schema / properties / sort / title
      Removed value: -"Sort"
    • removedInput schema / title
      Removed value: -"sh_searchArguments"
    • changedOutput schema / (root)
      Previous value: -{
      -  "additionalProperties": true,
      -  "title": "sh_searchDictOutput",
      -  "type": "object"
      -}New value: +null
  2. 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 readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds behavior beyond that: the shape of each result (price to pay, discount, stock, selling shop) and the cursor round-trip for paging. It stops short of stating rate limits or result-count behavior, so it is strong but not exhaustive.

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?

Four short lines, front-loaded with purpose then routing then pagination; every line carries information. The telegraphic fragment style ('Variants (size, color, stock): sh_product') is dense but readable, with no filler sentences.

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?

For a 13-parameter search with full schema coverage and no output schema, the description supplies the missing routing layer and the pagination contract. It does not need to explain return values, but it could say more about how the many filters combine or what an empty result means, which keeps it short of a 5.

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 baseline is 3 and the schema already documents city, sort, sizes, price bounds, category and the rest with examples. The description's only parameter-adjacent content is the cursor instruction, which largely restates the schema's own 'next_cursor of the previous reply' note, so it adds little beyond the structured fields.

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?

Starts with a specific verb+resource ('Search products across all shops by keyword') and immediately lists what each result carries (price to pay, discount, stock, selling shop). It also names the two most confusable siblings, sh_find_cheapest and sh_product, so an agent can separate this broad search from the cheapest-only and variant-lookup tools without opening a schema.

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

Usage Guidelines5/5

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

Gives an explicit entry condition ('Use first for "price of X" / "where to buy X"') and routes two distinct cases to named alternatives: sh_find_cheapest for a flat cheapest list and sh_product for size/color/stock variants. It closes the loop with a pagination rule ('pass next_cursor back as cursor'), leaving nothing to inference.

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