Bama Cars
PYPI · BAMA-IR-MCP
Read-only Bama (bama.ir) Iran car marketplace: ad search, ad details, market prices, new-car prices.
Available components
Last scanned (1 day ago)
Scores higher than 78% of PyPI servers
Category E-commerce
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 1 of 35 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to sepehr071/bama-ir-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability56
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 3618 tokens (~301/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management10
- Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage97
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 90% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 12 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 +16
- Malware scan: unverified → pass ▲ security
- 3 Nov 26 −15
- Malware scan: pass → unverified ▼ security
- Package version: 0.1.0 → 0.1.1 functional
- 2 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 0 to 3. That category is still filling its 30-day observation window: 0 days of observed history at the previous scan, 1 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Nov 26 77
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Analysed pypi/bama-ir-mcp@0.1.1
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | sepehr071/bama-ir-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/sepehr071/bama-ir-mcp/.github/workflows/publish.yml@refs/tags/v0.1.1 |
| Rekor log index | 3671007900 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:1f61cf53669608f8b38de7592ba6db1d20cad42d4c55a223a2671db97fb24a78 |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 35 packages
| Packages resolved | 35 |
|---|---|
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
ba_ad Ad details ~179
Get one Bama ad (car, motorcycle or truck) in full: price, specs, condition, seller, description and photos. Use it after ba_search or ba_search_bikes_trucks for a promising ad. ads_of_same_model and ads_of_same_trim are the real number of live ads for that car (the "N related ads" on the ad page). similar adds comparable car ads; similar_total counts Bama's wider similar pool. Phone numbers are masked by Bama, not available here.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | Ad code from ba_search, e.g. 4avpuyq7. |
| kind | string | – | Section of the ad. auto tries car, then motorcycle, then truck. |
| similar | integer | – | Also list this many similar car ads (0 = none). Car ads only. |
No output schema declared.
No examples provided.
ba_car_specs Car and motorcycle specs and review ~221
Technical specifications and the editorial review score of a car or motorcycle model from Bama's research pages. Use it for "what engine, power and consumption does a Samand Soren have" or to compare models. Without model it lists the brand's models. Returns power, torque, dimensions, rating, pros and cons, trims and other generations; ba_ad shows what is for sale and ba_new_prices what it costs new.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | yes | Brand value from ba_vehicles, e.g. 'samand', 'peugeot'. |
| description_chars | integer | – | Include this many characters of the editorial review text (0 = none). |
| full_equipment | boolean | – | Also return the equipment sections (safety, comfort, multimedia...). |
| model | – | – | Model value, e.g. 'soren'. Omit to list the brand's models. |
| trim | – | – | Trim key from a previous result's trims, e.g. 'pluscng'. |
| vehicle_type | string | – | Section (default car). |
No output schema declared.
No examples provided.
ba_dealer_ads Dealer inventory ~175
List the ads of one dealer (showroom) on Bama: the dealer's whole inventory, up to the first 100 ads. Use it after ba_dealers when the user wants to browse one showroom. Filters and sorting run on the fetched list. Returns the dealer's address and location plus compact ads; call ba_ad for one.
| Name | Type | Req | Description |
|---|---|---|---|
| dealer_id | integer | yes | Dealer id from ba_dealers or an ad's seller.id. |
| limit | integer | – | Most ads to return. |
| price_to | – | – | Maximum price in Toman (ads with a price only). |
| query | – | – | Only ads whose title or trim contains this text (any language). |
| sort | string | – | – |
| year_from | – | – | Earliest year, Jalali. |
| year_to | – | – | Latest year, Jalali. |
No output schema declared.
No examples provided.
ba_dealers Dealers selling a model ~170
List car dealers (showrooms) with ads for a model or city on Bama, with address, rating and how many ads match. Use it for "where can I buy X from a dealer". Scans the first pages of dealer-only ads; dealer ids and names come from the ads, and each dealer's own listing is at the returned url. Then call ba_search with seller=dealer for the ads themselves.
| Name | Type | Req | Description |
|---|---|---|---|
| pages | integer | – | Result pages to scan (30 ads each). |
| region | – | – | State or city values from ba_filters kind=region. |
| vehicle | – | – | Brand, model or trim values from ba_vehicles, e.g. ['samand'], ['samand,lx'], ['peugeot,206ir,type2']. Several values mean any of them. |
No output schema declared.
No examples provided.
ba_filters Filter values ~182
List the allowed values of one ba_search filter (states and cities, body types, fuels, colors, years...). Use it before ba_search when you need an exact value, e.g. kind=region query=اصفهان gives 'isfahan'. Region lists states only unless query is given. transmission needs no lookup: manual or automatic. For trucks use vehicle_type=truck kind=usage (e.g. 'tractor', 'truck,axle1,tanker'); for motorcycles vehicle_type=motorcycle kind=body, fuel or color. Not every kind exists for every section.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | yes | – |
| query | – | – | For region and usage: part of a name (Persian or English) to find its value. |
| vehicle_type | string | – | Section the values are for (default car). usage is for trucks. |
No output schema declared.
No examples provided.
ba_market_pulse Car market pulse ~97
Today's car market mood from Bama (score, trend and a short analysis per market) plus the biggest price movers. Use it for "is the car market rising today?". The analysis is Bama's own Persian text. Movers are new cars with the largest price change since their last quote; follow up with ba_new_prices or ba_price_list.
| Name | Type | Req | Description |
|---|---|---|---|
| movers | integer | – | How many of today's biggest price movers to list. |
No output schema declared.
No examples provided.
ba_market_stats Used-car market price stats ~274
Price statistics (min, quartiles, median, max, per year) for a car model from live Bama ads. Use it for "what is a 1398 Peugeot 206 worth" questions. It samples the first pages of the newest-updated matching ads, keeps only ads with a fixed price (no negotiable, installment or presale ads) and reports Toman. It is a sample of asking prices, not a full census nor sale prices. Narrow with year, mileage and region for a tighter range, then use ba_search with sort=cheapest to see the actual ads.
| Name | Type | Req | Description |
|---|---|---|---|
| mileage_from | – | – | Minimum mileage in km. |
| mileage_to | – | – | Maximum mileage in km (0 = zero-km only). |
| pages | integer | – | How many result pages to sample (30 ads each). More is slower. |
| region | – | – | State or city values from ba_filters kind=region. |
| seller | – | – | – |
| transmission | – | – | – |
| vehicle | – | – | Brand, model or trim values from ba_vehicles, e.g. ['samand'], ['samand,lx'], ['peugeot,206ir,type2']. Several values mean any of them. |
| year_from | – | – | Earliest production year, Jalali. |
| year_to | – | – | Latest production year, Jalali. |
No output schema declared.
No examples provided.
ba_new_prices New-car prices ~240
Current price of every new-car trim of a brand or model on Bama's price list (market price or factory price). Use it for "how much is a zero Samand Soren today": each row is one trim and year with price in Toman, provider (قیمت بازار market, قیمت کارخانه factory, قیمت نمایندگی dealer), daily change percent and a trend over the last 30 quoted prices. Compare with ba_market_stats for the used market. Brand-wide queries can list many trims; pass model and trim for one. ba_price_list searches all brands, ba_car_specs gives the technical data.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | yes | Brand value from ba_vehicles, e.g. 'samand', 'peugeot', 'mvm'. |
| history_days | integer | – | Include this many recent price points per trim (0 = none). |
| model | – | – | Model value, e.g. 'soren' or '206ir'. Omit for all of the brand's models. |
| trim | – | – | Trim key (trim_key in a result, e.g. 'pluscng') to list one trim only; needs model. |
No output schema declared.
No examples provided.
ba_price_list New-car price list ~196
Search Bama's daily price list of new cars (or motorcycles) across all brands and rank it. Use it for "cheapest zero-km SUV at market price" or "which imported cars rose most today". Each row is one trim, year and price type with the price in Toman and the change since the last quote. For one model's trend use ba_new_prices (history); for specs use ba_car_specs. Prices change daily and are not offers.
| Name | Type | Req | Description |
|---|---|---|---|
| imported | – | – | True = imported and assembled cars; False = domestic. |
| limit | integer | – | Most rows to return. |
| price_type | – | – | Only market (free-market), agency (dealer) or factory prices. |
| search | – | – | Brand, model or trim words in English or Persian, e.g. 'soren', 'tiggo'. |
| sort | string | – | – |
| vehicle_type | string | – | Price list to read. |
No output schema declared.
No examples provided.
ba_search Search car ads ~657
Search used and new car ads on Bama (bama.ir) with filters; returns up to 30 compact ads per page. Use it for "find me X under Y" questions. Get brand/model values from ba_vehicles and region, body, fuel and color values from ba_filters. Prices are Toman; year is Jalali (imports can show a Gregorian year); mileage_km 0 means zero-km. Then call ba_ad with a code for full details, or ba_market_stats for price statistics. The site gives no total count: keep paging while has_more is true (ba_ad reports the real number of ads for one model). Motorcycles and trucks are searched with ba_search_bikes_trucks.
| Name | Type | Req | Description |
|---|---|---|---|
| body | – | – | Body values from ba_filters kind=body, e.g. ['suv']. |
| body_status | – | – | Paint/body condition values from ba_filters kind=body_status, e.g. ['no_paint']. |
| color | – | – | Color values from ba_filters kind=color, e.g. ['white']. |
| country | – | – | Maker country values from ba_filters kind=country, e.g. ['Chinese']. |
| cylinder | – | – | Values from ba_filters kind=cylinder, e.g. ['four']. |
| description_chars | integer | – | Include this many characters of each ad's text (0 = none). |
| drive | – | – | Drive-train values from ba_filters kind=drive, e.g. ['awd']. |
| fuel | – | – | Fuel values from ba_filters kind=fuel, e.g. ['gasoline']. |
| installment | boolean | – | Only installment (اقساطی) ads. |
| lifestyle | – | – | Lifestyle values from ba_filters kind=lifestyle (e.g. family, sport). |
| mileage_from | – | – | Minimum mileage in km. 0 with mileage_to=0 means zero-km cars. |
| mileage_to | – | – | Maximum mileage in km. |
| origin | – | – | Origin values from ba_filters kind=origin (e.g. domestic, imported, assembled). |
| page | integer | – | 0-based page; each page holds up to 30 ads. |
| presale | boolean | – | Only presale or allocation-letter (حواله) ads. |
| price_from | – | – | Minimum price in Toman. |
| price_to | – | – | Maximum price in Toman. |
| region | – | – | State or city values from ba_filters kind=region, e.g. ['tehran'] or ['isfahan,kashan']. |
| seller | – | – | Only dealers (showrooms) or only private sellers. |
| sort | string | – | – |
| transmission | – | – | – |
| vehicle | – | – | Brand, model or trim values from ba_vehicles, e.g. ['samand'], ['samand,lx'], ['peugeot,206ir,type2']. Several values mean any of them. |
| with_photo | boolean | – | Only ads with photos. |
| with_price | boolean | – | Only ads that state a price (hides 'negotiable'). |
| year_from | – | – | Earliest production year, Jalali (e.g. 1395). |
| year_to | – | – | Latest production year, Jalali (e.g. 1400). |
No output schema declared.
No examples provided.
ba_search_bikes_trucks Search motorcycle and truck ads ~492
Search motorcycle or truck (heavy vehicle, bus, machinery) ads on Bama with filters. Use it for "find a Honda scooter under 500 million" or "used Volvo tractor" questions. Look up vehicle, body, usage and region values with ba_vehicles / ba_filters using the same vehicle_type. Prices are Toman, years Jalali (imports can show a Gregorian year). Then call ba_ad with a code (it finds the section itself). Keep paging while has_more is true; there is no total count. Cars are searched with ba_search.
| Name | Type | Req | Description |
|---|---|---|---|
| body | – | – | Motorcycles: type from ba_filters kind=body, e.g. ['race'], ['scooter']. |
| body_status | – | – | Trucks: paint condition from ba_filters kind=body_status, e.g. ['nopaint']. |
| color | – | – | Color values from ba_filters (vehicle_type=kind), e.g. ['red']. |
| description_chars | integer | – | Include this many characters of each ad's text (0 = none). |
| fuel | – | – | Motorcycles: ['gasoline'] or ['electric']. |
| installment | boolean | – | Only installment ads. |
| kind | string | yes | Which section of Bama to search. |
| mileage_from | – | – | Minimum mileage in km. |
| mileage_to | – | – | Maximum mileage in km (0 = zero-km only). |
| page | integer | – | 0-based page. Page 0 is short (about 10 ads), later pages 30. |
| price_from | – | – | Minimum price in Toman. |
| price_to | – | – | Maximum price in Toman. |
| region | – | – | State or city values from ba_filters kind=region, e.g. ['tehran']. |
| seller | – | – | Dealers only or private only. |
| sort | string | – | – |
| transmission | – | – | – |
| usage | – | – | Trucks: usage from ba_filters kind=usage, e.g. ['tractor'], ['truck,axle1,tanker']. |
| vehicle | – | – | Brand or brand,model values from ba_vehicles with the same vehicle_type, e.g. ['honda']. |
| with_photo | boolean | – | Only ads with photos. |
| with_price | boolean | – | Only ads that state a price. |
| year_from | – | – | Earliest year, Jalali. |
| year_to | – | – | Latest year, Jalali. |
No output schema declared.
No examples provided.
ba_vehicles Brands, models and trims ~182
Look up the brand, model and trim values that ba_search, ba_market_stats and ba_new_prices take. Give query to find matches (up to 25) or brand to list one brand's models and trims; with neither it lists all brands. A value looks like 'samand', 'samand,lx' or 'peugeot,206ir,type2': brand, brand,model, brand,model,trim. Use vehicle_type motorcycle or truck for ba_search_bikes_trucks values.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | – | – | A brand value, e.g. 'peugeot': lists all its models and trims. |
| query | – | – | Brand, model or trim name in Persian or English, e.g. 'پژو 206', 'samand', 'soren'. |
| vehicle_type | string | – | Section to look in (default car). |
No output schema declared.
No examples provided.
How do I install the Bama Cars MCP server?
Bama Cars runs locally as a PyPI package, launched with uvx bama-ir-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · bama-ir-mcp
claude mcp add sepehr071-bama-ir-mcp -- uvx bama-ir-mcp
What is the Bama Cars MCP server?
Bama Cars is an MCP server listed in the public MCP registry as io.github.sepehr071/bama-ir-mcp. Read-only Bama (bama.ir) Iran car marketplace: ad search, ad details, market prices, new-car prices. This page covers its PyPI package (bama-ir-mcp).
Is the Bama Cars MCP server safe to use?
Bama Cars scores 79 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Bama Cars MCP server expose?
Bama Cars exposes 12 tools: ba_search, ba_ad, ba_market_stats, ba_dealers, ba_vehicles, and 7 more. Their descriptions and schemas cost roughly 3,065 tokens of context every time the server is loaded.
Is the Bama Cars MCP server still maintained?
Bama Cars is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Bama Cars MCP server under?
Bama Cars declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.