digikala-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DIGIKALA_MCP_PROXY | No | HTTP proxy for every request, e.g. http://user:pass@host:port. Set this if every tool fails with "refused the request (HTTP 403)" to an HTTP proxy with an Iranian exit. Normal system proxy variables are ignored on purpose. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| dk_searchA | Search products by name: price (Toman), discount, seller, rating, 20 per page. Search also returns loosely related items: each product has |
| dk_find_cheapestA | Find the cheapest in-stock products that really match a query, sorted by price (Toman). Scans the top relevant results, keeps titles with every query word (else any word, with a
|
| dk_best_for_budgetA | Rank the best-rated in-stock products within a budget (Toman) by a rating weighted by its count. A 5.0 from 3 buyers does not beat a 4.6 from 900; ties go to the cheaper one. A query keeps only titles with every word and drops accessories. Use for "best X under Y"; then dk_product, dk_reviews. |
| dk_suggestA | Autocomplete a vague or misspelled query into keywords, categories and brands. Next: dk_search with a keyword, or dk_category_products with a category code. |
| dk_filtersA | List the filters of a category or a search: attributes, colors, sellers, price range (Toman), brands. Attributes give {value title: id}; one with over 15 values only has |
| dk_categoriesA | Find category codes for dk_category_products and main-category ids for dk_best_sellers. query matches the Persian name or English code (Persian finds more: 'لپ تاپ' finds the laptop leaf, 'laptop' does not); parent_id lists children; neither lists the main categories. A category with subcategories mixes in accessories: browse its product leaf. |
| dk_category_productsA | List one category's products with sort and filters (price in Toman), strict order. E.g. "cheapest laptops" (category 'notebook-netbook-ultrabook'), "best-selling Xiaomi phones" (brand_code='xiaomi'). Feature ids come from dk_filters(category_code=...). No text query here. |
| dk_brand_productsA | List a brand's products with sort and price filters (Toman), plus the brand id for brand_ids. For one brand inside one category use dk_category_products(brand_code=...). |
| dk_sellerA | Get a seller's reputation (rating 0-5, on-time shipping, cancellations, returns) and products. Use before recommending an unknown seller. Percentages are the share of good orders (100 = never late). |
| dk_dealsA | List today's Incredible Offers (flash deals), biggest discount first, in-stock only. Each product has discount_pct, price_before_discount and deal_ends (Tehran time). store='supermarket' lists Fresh deals. |
| dk_best_sellersA | List current best sellers, overall or in one main category; also returns the main categories' ids for category_id. |
| dk_fresh_searchA | Search or browse Digikala Fresh (supermarket). category_code beats query and also returns sub-categories. For grocery discounts use dk_deals(store='supermarket'). |
| dk_productA | Get one product's price, stock, rating, specs and every seller's offer (cheapest first). An offer is one color/size from one seller: price (Toman), stock_left (only when low), warranty, seller rating 0-5, ships_by ('digikala', 'jet' = same-day Tehran/Karaj, 'seller'), free_shipping. lowest_price_30d can be a one-day dip of one color; dk_price_history's lowest_2_days is steadier. Groceries have store='supermarket' and a price that can differ from dk_search's. |
| dk_price_historyA | Get ~30 days of daily buy-box prices (Toman) per color/variant, with lowest and highest. For "is this a good price?": |
| dk_reviewsA | Read customer reviews: stars 1-5 (null = none), text, pros/cons, verified buyer flag. The overall rating (0-5) is in dk_product. Texts are cut to 300 characters, pros/cons to 5 of 80; full_text=true returns them whole. An unknown id gives no reviews; check it with dk_product. |
| dk_questionsA | Read customers' questions (20 per page) with up to 2 answers each (answered_by: buyer, seller, ...). Texts are cut to 300 characters (full_text=true: whole). Use for practical doubts (compatibility, size, registration). |
| dk_similarA | List products similar to one (same kind, other models and brands). sort='cheapest' gives cheaper alternatives; then dk_compare. |
| dk_compareA | Compare 2-4 products side by side: price and rating, then the spec rows where they differ.
|
| dk_shortlistA | Re-price up to 10 products in one call: price, cheapest offer, stock, rating and 30-day low (Toman). Use to refresh a watched list or check stock. |
| dk_installmentsA | Get the Digipay credit-line offers for a product, in Toman. A plan is a fixed credit line (credit_amount) repaid in |
| dk_plus_plansA | List Digikala Plus plans (free shipments per month: jet = same-day Tehran/Karaj, fresh = supermarket) with price in Toman and benefits. |
| dk_gold_pricesA | Get the live 18k gold price per gram and gold coin prices, in Toman. gold18_day_change_pct is vs the previous daily point; period change, low and high cover the ~3-month chart. Coins' change_pct is as Digikala shows it. Coins with price null are not for sale. |
| dk_locationA | Turn an address into coordinates, or coordinates into an address with Digikala's city_id and state_id. Pass address + city, or lat + long. Prices are the same everywhere; location only affects delivery. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 23 tools
There are several product-listing tools (dk_search, dk_category_products, dk_brand_products, dk_fresh_search) and two specialized rankers (dk_find_cheapest, dk_best_for_budget), which could be confused. However, descriptions explicitly delineate boundaries (text query vs category vs brand vs supermarket) and give 'Next:' routing hints, so an agent can reliably pick.
Every tool uses the same dk_ prefix with a consistent snake_case noun/verb pattern (dk_search, dk_product, dk_price_history, dk_best_sellers). No style mixing at all.
23 tools is at the heavy end, but the domain is genuinely broad (search, categories, brands, sellers, reviews, Q&A, deals, fresh, plus, installments, gold, location) and each tool maps to a distinct capability. Only minor redundancy from the multiple listing entry points.
Coverage of the browsing/shopping-research lifecycle is strong: discovery, filters, comparison, reviews, Q&A, price history, seller reputation, deals and financing. Gaps like cart/checkout and returns are outside a data-lookup server's scope, so no critical dead ends for its purpose.