Flytoday
PYPI · FLYTODAY-MCP
Unofficial read-only Flytoday: Iranian and international flights, hotels, villas, trains, buses.
Available components
Last scanned (6 minutes ago)
Scores higher than 62% 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 Security50
- Malware scan not yet available for this package.Unverified
- 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/flytoday-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 Usability62
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 5207 tokens (~236/item across 22 items; 22 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 Management0
- Stability check failed: the tool surface changed between 0.1.2 and 0.3.1: 0 tool removals, 22 breaking changes, 0 additions. See how to fix → Fail
Tool Coverage99
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 98% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "ft_flight_details" implies "refund" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
- An AI judge read all 23 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.
- 23 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- 22 Oct 26 +15
- Stability: fail → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Package version: 0.3.0 → 0.3.1 functional
- 19 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- 18 Oct 26 0
- Stability: fail → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Malware scan: pass → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Package version: 0.2.0 → 0.3.0 functional
- 16 Oct 26 +15
- Stability: unverified → fail ▼ security
- Tool safety: pass → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Package version: 0.1.2 → 0.2.0 functional
- 14 Oct 26 +13
- Malware scan: pass → unverified ▼ security
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: excellent functional
- First check of Schema quality: fail functional
- First check of Destructive annotations: 0 functional
- First check of Tool coverage: 98 functional
- First check of Tool coverage: 100 functional
- 13 Oct 26 0
- Package version: 0.1.1 → 0.1.2 functional
- 12 Oct 26 49
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 23 Oct 2026 · Analysed pypi/flytoday-mcp@0.3.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/flytoday-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/sepehr071/flytoday-mcp/.github/workflows/publish.yml@refs/tags/v0.3.1 |
| Rekor log index | 3390371772 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:5314af5a21c9a8ea7551006b4931d80e5d815af83e774c8fb6aabaca5b1b56c4 |
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 →
ft_activities Search activities ~216
Tours, tickets and experiences in a destination that are on sale in the date range, with from-prices. Only activities with a price in the range are listed (many are unavailable on given dates), cheapest first. price_toman is the adult from-price; list_price_toman is the box-office price. region is the destination matched; other_regions lists alternatives to retry with region_id. Next: ft_activity(activity_id).
| Name | Type | Req | Description |
|---|---|---|---|
| date_from | – | – | First day YYYY-MM-DD; tomorrow or later (today is moved to tomorrow); default tomorrow. |
| date_to | – | – | Last day YYYY-MM-DD, up to 90 days after date_from; default date_from + 30 days. |
| limit | integer | – | Max activities, cheapest first. |
| query | – | – | Destination, English or Persian, e.g. 'Dubai', 'دبی', 'Istanbul'. Needed unless region_id is given. |
| region_id | – | – | Region id from an earlier call, e.g. 1234 (Dubai); skips the lookup. |
No output schema declared.
No examples provided.
ft_activity Activity details ~151
One activity: description, highlights, options with adult prices, and the cheapest days in the range. price_toman fields are adult prices. The range matters: an activity with no availability in it comes back with available=false, so use a wide range (the default is about two months). Slow upstream (up to a minute). Booking happens on flytoday.ir.
| Name | Type | Req | Description |
|---|---|---|---|
| activity_id | integer | yes | Activity id from ft_activities, e.g. 13049. |
| date_from | – | – | Price calendar start YYYY-MM-DD; default today + 3 days. |
| date_to | – | – | Price calendar end YYYY-MM-DD, up to 90 days after date_from; default date_from + 57 days. |
No output schema declared.
No examples provided.
ft_bus_calendar Bus price calendar ~137
Cheapest bus seat price per day for the next weeks (the site's price strip), in one cheap call. Values are cached minimums per day (one row per company in the API) and can differ a little from a live search; days without a listed bus are left out. Use it to pick a day, then ft_search_buses.
| Name | Type | Req | Description |
|---|---|---|---|
| destination | string | yes | 4-digit bus city id from ft_find_bus_city, e.g. '0001' (Tehran). |
| origin | string | yes | 4-digit bus city id from ft_find_bus_city, e.g. '0001' (Tehran). |
No output schema declared.
No examples provided.
ft_cip CIP airport services ~289
CIP / VIP airport lounge service with prices for a date and passenger mix, plus paid add-ons. Only IKA and MHD sell CIP. `nationality` says which passports an offer is for (IKA lists one offer for Iranian passports and one for all others). price_per_passenger_toman is per person (tax included); total_toman is for the whole party; add-ons (wheelchair, pet, transfers) list their adult price. Nothing is held or booked. Next: the user books on flytoday.ir.
| Name | Type | Req | Description |
|---|---|---|---|
| adults | integer | – | Adults, e.g. 1. |
| airport | string | yes | Airport IATA code that sells CIP lounges: 'IKA' (Tehran Imam Khomeini, international) or 'MHD' (Mashhad, domestic and international). |
| children | integer | – | Children, e.g. 0. |
| date | string | yes | Flight date YYYY-MM-DD, today or later and at most about 3 months ahead, e.g. '2026-10-20'. |
| direction | string | – | 'departure' = leaving from this airport, 'arrival' = landing here. |
| flight_type | string | – | Kind of flight. |
| full_text | boolean | – | Skip text clips and item caps; return full texts. |
| infants | integer | – | Infants, e.g. 0. |
No output schema declared.
No examples provided.
ft_esim_plans eSIM plans ~117
eSIM data plans for a country with data amount, validity days and price, cheapest first. Covers 200+ countries (no regional or global bundles). fare_code identifies the plan on flytoday.ir; plans cannot be bought here. coverage_countries is how many countries the plan works in.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | yes | Country in English or Persian, or ISO code or slug, e.g. 'turkey', 'ترکیه', 'AE'. |
| limit | integer | – | Max plans, cheapest first. |
No output schema declared.
No examples provided.
ft_find_airport Find airport or city ~141
Find the IATA codes the flight tools need, for domestic and international places. Each hit has `code`, `type` (City or Airport) and, for a city, its `airports`. Use the city code (THR, IST) in ft_search_flights and ft_flight_calendar: a city code covers all of its airports. Without a query it lists the popular Iranian and international cities.
| Name | Type | Req | Description |
|---|---|---|---|
| domestic_only | boolean | – | Only Iranian places. |
| limit | integer | – | Max places. |
| query | – | – | City or airport name, Persian or English ('mashhad', 'استانبول'); omit for popular places. |
No output schema declared.
No examples provided.
ft_find_bus_city Find bus city ~97
Bus city ids (4 digits) for a city name, or the popular cities when query is empty. Use before ft_search_buses (Tehran '0001', Isfahan '0002', Shiraz '0004', Mashhad '0006').
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max cities. |
| query | – | – | City name, Persian or latin, e.g. 'اصفهان' or 'shiraz'. |
No output schema declared.
No examples provided.
ft_find_hotel_place Find hotel or stay place ~224
Find the place ids the hotel and stay tools need. Which id goes where: `hotels` rows: kind 'city' (Iran) -> `city_id` for ft_search_hotels; kind 'region' (abroad, with international=true) -> `region_code` plus `country_code` for ft_search_hotels(international=true); kind 'hotel' -> `hotel_id` for ft_hotel and ft_hotel_reviews. `stay_regions` rows (Iran only, villas and apartments) -> `region_code` for ft_search_stays; they are NOT the same ids as the hotel city ids. Without a query it lists the popular hotel places (and popular stay areas, which have no region_code: search them by name).
| Name | Type | Req | Description |
|---|---|---|---|
| international | boolean | – | Look for places outside Iran (hotels only; stays are Iran only). |
| limit | integer | – | Max rows per list. |
| query | – | – | City, region or hotel name, Persian or English ('مشهد', 'Istanbul', 'رامسر'). |
No output schema declared.
No examples provided.
ft_find_station Find train station ~94
Train station codes (`station_code`) for a city name, or the 8 most popular stations when query is empty. Use before ft_search_trains and ft_train_calendar, which need the codes (Tehran 1, Mashhad 191).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max stations. |
| query | – | – | City or station name, Persian or latin, e.g. 'مشهد' or 'isfahan'. |
No output schema declared.
No examples provided.
ft_flight_calendar Flight price calendar ~228
Cheapest one-adult fare per departure day around a date, in one cheap call (no search needed). Use it to pick the cheapest day, then ft_search_flights for that day. Values are cached minimums (price_toman, airline code) and can differ a little from a live search; days without a cached fare are left out and past days are dropped. `cheapest` is the lowest day.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | Centre of the window, Gregorian YYYY-MM-DD, e.g. '2026-10-23'. |
| destination | string | yes | IATA city code from ft_find_airport, e.g. 'THR' (covers IKA and THR), 'MHD', 'IST', 'DXB'. |
| origin | string | yes | IATA city code from ft_find_airport, e.g. 'THR' (covers IKA and THR), 'MHD', 'IST', 'DXB'. |
| window | string | – | week = the date +-3 days, month = the date +-15 days. |
No output schema declared.
No examples provided.
ft_flight_details Flight fare details ~143
Refund and change rules, confirmed baggage per segment and (international) entry notes of one fare. The fare_source_code is valid only while its search lives (about 15 minutes); after that run ft_search_flights again. Charter fares list cancellation penalties as text, system fares as tiers (`penalties`, % of the fare by time before the flight).
| Name | Type | Req | Description |
|---|---|---|---|
| fare_source_code | string | yes | fare_source_code of a flight from ft_search_flights. |
| full_text | boolean | – | Skip text clips and item caps; return full texts. |
| search_id | – | – | search_id of that search; adds the entry and transit notes of an international fare. |
No output schema declared.
No examples provided.
ft_hotel Hotel rooms and prices ~292
One hotel for dates: every room and meal-plan offer with whole-stay price, rooms left and cancellation terms, the room details (size, beds, features) and the hotel basics (address, stars, score, facilities, check-in time). price_toman is the whole stay for one room; per_night_toman = price / nights. Offers are cheapest first, sold-out ones (rooms_left 0) last. Use after ft_search_hotels; the user books on flytoday.ir. Rate limited like ft_search_hotels: one availability call per use.
| Name | Type | Req | Description |
|---|---|---|---|
| adults | integer | – | Adults in the (single) room. |
| check_in | string | yes | Gregorian date YYYY-MM-DD, e.g. '2026-10-21'. |
| check_out | string | yes | Gregorian date YYYY-MM-DD, e.g. '2026-10-21'. |
| children_ages | – | – | Ages (0-11) of the children, one entry each, e.g. [5, 8]. Omit for none. |
| country_code | – | – | ISO country code of the DESTINATION for international, e.g. 'TR'. |
| hotel_id | integer | yes | Hotel id from ft_search_hotels or ft_find_hotel_place, e.g. 24. |
| international | boolean | – | true for a hotel outside Iran (id from ft_find_hotel_place international). |
No output schema declared.
No examples provided.
ft_hotel_reviews Hotel reviews ~148
Guest reviews of a hotel: score (1-10), text, pros, cons, trip type and nights. Mostly Persian text. Use after ft_search_hotels / ft_hotel to judge a hotel; total_reviews tells how many pages exist.
| Name | Type | Req | Description |
|---|---|---|---|
| full_text | boolean | – | Skip text clips and item caps; return full texts. |
| hotel_id | integer | yes | Hotel id, e.g. 24. |
| international | boolean | – | true for a hotel outside Iran (id from ft_find_hotel_place international). |
| limit | integer | – | Reviews per page. |
| order | string | – | Review order. |
| page | integer | – | Page number, 1-based. |
No output schema declared.
No examples provided.
ft_search_buses Search buses ~244
Buses between two cities on a date: company, terminals, departure, bus type, seats left, price per seat. A busy route lists over 100 buses (the raw reply is 1.5 MB): narrow with facility, sort or limit. price_toman is per seat. Rows carry `fare_source_code`; `search_id` is at the top. The site's seat map is not offered (it belongs to the booking flow). Searches are rate limited: do not repeat them in a loop.
| Name | Type | Req | Description |
|---|---|---|---|
| available_only | boolean | – | Hide sold-out buses. |
| date | string | yes | Departure date YYYY-MM-DD, e.g. '2026-10-14'. |
| destination | string | yes | 4-digit bus city id from ft_find_bus_city, e.g. '0001' (Tehran). |
| facility | – | – | Keep only buses with this facility, e.g. 'vip'. |
| limit | integer | – | Max buses. |
| origin | string | yes | 4-digit bus city id from ft_find_bus_city, e.g. '0001' (Tehran). |
| sort | string | – | Order of the results. |
No output schema declared.
No examples provided.
ft_search_flights Search flights ~555
Search flights for a date: every flight with times, airline (airline_fa: Persian name), seats left, price and fare_source_code. price_toman is one adult's fare (taxes included), total_toman the whole party. Round trip (return_date): `flights` are outbound options (total_toman = cheapest round trip with that outbound), `return_flights` the returns for the cheapest outbound (`return_for` is its key; pass another key as outbound_key + search_id for its returns). Filters apply to the outbound leg. Rate limited: page with search_id, never search again. Next: ft_flight_details(fare_source_code); ft_flight_calendar finds the cheapest day first.
| Name | Type | Req | Description |
|---|---|---|---|
| adults | integer | – | Adults (12+). |
| airlines | – | – | Only these airline codes, e.g. ['W5', 'EP'] (codes appear in results). |
| cabin | string | – | Cabin class. |
| children | integer | – | Children (2-11). |
| date | string | yes | Gregorian date YYYY-MM-DD, e.g. '2026-10-23'. |
| depart_after | – | – | Local time HH:MM, e.g. '18:00'. |
| depart_before | – | – | Local time HH:MM, e.g. '18:00'. |
| destination | string | yes | IATA city code from ft_find_airport, e.g. 'THR' (covers IKA and THR), 'MHD', 'IST', 'DXB'. |
| direct_only | boolean | – | Only flights without a stop or connection. |
| infants | integer | – | Infants (under 2). |
| limit | integer | – | Flights per page. |
| max_price_toman | – | – | Highest fare in Toman (whole party). |
| origin | string | yes | IATA city code from ft_find_airport, e.g. 'THR' (covers IKA and THR), 'MHD', 'IST', 'DXB'. |
| outbound_key | – | – | Round trip: `key` of the chosen outbound flight, to list the return flights for it (needs search_id). |
| page | integer | – | Result page, 1-based. Pages above 1 need search_id. |
| return_date | – | – | Return date YYYY-MM-DD for a round trip, e.g. '2026-10-26'; omit for one-way. |
| search_id | – | – | searchId from an earlier result (valid about 15 minutes): pages and re-sorts without a new search. |
| sort | string | – | Order: lowest price, shortest trip, earliest departure. |
| ticket_type | – | – | Only charter or only system (scheduled) tickets. |
No output schema declared.
No examples provided.
ft_search_hotels Search hotels ~436
Priced hotels of a city (Iran) or region (abroad) for dates, one row per hotel with its cheapest room offer. Give city_id for Iran, or region_code + country_code with international=true. price_toman is the whole stay for one room (per_night_toman = price / nights); image is the cover photo. Next: ft_hotel(hotel_id) or ft_hotel_reviews. Rows with is_stay=true are apartments or villas: open them with ft_stay(property_id). rooms_left is given only when the site counts rooms. Captcha-limited hard per IP: search once, then filter and page; never loop.
| Name | Type | Req | Description |
|---|---|---|---|
| adults | integer | – | Adults in the (single) room. |
| check_in | string | yes | Gregorian date YYYY-MM-DD, e.g. '2026-10-21'. |
| check_out | string | yes | Gregorian date YYYY-MM-DD, e.g. '2026-10-21'. |
| children_ages | – | – | Ages (0-11) of the children, one entry each, e.g. [5, 8]. Omit for none. |
| city_id | – | – | Iranian city id from ft_find_hotel_place, e.g. 10 (Mashhad). |
| country_code | – | – | ISO country code of the DESTINATION for international, e.g. 'TR'. |
| international | boolean | – | true for a hotel outside Iran (id from ft_find_hotel_place international). |
| limit | integer | – | Hotels per page. |
| max_price_toman | – | – | Max price of the WHOLE stay in Toman, e.g. 30000000. |
| page | integer | – | Page number, 1-based. |
| refundable_only | boolean | – | Only offers with free cancellation. |
| region_code | – | – | Foreign region code from ft_find_hotel_place, e.g. '178267' (Istanbul). |
| sort | string | – | price = cheapest first, score = best guest score first. |
| stars | – | – | Only these star ratings, e.g. [4, 5]. |
No output schema declared.
No examples provided.
ft_search_stays Search villas and stays ~228
Villas, apartments and other private stays in Iran for dates, cheapest first. Give both dates (strongly advised: only properties free on the dates are listed and total_toman is filled) or none (base prices). price_per_night_toman and total_toman are Toman (the stay API is not in Rial like hotels). property_id feeds ft_stay (calendar, details, reviews). Prices change a lot by date.
| Name | Type | Req | Description |
|---|---|---|---|
| check_in | – | – | – |
| check_out | – | – | – |
| guests | integer | – | Number of guests. |
| limit | integer | – | Properties per page. |
| max_price_toman | – | – | Max price PER NIGHT in Toman, e.g. 5000000. |
| page | integer | – | Page number, 1-based. |
| region_code | – | – | Stay region code from ft_find_hotel_place `stay_regions`, e.g. '149' (Ramsar). Omit for all Iran. |
| sort | string | – | cheapest = lowest nightly price first. |
| type | – | – | Property type; omit for all types. |
No output schema declared.
No examples provided.
ft_search_trains Search trains ~269
Trains between two stations on a date: one row per train class (wagon) with price per adult and seats left. price_toman is per adult. Sales cover only about the next 16 days (no_result means outside it). Rows carry `fare_source_code` and `wagon_id`: pass them to ft_train_stops for stops and amenities. Other days: ft_train_calendar. Searches are rate limited by the site: do not repeat them in a loop.
| Name | Type | Req | Description |
|---|---|---|---|
| adults | integer | – | Adult passengers. |
| available_only | boolean | – | Hide classes with no free seats for this party. |
| children | integer | – | Children (2-12). |
| date | string | yes | Travel date YYYY-MM-DD, e.g. '2026-10-14'. Sales open ~16 days ahead. |
| destination | integer | yes | Train station code from ft_find_station, e.g. 1 (Tehran) or 191 (Mashhad). |
| infants | integer | – | Infants (under 2). |
| limit | integer | – | Max train classes. |
| origin | integer | yes | Train station code from ft_find_station, e.g. 1 (Tehran) or 191 (Mashhad). |
| sort | string | – | Order of the results. |
No output schema declared.
No examples provided.
ft_stay Stay details and calendar ~182
One villa / apartment: details (capacity, rooms, facilities, rules, host), the per-night price calendar with blocked days, and the review summary with the latest reviews. Calendar prices are Toman per night for that date (the base price in the details is only a reference). A day is available=false when the host blocked it or it is already reserved. The user books on flytoday.ir.
| Name | Type | Req | Description |
|---|---|---|---|
| from_date | – | – | First calendar day YYYY-MM-DD; default today. |
| full_text | boolean | – | Skip text clips and item caps; return full texts. |
| guests | integer | – | Number of guests (changes the price). |
| property_id | integer | yes | Property id from ft_search_stays, e.g. 3804. |
| to_date | – | – | Last calendar day; default 14 days after from_date, at most 45. |
No output schema declared.
No examples provided.
ft_train_calendar Train price calendar ~102
Cheapest train price per day for the next ~16 days, with sold-out days flagged. Use to pick a day; then ft_search_trains for that date.
| Name | Type | Req | Description |
|---|---|---|---|
| destination | integer | yes | Train station code from ft_find_station, e.g. 1 (Tehran) or 191 (Mashhad). |
| origin | integer | yes | Train station code from ft_find_station, e.g. 1 (Tehran) or 191 (Mashhad). |
No output schema declared.
No examples provided.
ft_train_stops Train stops ~89
Stops of one train with arrival and departure times, plus (with wagon_id) the class amenities and extra meals. Needs ids from a recent ft_search_trains result; they expire with the search.
| Name | Type | Req | Description |
|---|---|---|---|
| fare_source_code | string | yes | fare_source_code from a fresh ft_search_trains row. |
| wagon_id | – | – | wagon_id from the same row; adds the class amenities and meals. |
No output schema declared.
No examples provided.
ft_visa Visa prices and requirements ~131
Visa services of Flytoday: the country list with from-prices, or one country's prices, documents and process. Without country: every country with visa type, from_price (in price_currency, often USD or EUR, not Toman) and processing time. With country: price per visa type (foreign currency and Toman at Flytoday's rate), validity, processing time and documents. Schengen is one entry, 'schengen'.
| Name | Type | Req | Description |
|---|---|---|---|
| country | – | – | Country in English, Persian or slug, e.g. 'turkey', 'پاکستان', 'schengen'. Omit to list every country. |
No output schema declared.
No examples provided.
How do I install the Flytoday MCP server?
Flytoday runs locally as a PyPI package, launched with uvx flytoday-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 · flytoday-mcp
claude mcp add sepehr071-flytoday-mcp -- uvx flytoday-mcp
What is the Flytoday MCP server?
Flytoday is an MCP server listed in the public MCP registry as io.github.sepehr071/flytoday-mcp. Unofficial read-only Flytoday: Iranian and international flights, hotels, villas, trains, buses. This page covers its PyPI package (flytoday-mcp).
Is the Flytoday MCP server safe to use?
Flytoday scores 62 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 23 October 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 Flytoday MCP server expose?
Flytoday exposes 22 tools: ft_find_bus_city, ft_bus_calendar, ft_search_buses, ft_cip, ft_esim_plans, and 17 more. Their descriptions and schemas cost roughly 4,513 tokens of context every time the server is loaded.
Is the Flytoday MCP server still maintained?
Flytoday is still listed as active in the MCP registry. We last reached this channel on 23 October 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 Flytoday MCP server under?
Flytoday declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.