Skip to main content
Glama
sepehr071

shopino-mcp

by sepehr071

Find cheapest product

sh_find_cheapest
Read-onlyIdempotent

Find in-stock products for a keyword across all shops, sorted by price to pay. Drops loose matches and unpriced items.

Instructions

Find the cheapest in-stock products for a keyword across all shops, one flat list sorted by price to pay.

Use for the lowest price of X. Drops loose matches (match_all_words) and unpriced items. Price is the cheapest variant: check size / color with sh_product. complete=false: more matches past scanned, raise scan.

Input Schema

NameRequiredDescriptionDefault
cityNoSame-day courier city, e.g. 'تهران' (sh_filters).
scanNoMax results to scan, cheapest first.
limitNoMax offers to return.
queryYesKeyword, Persian works best, e.g. 'مانتو کتان'.
category_idNoCategory id from sh_categories, e.g. 385; includes sub-categories.
match_all_wordsNoKeep only products whose title or shop name has every query word.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed13 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"
    • removedInput schema / properties / limit / title
      Removed value: -"Limit"
    • changedInput schema / properties / match_all_words / description
      Previous value: -"Keep only products whose title or shop name contains every word of the query."New value: +"Keep only products whose title or shop name has every query word."
    • removedInput schema / properties / match_all_words / title
      Removed value: -"Match All Words"
    • 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 / scan / description
      Previous value: -"Max search results to scan, cheapest first, 200 per request."New value: +"Max results to scan, cheapest first."
    • removedInput schema / properties / scan / title
      Removed value: -"Scan"
    • removedInput schema / title
      Removed value: -"sh_find_cheapestArguments"
    • changedOutput schema / (root)
      Previous value: -{
      -  "additionalProperties": true,
      -  "title": "sh_find_cheapestDictOutput",
      -  "type": "object"
      -}New value: +null
  2. First observedv0.1.0

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive). Beyond that the description discloses real behavior: it drops loose matches via match_all_words, drops unpriced items, reports the cheapest variant price, and explains the complete=false/scanned/scan pagination loop. Return format isn't described, but the operational traits are well surfaced.

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?

Front-loads the core purpose, then layers triggers, caveats, and pagination hints in compact prose. Dense but every clause carries information; minor terseness ('price to pay') doesn't hurt readability enough to drop below 4.

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 6-param read tool with full schema coverage and safety annotations already handled, the description covers filtering behavior, the key cross-reference (sh_product for variants), and partial-result handling via complete/scan. No output schema, but the flat sorted list is implied, so remaining gaps are minor.

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?

With 100% schema coverage the baseline is 3, but the description adds genuine meaning: it explains that match_all_words filters loose matches and unpriced items are excluded, and that 'scan' governs how far past the results pagination goes. This clarifies the intent behind scan/limit beyond the terse schema text.

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 ('Find the cheapest in-stock products for a keyword across all shops') and adds the differentiator of a single price-sorted list. It doesn't explicitly name the sibling it is not (unlike a 'use X instead' pattern), but the scope is unambiguous enough to distinguish it from sh_search or sh_browse.

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?

'Use for the lowest price of X' gives a clear positive trigger, and it routes the user to sh_product for size/color variant checks. It stops short of explicit when-not-to-use or naming alternative siblings for broader searches, so it's clear context rather than a full routing guide.

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