uk-drone-airspace-mcp
It is an MCP server that answers whether and where you can legally fly a drone in the UK, combining airspace restrictions, NOTAMs, landowner rules, rights of way, parking, terrain, weather and drone rules on an interactive map.
Check airspace at a point or route: permanent restrictions (aerodrome FRZs, prohibited/restricted/danger areas, prison zones), with one-line verdicts, vertical limits and contacts.
Look up aerodrome zones by name or ICAO code, optionally with GeoJSON geometry.
Check NOTAMs: live temporary restrictions from the NATS bulletin, sorted by distance, with unplaceable NOTAMs listed separately.
Assess take-off sites: nearest rights of way, parking, landowner rules, access land, designations and council.
Find parking near a location from OpenStreetMap, nearest first.
Get pre-flight briefings: a GO/CAUTION/NO-GO status combining airspace, NOTAMs, weather, geomagnetic activity, paths, parking and drone rules.
Check terrain against the 120 m rule along a route or around a point.
Find and score take-off spots near a place, excluding banned areas and ranking by suitability.
Check drone rules for consumer drones: subcategory, separation, registration, Remote ID and CAA class-mark rules.
Check weather for drone flying: wind, gusts, rain, visibility, cloud, daylight and hourly flyability ratings.
Geocode UK places and report data status, sources, licences and attribution.
Render results on a map that Claude can show inline or open on a phone, including flight planning and DJI Fly/KML export.
Integrates with OpenStreetMap's Nominatim geocoding service to resolve place names and landmarks into coordinates for UK drone airspace queries.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@uk-drone-airspace-mcpCan I fly my drone at Hampstead Heath?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
FPV Airspace
An MCP server and map that answer the question existing airspace tools do not: can I legally take off and fly a drone here, in the UK?
Airspace restriction data is the easy half. A UK pilot actually has to clear three layers: permanent airspace restrictions (aerodrome flight restriction zones, prohibited, restricted and danger areas, the 400 m zone around every prison), temporary restrictions (NOTAMs), and landowner rules (National Trust byelaws, Forestry England permits, council park byelaws). The practical workaround pilots use is launching from a public right of way, where no landowner permission is needed. This server puts all of that behind thirteen tools that take a place name, a postcode or coordinates, covers England, Wales, Scotland and Northern Ireland, and draws it on a map that Claude can show inline or that you can open on a phone.
Informational only. It is not a substitute for a NATS pre-flight briefing, the CAA Drone Code, or permission from the landowner and any relevant aerodrome.
FPV Airspace is free and stays free: the data licences it relies on are for non-commercial use, so nothing is ever paywalled. If it saves you a wasted trip, a one-off donation, a monthly donation or sponsoring on GitHub helps cover the hosting and the weather API.
What it answers
Is this point inside a restriction?
check_location: a one-line verdict and every zone containing the point, prisons included.What is this aerodrome's zone?
get_aerodrome_zoneby name or ICAO code.Is there a NOTAM in force?
check_notamsfrom the live NATS bulletin; unplaceable NOTAMs are listed, never dropped.What does my route cross?
check_routefor waypoints or an area, with the distance at which each zone is entered.Can I take off here?
check_takeoff_site: nearest rights of way, parking, ground hazards, landowner rules, access land, designations and the council at the point.Where can I park?
find_parkingfrom OpenStreetMap, nearest first.Can I fly here, now?
preflight_briefing: one GO, CAUTION or NO-GO with reasons from airspace, NOTAMs, weather, geomagnetic activity, paths, parking and your drone's rules.What is the ground doing?
check_terrainagainst the 120 m rule along a route or around a point.Where could I take off?
find_takeoff_spotsscores and ranks candidate spots, and the map numbers them.What can my drone do?
check_drone_rules: subcategory, separation, registration and Remote ID under the CAA class mark rules.Is the weather flyable?
check_weather: hourly ratings against small-drone limits, plus the K-index.Show me. Every location answer on the hosted server carries a map that Claude renders inline.
Plus
geocodeandget_data_status. Arguments and examples for each are in docs/tools.md.
Related MCP server: dronelytics
Quick start
Requires Node 22.13 or newer (the server uses Node's built-in SQLite, so there is nothing native to compile). The package is a single bundled file with no dependencies, so npx starts it in a few seconds.
npx -y fpv-airspaceClaude Desktop
Add to claude_desktop_config.json (Settings > Developer > Edit Config):
{
"mcpServers": {
"fpv-airspace": {
"command": "npx",
"args": ["-y", "fpv-airspace"],
"env": {
"OS_NAMES_API_KEY": ""
}
}
}
}OS_NAMES_API_KEY is optional. Without it, geocoding uses OpenStreetMap's Nominatim. With a free key from the OS Data Hub, Ordnance Survey place names are tried first.
On first use the server downloads the current airspace data pack (about 195 MB compressed, 527 MB on disk: 1,069 restriction zones, 520,000 rights of way, 94,000 landowner and designation polygons, 586,000 parking spots and 816,000 ground hazards) into ~/.cache/fpv-airspace and reports progress on stderr. NOTAM and geocoding tools work while it downloads. The pack is refreshed automatically when a new AIRAC cycle is published.
Claude Desktop extension (.mcpb)
Each release also ships fpv-airspace.mcpb. Download it from the releases page, double-click it, and Claude Desktop installs the server with its bundled Node runtime and a settings panel for the optional OS Names key.
Claude Code
claude mcp add fpv-airspace -- npx -y fpv-airspaceRemote connector (Claude web, mobile and voice)
The same server runs as a Cloudflare Worker at https://fpv-airspace.fetchlabs.co.uk/mcp, which is what Claude's mobile app and voice mode can reach: they cannot run local servers, only remote connectors. Add it on claude.ai under Settings > Connectors > Add custom connector with that URL, and it becomes available on every surface, including voice conversations. Every tool accepts format: "brief", which returns two or three spoken-friendly sentences instead of the full report.
Running your own copy, on Cloudflare or as plain streamable HTTP or Docker, is covered in docs/hosting.md.
The map
Search a place, tap the map or use your position; every zone, NOTAM, path, landowner rule, parking spot and ground hazard in view is drawn with its own icon, a long press lists what is under a point, the card shows the coming week's flyability hour by hour, and the overlays load as you pan. Claude renders the same map inline with an answer. The Plan button turns the map into a flight planner: tap out waypoints with heights, see which sit inside a restriction, and download the plan as a DJI Fly waypoint mission (.kmz) or KML. The full guide, with the layers key and more screenshots, is in docs/map.md.
Documentation
Tools: every tool, its arguments and example prompts.
The map: search, layers, hazards, weather, the flight planner and DJI Fly export, the phone layout and URL parameters.
Data sources and attribution: where each layer comes from, how often it refreshes and under what licence.
Configuration: environment variables for the server and the build.
Hosting: Cloudflare Worker, streamable HTTP and Docker.
Development: tests, packs and releases.
Caveats
Rights-of-way data is an interpretation of each council's Definitive Map, not the Definitive Map itself, and covers England and Wales. Scotland has no definitive map (access rights apply instead, and core paths need a Spatial Hub key) and Northern Ireland has no definitive map either: only councils that publish their asserted paths appear, so absence there means unknown; the tools say so.
The landowner rule layer holds National Trust and Forestry England land and a hand-curated list of council byelaws and policies. The National Trust's open data omits its Northern Ireland properties. Absence of a rule never means take-off is permitted.
Ground hazards and parking come from OpenStreetMap and are as complete as the map is; they are advisory and never change a verdict.
Only zones reaching below 400 ft (120 m) count towards a verdict; higher zones are listed on request.
NOTAMs are read from the NATS contingency bulletin, which may lag the live system by up to an hour.
ICAO codes for aerodromes come from a curated table covering major and well-known UK aerodromes; lookups by name always work.
Licence
MIT. Data sources carry their own licences; see the licences folder.
Available Tools
13 toolscheck_drone_rulesCheck drone rulesARead-only
Which UK open category rules apply to a consumer drone: the subcategory (A1 fly over people, A2 near people, A3 far from people), the separation from uninvolved people, whether Flyer ID and Operator ID registration are needed, and when Remote ID is required. Give a model name from the catalogue (DJI, Autel, Potensic, HoverAir, Parrot) or a weight in grams plus any class mark. Rules follow the CAA class marks in force from 2026, including the EU C-class transition to the end of 2027.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date to assess the rules for; defaults to today. Use it to see what changes at a transition date. | |
| model | No | Drone make and model, e.g. "DJI Mini 4 Pro", "Air 3S", "Mavic 3 Classic". Looked up in a curated catalogue of consumer drones. | |
| format | No | text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations). | text |
| weight_g | No | Take-off weight in grams, when the model is not in the catalogue or a heavier battery is fitted. | |
| class_mark | No | Class mark printed on the aircraft: an EU C-class (C0 to C4), a UK class (UK0 to UK4), or none for a legacy aircraft. Overrides the catalogue value. | |
| has_camera | No | Whether the aircraft carries a camera. Defaults to the catalogue value, or true. | |
| a2_certificate | No | Whether the pilot holds an A2 Certificate of Competency (A2 CofC). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint and openWorldHint annotations, the description adds valuable behavioral context: rules are assessed under CAA class marks in force from 2026, with the EU C-class transition noted through end of 2027, and it states what the check returns. It stops short of describing edge cases like an unrecognized model with no weight supplied.
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, each with a distinct job: output summary, input invocation, and legal/date caveat. It is dense but not padded.
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?
The description covers the essential decision-making context: what results to expect, how to identify the drone, and the legal regime/date sensitivity. It is slightly incomplete about behavior when conflicting or no identification inputs are provided, but the schema descriptions cover parameter-level details.
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 the baseline is 3. The description adds slight extra meaning by naming the catalogue brands and by instructing that a weight plus class mark can substitute for a model lookup, but it does not need to re-document the parameters.
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 names the exact verb and resource: checking which UK open category rules apply to a consumer drone, and it enumerates the output categories (subcategory, separation, Flyer/Operator ID, Remote ID). This makes it distinct from the location, weather, preflight, and NOTAM sibling tools.
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 usage context is clear: it is for UK open category consumer drone rule questions, and no sibling tool overlaps with that function. It does not spell out exclusions such as non-UK or commercial operations, but the scenario is specific enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_locationCheck airspace at a locationARead-only
Check permanent UK airspace restrictions at a single point for drone flying. Give a place name or postcode, or lat/lon. Returns a one-line verdict, then every zone containing the point (aerodrome FRZ, prohibited, restricted, danger, other) with vertical limits, activation notes and contact, and any landowner rule at the point. Does not include NOTAMs; call check_notams for temporary restrictions.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (WGS84). | |
| lon | No | Longitude in decimal degrees (WGS84), negative west of Greenwich. | |
| place | No | Place name, postcode or landmark in the UK, e.g. "Tyndale Monument", "BS1 6QF", "Durdle Door". Use lat/lon instead if you already have coordinates. | |
| format | No | text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations). | text |
| include_above_120m | No | Also list zones whose lower limit is above 400 ft AGL and so do not affect flying below 120 m. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnly and openWorld, so the safety profile is covered. The description adds valuable behavioral context by detailing what the response contains (one-line verdict, zones with vertical limits, activation notes, contact, landowner rule) and explicitly excluding temporary restrictions. It does not go into rate limits or data source caveats, but the core behavior is well-disclosed.
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 dense but every sentence earns its place: scope, input method, output content, and exclusion with routing to the correct sibling. It opens with the primary purpose and ends with the key non-goal, with no filler or redundant restatement of the title.
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 there is no output schema, the description fully compensates by enumerating the return value structure. All parameters are documented in the schema, annotations cover side effects, and the sibling tool route is provided. Nothing needed for correct invocation 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 description coverage is 100%, so the schema already documents all five parameters. The description adds a small amount of guidance (place name or postcode, or lat/lon) and signals that the point is the subject of the check, but it does not substantially expand on the parameter meanings beyond what the schema already provides. 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?
The description clearly states a specific verb and resource: check permanent UK airspace restrictions at a single point for drone flying. It explicitly distinguishes itself from the sibling check_notams by stating what it does not cover, so an agent can tell it apart without opening the 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?
It gives explicit input guidance ('Give a place name or postcode, or lat/lon') and states the exclusion condition ('Does not include NOTAMs') with the alternative tool to call instead ('call check_notams for temporary restrictions'). This is clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_notamsCheck NOTAMs at a locationARead-only
Check temporary airspace restrictions (NOTAMs) from the NATS UK pre-flight bulletin that cover a point, optionally within a radius and on a given date. Returns each NOTAM with validity, radius and full text, sorted by distance. NOTAMs without usable coordinates are listed separately so nothing is silently dropped. Informational only; not a substitute for an official NATS pre-flight briefing.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (WGS84). | |
| lon | No | Longitude in decimal degrees (WGS84), negative west of Greenwich. | |
| date | No | ISO 8601 date or date-time (UTC assumed when no offset). Defaults to now. | |
| place | No | Place name, postcode or landmark in the UK, e.g. "Tyndale Monument", "BS1 6QF", "Durdle Door". Use lat/lon instead if you already have coordinates. | |
| format | No | text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations). | text |
| radius_km | No | Also list NOTAMs whose circle comes within this many km of the point. 0 = only NOTAMs covering the point. | |
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, but the description adds meaningful behavior: it states the tool is informational, not a substitute for official briefings, and that NOTAMs without usable coordinates are listed separately to avoid silently dropping them. This goes beyond the annotations and gives the agent a clearer sense of the tool's limitations and output handling.
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 concise (four sentences) and front-loaded with the core purpose, followed by key output details and a disclaimer. Every sentence adds value without redundancy or filler, making it efficient for an agent to parse.
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 the tool has 7 parameters, no required ones, and no output schema, the description does a good job covering the main output aspects: it lists return fields (validity, radius, full text), explains sorting, handles coordinate-less NOTAMs, and describes the format parameter options. It does not mention the max_results default or pagination, but these are minor gaps and the description is adequate for an agent to call the tool correctly.
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 86%, which is high, so the schema already documents most parameters. The description adds a little context, such as 'optionally within a radius and on a given date' mapping to radius_km and date, and explains the output is sorted by distance. However, it does not add significant new meaning beyond the schema, so it meets the baseline for high coverage.
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 a specific verb ('Check') and resource ('temporary airspace restrictions (NOTAMs) from the NATS UK pre-flight bulletin'), with clear scope: covering a point, optionally within a radius and on a given date. It also specifies output characteristics (sorted by distance, coordinate-less NOTAMs listed separately), which distinguishes it from sibling tools like check_route or check_location without needing to open 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?
The description gives context that it is informational and not a substitute for an official NATS pre-flight briefing, which implies a limitation but does not explicitly state when to use this tool versus alternatives like preflight_briefing or check_route. It lacks explicit exclusions or comparative guidance, so an agent must infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_routeCheck airspace along a route or areaARead-only
Check permanent airspace restrictions along a drone route or across an area. Give either waypoints (at least two; each a [lon, lat] pair or a place name) or an area (bbox [west, south, east, north] or a GeoJSON Polygon). Returns the zones crossed, deduplicated, with the distance along the route at which each is first entered. Place-name waypoints are geocoded; ambiguous names are returned for you to resolve. For ground elevation along the route call check_terrain.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Area to check instead of a route: { bbox: [w, s, e, n] } or a GeoJSON Polygon. | |
| format | No | text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations). | text |
| waypoints | No | Ordered route points: [lon, lat] pairs or place names. | |
| include_above_120m | No | Also list zones whose lower limit is above 400 ft AGL and so do not affect flying below 120 m. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, the description discloses the return shape (zones crossed, deduplicated, first-entry distance) and the geocoding behavior, including that ambiguous place names are returned for the agent to resolve. It also scopes itself to 'permanent' restrictions, an important behavioral boundary. No contradiction with annotations.
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 with no wasted words: purpose, input requirements, and output/alternative behavior. It front-loads the most decision-relevant information and keeps the input format summary tight.
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 read-only tool with four parameters, no output schema, and rich structured parameter descriptions, the description provides what is missing: accepted input forms, geocoding edge behavior, the deduplicated return value, and a pointer to check_terrain. An agent has enough context to invoke it correctly.
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 input schema already documents all parameters (100% coverage), so the baseline is a 3. The description adds practical meaning by explaining that place-name waypoints are geocoded and that ambiguous names are surfaced for resolution, plus the 'at least two' constraint. It does not duplicate schema field details, and the meaning it adds is genuinely useful.
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 opens with a specific verb and resource: 'Check permanent airspace restrictions along a drone route or across an area.' This immediately distinguishes the tool from siblings like check_terrain (elevation) and communicates the route/area scope. It is not a tautology and an agent can tell what it does without opening the 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 gives clear usage instructions: provide at least two waypoints or an area, with accepted formats for each. It also names an alternative for a different need ('For ground elevation along the route call check_terrain'). However, it does not explicitly contrast with other relevant siblings such as check_notams or check_location, so the guidance is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_takeoff_siteCheck a take-off siteARead-only
Assess a potential drone take-off spot in the UK. Returns the airspace verdict at the point, the nearest public rights of way (footpaths, bridleways, byways) with distances and the responsible council, and any known landowner rule (National Trust and Forestry England land, council byelaw or policy) at the point, plus open access land and SSSI or National Park designations as context. A public right of way is a strong indicator of legal access; rights-of-way data covers England and Wales only.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (WGS84). | |
| lon | No | Longitude in decimal degrees (WGS84), negative west of Greenwich. | |
| drone | No | Optional drone make and model; adds the open category subcategory and the separation from people that applies to it. | |
| place | No | Place name, postcode or landmark in the UK, e.g. "Tyndale Monument", "BS1 6QF", "Durdle Door". Use lat/lon instead if you already have coordinates. | |
| format | No | text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations). | text |
| max_paths | No | Maximum rights of way to return. | |
| a2_certificate | No | Whether the pilot holds an A2 Certificate of Competency (A2 CofC). | |
| search_radius_m | No | Search radius for rights of way in metres. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true. The description goes beyond those by adding useful behavioral context: it discloses the geographic coverage limitation for rights-of-way data and the interpretive note that a public right of way is a strong indicator of legal access. No contradiction with annotations exists.
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 a single dense paragraph with no filler. Every clause earns its place: the core action, the list of returned categories, and the crucial coverage caveat about England and Wales. It is front-loaded with the main purpose and keeps the most important interpretive guidance at the end.
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 explaining return values, and it does so by listing all major result components: airspace verdict, public rights of way with distances, responsible council, landowner rules, open access land, and designations. It also covers a key limitation (data coverage) and a practical interpretation (RoW as legal access indicator). For a read-only assessment tool with 8 optional params, this is fully adequate.
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 parameters are already documented in the input schema (lat/lon bounds, place examples, format enum, max_paths, a2_certificate, search_radius_m). The description adds some context around the returned data but does not enrich parameter meaning beyond the schema, so the 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?
The description opens with a specific verb and object: 'Assess a potential drone take-off spot in the UK.' It then enumerates the concrete outputs (airspace verdict, rights of way, council, landowner rules, designations), making the tool's function unmistakable and clearly distinct from siblings like check_drone_rules or check_location.
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 conveys clear context for use by explaining that a public right of way is a strong indicator of legal access and noting that rights-of-way data covers England and Wales only. It does not explicitly name sibling alternatives or state when to use another tool, but the scope and limitations are clear enough for an agent to decide when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_terrainCheck terrainARead-only
Ground elevation along a route or around a point, against the 120 m rule: the 120 m limit is measured from the surface below the aircraft, so rising ground eats into clearance and falling ground can put a fixed-height flight above the limit. Give waypoints (2 to 50 places or [lon, lat] pairs) for a profile, or a place / lat and lon for the ground within radius_m. Reports the highest and lowest ground relative to the take-off point and warnings for the planned flight height. Elevations from Copernicus GLO-90 via Open-Meteo, about 90 m resolution.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (WGS84). | |
| lon | No | Longitude in decimal degrees (WGS84), negative west of Greenwich. | |
| place | No | Place name, postcode or landmark in the UK, e.g. "Tyndale Monument", "BS1 6QF", "Durdle Door". Use lat/lon instead if you already have coordinates. | |
| format | No | text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations). | text |
| step_m | No | Route mode: sample spacing along the route. | |
| radius_m | No | Point mode: radius of ground to sample. | |
| waypoints | No | Route as place names or [lon, lat] pairs. | |
| flight_height_m | No | Planned height above the take-off point. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds valuable context: data source (Copernicus GLO-90 via Open-Meteo), resolution (~90 m), and what is reported (highest/lowest ground, warnings). This goes beyond the annotations without contradiction.
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 dense but each sentence adds value: purpose, modes, output, and data source. It is front-loaded with the main rule and mode explanation, and avoids unnecessary 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?
Without an output schema, the description adequately describes the return content (highest/lowest ground, warnings) and the context of the rule. It does not cover error handling or edge cases, but for a read-only terrain tool, it is reasonably complete.
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% with per-parameter descriptions. The description enhances this by explaining the route vs. point distinction and how parameters like waypoints and radius_m are used. It also clarifies lat/lon vs. place usage, adding semantic value beyond the schema.
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 a specific purpose: checking ground elevation against the 120 m rule, with two clear modes (route and point). It distinguishes itself from sibling tools like check_route or check_location by focusing on terrain elevation relative to flight height.
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 explicitly describes the two input modes (waypoints for profile, place/lat/lon for radius) and explains the context of the 120 m rule. It does not name alternative tools or exclusion criteria, but the usage context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_weatherCheck drone weatherARead-only
Drone-relevant weather forecast for a UK point from Open-Meteo: wind and gusts at 10 m, wind at 120 m, rain, visibility, cloud, temperature and daylight hours, with an advisory flyability rating per hour (good / caution / poor against typical small-drone limits). Give a place or lat/lon and optionally a date or date-time; defaults to the next few hours.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (WGS84). | |
| lon | No | Longitude in decimal degrees (WGS84), negative west of Greenwich. | |
| date | No | ISO 8601 date or date-time (UTC assumed when no offset). Defaults to now. | |
| hours | No | How many hours to report from the start time (a bare date reports daylight hours). | |
| place | No | Place name, postcode or landmark in the UK, e.g. "Tyndale Monument", "BS1 6QF", "Durdle Door". Use lat/lon instead if you already have coordinates. | |
| format | No | text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations). | text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and open-world; the description adds that it returns an hourly advisory rating (good/caution/poor), names the data source, and states the default time window. This goes beyond the structured hints without contradicting them.
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-load the core data and rating, then give input instructions and defaults. No filler or repetition of schema details.
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 six parameters and no output schema, the description covers input selection, default behavior, and what the report contains (weather variables plus categorical rating). It doesn't state units or JSON shape, but the format parameter and schema fill most of the remaining gap.
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?
All six parameters have schema descriptions (100% coverage), so the baseline is 3. The description adds meaningful aggregation by telling the agent to provide 'a place or lat/lon' and that the date defaults to the next few hours, clarifying the implicit location requirement not captured by optional fields.
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 opens with a specific outcome ('Drone-relevant weather forecast for a UK point') and enumerates the exact variables and the flyability rating. This clearly separates it from sibling check_* tools focused on NOTAMs, terrain, airspace, or rules.
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 actionable invocation guidance: supply a place or lat/lon and optionally a date or date-time, with a default of the next few hours. It does not explicitly name alternatives such as preflight_briefing for a full briefing, but the weather-specific context makes the intended use unmistakable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_parkingFind parking near a locationARead-only
Find car parks, laybys and rest areas near a UK point, nearest first, from OpenStreetMap. Give a place name or postcode, or lat/lon. Returns name, type, distance, fee and access notes. Publicly accessible places only unless include_private is set.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (WGS84). | |
| lon | No | Longitude in decimal degrees (WGS84), negative west of Greenwich. | |
| place | No | Place name, postcode or landmark in the UK, e.g. "Tyndale Monument", "BS1 6QF", "Durdle Door". Use lat/lon instead if you already have coordinates. | |
| format | No | text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations). | text |
| max_results | No | ||
| include_private | No | Also list parking tagged private, customers-only or permit-only. | |
| search_radius_m | No | Search radius in metres. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds meaningful behavioral detail beyond that: results are sorted nearest first, sourced from OpenStreetMap, and limited to publicly accessible places unless include_private is set.
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 tight sentences with no filler. It front-loads the core function, then covers input, output, and filtering behavior efficiently.
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 read-only lookup tool with rich schema documentation and no output schema, the description covers the essential facts: data source, geographic scope, input modes, output content, sorting, and the privacy filter. Minor gaps like error behavior or data freshness are not critical given the openWorldHint and readOnly annotations.
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 86%, so the schema already documents most parameters including lat/lon, place, format, include_private, and search_radius_m. The description summarizes the input options and output fields, adding a little useful framing, but does not need to compensate heavily for missing parameter documentation.
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 a specific verb and resource: find car parks, laybys, and rest areas from OpenStreetMap near a UK point. It also lists the returned fields (name, type, distance, fee, access notes), making the tool's purpose unmistakable and distinct from sibling tools like find_takeoff_spots or geocode.
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 clear input guidance: use a place name, postcode, or lat/lon, and explains the public-access default with include_private as an override. It does not explicitly name alternatives or say when not to use this tool, so it falls just short of full usage-routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_takeoff_spotsFind take-off spotsARead-only
Suggest take-off spots near a UK place: points on public rights of way, next to parking or on open access land, scored on the data held here. Spots inside prohibited, restricted, prison or aerodrome zones, or on land where take-off is banned, are excluded; NOTAMs, danger areas, landowner rules and ground hazards lower the score, paths, parking and access land raise it. Returns the best few with reasons and coordinates, and the map shows them numbered. A right of way is a right to pass, not to stop and fly.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (WGS84). | |
| lon | No | Longitude in decimal degrees (WGS84), negative west of Greenwich. | |
| drone | No | Drone make and model, e.g. "DJI Mini 4 Pro", "Air 3S", "Mavic 3 Classic". Looked up in a curated catalogue of consumer drones. | |
| place | No | Place name, postcode or landmark in the UK, e.g. "Tyndale Monument", "BS1 6QF", "Durdle Door". Use lat/lon instead if you already have coordinates. | |
| format | No | text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations). | text |
| max_results | No | ||
| a2_certificate | No | Whether the pilot holds an A2 Certificate of Competency (A2 CofC). | |
| search_radius_m | No | How far around the point to look. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavioral detail beyond the readOnlyHint and openWorldHint annotations: excluded zone types, positive and negative scoring factors, output contents (best few with reasons and coordinates), map numbering, and the legal caveat about rights of way. No contradiction with annotations.
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?
Four sentences, with the main purpose front-loaded in the first sentence. Every sentence contributes: criteria, scoring behavior, output and display, and legal context. No filler or repetition.
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 read-only suggestion tool with no output schema, the description covers purpose, exclusions, scoring logic, and return shape well enough to call it correctly. It leaves some details implicit, such as how a2_certificate influences scoring, but schema and annotations cover parameter and safety aspects.
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 high (~88%), so the schema already documents most parameters accurately. The description adds little parameter-specific meaning beyond the 'near a UK place' framing; notably, the undocumented max_results parameter is not explained in the description either.
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 ('Suggest'), resource ('take-off spots near a UK place'), and concrete criteria (public rights of way, parking, open access land). The focus on scored suggestions with exclusions clearly distinguishes it from siblings like check_takeoff_site and find_parking.
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 usage context is clearly implied: call this when the user wants suggested take-off spots near a UK location rather than a check on a specific site. However, it never explicitly names alternatives or states when not to use it, leaving the agent to infer the choice between this and check_takeoff_site or preflight_briefing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geocodeGeocode a UK placeARead-only
Resolve a UK place name, postcode or landmark to coordinates. Use it to disambiguate before running a check when a name could match several places. Returns up to ten candidates with source and confidence.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Place name, postcode or landmark. | |
| format | No | text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations). | text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only safety profile (readOnlyHint=true). The description adds useful behavioral context beyond annotations by stating that it returns 'up to ten candidates with source and confidence,' which signals that results may be ambiguous and includes provenance. No conflicting behavior is described.
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 with no filler: the first states the core function, the second gives usage guidance, and the third describes the return shape. Every sentence earns its place and the most essential information is front-loaded.
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?
Without an output schema, the description compensates by describing the return value ('up to ten candidates with source and confidence'). It also covers the main trigger case and the query types. Minor gaps like coordinate system or how limit interacts with results are not critical for a read-only tool, so the definition is nearly complete.
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 67%, so the baseline is 3. The description adds a little meaning by noting 'up to ten candidates,' which hints at the limit parameter, but it does not explain the format parameter or the query semantics beyond what the schema already states. It neither significantly boosts nor hurts parameter understanding.
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 a specific verb ('Resolve'), a clear resource ('a UK place name, postcode or landmark'), and an outcome ('to coordinates'). It also differentiates from sibling tools by framing its role as a disambiguation step before checks, making its purpose distinct from the check-oriented sibling tools.
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 explicitly tells the agent when to use the tool: 'Use it to disambiguate before running a check when a name could match several places.' It does not name alternative tools or state explicit when-not-to-use conditions, but the context is clear enough to route an agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_aerodrome_zoneLook up an aerodrome FRZARead-only
Look up a UK aerodrome's flight restriction zone (FRZ) by name or ICAO code, e.g. "Bristol" or "EGGD". Returns the zone centre, approximate radius, bounding box, vertical limits and contact, optionally with the GeoJSON geometry.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations). | text |
| aerodrome | Yes | Aerodrome name or four-letter ICAO code (UK codes start with EG). | |
| include_geojson | No | Include the full zone geometry as GeoJSON. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include readOnlyHint=true, and the description adds useful behavioral detail by enumerating the returned data: zone centre, approximate radius, bounding box, vertical limits, and contact, plus optional GeoJSON geometry. There is no contradiction with the annotations, and for a read-only lookup this is strong disclosure.
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 two sentences with no filler. It front-loads the operation and scope, then summarizes the return content and the optional output format. The example is compact and directly useful.
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 usefully enumerates the returned fields and clarifies the optional geometry. Combined with the detailed input schema and readOnlyHint, an agent has what it needs to call the tool correctly. A minor gap is the lack of explicit when-to-use guidance relative to sibling tools.
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 the schema already documents all three parameters. The description contributes a useful example ('Bristol' or 'EGGD') and mentions the optional GeoJSON output, but it does not need to compensate for missing schema 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?
The description opens with a specific verb and resource: 'Look up a UK aerodrome's flight restriction zone (FRZ)' and clearly states the accepted inputs, name or ICAO code. This distinguishes it from the sibling tools that cover NOTAMs, drone rules, weather, and other aviation lookups.
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 context is clear: this tool is for retrieving an aerodrome's FRZ data. However, the description does not explicitly state when to choose this tool over sibling tools such as check_notams or check_drone_rules, nor does it give any exclusions. The usage guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_data_statusData status and attributionARead-only
Report the data behind this server: airspace pack version and AIRAC effective dates, when each source was fetched and its licence, NOTAM bulletin cache age, geocoding providers available, runtime details, and the attribution strings that must be shown to users.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations). | text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's 'Report' aligns with that. It adds valuable context beyond annotations by detailing what the report covers (licences, attribution strings that must be shown to users, cache age), which informs the agent of expected content and any compliance obligations. No contradiction.
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 a single, information-dense sentence that front-loads the core purpose ('Report the data behind this server') and then efficiently lists all key elements without redundancy. Every clause adds substance; no filler or repetition.
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 the absence of an output schema, the description compensates well by listing the major report categories. It does not specify the exact structure or return format, but the 'format' parameter controls that, and the listed items give the agent a solid expectation. Some minor gaps exist, such as error handling or size limits, but these are low-risk for a read-only status 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 coverage is 100% and the single parameter 'format' is fully documented with enum descriptions (text, json, brief) and a default. The tool description does not add any parameter-level information, but the schema already carries the full semantic burden, so a 3 baseline 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 states a clear, specific action: 'Report the data behind this server' and enumerates concrete content (airspace pack version, AIRAC dates, source fetch times, licences, NOTAM cache age, geocoding providers, runtime details, attribution strings). This distinguishes it functionally from siblings like check_weather or geocode, making its purpose unambiguous.
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 implies usage for data provenance and attribution queries but never explicitly states when to use this tool versus siblings. It does not mention alternatives or exclusions. The 'brief' format hint for voice conversations is a light usage clue, but overall guidance is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preflight_briefingPre-flight briefingARead-only
One pre-flight briefing for a UK take-off point and time: a GO, CAUTION or NO-GO status with reasons, from the airspace verdict, live NOTAMs, the weather window, geomagnetic activity, rights of way, parking and, when a drone is named, its open category rules. A live source that cannot be read is reported as an outage, never assumed clear. Give a place or lat/lon; date and hours set the flying window (default now, 3 hours). Set frz_permission when an aerodrome has already agreed the flight.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (WGS84). | |
| lon | No | Longitude in decimal degrees (WGS84), negative west of Greenwich. | |
| date | No | ISO 8601 date or date-time (UTC assumed when no offset). Defaults to now. | |
| drone | No | Drone make and model, e.g. "DJI Mini 4 Pro", "Air 3S", "Mavic 3 Classic". Looked up in a curated catalogue of consumer drones. | |
| hours | No | Length of the flying window from the start time. | |
| place | No | Place name, postcode or landmark in the UK, e.g. "Tyndale Monument", "BS1 6QF", "Durdle Door". Use lat/lon instead if you already have coordinates. | |
| format | No | text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations). | text |
| max_paths | No | Rights of way to list. | |
| a2_certificate | No | Whether the pilot holds an A2 Certificate of Competency (A2 CofC). | |
| frz_permission | No | The aerodrome has given permission to fly in its FRZ; the FRZ then counts as caution rather than no-go. | |
| notam_radius_km | No | Also list NOTAMs within this distance. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds valuable behavior beyond that: unreadable live sources are reported as outages rather than assumed clear, and drone rules are only included when a drone is named. This is exactly the kind of non-obvious behavior an agent needs to know.
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 two sentences with no filler. The first sentence front-loads the status output and the list of inputs, and the second adds the outage policy and key invocation guidance. Every clause earns its place.
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 an 11-parameter aggregate tool with no output schema, the description covers purpose, input selection, default behavior, and the shape of the result (GO/CAUTION/NO-GO with reasons). It does not spell out the full output structure, but the format parameter in the schema covers the text/json/brief variants, so the description is reasonably complete.
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 baseline is 3. The description adds extra meaning: it explains the place-or-lat/lon choice, the default 3-hour window, and the condition for frz_permission. This goes beyond the schema's field-level descriptions and helps an agent select the right combination of parameters.
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 a specific deliverable: a one-shot pre-flight briefing with a GO, CAUTION or NO-GO status and reasons. It enumerates the data sources (airspace, NOTAMs, weather, geomagnetic, rights of way, parking, drone rules), which clearly distinguishes it from the single-purpose sibling tools like check_weather or check_notams.
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 clear invocation context: provide a UK place or lat/lon, set the date and hours for the flying window, and optionally set frz_permission when an aerodrome has agreed. It does not explicitly say 'use this instead of individual check tools', but the aggregate nature of the briefing makes that implicit, and no misleading exclusions are present.
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.
13 tool updates
v0.3.0- Added
check_drone_rules - Changed
check_location2 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"text for a readable report (default), json for structured output."New value: +"text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations)." - changed
Input schema / properties / format / enumPrevious value: -[ - "text", - "json" -]New value: +[ + "text", + "json", + "brief" +]
- Changed
check_notams2 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"text for a readable report (default), json for structured output."New value: +"text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations)." - changed
Input schema / properties / format / enumPrevious value: -[ - "text", - "json" -]New value: +[ + "text", + "json", + "brief" +]
- Changed
check_route2 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"text for a readable report (default), json for structured output."New value: +"text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations)." - changed
Input schema / properties / format / enumPrevious value: -[ - "text", - "json" -]New value: +[ + "text", + "json", + "brief" +]
- Changed
check_takeoff_site4 fields changed- added
Input schema / properties / a2_certificateAdded value: +{ + "default": false, + "description": "Whether the pilot holds an A2 Certificate of Competency (A2 CofC).", + "type": "boolean" +} - added
Input schema / properties / droneAdded value: +{ + "description": "Optional drone make and model; adds the open category subcategory and the separation from people that applies to it.", + "maxLength": 80, + "minLength": 1, + "type": "string" +} - changed
Input schema / properties / format / descriptionPrevious value: -"text for a readable report (default), json for structured output."New value: +"text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations)." - changed
Input schema / properties / format / enumPrevious value: -[ - "text", - "json" -]New value: +[ + "text", + "json", + "brief" +]
- Added
check_terrain - Added
check_weather - Added
find_parking - Added
find_takeoff_spots - Changed
geocode2 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"text for a readable report (default), json for structured output."New value: +"text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations)." - changed
Input schema / properties / format / enumPrevious value: -[ - "text", - "json" -]New value: +[ + "text", + "json", + "brief" +]
- Changed
get_aerodrome_zone2 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"text for a readable report (default), json for structured output."New value: +"text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations)." - changed
Input schema / properties / format / enumPrevious value: -[ - "text", - "json" -]New value: +[ + "text", + "json", + "brief" +]
- Changed
get_data_status2 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"text for a readable report (default), json for structured output."New value: +"text for a readable report (default), json for structured output, brief for two or three spoken-friendly sentences (use in voice conversations)." - changed
Input schema / properties / format / enumPrevious value: -[ - "text", - "json" -]New value: +[ + "text", + "json", + "brief" +]
- Added
preflight_briefing
7 tool updates
v0.1.0- First observed
check_location - First observed
check_notams - First observed
check_route - First observed
check_takeoff_site - First observed
geocode - First observed
get_aerodrome_zone - First observed
get_data_status
TDQS
Scored across 13 tools
Each tool targets a distinct concern: permanent restrictions, NOTAMs, routes, takeoff sites, terrain, weather, rules, parking, suggestions, geocoding, and data status. No two tools overlap in purpose; even similar ones like check_location and check_takeoff_site differ in scope (airspace vs. access + designations).
The vast majority follow a verb_noun pattern (check_*, find_*, get_*, geocode). 'preflight_briefing' breaks the pattern as a noun phrase, but it is the only deviation and is still clear and intuitive.
13 tools is well-scoped for a drone airspace assistant, covering all essential operations without redundancy or bloat. Each tool serves a specific need, from preflight to parking.
The surface is highly complete for UK drone operations: permanent and temporary restrictions, takeoff site evaluation, route checks, terrain, weather, drone rules, parking, and suggestions. A minor gap is no direct NOTAM check along a route, but the point-based NOTAM with radius can be sampled. Overall no critical dead ends.
Maintenance
Related MCP Connectors
Search UK planning applications, entities, datasets, and conservation areas
Free no-key search over CASA, FAA, EASA & ICAO aviation regulations. By Deepsky (deepskyai.com).
Plan canal routes on Great Britain's waterways: lock-aware timing, live closures, boat-fit checks.
Search UK companies, land registry prices, charities, OS locations, and traffic data
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables flight planning and aviation operations through intelligent airport resolution, great-circle route calculation, and aircraft performance estimation. Supports 28,000+ airports worldwide and 190+ aircraft types for comprehensive flight planning via natural language.464MIT
- AlicenseAqualityCmaintenanceUS drone airspace intelligence and mission planning. 24 MCP tools: check airspace restrictions across 11 FAA data layers, plan grid/orbit/corridor surveys, validate Part 107 compliance, generate pre-flight briefings, and export to KML/GPX/QGC/Litchi/WPML.253MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI clients to read live drone status, telemetry, and parameters, and to control drone operations with scoped permissions, confirmation steps, and audit trails.MIT
- AlicenseAqualityBmaintenanceEnables pilots to assemble a preflight briefing per 14 CFR ยง91.103 by fetching weather, airport info, aircraft performance, fuel estimates, alternates, and NOTAMs.686 npm1AGPL 3.0