Divar Intelligence MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DIVAR_PROVIDER | No | Provider mode: public for real public access, fixture for offline sample data, or kenar for the official Kenar adapter. | |
| DIVAR_STATE_DIR | No | Directory used for local state such as SQLite data. Set in the process environment or the MCP client env section. | |
| DIVAR_HTTP_TOKENS | No | JSON mapping of random tokens of at least 24 characters to account IDs for multi-account HTTP usage. Each request is bound to the identity from its Bearer token. | |
| DIVAR_ALLOWED_HOSTS | No | Allowed Host values for HTTP transport when using a custom domain. | |
| DIVAR_KENAR_API_KEY | No | Approved Kenar app key. Required when DIVAR_PROVIDER=kenar. | |
| DIVAR_ALLOWED_ORIGINS | No | Allowed Origin values for HTTP transport when using a custom domain. | |
| DIVAR_ALLOW_LOCAL_HTTP | No | Set to 1 to explicitly allow local HTTP transport without authentication. | |
| DIVAR_NOTIFICATION_URL | No | HTTPS destination URL for worker event notifications. If set, the worker delivers events with an Idempotency key. | |
| DIVAR_NOTIFICATION_TOKEN | No | Optional token for the configured notification URL. |
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 |
|---|---|
| dv_resolve_entitiesB | Resolve city/district/category names or canonical model keys. Options depend on the configured provider. |
| dv_filter_schemaC | Discover category filter types and units. Schema presence is not proof that the source enforces a filter. |
| dv_parse_searchB | Parse Persian amounts, simple category intent and required/preferred amenities. Review assumptions and unresolved text. |
| dv_searchC | Search with evidence, explicit unknowns and bounded coverage. Pass next_cursor with the same query to drain buffered results. |
| dv_get_listingA | Read public details of a token or HTTPS divar.ir listing URL; preserve missing/false/zero and separate rent/deposit. |
| dv_get_listingsB | Read 1-10 listings with an independent result or actionable error for each member. |
| dv_similarC | Find like-for-like items; reject unknown/different critical specs and explain exclusions. Optional request narrows the sample. |
| dv_compareB | Compare supplied ads and unresolved facts. For rentals, show a deposit/rent Pareto frontier without inventing a conversion rate. |
| dv_rankC | Rank the scanned sample by explicit preferences and supported price evidence. Optional monthly deposit opportunity-cost rate is an assumption, not a market fact. |
| dv_market_snapshotB | Describe asking-price samples by category/transaction. Filter sale/rent/deposit independently and report coverage. |
| dv_assess_priceB | Compare asking price against like-for-like ads or abstain. Evidence quality is a heuristic, never a probability or certified valuation. |
| dv_statusA | Show provider capabilities, local budget and scheduler configuration. Does not claim live connectivity. |
| dv_countC | Public upstream approximate count or an explicitly labelled returned-sample count. Local constraints are not a source-wide count. |
| dv_market_historyB | Record one asking-price sample per UTC day or read saved points. History starts when first recorded; composition changes are not item-price changes. |
| dv_nearbyB | Public map listings near a point. Coordinates/distances may be approximate; unsupported providers fail explicitly. |
| dv_geocodeB | Find a public landmark/place near a map centre; not an exact personal address lookup. |
| dv_locateB | Resolve a point's city/district using the public place endpoint; location accuracy is source-dependent. |
| dv_boundariesB | Get published public neighbourhood outlines, simplified by the source helper; not cadastral boundaries. |
| dv_neighboursC | List adjacent and nearby neighbourhoods with the helper's distinct bases preserved. |
| dv_place_mappingB | Map old public place identifiers to current IDs; unresolved identifiers remain unverified. |
| dv_seller_summaryA | Read public seller summary where available. No login, phone lookup or fallback on access denial. |
| dv_dealer_summaryC | Read the publicly accessible first batch of a dealer page; permission failures remain explicit. |
| dv_watch_createB | Persist an owner-scoped watch. A worker must run checks. Existing results form a baseline unless explicitly included. |
| dv_watch_listA | List only this owner's saved watches, their continuation, coverage and last error. |
| dv_watch_updateA | Change a watch interval without discarding its pending scan or seen versions. |
| dv_watch_deleteA | Delete this owner's watch and its seen set; already-enqueued events remain available for audit/delivery. |
| dv_watch_checkB | Scan a bounded watch chunk and atomically enqueue events before advancing the scan continuation. |
| dv_watch_eventsA | Read durable events using an independent delivery cursor. Reading does not acknowledge or remove events. |
| dv_watch_ackC | Acknowledge only this owner's received events; retries are idempotent. |
| dv_price_historyB | Return this owner's observations of this listing, starting at first observation. It is not a retroactive market index. |
| dv_export_resultsB | Create a bounded, owner-scoped one-hour export resource; CSV cells are protected against formula execution. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| best_under_budget | |
| compare_ads | |
| appraise_listing | |
| watch_market |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| cities_resource | |
| categories_resource |
TDQS
Scored across 31 tools
Most tools have clearly distinct roles, especially the watch suite and search-pipeline tools. However, the market-analysis cluster (similar, compare, rank, assess_price, market_snapshot, market_history) could still be confused by an agent without careful reading, even though the descriptions explicitly differentiate them.
All names use a consistent dv_ snake_case prefix and are readable. The main deviation is that many names are noun phrases (dv_status, dv_boundaries, dv_market_snapshot) rather than strict verb_noun patterns, but they remain predictable.
31 tools is well above the typical 3-15 range and exceeds the 25+ threshold for 'too many'. While the domain is broad, the large surface increases selection burden and likely includes marginal additions.
The surface covers search, listing retrieval, market analytics, geospatial lookup, seller/dealer summaries, watch lifecycle, and export, which is broad and mostly complete. Minor gaps exist, such as no full pagination for dealer/seller listings and no contact or direct user-interaction tools, but these are likely domain-limited.