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 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 |
| dk_find_cheapestA | Find the cheapest in-stock products that really match a query, one flat list sorted by price. Scans the most relevant search results (not the whole catalogue, which is full of cheap
accessories), keeps those whose title contains every query word (if none does: any query
word, with a |
| dk_best_for_budgetA | Rank the best-rated in-stock products within a budget, with the reasoning shown. Ranks by a weighted rating: a product's rating pulled toward the average of the candidates until it has about 20 ratings, so a 5.0 from 3 buyers does not beat a 4.6 from 900. Ties go to the cheaper one. For a query only titles with every query word count, and accessories are dropped. Use for "best X under Y Toman"; then dk_product on a pick for every seller's price, dk_reviews for what buyers say. |
| dk_suggestA | Autocomplete a vague or partial query into better search words, categories and brands. Use when the user's words are unclear or misspelled, then call dk_search with a suggested keyword, or dk_category_products with a suggested category code. |
| dk_filtersA | List the filters Digikala offers for a category or a search: features, colors, sellers, price range. Returns attributes (operating system, storage, connection type, ...) with their values as
{value title: value id}; an attribute with more than 15 values only has |
| dk_categoriesA | Find category codes for dk_category_products and main-category ids for dk_best_sellers. With query: categories whose Persian name or English code contains it (Persian finds more: 'لپ تاپ' finds the laptop leaf 'notebook-netbook-ultrabook', 'laptop' does not). With parent_id: its children. With neither: the top-level (main) categories. A category with subcategories mixes in accessories: list its children with parent_id and browse the product leaf. |
| dk_category_productsA | List the products of one category with sort and filters (price in Toman, brand, features, stock). Use for "cheapest laptops" (category 'notebook-netbook-ultrabook'), "best-selling Xiaomi phones" (brand_code='xiaomi') and similar browsing. For "256 GB Android phones" get the attribute and value ids from dk_filters(category_code=...) first. The API ignores text queries here. |
| dk_brand_productsA | List a brand's products on Digikala with sort and price filters (Toman), plus the brand id for brand_ids. For one brand inside one category use dk_category_products with brand_code instead. |
| dk_sellerA | Get a marketplace seller's reputation (rating 0-5, on-time shipping, cancellations, returns) and products. Use before recommending an offer from a seller you don't know. Percentages are the share of good orders (100 = never late / never cancelled / never returned). |
| 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). Use for "best discounts right now". With store='supermarket' it lists Digikala Fresh deals. |
| dk_best_sellersA | List Digikala's current best-selling products, overall or in one main category. Returns the main categories with their ids too, for a second call with category_id. |
| dk_fresh_searchA | Search or browse Digikala Fresh (the supermarket: dairy, groceries, drinks, hygiene). category_code takes precedence over query. Browsing a category also returns its 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). Each offer is one color/size from one seller, with price in Toman, stock_left (only shown when low), warranty, seller rating 0-5 and shipping (ships_by: 'digikala', 'jet' = same-day in Tehran/Karaj, 'seller'; free_shipping when the seller ships free). lowest_price_30d is Digikala's own figure and can be a one-day dip of one color; dk_price_history (lowest_2_days) is steadier. Exact shipping cost is only known at checkout. Grocery items come from the supermarket store (store='supermarket'): its price can differ from the main-store price that dk_search, dk_compare and dk_price_history show. |
| dk_price_historyA | Get about 30 days of daily buy-box prices (Toman) per color/variant, with lowest and highest. Use to answer "is this a good price right now?". |
| dk_reviewsA | Read customer reviews of a product: stars 1-5 (null = no stars given), text, pros/cons, verified buyer flag. 20 per page. The overall rating (0-5) is in dk_product. Long texts are cut to 300 characters. An unknown id gives no reviews; check it with dk_product. |
| dk_questionsA | Read customers' questions about a product and up to 2 answers each (answered_by: buyer, seller, ...). 20 questions per page; long texts are cut to 300 characters. Use for practical doubts (compatibility, size, registration). |
| dk_similarA | List products similar to one product (same kind, other models and brands). Use sort='cheapest' for cheaper alternatives. Compare two or more with 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: today's price, cheapest offer, stock, rating and 30-day low. Use to refresh a list the user is watching or deciding between, or to check a saved
product is still in stock. |
| dk_installmentsA | Get the Digipay credit-line offers available when buying a product, in Toman. Each plan is a fixed credit line (credit_amount), repaid in |
| dk_plus_plansA | List Digikala Plus membership plans (free shipments) with their price in Toman and benefits. Use when shipping cost matters: Plus members get a number of free deliveries per month (jet = same-day Tehran/Karaj, fresh = supermarket). Exact shipping fees are only shown at checkout. |
| dk_gold_pricesA | Get Digikala's live 18k gold price per gram and gold coin prices, in Toman. gold18_day_change_pct is the change since the previous daily point; gold18_period_change_pct, low and high cover the ~3-month chart. Coins' change_pct is as Digikala shows it (its period is not documented). Coins with price null are not for sale right now. |
| 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. Product prices are the same everywhere; location only matters for delivery options shown at checkout. |
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
Many product-discovery tools (dk_search, dk_category_products, dk_brand_products, dk_fresh_search, dk_find_cheapest, dk_best_for_budget, dk_best_sellers, dk_deals, dk_similar) overlap in returning product lists. The descriptions do a good job explaining when to use each and cross-referencing, but an agent still faces several plausible choices for a broad product query.
All tool names use a consistent dk_ prefix and snake_case, which is predictable. However grammatical patterns vary (verb phrases like dk_find_cheapest, noun phrases like dk_price_history, adjective_noun like dk_best_sellers), so there is no strict verb_noun convention.
23 tools is heavy for the core shopping-research purpose, sitting in the 16-25 borderline range. The broad domain (search, categories, product detail, reviews, price history, sellers, deals, Fresh, gold, location) explains some breadth, but several discovery tools feel like variants that could be consolidated.
The surface covers product discovery, detail, pricing history, reviews, Q&A, seller reputation, deals, Fresh, and location well. Gaps remain around transactional operations (cart, checkout, orders) and account-level features, but for a research-focused MCP it is largely complete.