Skip to main content
Glama
bama-ir-mcp

bama-ir-mcp

by sepehr071

Search car ads

ba_search
Read-onlyIdempotent

Search Bama used and new car ads by brand, model, price, year, mileage, region, and other filters; returns up to 30 compact listings per page for paging through results.

Instructions

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 Schema

NameRequiredDescriptionDefault
bodyNoBody values from ba_filters kind=body, e.g. ['suv'].
fuelNoFuel values from ba_filters kind=fuel, e.g. ['gasoline'].
pageNo0-based page; each page holds up to 30 ads.
sortNorelevance
colorNoColor values from ba_filters kind=color, e.g. ['white'].
driveNoDrive-train values from ba_filters kind=drive, e.g. ['awd'].
originNoOrigin values from ba_filters kind=origin (e.g. domestic, imported, assembled).
regionNoState or city values from ba_filters kind=region, e.g. ['tehran'] or ['isfahan,kashan'].
sellerNoOnly dealers (showrooms) or only private sellers.
countryNoMaker country values from ba_filters kind=country, e.g. ['Chinese'].
presaleNoOnly presale or allocation-letter (حواله) ads.
vehicleNoBrand, model or trim values from ba_vehicles, e.g. ['samand'], ['samand,lx'], ['peugeot,206ir,type2']. Several values mean any of them.
year_toNoLatest production year, Jalali (e.g. 1400).
cylinderNoValues from ba_filters kind=cylinder, e.g. ['four'].
price_toNoMaximum price in Toman.
lifestyleNoLifestyle values from ba_filters kind=lifestyle (e.g. family, sport).
year_fromNoEarliest production year, Jalali (e.g. 1395).
mileage_toNoMaximum mileage in km.
price_fromNoMinimum price in Toman.
with_photoNoOnly ads with photos.
with_priceNoOnly ads that state a price (hides 'negotiable').
body_statusNoPaint/body condition values from ba_filters kind=body_status, e.g. ['no_paint'].
installmentNoOnly installment (اقساطی) ads.
mileage_fromNoMinimum mileage in km. 0 with mileage_to=0 means zero-km cars.
transmissionNo
description_charsNoInclude this many characters of each ad's text (0 = none).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, yet the description still adds non-obvious behavior: 30 ads per page, the site exposes no total count, and the agent must keep paging while has_more is true. It also discloses data conventions the agent cannot infer — prices in Toman, Jalali years with possible Gregorian imports, mileage 0 meaning zero-km — plus the workaround that ba_ad reports the true count for one model.

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?

Front-loaded with purpose and result shape, then workflow, then paging caveat — every sentence carries operational information and none is filler. It loses a point for density and a broken clause ("region, body, fuel and" trailing into a new line) that makes the value-sourcing sentence harder to parse than it needs to be.

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 26-parameter, zero-required search tool with no output schema, the definition covers pagination, result size, units, and cross-tool value sourcing, which is what an agent needs to call it correctly. The remaining gap is minor: it never enumerates the fields of a "compact ad" or explains that the returned `code` is the handle for ba_ad, though the ba_ad reference implies it.

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?

With 92% schema description coverage the schema already carries most parameter meaning, including the ba_filters kind references and Toman/Jalali units. The description's parameter content (Toman pricing, Jalali years, the zero-mileage convention, value sourcing from ba_vehicles/ba_filters) largely restates what the schema says, adding little syntax or format detail beyond it. Baseline 3 is appropriate given the schema does the heavy lifting.

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?

"Search used and new car ads on Bama (bama.ir) with filters; returns up to 30 compact ads per page" gives a specific verb, resource, domain, and result shape. It actively carves out the sibling boundary by naming ba_search_bikes_trucks for motorcycles/trucks, so an agent can route without opening another 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?

Explicit when-to-use ("find me X under Y" questions), explicit prerequisite workflow (fetch brand/model from ba_vehicles, region/body/fuel/color from ba_filters), and explicit next steps (ba_ad for full details, ba_market_stats for statistics). It also names the exclusion case — motorcycles and trucks go to ba_search_bikes_trucks — which is exactly the routing information an agent needs.

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