SkyAccess
Server Details
Search 5,000+ live empty leg flights, get charter estimates and booking links. Free, no API key.
- Status
- Healthy
- Uptime
- 99.9% over 25 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- sky-access/skyaccess-mcp
- GitHub Stars
- 0
- Server Listing
- skyaccess-mcp
TDQS
Scored across 5 tools
Each tool targets a distinct action or resource: search empty legs, get a specific flight, get charter estimates, hand off a booking link, or submit a booking request. The descriptions explicitly clarify the boundary between booking_handoff and request_booking, preventing confusion.
Most tools follow a verb_noun pattern (search_empty_legs, get_flight, get_charter_estimate, request_booking), but booking_handoff uses a noun_noun pattern, creating a minor inconsistency. Still, all names are snake_case and readable.
With 5 tools, the set is well-scoped for the domain of private jet empty legs and charter bookings. Each tool serves a clear purpose without redundancy or excessive granularity.
The tools cover the core lifecycle: searching empty legs, retrieving flight details, estimating charter prices, handing off booking links, and submitting booking requests. Minor gaps exist, such as tracking the status of a request or modifying an enquiry, but these are not critical for the stated purpose.
Available Tools
5 toolsbooking_handoffGet the booking link for an empty leg flightARead-onlyIdempotentInspect
Return the SkyAccess booking page link for a specific empty leg flight, for handing to a customer so they can review and book it themselves. This is read-only: it does not create, hold, modify or cancel any booking, and no booking exists until the customer completes it on the page. Use request_booking instead if the customer wants a specialist to contact them.
| Name | Required | Description | Default |
|---|---|---|---|
| flightId | Yes | The flight id returned in the `flightId` field of a search_empty_legs result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description still adds real context beyond that: no booking is created, held, modified or cancelled, and 'no booking exists until the customer completes it on the page' — a non-obvious state guarantee an agent would otherwise have to guess.
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 sentences, front-loaded with the primary action, then the safety/state clarification, then the routing rule. No redundant restatement of the title or schema.
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?
Although there is no output schema, the description states what is returned (the booking page link) and clarifies that nothing is persisted server-side, which is exactly the ambiguity an agent would face. Nothing needed to invoke or interpret the result is missing.
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% and the single flightId is fully documented in the schema, including its provenance from search_empty_legs results. The description adds no parameter-level detail, so the schema carries the load — baseline 3.
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 ('Return the SkyAccess booking page link for a specific empty leg flight') and immediately scopes it to handing off to a customer. This is clearly distinguishable from search_empty_legs (find flights) and request_booking (specialist contact) among the siblings.
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 the positive condition (customer will review and book themselves) and an explicit alternative with its triggering condition: 'Use request_booking instead if the customer wants a specialist to contact them.' Nothing 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.
get_charter_estimateGet charter price estimateARead-onlyIdempotentInspect
Returns an indicative price range (min/max USD) for a private charter flight between two locations. Optionally filter by aircraft category and passenger count. When no category is specified, returns estimates for each aircraftCategory value that suits the route and group size.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | Yes | Departure city or airport code (required), e.g. "Los Angeles" or "KLAX" | |
| passengers | No | Number of passengers (used to filter suitable aircraft) | |
| destination | Yes | Arrival city or airport code (required), e.g. "New York" or "KJFK" | |
| aircraftCategory | No | Preferred aircraft category. One of: TURBOPROP, LIGHT_JET, MID_SIZE_JET, SUPER_MID_SIZE_JET, HEAVY_JET, ULTRA_LONG_RANGE, VERY_LIGHT_JET. When omitted, estimates for all suitable categories are returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds value beyond them by disclosing the default branch behavior (all suitable categories returned when category is omitted) and the nature of the output (indicative min/max USD, not a firm quote).
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, front-loaded with the purpose and output format. The final sentence duplicates the aircraftCategory schema description ('When omitted, estimates for all suitable categories are returned'), which is the only wasted clause.
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?
With no output schema, the description correctly carries the return-value burden by naming the min/max USD range. Combined with 100% schema coverage and full annotation safety hints, an agent has what it needs; only the sibling-routing question remains unaddressed.
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 all four parameters are already documented, including the enum values and the 'used to filter suitable aircraft' note on passengers. The description only echoes the aircraftCategory omission behavior already stated in the schema, adding no new syntax or format guidance.
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 (returns a price estimate for a private charter flight) plus the exact return shape (min/max USD range between two locations). The purpose is unmistakable, though it does not explicitly contrast itself with siblings like get_flight or search_empty_legs.
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 explains the optional aircraftCategory filter and what happens when it is omitted, which is useful context for calling it. However, it never says when to reach for this tool instead of get_flight, request_booking, or search_empty_legs, leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_flightGet a single empty leg flight by idARead-onlyIdempotentInspect
Look up one empty leg flight by its id and return the same fields search_empty_legs returns: route, departure time, all-in price, aircraft type, available seats, amenities and a booking link. Use this to re-check a specific flight you found earlier. Returns a not-available message if the flight is no longer published.
| Name | Required | Description | Default |
|---|---|---|---|
| flightId | Yes | The flight id returned in the `flightId` field of a search_empty_legs result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly and idempotent annotations, the description discloses the exact response shape (same fields as search_empty_legs, with an enumerated list) and an important edge case: a not-available message if the flight is no longer published. This gives the agent useful expectations about the call's behavior.
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 description is three sentences, front-loads the core action, and every sentence earns its place: what it does, the returned fields, when to use it, and the stale-flight edge case. There is no redundant wording.
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 simple single-parameter read-only lookup with no output schema, the description is complete: it specifies the input, the return fields, the usage context, and the not-found behavior. Sibling tools and annotations cover the remaining context.
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?
The schema already documents flightId fully, including its source in the search_empty_legs result, and schema coverage is 100%. The description adds no new parameter meaning beyond saying 'by its id,' so the baseline score of 3 is appropriate.
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 uses a specific verb ('Look up') and a precise resource ('one empty leg flight by its id'), and it clearly distinguishes this tool from the sibling search_empty_legs by noting it returns the same fields for a single known flight. The purpose is unambiguous and differentiated.
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?
The description gives a clear use case: re-check a specific flight found earlier via search_empty_legs. It implies the alternative (use search_empty_legs for finding flights) by naming that sibling, though it does not explicitly state when not to use this tool or list all alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_bookingRequest a charter bookingAInspect
Submit a charter flight booking request to SkyAccess. This sends the traveler's name, email and trip details (route, date, passengers and any notes) to SkyAccess so a specialist can follow up. A SkyAccess specialist will follow up with the requester by email shortly to confirm availability and pricing. No payment is taken and no booking is created: this only starts the enquiry. Privacy policy: https://skyaccess.com/privacy
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full name of the requester (required) | |
| Yes | Email address of the requester (required). A specialist will reply here. | ||
| notes | No | Optional notes or special requests (e.g. catering, pet, preferred aircraft) | |
| origin | Yes | Departure city or airport (required), e.g. "Los Angeles" or "LAX" | |
| passengers | Yes | Number of passengers (required) | |
| destination | Yes | Arrival city or airport (required), e.g. "Miami" or "KMIA" | |
| departureDate | Yes | Departure date in ISO format (required), e.g. "2026-08-15" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false), the description adds real behavioral context: no payment is taken, no booking is created, and the follow-up happens by email. It does not mention that resubmitting creates a duplicate enquiry, which the idempotentHint=false implies.
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 action, then the consequence, then the no-payment/no-booking caveat usefully placed before the privacy link. Tightly written, though the privacy URL sentence is boilerplate that adds little for tool selection.
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?
With no output schema, the description carries the burden of telling the agent what happens after the call, and it does so (email follow-up from a specialist). Minor gap: it does not indicate what the tool returns or any handling of invalid/duplicate submissions.
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% and every field already documents itself, including examples and required status. The description only re-enumerates the same fields (route, date, passengers, notes) without adding format or validation guidance, so baseline 3 is appropriate.
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 ('Submit a charter flight booking request to SkyAccess') and immediately delimits scope: this starts an enquiry and does not create a booking. That distinguishes it from a true booking/handoff tool such as booking_handoff without needing to open either schema.
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?
The description clarifies that this is an enquiry-only path and that a specialist follows up, which implies when to use it. However it never names an alternative sibling (e.g. get_charter_estimate for pricing, booking_handoff for confirmed bookings) or states a when-not condition, so routing is left largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_empty_legsSearch empty leg flightsARead-onlyIdempotentInspect
Search available empty leg flights by origin, destination, date range, passenger count, and an optional max_price ceiling. Returns up to 5 matching flights with route, departure time, price, aircraft type, available seats, and a booking link. Use this to find discounted private jet availability for a specific route. A flight with price: null has no published price (shown on SkyAccess as "Contact for price"). Such flights are included even when max_price is set, because their price is unknown; they are not confirmed to be within the cap.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | Departure city or airport code (e.g. "Los Angeles" or "LAX") | |
| max_price | No | Optional price ceiling in USD (all-in customer price). Legs priced above this figure are excluded. Legs with no published price (price: null, shown as "Contact for price") are still included because their price is unknown; they are not confirmed to be within the cap. | |
| passengers | No | Number of passengers | |
| destination | No | Arrival city or airport code (e.g. "Las Vegas" or "KLAS") | |
| departureDateTo | No | Latest departure date in ISO format | |
| departureDateFrom | No | Earliest departure date in ISO format (e.g. "2026-07-10") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's job is to add behavioral detail, which it does: up to 5 results returned, the exact result fields, and the non-obvious rule that price:null legs bypass the max_price cap. That null-price edge case is real behavior an agent could not predict from the schema alone.
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 sentences, well front-loaded: purpose and filters first, return shape second, usage context third, with the max_price caveat last. Slightly redundant with the schema's max_price text, but nothing is wasteful.
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?
With no output schema, the description supplies the return fields and the result cap, and it discloses the one surprising behavioral rule (unknown-priced legs included despite max_price). Combined with annotations covering safety, an agent has everything needed to call and interpret this 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% and every parameter is documented in the schema, including the max_price null-price caveat, which the description largely restates. Baseline 3 is appropriate since the schema carries the parameter burden and the description adds no new syntax or format detail.
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 (search empty leg flights) plus the exact filter set. The siblings (get_flight, request_booking, booking_handoff, get_charter_estimate) are retrieval or booking tools, so the search-and-filter purpose is unambiguous without opening any schema.
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?
"Use this to find discounted private jet availability for a specific route" implies the context of use, but there is no explicit when-not-to-use, no mention of when to prefer get_flight or get_charter_estimate, and no stated prerequisites. Adequate but leaves routing to inference.
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.
3 tool updates
- Changed
get_charter_estimate2 fields changed- changed
Input schema / properties / destination / descriptionPrevious value: -"Arrival city or airport code (required) — e.g. \"New York\" or \"KJFK\""New value: +"Arrival city or airport code (required), e.g. \"New York\" or \"KJFK\"" - changed
Input schema / properties / origin / descriptionPrevious value: -"Departure city or airport code (required) — e.g. \"Los Angeles\" or \"KLAX\""New value: +"Departure city or airport code (required), e.g. \"Los Angeles\" or \"KLAX\""
- Changed
request_booking4 fields changed- changed
Input schema / properties / departureDate / descriptionPrevious value: -"Departure date in ISO format (required) — e.g. \"2026-08-15\""New value: +"Departure date in ISO format (required), e.g. \"2026-08-15\"" - changed
Input schema / properties / destination / descriptionPrevious value: -"Arrival city or airport (required) — e.g. \"Miami\" or \"KMIA\""New value: +"Arrival city or airport (required), e.g. \"Miami\" or \"KMIA\"" - changed
Input schema / properties / email / descriptionPrevious value: -"Email address of the requester (required) — a specialist will reply here"New value: +"Email address of the requester (required). A specialist will reply here." - changed
Input schema / properties / origin / descriptionPrevious value: -"Departure city or airport (required) — e.g. \"Los Angeles\" or \"LAX\""New value: +"Departure city or airport (required), e.g. \"Los Angeles\" or \"LAX\""
- Changed
search_empty_legs1 field changed- changed
Input schema / properties / max_price / descriptionPrevious value: -"Optional price ceiling in USD (all-in customer price). Only legs at or below this figure are returned. One exception, by design: legs whose operator has not confirmed they will honour a published price are still returned regardless of the cap, with `price: null` — describe those as \"Contact for price\" and do NOT tell the customer they fall within the cap, because their price is unknown, not low."New value: +"Optional price ceiling in USD (all-in customer price). Legs priced above this figure are excluded. Legs with no published price (price: null, shown as \"Contact for price\") are still included because their price is unknown; they are not confirmed to be within the cap."
5 tool updates
- First observed
booking_handoff - First observed
get_charter_estimate - First observed
get_flight - First observed
request_booking - First observed
search_empty_legs
Related MCP Connectors
Instant private jet charter price estimates and confirmed live quotes, worldwide.
Ferry-flight price estimates + aircraft, airport, FAA-registry, route & live-flight data.
Live flight prices and working booking links for AI agents and travel apps.
Flight search & booking for AI agents. 400+ airlines, $20-50 cheaper than OTAs.
Related MCP Servers
- AlicenseAqualityCmaintenanceGive AI agents the ability to search private jets, compare aircraft, get quotes, and submit charter requests through natural language.714 npmMIT
- AlicenseNot gradedqualityDmaintenanceProvides real-time flight status, airport weather, delays, cheap flight deals, and TSA wait times without requiring an API key.14 npmMIT

FlightClawofficial
AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search, price-track, and book flights across ~300 airlines, with traveler profiles, preferences, and email fare-drop alerts.75MIT- FlicenseAqualityAmaintenanceAgent-native travel search. 5 second flights & hotels $50 cheaper. Free forever for the first 1000 Stargazers.142,068-
Glama MCP Gateway
Add one secure layer between your agents and this server.