Skip to main content
Glama
karnameh-mcp

karnameh-mcp

by sepehr071

karnameh-mcp: Karnameh (کارنامه) used-car ads and car prices MCP server for AI agents

karnameh-mcp is an unofficial, read-only MCP server that gives AI agents the public data of Karnameh (karnameh.com), an Iranian car marketplace. Its 15 tools search used-car ads with real filters, read an ad in full, look up brands and cities, list today's market prices of new cars with history and biggest movers, give car specs and expert review summaries with side-by-side comparison, count ads per city, and read the Karnameh car magazine. No API key or Karnameh account is needed. It works in Claude, Cursor, Copilot and any other MCP client.

PyPI Python License: MIT

For AI agents · Quick start · Tools · FAQ · فارسی


For AI agents

  • What: unofficial MCP server (model context protocol) for karnameh.com: used-car ads with filters (brand, model, city, price, year, mileage, inspected, instalments), full ad details, brand and city lookup, zero-km market prices and daily price history.

  • Install: uvx karnameh-mcp or claude mcp add karnameh -- uvx karnameh-mcp. Transport: stdio. Needs uv (Python 3.10+).

  • Auth: none, no API key or account. Optional KARNAMEH_MCP_PROXY (HTTP proxy URL, or a comma-separated list); system proxy settings are ignored.

  • Access: read-only. It cannot log in, contact sellers, book inspections or post ads, so no confirmation is needed before calling any tool.

  • Tools: 15, all prefixed kn_. Typical sequences: kn_cars -> kn_car; kn_price_list -> kn_price_history; kn_brands -> kn_cars; kn_specs_search -> kn_specs / kn_compare_specs; kn_articles -> kn_article.

  • Use when: the user asks what a used car costs in Iran, wants to find a car for sale by brand, model, budget or city, wants one ad read in full, or asks the price of a new (zero-km) car and how it moved lately.

  • Do not use when: the user needs the full Karnameh inspection report, a price estimate for their own car (both need a Karnameh login) or ads from other sites.

  • Output: compact JSON. Prices are Toman. Names and descriptions are Persian, as Karnameh has them.

  • Machine-readable: server.json and the iran-mcp catalog.

Related MCP server: mobile-ir-mcp

Quick start

claude mcp add karnameh -- uvx karnameh-mcp

Any other client: command uvx, args ["karnameh-mcp"].

Tools

Tool

What it does

kn_cars

Search used-car ads by text, brand, model, city, price, year, mileage, inspected, instalments; sort; page.

kn_car

One ad in full: specs, description, strengths, inspection date, link and verdict.

kn_brands

Brand and model names in Persian and English.

kn_cities

City slugs for kn_cars.

kn_price_list

Today's market prices of new cars by brand, model, origin, country, price, year.

kn_latest_prices

Most recent price quotes with percent change.

kn_price_history

Daily average price per production year, plus each source's quote for a year.

kn_price_movers

New-car variants ranked by their latest percent price change (rises, drops).

kn_specs_search

Find a car variant's slug in the specs catalog.

kn_specs

Technical specs, AI review score, pros and cons, web reviews of one variant (falls back to the parent model's sheet, with a note, when the variant has none).

kn_compare_specs

Two to four variants side by side (only the differing rows by default).

kn_city_stats

Used-ad count and cheapest ad in every city, optionally per brand or model.

kn_inspection_centers

Karnameh walk-in inspection and paint-check centers of a city.

kn_articles

Search or list the Karnameh car magazine (news, reviews, maintenance, laws).

kn_article

One magazine article as plain text.

FAQ

Does it need a Karnameh account? No. Everything is public data the website shows to anyone.

How many ads are there? Karnameh lists a few hundred used cars at a time, so this is not the whole Iranian market.

Why is there no price estimator or inspection report? Both need a Karnameh login on the website.

Proxy? The server ignores system proxies. Set KARNAMEH_MCP_PROXY if you need one.

فارسی

سرور MCP غیررسمی و فقط‌خواندنی برای کارنامه (karnameh.com): جستجوی آگهی خودروی کارکرده با فیلتر برند، مدل، شهر، قیمت، سال و کارکرد، خواندن کامل یک آگهی، قیمت روز خودروی صفر و روند قیمت. بدون کلید API و بدون حساب کاربری.

نصب: claude mcp add karnameh -- uvx karnameh-mcp

ساخته‌شده توسط سپهر رادمرد: github.com/sepehr071 · linkedin.com/in/sepehr-radmard

Available Tools

15 tools
kn_articleRead a blog articleA
Read-onlyIdempotent

Read one article of the Karnameh car magazine as plain text.

Use after kn_articles. Long articles are cut at max_chars; truncated says so and url has the full page.

NameRequiredDescriptionDefault
idYesArticle id from kn_articles.
max_charsNoCut the text after this many characters (500-20000).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds genuinely new behavior: long articles are cut, a truncation flag signals it, and a url gives the full page — practical details an agent needs before deciding whether to increase max_chars.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the purpose first and the truncation caveat second; nothing is repeated from the schema and every clause carries information the agent needs.

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?

Though there is no output schema, the description sketches the return shape (plain text, truncated flag, url) and the truncation semantics, which is everything needed to call a two-parameter read tool correctly. Nothing material is left unstated.

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 this is already baseline 3, but the description adds meaning beyond the schema: the consequence of max_chars (text is cut) and where the untruncated content lives (url). The id's provenance from kn_articles is also reinforced in prose.

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?

"Read one article of the Karnameh car magazine as plain text" states a specific verb (read), a single resource (one article), and the output format (plain text). The follow-up sentence anchors it against the sibling kn_articles, so an agent can tell list-vs-fetch apart without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use after kn_articles" gives explicit sequencing guidance and implicitly names the alternative that produces the id. No when-not-to-use condition, but for a simple fetch tool the ordering hint is the essential guidance and it is stated plainly.

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

kn_articlesCar blog articlesA
Read-onlyIdempotent

Search or list articles of the Karnameh car magazine (karnameh.com/blog): news, reviews, maintenance, laws.

Newest first. Use to find a review, a buying guide or a rule explanation, then read it with kn_article(id).

NameRequiredDescriptionDefault
pageNoPage number, starting at 1.
limitNoHow many articles to return (1-20).
queryNoSearch words in Persian, e.g. 'کرولا' or 'بیمه'.
categoryNoBlog section: news, reviews and comparisons, maintenance, learning, rules, legal tips.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds a genuine behavioral trait not in annotations: results are returned 'Newest first'. It does not describe pagination behavior (e.g., whether a total count is returned), which is a modest gap for a list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the resource and scope front-loaded and the follow-up read tool as the final clause. Every sentence carries information an agent needs.

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?

For a read-only list/search tool with fully documented parameters, four safety annotations and no output schema requirement, the description covers what it does, what it returns in what order, and what to call next. Nothing an agent needs in order to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – page, limit, query and category all carry their own descriptions including Persian example terms and the enum meanings. The description's mention of content types loosely maps to the category enum but adds no format or semantics beyond what the schema already says. Baseline 3 applies.

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 pair and resource ('Search or list articles') and scopes it to the Karnameh car magazine blog, naming the content it covers (news, reviews, maintenance, laws). It also distinguishes itself from its sibling kn_article by positioning itself as the discovery step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context: 'Use to find a review, a buying guide or a rule explanation', and explicitly routes the agent to kn_article(id) as the follow-up read step. It stops short of exclusion criteria (e.g., when to prefer kn_specs_search or kn_cars instead), but the when-to-use condition is concrete.

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

kn_brandsLook up car brands and modelsA
Read-onlyIdempotent

Look up Karnameh's car brands and models, Persian and English, to get the names the other tools expect.

Use first when you only have a Persian name or are unsure of the spelling. Pass the English brand and model values to kn_cars. Zero-km price lists (kn_price_list) use their own English variant names.

NameRequiredDescriptionDefault
queryNoPart of a brand or model name, Persian or English, e.g. پژو, 206, kia. Empty lists all brands.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-obvious behavioral context beyond that: this is the canonical-name resolution step, and kn_price_list expects different variant names than kn_cars. It stops short of describing the returned structure (e.g. whether brand/model are nested), which keeps it off a 5 given there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each carrying distinct information: purpose, ordering/prerequisite, and the cross-tool naming caveat. The most decision-relevant instruction ('Use first') is front-loaded in the second sentence with zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only lookup with no output schema, the description covers purpose, sequencing, and the downstream handoff adequately. The only gap is that it does not sketch the shape of the result (brand/model pairs), which an agent must infer, though the tool's purpose makes that low-risk.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single query parameter is fully documented there, including substring matching and the empty-string-lists-all behavior, so the baseline of 3 applies. The description reinforces the Persian/English dual-name intent but adds no syntax or matching details beyond the schema.

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 and resource ('Look up ... car brands and models'), plus the key attribute that it returns both Persian and English names. It is clearly distinguishable from kn_cars (which consumes the results) and kn_price_list (which uses different variant names), so an agent can tell the tools apart without opening a 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 an explicit ordering rule ('Use first when you only have a Persian name or are unsure of the spelling'), names the downstream consumer ('Pass the English brand and model values to kn_cars'), and flags the exception ('Zero-km price lists (kn_price_list) use their own English variant names'). When-to-use, what-to-do-next, and an exclusion are all present.

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

kn_carGet one used-car adA
Read-onlyIdempotent

Get one Karnameh used-car ad: price, specs, seller's description, strengths and the inspection summary.

Use after kn_cars to read an ad in full. The detailed inspection report itself needs a Karnameh login, so only its date, link and one-line body verdict are returned. Seller phone numbers are not available.

NameRequiredDescriptionDefault
idYesAd id (the `id` field from kn_cars), a UUID like 4385b37e-6ce5-413b-9477-6386b20902bd.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses real data-availability constraints: the full inspection report requires a Karnameh login, so only date, link and a one-line verdict are returned, and seller phone numbers are unavailable. These are exactly the gaps that would otherwise cause an agent to promise data the tool cannot deliver.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what is returned, then when to use it, then the data limitations. No redundant restatement of the name or annotations.

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?

With no output schema, the description carries the burden of describing return contents and does so field by field, plus flags the login-gated inspection report. Nothing needed to call this correctly on a single required UUID parameter is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema itself explains that id is the UUID taken from kn_cars, including a format example. The description adds nothing beyond that, so the baseline of 3 is appropriate.

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 and resource ("Get one Karnameh used-car ad") and enumerates the payload (price, specs, seller description, strengths, inspection summary). It also contrasts with the sibling kn_cars, so an agent can distinguish single-ad retrieval from list retrieval without inspecting either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use after kn_cars to read an ad in full" gives clear sequencing and names the alternative tool that supplies the required id. It stops short of an explicit when-not or error guidance, but the usage context is unambiguous.

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

kn_carsSearch used-car adsA
Read-onlyIdempotent

Search Karnameh's used-car ads (karnameh.com/buy-used-cars) by brand, model, city, price, year and mileage.

Use this to find cars for sale or to see what a model costs on the market. Prices are asking prices in Toman. Pass an ad's id to kn_car for the full description, strengths and inspection summary. Only Karnameh's own listed ads are covered (a few hundred), not all of Iran.

NameRequiredDescriptionDefault
cityNoCity slug from kn_cities, e.g. tehran, karaj, mashhad.
sortNoResult order.newest
brandNoBrand name, English slug (peugeot, kia, toyota) or Persian (پژو). See kn_brands.
limitNoHow many ads to return (1-50).
modelNoModel name within the brand, e.g. 206 or Corolla (English as listed by kn_brands) or Persian.
queryNoFree text in Persian, e.g. 'سمند' or 'پژو 206'. Use brand/model for exact filters.
offsetNoSkip this many ads (paging).
max_yearNoNewest model year, Persian or Gregorian.
min_yearNoOldest model year, Persian (1398) or Gregorian (2019).
max_priceNoMaximum price in Toman.
min_priceNoMinimum price in Toman, e.g. 1000000000 for one billion.
max_usage_kmNoMaximum odometer reading in km.
inspected_onlyNoOnly ads with a Karnameh expert inspection report.
installments_onlyNoOnly ads that can be bought in instalments.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world, so safety is covered. The description adds genuinely useful context beyond them: prices are asking prices in Toman, and the corpus is limited to Karnameh's own few hundred listings rather than the whole Iranian market — a real coverage caveat that prevents over-generalizing results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the resource and filters, then usage, then the handoff to kn_car, then the coverage caveat. No redundant restatement of the tool title and nothing that could be cut without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter search tool with no output schema, the description covers purpose, currency, scope limits and the follow-up tool, which is most of what an agent needs. It does not indicate what a result record contains or how paging behaves in practice, though limit/offset are documented in the schema.

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 description coverage is 100%, so the baseline is 3. The description still contributes meaning by clarifying that price filters operate on asking prices and that all parameters are optional filters rather than a required pipeline, which sharpens how the 14 parameters should be combined.

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 and resource — 'Search Karnameh's used-car ads' — and enumerates the filter dimensions (brand, model, city, price, year, mileage) so an agent knows exactly what the tool retrieves. It also disambiguates from sibling tools by naming kn_car for detail and referencing kn_brands/kn_cities for slugs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear positive contexts ('find cars for sale or to see what a model costs on the market') and a routing rule: pass an ad's id to kn_car for full description and inspection summary. It does not state exclusions — e.g. that this is not the tool for specs comparison (kn_compare_specs) or price history (kn_price_history).

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

kn_citiesList citiesA
Read-onlyIdempotent

List the cities Karnameh serves, with the slug kn_cars takes as city and the id kn_inspection_centers takes.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds the one thing annotations cannot convey: that results are identifier mappings (slug and id) rather than free-form text, which matters with no output schema. It does not mention whether the list is complete, cached, or paginated, leaving a small gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the action and then spends its remaining words on the highest-value detail, the cross-tool identifier mapping. No filler, no restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with no output schema, the description covers the essentials: what is listed and what identifiers come back. It leaves the remaining return fields (e.g., a display name) unstated, which is a minor omission rather than a blocker.

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?

The tool takes zero parameters, so the schema baseline is 4 and there is nothing further for the description to disambiguate. The mention of `city` and id refers to how returned values feed sibling tools, not to inputs, so it does not create schema confusion.

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 and resource ('List the cities Karnameh serves') and immediately disambiguates the returned identifiers by naming the exact field names used by two siblings ('the slug kn_cars takes as `city` and the id kn_inspection_centers takes'). An agent can distinguish this lookup tool from kn_city_stats or kn_inspection_centers without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is strongly implied by tying the outputs to kn_cars' `city` parameter and kn_inspection_centers' expected id, which tells the agent this is a prerequisite lookup. There is no explicit 'use this before X' statement or any when-not guidance, so it stops just short of full routing instructions.

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

kn_city_statsUsed-car listing counts per cityA
Read-onlyIdempotent

Count Karnameh's used-car ads in every city, optionally for one brand, model or price ceiling.

Use to see where a car is for sale. Also gives each city's cheapest ad. Makes one request per city (9, run together), so it is slower than kn_cars. Search a city's ads with kn_cars(city=...).

NameRequiredDescriptionDefault
brandNoBrand name, English or Persian (see kn_brands).
modelNoModel name within the brand.
max_priceNoMaximum price in Toman.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds value beyond them by disclosing the execution model — one request per city, 9 issued together, hence slower than kn_cars — and by describing the return payload (counts plus each city's cheapest ad) in the absence of an output schema.

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?

Three short blocks, front-loaded with the verb and scope, then usage, then the cost caveat. Nearly every sentence earns its place. Minor weakness: '9, run together' introduces an unexplained figure — the city count — that a reader must infer.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by naming both return elements (per-city counts and cheapest ad) and warns about latency, which an agent needs for planning. Small gaps remain: whether cities with zero matching ads are included, and what the magic number 9 refers to.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so brand, model and max_price are already documented with formats and units (Toman, English or Persian). The description only restates that these filters are optional and calls max_price a 'price ceiling', adding little beyond the schema. Baseline 3 is appropriate.

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 and resource ('count used-car ads') plus the aggregation unit ('in every city') and the optional narrowing ('one brand, model or price ceiling'). It also discloses a secondary payload, each city's cheapest ad, which no sibling tool provides, so an agent can distinguish it from kn_cars and kn_price_list without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit use case ('Use to see where a car is for sale') and routes the agent to the right alternative for per-city drilling: kn_cars(city=...). It also flags that it is slower than kn_cars, which is a real selection criterion. It stops short of stating exclusions, e.g. that it should not be used when individual listings are needed, but the routing guidance is clear.

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

kn_compare_specsCompare car specsA
Read-onlyIdempotent

Compare two to four car variants side by side: review score, pros, cons and every spec row.

Use for "A or B?" questions after finding slugs with kn_specs_search. Values are listed in the same order as cars. Add prices with kn_price_list and used-market asking prices with kn_cars.

NameRequiredDescriptionDefault
slugsYesTwo to four variant slugs from kn_specs_search.
only_differencesNoList only the spec rows where the cars differ.

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile needs no restating. The description adds one genuinely useful behavioral fact — result values follow the `cars`/input order — but says nothing about cost, response size for four-variant comparisons, or how missing variants are handled. Credit for the ordering note, but it is thin beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short paragraphs, front-loaded with what the tool returns, followed by workflow and sibling routing. No filler sentences and no repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly shoulders the burden of describing the return shape (score, pros, cons, spec rows) and the input source. The one loose end is the ambiguous reference to `cars` when the parameter is `slugs`, which could briefly puzzle an agent mapping order semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema (including the slug pattern and only_differences default). The only added meaning is the output-ordering guarantee tied to input order, which is modest. Baseline 3 is appropriate.

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?

"Compare two to four car variants side by side" gives a specific verb (compare), resource (car variants) and explicit arity bound, then enumerates what comes back (review score, pros, cons, spec rows). That cleanly separates it from kn_specs_search (slug lookup) and kn_specs (single-variant detail) without opening a 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?

It names the triggering question shape ("A or B?") and the required precondition (slugs found via kn_specs_search), then routes adjacent needs to siblings: kn_price_list for new prices and kn_cars for used-market asking prices. When-to-use, prerequisite and alternatives are all present.

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

kn_inspection_centersKarnameh inspection centersA
Read-onlyIdempotent

List Karnameh's walk-in car inspection and paint-check centers in a city, with address and map coordinates.

Use when the user wants to get a car inspected. Booking and prices are not public here; the site books it.

NameRequiredDescriptionDefault
city_idYesCity `id` from kn_cities (Tehran is 1).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, open-world and non-destructive, so safety is covered. The description adds real context beyond them: results are per-city, include address and coordinates, and deliberately exclude booking or pricing, which sets agent/user expectations. Pagination and empty-result behavior remain unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the capability, followed by the usage condition and the boundary note. Nothing is repetitive or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool this covers purpose, trigger, and the shape of the result (address plus coordinates) without an output schema. A small gap remains around whether the list is complete per city or paginated, but nothing essential to calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter already documents that it is the city id from kn_cities with Tehran as 1. The description adds no additional guidance on the argument, so the baseline of 3 applies.

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?

The description names a specific verb and resource ('List Karnameh's walk-in car inspection and paint-check centers in a city') and states what comes back ('address and map coordinates'). No sibling tool in the list covers inspection centers, so the agent can route here without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger ('Use when the user wants to get a car inspected') plus a negative boundary: booking and prices are not available here and the site handles booking. It stops short of naming a concrete alternative tool, but the exclusion is clear enough to redirect the agent.

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

kn_latest_pricesLatest new-car price quotesA
Read-onlyIdempotent

List the most recent price quotes of new cars with the day's percent change.

Covers more variants than kn_price_list (including older models), each with the date of its last quote. Use to see what moved lately or to find a variant's exact English name for kn_price_history.

NameRequiredDescriptionDefault
yearNoProduction year (Persian, e.g. 1404).
limitNoHow many quotes to return (1-100).
queryNoPart of the English variant name, e.g. Pars, Dena, Corolla. Empty for all.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds real context beyond that: each row carries the date of its last quote and a day-over-day percent change, and the result set is limited to recent quotes. It does not state sort order, whether results are truncated by the limit, or what happens when query matches nothing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler, with the core purpose front-loaded before the sibling comparison and the use cases. Every sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter read tool with no output schema, the description says enough: it names the returned fields (percent change, last-quote date), the breadth of coverage, and the intended follow-up tool. Missing only ordering and empty-result behavior, which are minor for this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so year, limit and query are all documented with ranges, defaults and examples in the schema itself. The description adds no parameter-level detail beyond implying recency, which puts it at the baseline for a fully documented schema.

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 and resource ('List the most recent price quotes of new cars') plus the payload detail ('with the day's percent change'). It also distinguishes itself from two named siblings, kn_price_list (broader variant coverage, including older models) and kn_price_history, so an agent can separate it without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives two concrete use cases ('see what moved lately' and 'find a variant's exact English name for kn_price_history') and explicitly routes comparison with kn_price_list. The gap is the sibling kn_price_movers, which appears to overlap with the 'what moved lately' case and is never mentioned or excluded.

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

kn_price_historyNew-car price historyA
Read-onlyIdempotent

Get the daily average market price history of one new-car variant, per production year.

Use after kn_price_list or kn_latest_prices for a trend ("is it going up?"). name must be the exact English variant name. With year, also lists each source's current quote for that year.

NameRequiredDescriptionDefault
daysNoHow many of the latest daily points to return per year (1-90).
nameYesExact English model-variant name from kn_price_list (`name`), e.g. 'Peugeot 207i Manual TU5P'.
yearNoProduction year (Persian). Omit for every year.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, open-world, non-destructive, so the safety profile is covered. The description adds the valuable part not in the annotations: the result granularity (daily averages, one series per production year) and the side effect of passing `year`, which also returns each source's current quote for that year.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, followed by usage routing and then parameter caveats in descending priority. No filler, no restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must carry the return shape, and it does: daily averages per production year plus per-source quotes when `year` is set. It says nothing about response size limits or gaps in the history, but nothing essential for calling the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so `days`, `name`, and `year` are already documented, and the description largely restates the `name` exactness rule the schema states. Its only added meaning is the behavioral consequence of `year` (per-source current quotes), which is useful but thin against a fully documented schema.

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 and resource: 'daily average market price history of one new-car variant, per production year.' It also names the sibling tools (kn_price_list, kn_latest_prices) this one sits downstream of, so an agent can place it in the workflow without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit sequencing guidance: 'Use after kn_price_list or kn_latest_prices for a trend' with the concrete question it answers ('is it going up?'). It lacks an exclusion clause — e.g., when kn_price_movers would be the better choice for change detection — so it stops short of full when/when-not coverage.

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

kn_price_listNew-car market pricesA
Read-onlyIdempotent

List today's market prices of new (zero-km) cars from Karnameh's car-price pages (karnameh.com/car-price).

Use for "how much is a new X" or to compare models. Prices are Toman and daily; each row is a variant and production year with its price sources. Only variants Karnameh prices today are listed (no Peugeot Pars or 405; kn_latest_prices has older ones). For price movement over time call kn_price_history with a row's name.

NameRequiredDescriptionDefault
pageNoPage of 10 model groups; the answer says how many pages exist.
yearNoOnly this production year (Persian, e.g. 1405).
brandNoEnglish brand name as in the price list, e.g. Peugeot, Toyota, Changan.
modelNoEnglish model name within the brand, e.g. 207i.
originNoIranian-made or imported cars.
searchNoFree text in Persian, e.g. سمند.
countryNoCountry of manufacture in English: China, Iran, Japan, Korea, German, France or Italia.
max_priceNoMaximum market price, Toman.
min_priceNoMinimum market price, Toman.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds real context beyond that: currency (Toman), daily refresh cadence, and a coverage caveat that only variants Karnameh currently prices appear. It stops short of describing how results are ordered or how the price-source field looks, so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the resource and source URL, then usage, then routing to alternatives. No filler and no restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With nine optional params, no output schema and no required fields, the description supplies what the schema cannot: what a row represents, units, freshness, and coverage limits. Pagination is left to the schema's `page` description, so the remaining gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every one of the nine parameters is already documented in the schema and the baseline of 3 applies. The description adds only the unit confirmation (Toman) and the note that rows carry a `name` usable with kn_price_history, without new syntax or filter-interaction guidance.

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 and resource ("list today's market prices of new zero-km cars") and names the data source (karnameh.com/car-price). It also scopes the output shape (each row is a variant plus production year with price sources), which lets an agent distinguish it from kn_latest_prices and kn_price_history without opening any 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 phrasing ("how much is a new X", compare models) and names both alternatives with the condition that selects each: kn_latest_prices for discontinued/older models, kn_price_history for movement over time. It also states an exclusion (no Peugeot Pars or 405), which prevents a wrong call.

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

kn_price_moversBiggest new-car price moversA
Read-onlyIdempotent

Rank new (zero-km) car variants by the percent change of their latest price quote.

Use for "which cars got more expensive lately". change_percent is the change against the previous quote. Call kn_price_history with a row's name for the trend behind it.

NameRequiredDescriptionDefault
daysNoOnly quotes dated within this many days of the newest quote (1-30).
yearNoProduction year (Persian, e.g. 1404).
limitNoHow many rows to return (1-50).
directionNoBiggest rises, biggest drops, or biggest in either direction.up

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover safety and side-effect profile (readOnly, idempotent, non-destructive), so the bar is lower. The description adds genuine value by defining 'change_percent' as change against the previous quote and by explaining how to drill into the trend, which an agent could not infer from annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core operation, then the usage trigger, then the follow-up path. No redundant restatement of the tool name or schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully names change_percent and a row's name field, and 'rank' implies ordering. It omits the actual row shape and whether results are sorted descending, a minor gap for an otherwise simple, fully documented read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including per-parameter descriptions for days, year, limit, and direction, so the schema already carries parameter meaning. The description only loosely reinforces the freshness window through 'latest price quote' and adds no format or interaction detail beyond the schema, so the baseline 3 applies.

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 and resource ('Rank new (zero-km) car variants') plus the exact ranking metric ('percent change of their latest price quote'). This cleanly separates it from sibling price tools such as kn_latest_prices and kn_price_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete user-intent trigger ('which cars got more expensive lately') and routes follow-up work to kn_price_history by name. It does not state when to prefer kn_latest_prices or kn_price_list instead, so it stops short of full when/when-not coverage.

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

kn_specsCar specs and review summaryA
Read-onlyIdempotent

Get one car variant's technical specs, Karnameh's expert review score, pros and cons and web reviews.

Use after kn_specs_search. Specs are grouped (dimensions, engine and performance, safety, comfort, multimedia). The summary and score are AI-written from web reviews, so treat them as opinion. For prices call kn_price_list; for used ads of the car call kn_cars.

NameRequiredDescriptionDefault
slugYesVariant slug from kn_specs_search (`slug`), e.g. peugeot-207i-automatic-tu5p.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare this a safe, idempotent, read-only lookup, so the bar is lower. The description still adds real behavioral context the annotations cannot: specs come back grouped into four named categories, and the review score/summary are AI-generated from web reviews and should be treated as opinion rather than fact. It stops short of describing response shape or size, which keeps it at a 4 rather than 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, followed by the prerequisite, then the caveat and the sibling routing. Every sentence carries distinct information, and the grouping list is compact enough to earn its space by telling the agent what to expect in the payload.

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?

There is no output schema, so the description carries the return-value burden and does so by enumerating the spec groups, the score, pros/cons, and web reviews. Combined with the single-parameter schema and the explicit prerequisite, nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the slug property already carries the pattern, the example, and the instruction to source it from kn_specs_search. The description only reinforces the 'one variant' framing and the search-first dependency, adding no syntax or format meaning beyond the schema, so the baseline 3 applies.

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 and resource ('Get one car variant's technical specs') plus the exact payload (expert review score, pros and cons, web reviews), scoped to a single variant. That scope word 'one' implicitly separates it from the list-oriented kn_specs_search, and the description names that sibling explicitly.

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 an explicit sequencing rule ('Use after kn_specs_search') and routes two adjacent intents elsewhere: prices to kn_price_list and used ads to kn_cars. An agent knows both when to call this and which sibling to pick instead for the neighboring tasks.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 15 tool updatesv0.1.1
    • First observedkn_article
    • First observedkn_articles
    • First observedkn_brands
    • First observedkn_car
    • First observedkn_cars
    • First observedkn_cities
    • First observedkn_city_stats
    • First observedkn_compare_specs
    • First observedkn_inspection_centers
    • First observedkn_latest_prices
    • First observedkn_price_history
    • First observedkn_price_list
    • First observedkn_price_movers
    • First observedkn_specs
    • First observedkn_specs_search

TDQS

A4.4/5.0

Scored across 15 tools

Disambiguation4/5

Most tools target clearly distinct resources and actions, and singular/plural pairs (kn_article/kn_articles, kn_car/kn_cars) are easy to distinguish. The main overlap is among the price tools — kn_price_list, kn_latest_prices, kn_price_movers, and kn_price_history — which share related concepts and could occasionally be confused despite helpful descriptions.

Naming Consistency5/5

Every tool uses the same kn_ prefix and consistent snake_case naming. Singular/plural and descriptive suffixes like _search, _history, and _movers are applied predictably, with no mixed conventions.

Tool Count5/5

Fifteen tools is appropriate for a multi-section car portal covering articles, used ads, new-car prices, specs, cities, and inspection centers. Each tool earns its place by mapping to a meaningful read operation rather than filler.

Completeness5/5

The set covers the main entities and workflows: article list/read, used-car search/detail, brand and city lookup, new-car price listing/history/movers, specs search/detail/compare, city ad statistics, and inspection centers. External limitations like login-gated inspection reports and unavailable seller phones are documented rather than tool-surface gaps.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to search and read Divar classified ads across Iranian cities, covering homes, cars, phones and more, with price statistics, deal finding, fair-price appraisal, ad comparison and map browsing. It is read-only, needs no account or API key, and returns compact JSON with prices in Toman.
    8
    31
    107 PyPI
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to search Iran's Mobile.ir phone database for specifications, shop prices and price history, used-phone ads, comments, and numbered SIM cards through read-only tools that require no API key.
    17
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to search and inspect Bama's Iranian car, motorcycle, and truck listings, compute asking-price statistics, browse new-car price lists and dealer inventories, and retrieve specs, ratings, and market trends without an API key.
    12
    3
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to read public Hamrah Mechanic data read-only with no API key: daily Iranian car market prices by brand, model, trim and year, price ranges and monthly history, filtered used and zero-km listings with full ad details, inspection fees, showroom locations, and expert reviews and magazine articles. Works in Claude, Cursor, Copilot and other MCP clients over stdio.
    12
    2
    MIT