MCP Server
Endpoint: https://your-tenant.airspace.example/mcp
Authentication: OAuth 2.1 (claude.ai / Claude Desktop custom connectors — sign in with your staff account) or a tenant API key sent as Authorization: Bearer <key> / X-API-Key header (see API Keys)
Overview
Airspace exposes a system-wide Model Context Protocol server so AI agents — Claude, Claude Code, or any MCP-compatible client — can inspect and manage your airline conversationally. The maintenance module is available today: file and disposition defects, browse part health, and create MEL definitions with their penalties and trigger scenarios. More modules will join the same connector over time.
Every action is attributed in the technical logbook and audit records — to the staff member who signed in (OAuth) or to the API key's creator. Operational consequences are identical to the backoffice: deferring a defect activates the MEL and its SimBrief penalties, NO-GO grounds the aircraft, and staff Discord announcements fire as usual.
Connecting
claude.ai and Claude Desktop
Custom connectors don't support manual bearer tokens — they use OAuth, and no API key is needed:
- In Claude, add a custom connector with the URL
https://your-tenant.airspace.example/mcp. - Claude discovers the tenant's OAuth server and registers itself automatically.
- A browser window opens on your tenant — sign in with your staff account and approve the agent.
Everything the agent does is attributed to the account that approved it. Revoke access anytime by denying the connector or logging the session out.
Claude Code and other MCP clients
Either run the same OAuth flow, or skip the browser with a tenant API key:
claude mcp add airspace --transport http \
https://your-tenant.airspace.example/mcp \
--header "Authorization: Bearer ask_your_key_here"
Authorization
Every tool action is authorized with the same permissions the backoffice screens require: the acting staff member — the account that approved the OAuth connector, or the API key's creator — must hold the matching ability (view or edit) for the module. A missing permission returns a clear error instead of performing the action.
Tools
Fleet
| Tool | Description |
|---|---|
list-fleet | The fleet structure: fleets, subfleets, and aircraft counts. Subfleet ids scope parts, schedules, and aircraft. |
upsert-fleet | Create or update a fleet (the family level, e.g. "Boeing 737") by name. |
upsert-sub-fleet | Create or update a subfleet (the variant level, e.g. "737-800") by name within a fleet. |
list-aircraft | The aircraft roster: registration, subfleet, location, base, hours/cycles, grounded state. |
upsert-aircraft | Create or update an aircraft by registration. Grounding is not managed here — it flows through the defect tools. |
Schedules & Network
| Tool | Description |
|---|---|
upsert-airport | Create or update an airport by ICAO. Airports must exist before schedules or aircraft locations reference them. |
airport-briefing | The operational briefing: runways with per-fleet performance configs, services, threats, stands, alternates, and notes. |
list-schedules | The route network: flight numbers, airport pairs, distance, activity window, fleet allowlists. |
create-schedule | Create a schedule. Airports by ICAO; the great-circle distance is computed automatically when omitted. |
update-schedule | Update flight numbers, airports, window, allowlists — or deactivate instead of deleting. |
Dispatch
| Tool | Description |
|---|---|
list-load-profiles | Weight-and-balance envelopes (OEW, MZFW, MTOW, MLW, max fuel) and OFP layouts. |
upsert-load-profile | Create or update a load profile by name. |
list-payload-profiles | The statistical distributions that generate realistic passenger, baggage, and cargo loads. |
upsert-payload-profile | Create or update a payload profile by name (mean/stddev pairs, weights in kg). |
Documentation
| Tool | Description |
|---|---|
list-docs | The table of contents of this documentation, grouped by section. |
read-doc | Read one documentation page as markdown. |
search-docs | Search the documentation and get ranked pages with excerpts. |
Maintenance
| Tool | Description |
|---|---|
aircraft-maintenance-status | Full picture of one aircraft: condition, open defects with MEL disposition and deadlines, part lifecycle health, scheduled-check forecast. |
list-defects | The triage board — filter by status (open, deferred, nogo, rectified) or aircraft. |
file-defect | File a squawk against a part. Lands open for staff triage, or disposes immediately with dispose: true. |
defer-defect | Defer an open defect under its best-matching MEL definition; escalates to grounding on a NO-GO match. |
ground-defect | Mark a defect NO-GO: bookings cancelled, dispatch blocked, staff notified. |
rectify-defect | Resolve a defect: lifts the MEL, fits a fresh part (lifecycle resets), returns the aircraft to service when nothing else holds it. |
list-maintenance-parts | The part catalog with installed/required counts, mean life, subfleet fitment, and open defect counts. |
upsert-maintenance-part | Create or update a part by code; queues the async fleet-wide instance resync. |
list-mel-definitions | MEL definitions with repair categories, NO-GO flags, dispatch penalties, and trigger scenarios. |
create-mel-definition | Create a MEL definition complete with penalties and part-failure trigger scenarios. |
Rate Limits
The MCP endpoint shares the private API's limit of 120 requests per minute per client.
More modules (bookings, flights, charter, career) will join the same connector over time — tell us which ones you want first.