Skip to main content
Glama
sepehr071

digikala-mcp

by sepehr071

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DIGIKALA_MCP_PROXYNoHTTP 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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 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).

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 note), drops "suitable for ..." accessories, and sorts them by the current buy-box price in Toman. Use for "cheapest X". Then call dk_product on the winner: another seller may offer it for less.

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 value_count: call again with attribute_id for its values. Also colors as {title: id}, seller types, the price range in Toman, and the brands as {code: id} (category only) or the categories the search spans as {code: title} (query only). Pass the ids to dk_category_products or dk_search (attributes={attribute id: [value ids]}, colors=[...], seller_type=..., brand_ids=[...]).

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?". lowest_2_days is the lowest price that held on two days in a row; lowest can be a one-day dip. Days are Jalali (YYYY/MM/DD); days when the variant was not for sale are left out. An unknown id gives no variants; check it with dk_product.

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.

values in each specs row follow the order of products; null means the product has no such spec. Rows where every product has the same value are folded into same_specs ("group / name" -> value). Works best for products of the same category. Unknown ids are left out and listed in missing_ids.

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. cheapest_offer can be lower than price (the site's featured offer). low_30d is the lowest price of the last 30 days that held on two days in a row (any color), and vs_30d_low_pct how far today's price sits above it (0 = at the low). lowest_one_day_30d is Digikala's own figure, which can be a one-day dip of one color. For specs side by side use dk_compare; for the daily curve dk_price_history.

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 months installments of monthly_repayment; it is not sized to the product price (the credit can be larger), so do not present it as "this product for X a month". Get the price from dk_product. How the credit and the price combine at checkout is unconfirmed. Needs Digipay approval. An unknown id gives no plans; check it with dk_product.

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 23 tools

Disambiguation3/5

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.

Naming Consistency4/5

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.

Tool Count3/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues