Alibaba Travel
PYPI · ALIBABA-IR-MCP
Read-only Alibaba (alibaba.ir) Iran travel: trains, buses, flights, hotels, villas and tours.
Available components
Last scanned (9 hours ago)
Scores higher than 80% of PyPI servers
Category Maps and Location
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/alibaba-ir-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 1 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability60
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4287 tokens (~306/item across 14 items; 14 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 Management13
- Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 15 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 0
- Malware scan: unverified → pass ▲ security
- Package version: 0.1.1 → 0.1.2 functional
- 2 Nov 26 −14
- Malware scan: pass → unverified ▼ security
- Package version: 0.1.0 → 0.1.1 functional
- 1 Nov 26 78
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 5 Nov 2026 · Analysed pypi/alibaba-ir-mcp@0.1.2
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/alibaba-ir-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/sepehr071/alibaba-ir-mcp/.github/workflows/publish.yml@refs/tags/v0.1.2 |
| Rekor log index | 3670999665 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:fd9e5f2a656985fca60072815bd208fcb7b7257dd341a8063ddc858cd84e9e3e |
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 →
al_bus_seats Bus seat map ~262
Show which seats are free on one bus: counts per status and the free seat numbers (no booking). Use after al_buses when the user cares where they sit or asks how full a bus is. Pick the bus by its departure time (and company). `layout` gives each seat's row and column (columns 1-2 left of the aisle, 4-5 right) so pairs can be found; statuses mean Available, booked for a male or female passenger, or Blocked (not for sale).
| Name | Type | Req | Description |
|---|---|---|---|
| company | – | – | Part of the company name, to pick one when several buses leave at that time. |
| date | string | yes | Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which). |
| departure_time | string | yes | Departure time of the bus from al_buses, HH:MM. |
| destination | string | yes | City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them. |
| origin | string | yes | City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them. |
No output schema declared.
No examples provided.
al_buses Bus tickets ~218
Search intercity bus tickets between two Iranian cities on one day: company, bus type, times, price, seats. Use for "buses from Tehran to Shiraz tomorrow". Prices are Toman per adult. `from_terminal` is the terminal of that departure (Tehran has several). Bus tickets carry no arrival time on the site.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which). |
| destination | string | yes | City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them. |
| limit | integer | – | Maximum number of results. |
| only_available | boolean | – | Hide buses with no free seat. |
| origin | string | yes | City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them. |
| sort | string | – | Order of the results. |
No output schema declared.
No examples provided.
al_buses_cheapest Cheapest bus per day ~203
List the lowest bus price and the number of buses for each day from a start date (the site has no bus calendar). Use before al_buses when the date is flexible. It runs one search per day, so keep `days` small. Prices are Toman per adult for buses with a free seat; a day with none shows no price.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which). |
| days | integer | – | How many days to check, starting at `date`. |
| destination | string | yes | City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them. |
| origin | string | yes | City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them. |
No output schema declared.
No examples provided.
al_cities City and airport codes ~200
Look up the city codes the other tools take (THR for Tehran, MHD for Mashhad) and what is sold for each city. Use first when the user names a city: pass the returned `code` to al_trains, al_buses or al_flights. `train` is true for cities with a station, `flight` for cities with a domestic airport. Buses use the same codes (a tiny train stop may have no buses). With international=true it searches the whole world (Dubai, Istanbul, Paris) and returns airports; `whole_city` rows (code ending in ALL) cover every airport of a city.
| Name | Type | Req | Description |
|---|---|---|---|
| international | boolean | – | Look up airports and cities worldwide for al_flights_international instead of Iranian cities. |
| limit | integer | – | Maximum number of results. |
| query | string | – | Part of a city name in Persian or English, or a code. Empty lists all. |
No output schema declared.
No examples provided.
al_flights Domestic flights ~375
Search domestic flights between two Iranian airports on one day: airline, flight number, times, fare, seats. Use for "flights from Tehran to Shiraz on 2026-11-12". Prices are Toman per adult (`child_price_toman` and `infant_price_toman` for the others); one flight can appear several times with different fare classes. Pass return_date for a round trip, refund_rules for the cancellation fee table, adults/children/infants for a group. For other days call al_flights_cheapest first. For flights abroad use al_flights_international.
| Name | Type | Req | Description |
|---|---|---|---|
| adults | integer | – | Number of adults. |
| children | integer | – | Number of children (2-11); their fare is lower. |
| date | string | yes | Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which). |
| destination | string | yes | City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them. |
| infants | integer | – | Number of infants under 2 (one per adult at most). |
| limit | integer | – | Maximum number of results. |
| only_available | boolean | – | Hide fares with no seat left. |
| origin | string | yes | City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them. |
| refund_rules | boolean | – | Add `refund_penalties` (cancellation fee by time before departure) to each fare. |
| return_date | – | – | Return day for a round trip (same formats as `date`); adds a `returning` list. |
| sort | string | – | Order of the results. |
No output schema declared.
No examples provided.
al_flights_cheapest Cheapest flight per day ~178
List the lowest domestic fare for each day from a start date, to pick the cheapest day to fly. Use before al_flights when the date is flexible. Prices are Toman per adult; a day with no flight is missing.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which). |
| days | integer | – | How many days to list, starting at `date`. |
| destination | string | yes | City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them. |
| origin | string | yes | City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them. |
No output schema declared.
No examples provided.
al_flights_international International flights ~403
Search international flights between Iran and abroad (or any two cities Alibaba sells) on one day. Use for "flights from Tehran to Istanbul on 2026-11-16". Returns airline, flight numbers, times, stops, baggage and the price per adult in Toman (`total_toman` is for the whole group); cheapest first by default. Pass return_date for a round trip: each fare then has a `return` leg. Cities and codes come from al_cities with international=true (THRALL = all Tehran airports). Charter fares are sold as one fare class. It can take 10-20 seconds because airlines answer one by one (at most 12 polls per call). To buy, send the user to alibaba.ir.
| Name | Type | Req | Description |
|---|---|---|---|
| adults | integer | – | Number of adults. |
| airline | – | – | Part of an airline name to keep, e.g. 'Turkish', 'ماهان'. |
| cabin | string | – | Cabin class. |
| children | integer | – | Number of children (2-11). |
| date | string | yes | Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which). |
| destination | string | yes | City or airport as a name (تهران, Dubai) or code (THR, DXB, THRALL for all airports of Tehran). |
| infants | integer | – | Number of infants under 2. |
| limit | integer | – | Maximum number of results. |
| max_stops | – | – | Keep only itineraries with at most this many stops (0 = direct). |
| origin | string | yes | City or airport as a name (تهران, Dubai) or code (THR, DXB, THRALL for all airports of Tehran). |
| return_date | – | – | Return day for a round trip (same formats as `date`). |
| sort | string | – | Order of the results. |
No output schema declared.
No examples provided.
al_hotels Hotels ~260
Search hotels in a city for a stay: stars, rating, price for the whole stay, meal plan, perks (domestic and abroad). Use for "a 4-star hotel in Mashhad for 2 nights from 1405-08-21". Prices are Toman for the room for all nights (`price_per_night_toman` is the average). The site's own page shows the same list and count. It can take up to a few seconds while hotels answer.
| Name | Type | Req | Description |
|---|---|---|---|
| adults | integer | – | Adults in the room (one room per search). |
| checkin | string | yes | Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which). |
| city | string | yes | City name in Persian or English (مشهد, Istanbul, دبی). |
| limit | integer | – | Maximum number of results. |
| min_stars | – | – | Lowest star rating to keep, 1-5. |
| nights | integer | – | Number of nights, counted from the check-in date. |
| only_available | boolean | – | Hide hotels with no room for those dates. |
| sort | string | – | Order of the results: best rated first, or cheapest first. |
No output schema declared.
No examples provided.
al_stay_detail Villa or holiday home details ~153
Show one villa or holiday home in full: capacity, beds, amenities, house rules, cancellation terms, calendar, reviews. Use after al_stays when the user wants to decide on a place. Prices are Toman per night (`price_base` weekday, `price_weekend`, `price_holiday`); `calendar` lists the next days with `available` or not and the night's price. Guest names are left out.
| Name | Type | Req | Description |
|---|---|---|---|
| calendar_days | integer | – | How many days of availability and nightly prices to list from today. |
| id | string | yes | The `id` of a place from al_stays. |
| reviews | integer | – | How many recent guest reviews to include (0 for none). |
No output schema declared.
No examples provided.
al_stays Villas and holiday homes ~344
Search villas, suites, cottages and other holiday homes for rent in a city, with price, rating and capacity. Use for "a villa in Masuleh for 4 people next weekend". Prices are Toman: `price_per_night_toman` is the average for the stay, `price_total_toman` the whole stay (VAT not included). The sort applies to the first 100 places the site returns (`found` is the full count). Call al_stay_detail with an `id` for the calendar, rules and amenities. The listings are Jabama's, sold through alibaba.ir.
| Name | Type | Req | Description |
|---|---|---|---|
| checkin | string | yes | Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which). |
| destination | string | yes | City or village name (ماسوله, رامسر, کیش) or a page slug like city-masuleh. |
| guests | integer | – | Number of guests. |
| instant_only | boolean | – | Only places you can book at once without the host's approval. |
| limit | integer | – | Maximum number of results. |
| max_price | – | – | Highest price per night in Toman. |
| min_price | – | – | Lowest price per night in Toman. |
| min_rating | – | – | Lowest guest rating, 0-5 (for example 4). |
| nights | integer | – | Number of nights, counted from the check-in date. |
| sort | string | – | Order of the results. |
| type | – | – | Kind of place: villa, suite, traditional house, cottage, apartment, hostel, ecotourism lodge, complex. |
No output schema declared.
No examples provided.
al_tours Tour packages ~291
Search tour packages (round trip plus hotel) from a city to a destination such as Kish, Mashhad, Istanbul or Dubai. Use for "a 3-night Kish tour for two from Tehran next week". Each result is a hotel with the cheapest package: hotel, stars, rating, room, meal plan, how you travel, and the price per person and for the whole group in Toman. Results come in after a few seconds (at most 15 polls per call). To buy, send the user to alibaba.ir.
| Name | Type | Req | Description |
|---|---|---|---|
| adults | integer | – | Travellers sharing one room (the price is for the whole group). |
| checkin | string | yes | Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which). |
| destination | string | yes | Destination city in Persian or English: کیش, Mashhad, استانبول, Dubai. |
| limit | integer | – | Maximum number of results. |
| max_price | – | – | Highest price per person in Toman. |
| min_stars | – | – | Lowest hotel star rating to keep, 1-5. |
| nights | integer | – | Number of nights, counted from the check-in date. |
| origin | string | – | Departure city, tours start from Tehran, Isfahan, Mashhad and a few more. |
| sort | string | – | Order of the results. |
No output schema declared.
No examples provided.
al_tours_cheapest Cheapest tour per day ~183
List the lowest tour price per person for 11 departure days around a date (5 before, 5 after), to pick the cheapest day. Use before al_tours when the date is flexible. Prices are Toman per person for a tour of `nights` nights; a day without tours is missing. Then call al_tours for the chosen day.
| Name | Type | Req | Description |
|---|---|---|---|
| checkin | string | yes | Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which). |
| destination | string | yes | Destination city in Persian or English: کیش, Mashhad, استانبول, Dubai. |
| nights | integer | – | Number of nights, counted from the check-in date. |
| origin | string | – | Departure city (Tehran, Isfahan, Mashhad and a few more). |
No output schema declared.
No examples provided.
al_trains Train tickets ~412
Search train tickets between two Iranian cities on one day: company, class, times, price and seats left. Use for "trains from Tehran to Mashhad on 1405-08-20". Prices are Toman per adult. `seats_left` 0 means sold out. `class` is the wagon name (stars, berths, meals) and `class_code` its type: S saloon seats, EC 4-berth compartment, EL 6-berth compartment, V special. Pass return_date for the way back. Call al_trains_cheapest to compare prices over the following days. While the rail suppliers are in their maintenance window (usually after midnight) the site answers with an error; try again in a few minutes.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which). |
| destination | string | yes | City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them. |
| limit | integer | – | Maximum number of results. |
| only_available | boolean | – | Hide sold-out trains. |
| origin | string | yes | City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them. |
| passengers | integer | – | Number of travellers; seats_left is for this group size. |
| return_date | – | – | Return day for a round trip (same formats as `date`); adds a `returning` list. |
| sort | string | – | Order of the results. |
| ticket_type | string | – | family = mixed compartments; female or male = single-gender compartments (seat counts differ). |
| wagon_class | – | – | Keep only this class code from the results, e.g. EC (compartment), EL (6-berth), S (saloon), V. |
No output schema declared.
No examples provided.
al_trains_cheapest Cheapest train per day ~177
List the lowest train price for each day from a start date, to pick the cheapest day to travel. Use before al_trains when the date is flexible. Prices are Toman per adult; a missing day has no train.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | Travel date, Gregorian 2026-11-11 or Jalali 1405-08-20 (the year tells which). |
| days | integer | – | How many days to list, starting at `date`. |
| destination | string | yes | City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them. |
| origin | string | yes | City name in Persian or English (تهران, Mashhad) or its code (THR, MHD); al_cities lists them. |
No output schema declared.
No examples provided.
How do I install the Alibaba Travel MCP server?
Alibaba Travel runs locally as a PyPI package, launched with uvx alibaba-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 · alibaba-ir-mcp
claude mcp add sepehr071-alibaba-ir-mcp -- uvx alibaba-ir-mcp
What is the Alibaba Travel MCP server?
Alibaba Travel is an MCP server listed in the public MCP registry as io.github.sepehr071/alibaba-ir-mcp. Read-only Alibaba (alibaba.ir) Iran travel: trains, buses, flights, hotels, villas and tours. This page covers its PyPI package (alibaba-ir-mcp).
Is the Alibaba Travel MCP server safe to use?
Alibaba Travel scores 80 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 Alibaba Travel MCP server expose?
Alibaba Travel exposes 14 tools: al_cities, al_trains, al_trains_cheapest, al_buses, al_buses_cheapest, and 9 more. Their descriptions and schemas cost roughly 3,659 tokens of context every time the server is loaded.
Is the Alibaba Travel MCP server still maintained?
Alibaba Travel 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 Alibaba Travel MCP server under?
Alibaba Travel declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.