Skip to main content
Glama
sepehr071

digikala-mcp

by sepehr071

Search products

dk_search
Read-onlyIdempotent

Search Digikala products by name and filter results by price, brand, color, seller type, and delivery speed. Returns 20 items per page with match quality, discount, seller, and rating.

Instructions

Search Digikala products by name, with price (Toman), discount, seller and rating.

Returns 20 products per page. Digikala's search also returns loosely related items, even for nonsense: each product has match ('all' query words in its title, 'some' with missing_words, or 'none'), and matches counts them; prefer 'all'. Feature, color and seller filters come from dk_filters(query=...). For category codes use dk_suggest or dk_categories; for one brand in a category, dk_category_products(brand_code=...). Note: sort=cheapest over a text query puts cheap accessories (cases, cables) first; for the cheapest real match use dk_find_cheapest. With brand_ids plus a price range the API orders by price only within each category: each page is re-sorted here, but cheaper items may sit on later pages (dk_category_products keeps a strict order). Next: dk_product for all sellers' offers of one product (for groceries it shows the supermarket price, which can differ).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, from 1 (20 products per page).
sortNoOrder of the results.relevance
queryYesProduct name or words, Persian or English, e.g. 'گوشی سامسونگ' or 'airpods pro'.
colorsNoColor ids from dk_filters, e.g. [1].
brand_idsNoBrand ids from dk_product's brand_id or dk_brand_products' brand.id, e.g. [18] Samsung, [1662] Xiaomi.
max_priceNoHighest price in Toman, e.g. 50000000.
min_priceNoLowest price in Toman, e.g. 10000000 for 10 million Toman.
attributesNoFeature filters from dk_filters: {attribute id: [value ids]}, e.g. {2226: [19239]} for Android phones. Values of one attribute are OR'ed, attributes are AND'ed.
seller_typeNoOnly offers from Digikala itself, official brand sellers, trusted sellers or rural (roosta) sellers.
fast_deliveryNoOnly items with fast (Jet) delivery.
in_stock_onlyNoOnly products that can be bought now.
ready_to_shipNoOnly items already in Digikala's warehouse (ship sooner).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv0.2.1
    • addedInput schema / properties / attributes
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {
      +        "items": {
      +          "type": "integer"
      +        },
      +        "type": "array"
      +      },
      +      "maxProperties": 10,
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Feature filters from dk_filters: {attribute id: [value ids]}, e.g. {2226: [19239]} for Android phones. Values of one attribute are OR'ed, attributes are AND'ed.",
      +  "title": "Attributes"
      +}
    • addedInput schema / properties / colors
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "integer"
      +      },
      +      "maxItems": 10,
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Color ids from dk_filters, e.g. [1].",
      +  "title": "Colors"
      +}
    • addedInput schema / properties / fast_delivery
      Added value: +{
      +  "default": false,
      +  "description": "Only items with fast (Jet) delivery.",
      +  "title": "Fast Delivery",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / ready_to_ship
      Added value: +{
      +  "default": false,
      +  "description": "Only items already in Digikala's warehouse (ship sooner).",
      +  "title": "Ready To Ship",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / seller_type
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "digikala",
      +        "official",
      +        "trusted",
      +        "roosta"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Only offers from Digikala itself, official brand sellers, trusted sellers or rural (roosta) sellers.",
      +  "title": "Seller Type"
      +}
  2. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description adds substantial behavior: 20 results per page, the match/'all'|'some'|'none' relevance semantics, API ordering quirks with brand_ids+price range, and the caveat that cheaper items can land on later pages.

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-loaded with the core capability and page size, then caveats and routing. Every sentence carries operational information, though the later sentences are dense and clause-heavy, requiring careful parsing.

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?

Output schema exists so return values need not be explained, and the description covers the remaining gaps an agent needs: pagination size, relevance semantics, filter-id sourcing, sort pitfalls, and the correct sibling for edge cases. Nothing essential is missing.

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 baseline is 3, but the description adds real meaning beyond the schema: where color/brand/attribute ids come from (dk_filters, dk_product's brand_id), the attribute OR/AND semantics, and the price-ordering caveat tied to sort/brand_ids. It does not fully document every one of the 12 params in prose, so not a 5.

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+resource ('Search Digikala products by name') plus the returned facets (price in Toman, discount, seller, rating). It explicitly routes to siblings — dk_filters for filters, dk_suggest/dk_categories for category codes, dk_category_products for a brand in a category — so an agent can distinguish it without opening another 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 explicit when-to-use and when-to-use-something-else rules: sort=cheapest surfaces cheap accessories so use dk_find_cheapest for the cheapest real match; brand_ids+price range reorders per category and dk_category_products keeps a strict order. Names prerequisites (filter ids from dk_filters) and follow-ups (dk_product for all offers).

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