Skip to main content
Glama
sepehr071

shopino-mcp

by sepehr071

Browse a category, shop, tag or listing

sh_browse
Read-onlyIdempotent

List and sort fashion products across shops by category, tag, shop, or curated listing; filter by price, size, stock, and discount.

Instructions

List products of a category, shop, tag or curated listing, with sort, price range and filters.

Use for "cheapest manteau in size L under 2,000,000 Toman", "newest of shop X", "biggest discounts in bags" (discounted_only + biggest_discount). With no category / shop / tag / listing it browses all shops. Ids: sh_categories, sh_shops, sh_brands; sizes: sh_filters. Next page: pass next_cursor back as cursor.

Input Schema

NameRequiredDescriptionDefault
tagNoTag slug from sh_product `tags`, e.g. 'مانتو-بلند-مشکی-زنانه'. Only sort, in_stock_only, discounted_only apply.
cityNoSame-day courier city, e.g. 'تهران' (sh_filters).
sortNoOrder; cheapest / most_expensive use the price to pay.relevance
limitNoProducts per page (a tag gives 16).
sizesNoSizes in size_system (any of them), e.g. ['M', 'L'].
cursorNonext_cursor of the previous reply (keep the other arguments the same).
listingNoListing slug from sh_campaign tabs, e.g. 'پیراهن-مردانه'. Only sort, in_stock_only, discounted_only apply.
shop_idNoOne shop's id (sh_shops), e.g. 489.
brand_idNoWatch brand id from sh_brands(shop_id=...), e.g. 12.
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. Changed29 schema fields changedv0.3.0
    • changedInput schema / properties / brand_id / description
      Previous value: -"Brand id from sh_brands(shop_id=...) (watch brands), e.g. 12 (Tommy Hilfiger)."New value: +"Watch brand id from sh_brands(shop_id=...), e.g. 12."
    • removedInput schema / properties / brand_id / title
      Removed value: -"Brand Id"
    • 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"
    • changedInput schema / properties / limit / default
      Previous value: -24New value: +20
    • changedInput schema / properties / limit / description
      Previous value: -"Products per page (a tag always gives 16 per page)."New value: +"Products per page (a tag gives 16)."
    • removedInput schema / properties / limit / title
      Removed value: -"Limit"
    • changedInput schema / properties / listing / description
      Previous value: -"Curated listing slug from sh_campaign tabs, e.g. 'پیراهن-مردانه'. Only sort, in_stock_only and discounted_only apply."New value: +"Listing slug from sh_campaign tabs, e.g. 'پیراهن-مردانه'. Only sort, in_stock_only, discounted_only apply."
    • removedInput schema / properties / listing / title
      Removed value: -"Listing"
    • removedInput schema / properties / max_price / title
      Removed value: -"Max Price"
    • removedInput schema / properties / min_price / title
      Removed value: -"Min Price"
    • changedInput schema / properties / shop_id / description
      Previous value: -"List one shop's products (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"
    • changedInput schema / properties / tag / description
      Previous value: -"Product tag slug from sh_product `tags`, e.g. 'مانتو-بلند-مشکی-زنانه'. Only sort, in_stock_only and discounted_only apply."New value: +"Tag slug from sh_product `tags`, e.g. 'مانتو-بلند-مشکی-زنانه'. Only sort, in_stock_only, discounted_only apply."
    • removedInput schema / properties / tag / title
      Removed value: -"Tag"
    • removedInput schema / title
      Removed value: -"sh_browseArguments"
    • changedOutput schema / (root)
      Previous value: -{
      -  "additionalProperties": true,
      -  "title": "sh_browseDictOutput",
      -  "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 cover read-only, idempotent, non-destructive, open-world behavior, so the bar is lower. The description adds genuinely useful operational detail the annotations lack: pagination via next_cursor passed back as cursor with the other arguments unchanged, and the fallback behavior when no scope filter is given.

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?

Three tight paragraphs with purpose first, then intent examples, then id sources and pagination. Every sentence carries information; the illustrative examples in quotes are dense but each maps to a distinct parameter pattern, so there is little waste.

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 15-parameter, zero-required browsing tool with no output schema, the definition covers scope, defaults, id provenance, and paging. Minor gaps remain around what a product entry contains and how multiple filters combine (e.g. brand_id plus category_id), which the agent must infer from the schema alone.

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%, so the baseline is 3, but the description adds value beyond it by cross-referencing where each id comes from (sh_categories, sh_shops, sh_brands, sh_filters) and by showing how free-text intents map onto sort/filter combinations. It stops short of explaining interactions among the 15 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?

States a specific verb and resource with the exact scope: listing products of a category, shop, tag or curated listing. The explicit inventory of what can be browsed, plus the note that omitting all of them browses all shops, cleanly separates it from siblings like sh_search and sh_deals.

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?

Maps concrete user intents to parameter combinations ("cheapest manteau in size L under 2,000,000 Toman", "biggest discounts in bags" -> discounted_only + biggest_discount), and points to sh_categories/sh_shops/sh_brands/sh_filters for obtaining ids. It never explicitly contrasts sh_browse with sh_search or sh_find_cheapest, so the when-not is left to inference.

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