Czartery MCP
Server Details
Polish charter flight search across Rainbow, Itaka and TUI operators, prices in PLN.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Three of the four tools are clearly separated by provider name (itaka/rainbow/tui), which is an obvious selector. The only soft boundary is within the Rainbow pair: rainbow_search_charters returns destinations while rainbow_search_outbound returns day-level flights, and the fact that the destination list key is named `flights` invites confusion. The descriptions do explain the distinction and explicitly cross-reference each other, so it is workable.
All four follow the same {provider}_search_{scope} pattern with a consistent snake_case style and shared 'search' verb. The only deviation is the noun choice: three use `charters` while rainbow_search_outbound uses `outbound` to signal its drill-down role, which is a minor but sensible deviation rather than noise.
Four tools for a narrow domain (charter-seat search across three Polish operators, with one drill-down) is well-scoped and each tool earns its place. The set is slightly asymmetric — Rainbow gets two tools while Itaka and TUI get one each — but no tool feels redundant or filler.
The surface is search-only and uneven: Rainbow offers both destination-level and day-by-day flight data, Itaka returns full itineraries in one call but no destination-browsing mode, and TUI gives only destination prices with no per-flight detail. Agents can route around this, but there is no uniform way to compare the same granularity across all three providers, and no pagination/sorting controls surfaced as tools.
Available Tools
4 toolsitaka_search_chartersItaka charter itinerariesAInspect
Charter flight itineraries from Itaka.pl between a Polish origin and a charter destination: each itinerary carries full legs (airports, dates, times, carrier, stops), per-person and total price, and a direct booking URL. Prices are charter seat prices in PLN. Only supports Itaka's fixed airport list — the error message lists valid codes when one is unsupported. Result shape: { source, fetchedAt, query, search_url, route, total_pages, current_page, total_rates, count, itineraries: [...] } — the list key is itineraries. Each: { trip_type, price_total, price_per_person, currency, booking_url, outbound, return_flight }, where outbound/return_flight are { departure: { city, airport_code, date, time, carrier, flight_number }, arrival: { city, airport_code, date, time }, duration_minutes, stops } and return_flight is null on a one-way.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-indexed result page. Default 1. | |
| adults | No | Number of adults. Default 2. | |
| origin | Yes | Polish origin IATA code (WAW, KRK, GDN, KTW, WRO, POZ, RZE, SZZ, BZG, LCJ, LUZ, RDO, SZY, IEG). | |
| sort_by | No | Result ordering. Default Itaka's own. | |
| no_cache | No | Force a fresh fetch and bypass this server's result cache. Default false. | |
| destination | Yes | Destination IATA code from Itaka's charter network, e.g. AYT, HER, FNC. | |
| flight_type | No | Trip type. Default returnTicket. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| query | Yes | |
| route | Yes | |
| source | Yes | |
| fetchedAt | Yes | |
| search_url | Yes | |
| itineraries | Yes | |
| total_pages | Yes | |
| total_rates | Yes | |
| current_page | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does a reasonable job: it discloses currency (PLN charter seat prices), the error behavior for unsupported airport codes, and the one-way case where `return_flight` is null. It omits auth/permission requirements, rate limits, and how stale the cached results may be — the `no_cache` flag hints at a cache but the description never explains its lifetime or default freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well front-loaded, but more than half the text enumerates the result envelope and per-itinerary fields — precisely what the existing output schema already specifies. That block is redundant bulk that pushes the actual guidance (currency, airport-list errors) into the middle. Trimming the return-shape recap would make this far easier to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter search tool with a full output schema and no annotations, the description covers purpose, scope, currency, and the one-way edge case — enough to call it correctly. The missing pieces (cache freshness, rate limits) are minor given how much the schema and output schema already carry.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents origin, destination, page, adults, sort_by, flight_type and no_cache. The description adds only marginal semantics beyond that — PLN pricing context and the fact that `return_flight` is null for one-way trips (which clarifies flight_type). Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+provider: 'Charter flight itineraries from Itaka.pl between a Polish origin and a charter destination.' Naming the provider and the Polish-origin scope cleanly separates it from the rainbow_* and tui_* siblings without needing their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the provider name and the airport-list constraint ('Only supports Itaka's fixed airport list — the error message lists valid codes'), which tells the agent what happens on a bad input. However, it never states when to prefer this over rainbow_search_charters or tui_search_charters, nor any prerequisite or exclusion beyond the airport list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rainbow_search_chartersRainbow charter destinationsAInspect
Charter flight destinations sold by Rainbow Tours (biletyczarterowe.r.pl) matching optional destination/origin/date filters: per destination you get the country, region, nearest departure date, baggage allowance and the lowest per-person price. Prices are charter seat prices in PLN. Use rainbow_search_outbound for day-by-day flights to one destination. Result shape: { source, fetchedAt, query, search_url, count, flights: [...], price_range: { min, max } } — the list key is flights, but each entry is a DESTINATION, not a single flight: { destination, destination_iata, country, region, departure_date, price_per_person, currency, baggage_kg }.
| Name | Required | Description | Default |
|---|---|---|---|
| adults | No | Number of adults. Default 2. | |
| one_way | No | Search one-way charters instead of returns. Default false. | |
| origins | No | Polish origin IATA codes to filter by, e.g. ['WAW','KTW']. Omit for all. | |
| no_cache | No | Force a fresh fetch and bypass this server's result cache. Default false. | |
| departure_to | No | Latest departure date, YYYY-MM-DD. | |
| destinations | No | Destination IATA codes to filter by, e.g. ['AYT','HRG']. Omit for all. | |
| departure_from | No | Earliest departure date, YYYY-MM-DD. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| query | Yes | |
| source | Yes | |
| flights | Yes | |
| fetchedAt | Yes | |
| search_url | Yes | |
| price_range | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and mostly succeeds: it discloses the data source, the currency (PLN), that prices are per-person charter seat prices, and what fields each result carries. It doesn't discuss rate limits, freshness/caching guarantees (the no_cache param exists but its implications aren't elaborated), or whether results are paginated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the disambiguation sentence early. The trailing result-shape block is somewhat long and partly redundant given an output schema exists, but it is purposeful because the key naming is genuinely confusing ('flights' holds destinations).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is technically redundant, but the description highlights the one trap (the `flights` key contains destination records, not flights) that an agent would otherwise get wrong. Coverage of filtering semantics and the no-annotation safety profile is adequate for a read-only search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the seven parameters is already documented in the schema. The description only loosely restates 'optional destination/origin/date filters' and adds the per-person price semantics; it adds little syntax or meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('charter flight destinations sold by Rainbow Tours') plus the source site, and explicitly distinguishes itself from the sibling rainbow_search_outbound. An agent can tell instantly that this is a destination-level charter search, not a day-by-day flight search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative rainbow_search_outbound and the condition that selects it ('day-by-day flights to one destination'). It does not address the two competitor-source siblings (itaka_search_charters, tui_search_charters) or when to prefer Rainbow over them, so routing across providers is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rainbow_search_outboundRainbow outbound flights per dayAInspect
Day-by-day outbound charter flights to ONE Rainbow destination in a date window: per day the cheapest price and every flight with origin, departure time, airline, flight number, baggage and per-person/total price. Prices are charter seat prices in PLN. Get destination codes from rainbow_search_charters. Result shape: { source, fetchedAt, query, search_url, destination, period, days_with_flights, days: [...] } — the list key is days, one entry per calendar day: { date, cheapest_price, flights: [{ origin, destination, departure_time, price_per_person, total_price, currency, airline_code, flight_number, cabin_baggage_kg, checked_baggage_kg, meals_included }] }. A day with no flights is simply absent.
| Name | Required | Description | Default |
|---|---|---|---|
| adults | No | Number of adults. Default 2. | |
| date_to | Yes | Window end, YYYY-MM-DD. | |
| origins | No | Polish origin IATA codes to filter by. Omit for all. | |
| no_cache | No | Force a fresh fetch and bypass this server's result cache. Default false. | |
| date_from | Yes | Window start, YYYY-MM-DD. | |
| destination | Yes | Destination IATA code, e.g. AYT. |
Output Schema
| Name | Required | Description |
|---|---|---|
| days | Yes | |
| query | Yes | |
| period | Yes | |
| source | Yes | |
| fetchedAt | Yes | |
| search_url | Yes | |
| destination | Yes | |
| days_with_flights | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it declares the currency and semantics of prices ('charter seat prices in PLN') and the important edge case that a day with no flights is simply absent rather than an empty entry. It omits any mention of caching behavior or rate limits (caching is only implied via the no_cache schema field).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose statement, which is good, but the second half reproduces the full result shape field-by-field even though an output schema already exists and covers exactly that. That block is largely redundant and dilutes the useful content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter, read-only search with a full output schema, the description covers purpose, currency semantics, prerequisites, and the absent-day edge case. The only gap is operational guidance (date-window limits, whether no_cache is worth using when the caller needs freshness), which is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3; the description adds value beyond the schema by specifying that `destination` must be a Rainbow destination code obtained from rainbow_search_charters, which is not derivable from the schema's 'Destination IATA code, e.g. AYT' text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Day-by-day outbound charter flights to ONE Rainbow destination in a date window', including the exact per-day payload (cheapest price plus every flight with origin, time, airline, baggage, price). It is clearly distinguished from the sibling rainbow_search_charters, which is named as the source of destination codes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete prerequisite: 'Get destination codes from rainbow_search_charters', which routes the agent correctly within the sibling set. It does not state explicit when-not conditions (e.g. when to prefer returning or one-way tools, or limits on window size), so it falls short of the top mark.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tui_search_chartersTUI charter destinationsAInspect
Charter destinations sold on TUI.pl for a stay-length window, with per-person and total prices: filter by origin/destination airports and trip duration in days. Prices are charter seat prices in PLN. Result shape: { source, fetchedAt, query, search_url, passengers, duration, count, destinations: [...] } — the list key is destinations. Each: { destination_name, airport_code, country, per_person_price, total_price, currency }. There are no per-flight times here; TUI only publishes a destination price.
| Name | Required | Description | Default |
|---|---|---|---|
| adults | No | Number of adults. Default 2. | |
| no_cache | No | Force a fresh fetch and bypass this server's result cache. Default false. | |
| duration_to | No | Maximum stay length in days. Default 8. | |
| duration_from | No | Minimum stay length in days. Default 6. | |
| departure_airports | No | Origin IATA codes to filter by, e.g. ['WAW']. Omit for all. | |
| destination_airports | No | Destination IATA codes to filter by, e.g. ['AYT']. Omit for all. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| query | Yes | |
| source | Yes | |
| duration | Yes | |
| fetchedAt | Yes | |
| passengers | Yes | |
| search_url | Yes | |
| destinations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden well: it discloses that prices are charter seat prices denominated in PLN, that results are destination-level only (no per-flight times), and that TUI is the sole source. It omits any mention of rate limits, caching behavior beyond the schema's no_cache param, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: the first front-loads what it returns and how to filter, the second qualifies the pricing and its limitation, and the third enumerates shape. No preamble or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 optional params, full schema coverage, and the presence of an output schema, the description is largely complete: currency, price semantics, and the absence of flight times are all covered. Its only redundancy is restating the full result shape, which the output schema already provides, and it says nothing about caching behavior beyond the flag.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the 3 baseline is met by structure alone. The description adds meaning on top: the duration window is characterized as a stay length, and the origin/destination airport filters are tied to charter pricing semantics (per-person vs total), which clarifies how adults interacts with the returned prices.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific resource and scope: charter destinations sold on TUI.pl, filtered by origin/destination airports and stay length, with per-person and total prices. The TUI.pl qualifier implicitly distinguishes it from the itaka_ and rainbow_ siblings, though no sibling is named directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for use — stay-length window, airport filters, charter seat pricing — and explicitly excludes a use case: 'There are no per-flight times here; TUI only publishes a destination price,' which routes an agent needing flight-level detail elsewhere. No explicit when/when-not or named alternative is given, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
itaka_search_charters - First observed
rainbow_search_charters - First observed
rainbow_search_outbound - First observed
tui_search_charters
Related MCP Connectors
Realtime package holiday and charter flight prices from Finland. Inventory not on Google Flights.
Realtime package holiday and charter flight prices from Sweden. Inventory not on Google Flights.
Realtime package holiday and charter flight prices from Norway. Inventory not on Google Flights.
Realtime package holiday and charter flight prices from Denmark. Inventory not on Google Flights.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to search for cheap flights, InPost parcel lockers, and hotels via the Perun.search API for trip planning in Poland.MIT
- AlicenseAqualityDmaintenanceSearch flights using Google Flights data via SerpAPI, covering all airlines including low-cost carriers like Ryanair and easyJet.2MIT
- AlicenseNot gradedqualityCmaintenanceFlight search for AI agents: flexible-date cheapest round-trips with a good-price verdict from historical data. Hosted remote MCP, free, no key.3MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to compare and find the cheapest domestic and international flights, hotels, villas, trains and buses in Iran, with exact Toman prices, fare and cancellation rules, baggage details, seats left and hotel reviews. Also covers CIP lounges, eSIM plans, visas and tours, and is read-only, so it never books, holds seats or pays.137 PyPI2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.