# Bama Cars (pypi · bama-ir-mcp)

Read-only Bama (bama.ir) Iran car marketplace: ad search, ad details, market prices, new-car prices.

- Trust score: 79/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- pypi · `bama-ir-mcp`: 79/100 (this document), [markdown](https://verifymcp.io/servers/sepehr071-bama-ir-mcp/bama-ir-mcp.md), [page](https://verifymcp.io/servers/sepehr071-bama-ir-mcp/bama-ir-mcp)

## Channel facts

- Registry: `pypi`
- Package: `bama-ir-mcp`
- Version: `0.1.1`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs hatchling.build at install time, a recognised build step with no custom scripting around it.
  - 1 of 35 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to sepehr071/bama-ir-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 1 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 56/100
  - AI-judged instruction clarity (good).
  - 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.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 13/100
  - Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 97/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 90% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 12 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### 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.

### Claude

```bash
claude mcp add sepehr071-bama-ir-mcp -- uvx bama-ir-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "sepehr071-bama-ir-mcp": {
      "command": "uvx",
      "args": [
        "bama-ir-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "sepehr071-bama-ir-mcp": {
      "command": "uvx",
      "args": [
        "bama-ir-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add sepehr071-bama-ir-mcp -- uvx bama-ir-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sepehr071-bama-ir-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "bama-ir-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add sepehr071-bama-ir-mcp --command uvx --arg bama-ir-mcp
```

### Hermes

```yaml
mcp_servers:
  sepehr071-bama-ir-mcp:
    command: "uvx"
    args: ["bama-ir-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "sepehr071-bama-ir-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "bama-ir-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add sepehr071-bama-ir-mcp -t stdio -c uvx -a bama-ir-mcp
```

### Other

```json
{
  "mcpServers": {
    "sepehr071-bama-ir-mcp": {
      "command": "uvx",
      "args": [
        "bama-ir-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 79, +16)

- [security improvement] Malware scan: unverified → pass

### 2026-11-03 (score 63, −15)

- [security regression] Malware scan: pass → unverified
- [functional] Package version: 0.1.0 → 0.1.1

### 2026-11-02 (score 78, +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.

### 2026-11-01 (score 77)

First indexed and scored.

## MCP tools (12)

### `ba_search` (~657 tokens)

Search car ads

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.

Input parameters:

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

### `ba_ad` (~179 tokens)

Ad details

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.

Input parameters:

- `code` (string, required): 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.

### `ba_market_stats` (~274 tokens)

Used-car market price stats

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.

Input parameters:

- `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.

### `ba_dealers` (~170 tokens)

Dealers selling a model

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.

Input parameters:

- `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.

### `ba_vehicles` (~182 tokens)

Brands, models and trims

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.

Input parameters:

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

### `ba_filters` (~182 tokens)

Filter values

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.

Input parameters:

- `kind` (string, required)
- `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.

### `ba_new_prices` (~240 tokens)

New-car prices

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.

Input parameters:

- `brand` (string, required): 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.

### `ba_search_bikes_trucks` (~492 tokens)

Search motorcycle and truck ads

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.

Input parameters:

- `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, required): 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.

### `ba_dealer_ads` (~175 tokens)

Dealer inventory

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.

Input parameters:

- `dealer_id` (integer, required): 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.

### `ba_price_list` (~196 tokens)

New-car price list

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.

Input parameters:

- `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.

### `ba_market_pulse` (~97 tokens)

Car market pulse

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.

Input parameters:

- `movers` (integer): How many of today's biggest price movers to list.

### `ba_car_specs` (~221 tokens)

Car and motorcycle specs and review

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.

Input parameters:

- `brand` (string, required): 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).

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/sepehr071-bama-ir-mcp/bama-ir-mcp#diagnostics

## Score history

- 2026-11-05: 79
- 2026-11-04: 79
- 2026-11-03: 63
- 2026-11-02: 78
- 2026-11-01: 77

## Common questions

### 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 5 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 5 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.

### What did VerifyMCP test on the Bama Cars MCP server?

VerifyMCP ran 16 checks on Bama Cars, covering Malware scan, Known CVEs, Install scripts, Dependency health and 12 more. Endpoint Security and Transport & Reachability do not apply to a PyPI package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- PyPI project: https://pypi.org/project/bama-ir-mcp/
- Socket report: https://socket.dev/pypi/package/bama-ir-mcp
- Repository: https://github.com/sepehr071/bama-ir-mcp
- Changelog RSS feed: https://verifymcp.io/servers/sepehr071-bama-ir-mcp/bama-ir-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/sepehr071-bama-ir-mcp/bama-ir-mcp/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/sepehr071-bama-ir-mcp/bama-ir-mcp.json
- HTML version of this page: https://verifymcp.io/servers/sepehr071-bama-ir-mcp/bama-ir-mcp
