{"id":"77155cc1-4d3b-40b9-a28c-b8f78166eb0b","entityType":"agent","slug":"clawhub-chrischall-flightaware-mcp","name":"flightaware-mcp","canonicalUrl":"https://www.xpersona.co/agent/clawhub-chrischall-flightaware-mcp","canonicalPath":"/agent/clawhub-chrischall-flightaware-mcp","generatedAt":"2026-10-10T07:40:39.371Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T02:52:36.604Z","emptyReason":null},"description":"Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases like \"where is flight UAL123\", \"track flight\", \"JFK departures\", \"is my flight delayed\", \"flights near\", \"who owns tail number N12345\", or \"set up a flight alert\". Requires the @chrischall/flightaware-mcp package installed and the flightaware server registered (see Setup), plus an AeroAPI key. Skill: flightaware-mcp Owner: chrischall Summary: Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.8K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:flightaware-mcp","sourceUrl":"https://clawhub.ai/chrischall/flightaware-mcp","homepage":"https://clawhub.ai/chrischall/skills/flightaware-mcp","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/chrischall/flightaware-mcp","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/chrischall/skills/flightaware-mcp","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":65,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/t"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T02:52:36.604Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T02:52:36.604Z","emptyReason":null},"stars":null,"forks":null,"downloads":1755,"packageName":null,"latestVersion":"1.3.1","tractionLabel":"1.8K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T02:52:36.604Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T02:52:36.604Z","lastCrawledAt":"2026-10-10T02:52:36.604Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T02:52:36.604Z","lastVerifiedAt":null,"highlights":[{"version":"1.3.1","createdAt":"2026-10-09T23:24:12.647Z","changelog":"- Default flight map output directory changed to `~/Downloads/flightaware-mcp`. - Updated alert write confirmation logic: confirmation prompt is now skipped if `MCP_CONFIRM_ELICITATION=off` is set. - Removed skill-card.md file.","fileCount":3,"zipByteSize":4349},{"version":"1.3.0","createdAt":"2026-10-07T13:36:21.222Z","changelog":"- Removed the file skill-card.md. - No changes to features, usage, or configuration. - Documentation and core functionality remain unchanged.","fileCount":3,"zipByteSize":4360},{"version":"1.2.4","createdAt":"2026-10-05T02:48:04.206Z","changelog":"- Removed the sample file \"skill-card.md\". - No user-facing features or functional changes. - Documentation and setup instructions remain unchanged.","fileCount":3,"zipByteSize":4345},{"version":"1.2.3","createdAt":"2026-10-03T01:41:43.718Z","changelog":"- Removed the file: skill-card.md - No changes to code or functionality - Documentation and usage remain the same","fileCount":3,"zipByteSize":4337},{"version":"1.2.2","createdAt":"2026-09-30T16:56:55.281Z","changelog":"- Removed the sample file skill-card.md. - No changes to functionality or documentation except file cleanup. - Version now at 1.2.2.","fileCount":3,"zipByteSize":4345},{"version":"1.2.1","createdAt":"2026-09-25T15:54:28.816Z","changelog":"- Removed the file: skill-card.md - No changes to functionality or configuration were made in this version.","fileCount":3,"zipByteSize":4333},{"version":"1.2.0","createdAt":"2026-09-24T15:10:10.474Z","changelog":"- Improved explanation of alert write tool confirmation flow; now clarifies that a confirmation prompt is used where supported, or else a `confirmToken` flow is used. - Minor update to the description of alert write tool receipts to include previews and confirmation tokens. - Removed the file: skill-card.md.","fileCount":3,"zipByteSize":4409},{"version":"1.1.2","createdAt":"2026-09-23T21:38:22.147Z","changelog":"- Removed the file: skill-card.md - No changes to features, tools, or configuration. - Documentation and functionality remain as previously described.","fileCount":3,"zipByteSize":4334}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:flightaware-mcp","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-flightaware-mcp/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-flightaware-mcp/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-flightaware-mcp/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-flightaware-mcp/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-flightaware-mcp/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-flightaware-mcp/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T07:40:39.369Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-flightaware-mcp/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-flightaware-mcp/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-flightaware-mcp/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-flightaware-mcp/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T02:52:36.604Z","emptyReason":null},"readme":"Skill: flightaware-mcp\n\nOwner: chrischall\n\nSummary: Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases like \"where is flight UAL123\", \"track flight\", \"JFK departures\", \"is my flight delayed\", \"flights near\", \"who owns tail number N12345\", or \"set up a flight alert\". Requires the @chrischall/flightaware-mcp package installed and the flightaware server registered (see Setup), plus an AeroAPI key.\n\nTags: latest:1.3.1\n\nVersion history:\n\nv1.3.1 | 2026-10-09T23:24:12.647Z | auto\n\n- Default flight map output directory changed to `~/Downloads/flightaware-mcp`.\n- Updated alert write confirmation logic: confirmation prompt is now skipped if `MCP_CONFIRM_ELICITATION=off` is set.\n- Removed skill-card.md file.\n\nv1.3.0 | 2026-10-07T13:36:21.222Z | auto\n\n- Removed the file skill-card.md.\n- No changes to features, usage, or configuration.\n- Documentation and core functionality remain unchanged.\n\nv1.2.4 | 2026-10-05T02:48:04.206Z | auto\n\n- Removed the sample file \"skill-card.md\".\n- No user-facing features or functional changes. \n- Documentation and setup instructions remain unchanged.\n\nv1.2.3 | 2026-10-03T01:41:43.718Z | auto\n\n- Removed the file: skill-card.md\n- No changes to code or functionality\n- Documentation and usage remain the same\n\nv1.2.2 | 2026-09-30T16:56:55.281Z | auto\n\n- Removed the sample file skill-card.md.\n- No changes to functionality or documentation except file cleanup.\n- Version now at 1.2.2.\n\nv1.2.1 | 2026-09-25T15:54:28.816Z | auto\n\n- Removed the file: skill-card.md\n- No changes to functionality or configuration were made in this version.\n\nv1.2.0 | 2026-09-24T15:10:10.474Z | auto\n\n- Improved explanation of alert write tool confirmation flow; now clarifies that a confirmation prompt is used where supported, or else a `confirmToken` flow is used.\n- Minor update to the description of alert write tool receipts to include previews and confirmation tokens.\n- Removed the file: skill-card.md.\n\nv1.1.2 | 2026-09-23T21:38:22.147Z | auto\n\n- Removed the file: skill-card.md\n- No changes to features, tools, or configuration.\n- Documentation and functionality remain as previously described.\n\nv1.1.1 | 2026-09-23T15:41:37.823Z | auto\n\n- Removed the file: skill-card.md\n- No feature or functionality changes in this version.\n\nv1.1.0 | 2026-09-20T02:49:00.699Z | auto\n\n- Removed the skill-card.md file.\n- No changes to features or functionality.\n\nv1.0.0 | 2026-09-17T23:35:49.375Z | auto\n\nInitial release.\n\n- First public version of the skill.\n- Supports live flight tracking and aviation data via FlightAware AeroAPI through MCP.\n- Enables users to track flights, view airport boards, check flight status, find operator and aircraft info, see weather, and manage flight alerts.\n- Requires installation of the @chrischall/flightaware-mcp package and an AeroAPI key.\n- Includes full setup and environment variable documentation.\n- Removes the redundant skill-card.md file.\n\nv0.5.3 | 2026-09-15T19:24:47.947Z | auto\n\n- Removed the skill-card.md file from the repository.\n- No changes to functionality, configuration, or documentation aside from file removal.\n\nv0.5.2 | 2026-09-10T17:49:07.077Z | auto\n\n- Removed the file: skill-card.md\n- No changes to functionality or configuration.\n- Documentation and setup instructions remain unchanged.\n\nv0.5.1 | 2026-09-05T00:50:43.327Z | auto\n\n- Added documentation on the optional `view` parameter for most read tools, with details on \"compact\" and \"full\" response shapes.\n- Clarified how media stripping works in \"compact\" mode and which tools support the `view` parameter.\n- Explained why certain tools do not accept `view`, including `fa_get_flight_map`, `fa_healthcheck`, and alert write tools.\n- Removed the sample skill-card.md file.\n\nv0.5.0 | 2026-09-04T22:19:52.816Z | auto\n\n- Removed the file `skill-card.md`.  \n- No other significant changes to functionality or documentation.\n\nv0.4.0 | 2026-09-02T00:16:43.415Z | auto\n\n- Removed the sample file skill-card.md.\n- No changes to functionality or documentation aside from file removal.\n\nv0.3.5 | 2026-08-28T11:34:16.583Z | auto\n\n- Removed the file: skill-card.md\n- No other changes to documentation or functionality.\n\nv0.3.4 | 2026-07-27T21:15:15.474Z | auto\n\n- Removed the \"skill-card.md\" file from the project.\n- No functional changes to the skill; this update is limited to documentation cleanup.\n\nv0.3.3 | 2026-07-27T02:56:29.715Z | auto\n\n- Removed the file: skill-card.md\n- No functionality or usage changes; documentation remains the same.\n\nv0.3.2 | 2026-07-14T10:56:34.288Z | auto\n\n- Removed the sample file skill-card.md. \n- No user-facing or functional changes to the skill itself.\n\nv0.3.1 | 2026-07-07T23:41:51.524Z | auto\n\n- Removed the sample skill-card.md file.\n- No changes to code or functionality; documentation cleanup only.\n\nv0.3.0 | 2026-06-25T04:17:38.533Z | auto\n\nflightaware-mcp 0.3.0\n\n- Added new environment variables for configurable caching: `AEROAPI_CACHE_TTL` (live data) and `AEROAPI_STATIC_CACHE_TTL` (reference data).\n- Expanded tools with new endpoints: `fa_search_flight_positions`, `fa_count_flights`, `fa_get_airport_flight_counts`, `fa_get_airport_routes`, `fa_resolve_flight`, and `fa_resolve_airport`.\n- Updated documentation to describe caching options and new tools.\n- Removed the `skill-card.md` file.\n\nv0.2.0 | 2026-06-24T13:39:09.821Z | auto\n\n- Added comprehensive documentation and usage instructions in SKILL.md\n- Clarified features: live flight tracking, airport info, airline/aircraft lookup, and flight alerts management via FlightAware AeroAPI (v4)\n- Listed supported query types and tool functions (flights, airports, operators, schedules, alerts)\n- Provided detailed setup instructions for both npx and source installations\n- Explained required environment variables and AeroAPI key prerequisites\n- Outlined dry-run behavior and API quota considerations\n\nArchive index:\n\nArchive v1.3.1: 3 files, 4349 bytes\n\nFiles: skill-card.md (1928b), SKILL.md (6371b), _meta.json (134b)\n\nFile v1.3.1:SKILL.md\n\n---\nname: flightaware-mcp\ndescription: Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases like \"where is flight UAL123\", \"track flight\", \"JFK departures\", \"is my flight delayed\", \"flights near\", \"who owns tail number N12345\", or \"set up a flight alert\". Requires the @chrischall/flightaware-mcp package installed and the flightaware server registered (see Setup), plus an AeroAPI key.\n---\n\n# flightaware-mcp\n\nMCP server for **FlightAware AeroAPI** (v4) — live flight tracking, airport boards, operators, schedules, aircraft, and flight alerts, exposed to Claude over stdio.\n\n- **npm:** [npmjs.com/package/@chrischall/flightaware-mcp](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- **Source:** [github.com/chrischall/flightaware-mcp](https://github.com/chrischall/flightaware-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"flightaware\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/flightaware-mcp\"],\n      \"env\": {\n        \"AEROAPI_API_KEY\": \"your-aeroapi-key-here\"\n      }\n    }\n  }\n}\n```\n\nGet a key at [flightaware.com/aeroapi/portal](https://www.flightaware.com/aeroapi/portal/). The free **Personal** tier (500 calls/month) is enough to get started; AeroAPI bills per query.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/flightaware-mcp\ncd flightaware-mcp\nnpm install && npm run build\n```\n\n## Environment\n\n| Var | Required | Purpose |\n| --- | --- | --- |\n| `AEROAPI_API_KEY` | yes | Your FlightAware AeroAPI key (sent as the `x-apikey` header). |\n| `AEROAPI_OUTPUT_DIR` | no | Default directory for flight-map PNGs (default: `~/Downloads/flightaware-mcp`). |\n| `AEROAPI_CACHE_TTL` | no | Seconds to cache identical **live-data** GET responses to cut per-query billing (default: 15; `0` disables). |\n| `AEROAPI_STATIC_CACHE_TTL` | no | Longer TTL for **reference data** that rarely changes — airport/operator info, routes, ownership, canonical lookups (default: 3600; `0` disables). |\n\n## Tools\n\nEvery read tool below takes an optional `view` and answers on the **compact**\nrung when you omit it — see [Response shape](#response-shape-view).\n\n**Flights:** `fa_get_flights`, `fa_search_flights`, `fa_search_flights_advanced`, `fa_search_flight_positions`, `fa_count_flights`, `fa_get_flight_track`, `fa_get_flight_position`, `fa_get_flight_route`, `fa_get_flight_map`, `fa_get_flight_history`, `fa_resolve_flight`\n\n**Airports:** `fa_get_airport`, `fa_get_airport_flights`, `fa_get_airport_flight_counts`, `fa_get_airport_routes`, `fa_list_airports`, `fa_get_nearby_airports`, `fa_get_airport_delays`, `fa_get_airport_weather`, `fa_resolve_airport`\n\n**Operators / aircraft:** `fa_get_operator`, `fa_get_operator_flights`, `fa_list_operators`, `fa_get_aircraft_owner`\n\n**Schedules / predictive:** `fa_get_scheduled_flights`, `fa_foresight_search` (Foresight is a premium tier — expect a 402/403 on a Personal key)\n\n**Alerts** (account-mutating writes ask the user to confirm first — a confirmation prompt where the client supports one (unless the server sets `MCP_CONFIRM_ELICITATION=off`); otherwise the first call makes no network call and returns a preview plus a `confirmToken`, and only a repeat call with that token, after the user approves, performs the write): `fa_list_alerts`, `fa_get_alert`, `fa_create_alert`, `fa_update_alert`, `fa_delete_alert`, `fa_get_alerts_endpoint`, `fa_set_alerts_endpoint`\n\n## Response shape (`view`)\n\nTwenty-eight of the thirty-four tools take `view: \"compact\" | \"full\"`, and\n**`compact` is the default** — every read answers on the slim rung without\nbeing asked. In practice that is *every read tool here except*\n`fa_get_flight_map` and `fa_healthcheck`; the four alert writes\n(`fa_create_alert`, `fa_update_alert`, `fa_delete_alert`,\n`fa_set_alerts_endpoint`) take none either.\n\n**Compact here is media stripping, not a field projection — do not expect a\nfield list.** It removes image and avatar URLs from the payload and nothing\nelse. These tools hand back AeroAPI's response close to verbatim, and this repo\nholds no captured AeroAPI fixture and no documented field list, so nothing in\nit can honestly say which of FlightAware's fields matter and which are noise.\nInventing a keep-list would risk a flight record coming back with holes in it\nthat reads like a verified answer. Stripping is subtractive: it cannot lose a\nfield nobody knew about. The practical consequence is that on a typical AeroAPI\nflight or airport payload compact saves little — it is the honest ceiling, not\na compression claim.\n\n`view: \"full\"` returns AeroAPI's payload untouched. There is deliberately **no\n`raw` rung**: nothing normalises the payload on the way through, so `full`\nalready IS the untouched upstream response and a third value would silently\nalias it.\n\nWhy the six without it have none:\n\n- **`fa_get_flight_map`'s product IS the image.** It returns a rendered PNG —\n  written to disk, or inline base64 with `inline: true`. Routing that through a\n  rung whose whole job is removing images would delete exactly what you asked\n  for, so it is not wired and never should be.\n- **`fa_healthcheck`** answers \"is this connector working?\" with a verdict, not\n  a record. There is nothing in it to strip.\n- **The four alert writes return receipts** — an id, a status, a\n  preview and its `confirmToken`. A receipt has nothing to strip and everything to keep.\n  `fa_get_alerts_endpoint` is the read of that pair and does take `view`.\n\nPassing `view` to one of those six is not an error and not a warning: MCP tool\nschemas are non-strict, so the key is dropped and you get that tool's ordinary\noutput.\n\n## Notes\n\n- Flight idents can be a designator (`UAL123`), a registration (`N12345`), or an `fa_flight_id`; position/track/route/map tools take an `fa_flight_id`.\n- Paged collections return a `links.next` cursor — pass it back as `cursor` to fetch more.\n- Every request rides your own AeroAPI key; usage counts against your subscription quota.\n\nFile v1.3.1:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"flightaware-mcp\",\n  \"version\": \"1.3.1\",\n  \"publishedAt\": 1791588252647\n}\n\nFile v1.3.1:skill-card.md\n\n## Description:\n\nProvides flight tracking, airport information, schedules, aircraft ownership lookups, and flight alert management through FlightAware AeroAPI.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nTravelers, aviation enthusiasts, and developers use this skill to check flight status, positions, airport activity, schedules, and aircraft ownership, or to manage flight alerts.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Installing an unverified package could expose the user's environment or API key.\n\nMitigation: Verify the npm/GitHub package provenance before installation and use an AeroAPI key with only the privileges needed.\n\nRisk: Alert writes can change FlightAware account alert settings and endpoints.\n\nMitigation: Keep alert creation, updates, deletion, and endpoint changes subject to explicit user confirmation.\n\n## Reference(s):\n\n- [ClawHub skill listing](https://clawhub.ai/chrischall/skills/flightaware-mcp)\n- [npm package (linked in skill)](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- [FlightAware AeroAPI portal](https://www.flightaware.com/aeroapi/portal/)\n\n## Skill Output:\n\n**Output Type(s):** [Text, JSON, PNG images]\n\n**Output Format:** [Flight and airport data, alert receipts, and optional flight-map PNGs]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Flight maps can be saved locally or returned inline; live requests use the user's AeroAPI quota.]\n\n## Skill Version(s):\n\n1.3.1 (source: server-resolved ClawHub release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.3.0: 3 files, 4360 bytes\n\nFiles: skill-card.md (2095b), SKILL.md (6290b), _meta.json (134b)\n\nFile v1.3.0:SKILL.md\n\n---\nname: flightaware-mcp\ndescription: Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases like \"where is flight UAL123\", \"track flight\", \"JFK departures\", \"is my flight delayed\", \"flights near\", \"who owns tail number N12345\", or \"set up a flight alert\". Requires the @chrischall/flightaware-mcp package installed and the flightaware server registered (see Setup), plus an AeroAPI key.\n---\n\n# flightaware-mcp\n\nMCP server for **FlightAware AeroAPI** (v4) — live flight tracking, airport boards, operators, schedules, aircraft, and flight alerts, exposed to Claude over stdio.\n\n- **npm:** [npmjs.com/package/@chrischall/flightaware-mcp](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- **Source:** [github.com/chrischall/flightaware-mcp](https://github.com/chrischall/flightaware-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"flightaware\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/flightaware-mcp\"],\n      \"env\": {\n        \"AEROAPI_API_KEY\": \"your-aeroapi-key-here\"\n      }\n    }\n  }\n}\n```\n\nGet a key at [flightaware.com/aeroapi/portal](https://www.flightaware.com/aeroapi/portal/). The free **Personal** tier (500 calls/month) is enough to get started; AeroAPI bills per query.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/flightaware-mcp\ncd flightaware-mcp\nnpm install && npm run build\n```\n\n## Environment\n\n| Var | Required | Purpose |\n| --- | --- | --- |\n| `AEROAPI_API_KEY` | yes | Your FlightAware AeroAPI key (sent as the `x-apikey` header). |\n| `AEROAPI_OUTPUT_DIR` | no | Default directory for flight-map PNGs (default: cwd). |\n| `AEROAPI_CACHE_TTL` | no | Seconds to cache identical **live-data** GET responses to cut per-query billing (default: 15; `0` disables). |\n| `AEROAPI_STATIC_CACHE_TTL` | no | Longer TTL for **reference data** that rarely changes — airport/operator info, routes, ownership, canonical lookups (default: 3600; `0` disables). |\n\n## Tools\n\nEvery read tool below takes an optional `view` and answers on the **compact**\nrung when you omit it — see [Response shape](#response-shape-view).\n\n**Flights:** `fa_get_flights`, `fa_search_flights`, `fa_search_flights_advanced`, `fa_search_flight_positions`, `fa_count_flights`, `fa_get_flight_track`, `fa_get_flight_position`, `fa_get_flight_route`, `fa_get_flight_map`, `fa_get_flight_history`, `fa_resolve_flight`\n\n**Airports:** `fa_get_airport`, `fa_get_airport_flights`, `fa_get_airport_flight_counts`, `fa_get_airport_routes`, `fa_list_airports`, `fa_get_nearby_airports`, `fa_get_airport_delays`, `fa_get_airport_weather`, `fa_resolve_airport`\n\n**Operators / aircraft:** `fa_get_operator`, `fa_get_operator_flights`, `fa_list_operators`, `fa_get_aircraft_owner`\n\n**Schedules / predictive:** `fa_get_scheduled_flights`, `fa_foresight_search` (Foresight is a premium tier — expect a 402/403 on a Personal key)\n\n**Alerts** (account-mutating writes ask the user to confirm first — a confirmation prompt where the client supports one; otherwise the first call makes no network call and returns a preview plus a `confirmToken`, and only a repeat call with that token, after the user approves, performs the write): `fa_list_alerts`, `fa_get_alert`, `fa_create_alert`, `fa_update_alert`, `fa_delete_alert`, `fa_get_alerts_endpoint`, `fa_set_alerts_endpoint`\n\n## Response shape (`view`)\n\nTwenty-eight of the thirty-four tools take `view: \"compact\" | \"full\"`, and\n**`compact` is the default** — every read answers on the slim rung without\nbeing asked. In practice that is *every read tool here except*\n`fa_get_flight_map` and `fa_healthcheck`; the four alert writes\n(`fa_create_alert`, `fa_update_alert`, `fa_delete_alert`,\n`fa_set_alerts_endpoint`) take none either.\n\n**Compact here is media stripping, not a field projection — do not expect a\nfield list.** It removes image and avatar URLs from the payload and nothing\nelse. These tools hand back AeroAPI's response close to verbatim, and this repo\nholds no captured AeroAPI fixture and no documented field list, so nothing in\nit can honestly say which of FlightAware's fields matter and which are noise.\nInventing a keep-list would risk a flight record coming back with holes in it\nthat reads like a verified answer. Stripping is subtractive: it cannot lose a\nfield nobody knew about. The practical consequence is that on a typical AeroAPI\nflight or airport payload compact saves little — it is the honest ceiling, not\na compression claim.\n\n`view: \"full\"` returns AeroAPI's payload untouched. There is deliberately **no\n`raw` rung**: nothing normalises the payload on the way through, so `full`\nalready IS the untouched upstream response and a third value would silently\nalias it.\n\nWhy the six without it have none:\n\n- **`fa_get_flight_map`'s product IS the image.** It returns a rendered PNG —\n  written to disk, or inline base64 with `inline: true`. Routing that through a\n  rung whose whole job is removing images would delete exactly what you asked\n  for, so it is not wired and never should be.\n- **`fa_healthcheck`** answers \"is this connector working?\" with a verdict, not\n  a record. There is nothing in it to strip.\n- **The four alert writes return receipts** — an id, a status, a\n  preview and its `confirmToken`. A receipt has nothing to strip and everything to keep.\n  `fa_get_alerts_endpoint` is the read of that pair and does take `view`.\n\nPassing `view` to one of those six is not an error and not a warning: MCP tool\nschemas are non-strict, so the key is dropped and you get that tool's ordinary\noutput.\n\n## Notes\n\n- Flight idents can be a designator (`UAL123`), a registration (`N12345`), or an `fa_flight_id`; position/track/route/map tools take an `fa_flight_id`.\n- Paged collections return a `links.next` cursor — pass it back as `cursor` to fetch more.\n- Every request rides your own AeroAPI key; usage counts against your subscription quota.\n\nFile v1.3.0:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"flightaware-mcp\",\n  \"version\": \"1.3.0\",\n  \"publishedAt\": 1791380181222\n}\n\nFile v1.3.0:skill-card.md\n\n## Description:\n\nProvides live flight tracking, airport information, schedules, aircraft lookups, and flight-alert management through FlightAware AeroAPI.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nTravelers, aviation enthusiasts, and developers use this skill to check flights and airport activity, look up aircraft and schedules, and manage FlightAware flight alerts.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: A third-party MCP package receives the user's AeroAPI key.\n\nMitigation: Install only if comfortable trusting the package with the key.\n\nRisk: AeroAPI requests consume the user's subscription quota.\n\nMitigation: Review expected API usage and quota before making repeated queries.\n\nRisk: Flight-map PNGs may be saved in the working directory.\n\nMitigation: Request inline map output or set AEROAPI_OUTPUT_DIR to an appropriate location.\n\nRisk: Alert operations can change the user's FlightAware account settings.\n\nMitigation: Review the proposed changes before confirming alert writes.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/chrischall/skills/flightaware-mcp)\n- [FlightAware AeroAPI portal](https://www.flightaware.com/aeroapi/portal/)\n- [FlightAware MCP package](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Images, Configuration guidance]\n\n**Output Format:** [Structured flight and airport responses, with optional PNG flight maps]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Flight maps can be returned inline or written to disk; alert changes require user confirmation.]\n\n## Skill Version(s):\n\n1.3.0 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.2.4: 3 files, 4345 bytes\n\nFiles: skill-card.md (2075b), SKILL.md (6290b), _meta.json (134b)\n\nFile v1.2.4:SKILL.md\n\n---\nname: flightaware-mcp\ndescription: Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases like \"where is flight UAL123\", \"track flight\", \"JFK departures\", \"is my flight delayed\", \"flights near\", \"who owns tail number N12345\", or \"set up a flight alert\". Requires the @chrischall/flightaware-mcp package installed and the flightaware server registered (see Setup), plus an AeroAPI key.\n---\n\n# flightaware-mcp\n\nMCP server for **FlightAware AeroAPI** (v4) — live flight tracking, airport boards, operators, schedules, aircraft, and flight alerts, exposed to Claude over stdio.\n\n- **npm:** [npmjs.com/package/@chrischall/flightaware-mcp](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- **Source:** [github.com/chrischall/flightaware-mcp](https://github.com/chrischall/flightaware-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"flightaware\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/flightaware-mcp\"],\n      \"env\": {\n        \"AEROAPI_API_KEY\": \"your-aeroapi-key-here\"\n      }\n    }\n  }\n}\n```\n\nGet a key at [flightaware.com/aeroapi/portal](https://www.flightaware.com/aeroapi/portal/). The free **Personal** tier (500 calls/month) is enough to get started; AeroAPI bills per query.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/flightaware-mcp\ncd flightaware-mcp\nnpm install && npm run build\n```\n\n## Environment\n\n| Var | Required | Purpose |\n| --- | --- | --- |\n| `AEROAPI_API_KEY` | yes | Your FlightAware AeroAPI key (sent as the `x-apikey` header). |\n| `AEROAPI_OUTPUT_DIR` | no | Default directory for flight-map PNGs (default: cwd). |\n| `AEROAPI_CACHE_TTL` | no | Seconds to cache identical **live-data** GET responses to cut per-query billing (default: 15; `0` disables). |\n| `AEROAPI_STATIC_CACHE_TTL` | no | Longer TTL for **reference data** that rarely changes — airport/operator info, routes, ownership, canonical lookups (default: 3600; `0` disables). |\n\n## Tools\n\nEvery read tool below takes an optional `view` and answers on the **compact**\nrung when you omit it — see [Response shape](#response-shape-view).\n\n**Flights:** `fa_get_flights`, `fa_search_flights`, `fa_search_flights_advanced`, `fa_search_flight_positions`, `fa_count_flights`, `fa_get_flight_track`, `fa_get_flight_position`, `fa_get_flight_route`, `fa_get_flight_map`, `fa_get_flight_history`, `fa_resolve_flight`\n\n**Airports:** `fa_get_airport`, `fa_get_airport_flights`, `fa_get_airport_flight_counts`, `fa_get_airport_routes`, `fa_list_airports`, `fa_get_nearby_airports`, `fa_get_airport_delays`, `fa_get_airport_weather`, `fa_resolve_airport`\n\n**Operators / aircraft:** `fa_get_operator`, `fa_get_operator_flights`, `fa_list_operators`, `fa_get_aircraft_owner`\n\n**Schedules / predictive:** `fa_get_scheduled_flights`, `fa_foresight_search` (Foresight is a premium tier — expect a 402/403 on a Personal key)\n\n**Alerts** (account-mutating writes ask the user to confirm first — a confirmation prompt where the client supports one; otherwise the first call makes no network call and returns a preview plus a `confirmToken`, and only a repeat call with that token, after the user approves, performs the write): `fa_list_alerts`, `fa_get_alert`, `fa_create_alert`, `fa_update_alert`, `fa_delete_alert`, `fa_get_alerts_endpoint`, `fa_set_alerts_endpoint`\n\n## Response shape (`view`)\n\nTwenty-eight of the thirty-four tools take `view: \"compact\" | \"full\"`, and\n**`compact` is the default** — every read answers on the slim rung without\nbeing asked. In practice that is *every read tool here except*\n`fa_get_flight_map` and `fa_healthcheck`; the four alert writes\n(`fa_create_alert`, `fa_update_alert`, `fa_delete_alert`,\n`fa_set_alerts_endpoint`) take none either.\n\n**Compact here is media stripping, not a field projection — do not expect a\nfield list.** It removes image and avatar URLs from the payload and nothing\nelse. These tools hand back AeroAPI's response close to verbatim, and this repo\nholds no captured AeroAPI fixture and no documented field list, so nothing in\nit can honestly say which of FlightAware's fields matter and which are noise.\nInventing a keep-list would risk a flight record coming back with holes in it\nthat reads like a verified answer. Stripping is subtractive: it cannot lose a\nfield nobody knew about. The practical consequence is that on a typical AeroAPI\nflight or airport payload compact saves little — it is the honest ceiling, not\na compression claim.\n\n`view: \"full\"` returns AeroAPI's payload untouched. There is deliberately **no\n`raw` rung**: nothing normalises the payload on the way through, so `full`\nalready IS the untouched upstream response and a third value would silently\nalias it.\n\nWhy the six without it have none:\n\n- **`fa_get_flight_map`'s product IS the image.** It returns a rendered PNG —\n  written to disk, or inline base64 with `inline: true`. Routing that through a\n  rung whose whole job is removing images would delete exactly what you asked\n  for, so it is not wired and never should be.\n- **`fa_healthcheck`** answers \"is this connector working?\" with a verdict, not\n  a record. There is nothing in it to strip.\n- **The four alert writes return receipts** — an id, a status, a\n  preview and its `confirmToken`. A receipt has nothing to strip and everything to keep.\n  `fa_get_alerts_endpoint` is the read of that pair and does take `view`.\n\nPassing `view` to one of those six is not an error and not a warning: MCP tool\nschemas are non-strict, so the key is dropped and you get that tool's ordinary\noutput.\n\n## Notes\n\n- Flight idents can be a designator (`UAL123`), a registration (`N12345`), or an `fa_flight_id`; position/track/route/map tools take an `fa_flight_id`.\n- Paged collections return a `links.next` cursor — pass it back as `cursor` to fetch more.\n- Every request rides your own AeroAPI key; usage counts against your subscription quota.\n\nFile v1.2.4:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"flightaware-mcp\",\n  \"version\": \"1.2.4\",\n  \"publishedAt\": 1791168484206\n}\n\nFile v1.2.4:skill-card.md\n\n## Description:\n\nConnects an agent to FlightAware AeroAPI for live flight tracking, airport information, aircraft details, schedules, and flight alerts.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nTravelers, aviation professionals, and developers use this skill to look up flights, airport activity, aircraft ownership, and schedules or manage FlightAware flight alerts through an agent.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Installing an untrusted package or exposing an AeroAPI key could compromise the user's account.\n\nMitigation: Confirm the package is trusted before installation and use your own AeroAPI key securely.\n\nRisk: Flight queries can consume paid AeroAPI quota.\n\nMitigation: Check the subscription quota and expected query volume before use.\n\nRisk: Alert tools can create, change, or delete FlightAware alert settings.\n\nMitigation: Review proposed alert changes and confirm them before applying.\n\n## Reference(s):\n\n- [FlightAware MCP on ClawHub](https://clawhub.ai/chrischall/skills/flightaware-mcp)\n- [FlightAware MCP npm package](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- [FlightAware AeroAPI portal](https://www.flightaware.com/aeroapi/portal/)\n\n## Skill Output:\n\n**Output Type(s):** [Text, JSON, Images, Configuration guidance]\n\n**Output Format:** [MCP tool responses with flight and airport data, optional flight-map PNGs, and Markdown setup guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [AeroAPI key required; read responses default to compact media-stripped data, with full responses available.]\n\n## Skill Version(s):\n\n1.2.4 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.2.3: 3 files, 4337 bytes\n\nFiles: skill-card.md (2045b), SKILL.md (6290b), _meta.json (134b)\n\nFile v1.2.3:SKILL.md\n\n---\nname: flightaware-mcp\ndescription: Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases like \"where is flight UAL123\", \"track flight\", \"JFK departures\", \"is my flight delayed\", \"flights near\", \"who owns tail number N12345\", or \"set up a flight alert\". Requires the @chrischall/flightaware-mcp package installed and the flightaware server registered (see Setup), plus an AeroAPI key.\n---\n\n# flightaware-mcp\n\nMCP server for **FlightAware AeroAPI** (v4) — live flight tracking, airport boards, operators, schedules, aircraft, and flight alerts, exposed to Claude over stdio.\n\n- **npm:** [npmjs.com/package/@chrischall/flightaware-mcp](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- **Source:** [github.com/chrischall/flightaware-mcp](https://github.com/chrischall/flightaware-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"flightaware\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/flightaware-mcp\"],\n      \"env\": {\n        \"AEROAPI_API_KEY\": \"your-aeroapi-key-here\"\n      }\n    }\n  }\n}\n```\n\nGet a key at [flightaware.com/aeroapi/portal](https://www.flightaware.com/aeroapi/portal/). The free **Personal** tier (500 calls/month) is enough to get started; AeroAPI bills per query.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/flightaware-mcp\ncd flightaware-mcp\nnpm install && npm run build\n```\n\n## Environment\n\n| Var | Required | Purpose |\n| --- | --- | --- |\n| `AEROAPI_API_KEY` | yes | Your FlightAware AeroAPI key (sent as the `x-apikey` header). |\n| `AEROAPI_OUTPUT_DIR` | no | Default directory for flight-map PNGs (default: cwd). |\n| `AEROAPI_CACHE_TTL` | no | Seconds to cache identical **live-data** GET responses to cut per-query billing (default: 15; `0` disables). |\n| `AEROAPI_STATIC_CACHE_TTL` | no | Longer TTL for **reference data** that rarely changes — airport/operator info, routes, ownership, canonical lookups (default: 3600; `0` disables). |\n\n## Tools\n\nEvery read tool below takes an optional `view` and answers on the **compact**\nrung when you omit it — see [Response shape](#response-shape-view).\n\n**Flights:** `fa_get_flights`, `fa_search_flights`, `fa_search_flights_advanced`, `fa_search_flight_positions`, `fa_count_flights`, `fa_get_flight_track`, `fa_get_flight_position`, `fa_get_flight_route`, `fa_get_flight_map`, `fa_get_flight_history`, `fa_resolve_flight`\n\n**Airports:** `fa_get_airport`, `fa_get_airport_flights`, `fa_get_airport_flight_counts`, `fa_get_airport_routes`, `fa_list_airports`, `fa_get_nearby_airports`, `fa_get_airport_delays`, `fa_get_airport_weather`, `fa_resolve_airport`\n\n**Operators / aircraft:** `fa_get_operator`, `fa_get_operator_flights`, `fa_list_operators`, `fa_get_aircraft_owner`\n\n**Schedules / predictive:** `fa_get_scheduled_flights`, `fa_foresight_search` (Foresight is a premium tier — expect a 402/403 on a Personal key)\n\n**Alerts** (account-mutating writes ask the user to confirm first — a confirmation prompt where the client supports one; otherwise the first call makes no network call and returns a preview plus a `confirmToken`, and only a repeat call with that token, after the user approves, performs the write): `fa_list_alerts`, `fa_get_alert`, `fa_create_alert`, `fa_update_alert`, `fa_delete_alert`, `fa_get_alerts_endpoint`, `fa_set_alerts_endpoint`\n\n## Response shape (`view`)\n\nTwenty-eight of the thirty-four tools take `view: \"compact\" | \"full\"`, and\n**`compact` is the default** — every read answers on the slim rung without\nbeing asked. In practice that is *every read tool here except*\n`fa_get_flight_map` and `fa_healthcheck`; the four alert writes\n(`fa_create_alert`, `fa_update_alert`, `fa_delete_alert`,\n`fa_set_alerts_endpoint`) take none either.\n\n**Compact here is media stripping, not a field projection — do not expect a\nfield list.** It removes image and avatar URLs from the payload and nothing\nelse. These tools hand back AeroAPI's response close to verbatim, and this repo\nholds no captured AeroAPI fixture and no documented field list, so nothing in\nit can honestly say which of FlightAware's fields matter and which are noise.\nInventing a keep-list would risk a flight record coming back with holes in it\nthat reads like a verified answer. Stripping is subtractive: it cannot lose a\nfield nobody knew about. The practical consequence is that on a typical AeroAPI\nflight or airport payload compact saves little — it is the honest ceiling, not\na compression claim.\n\n`view: \"full\"` returns AeroAPI's payload untouched. There is deliberately **no\n`raw` rung**: nothing normalises the payload on the way through, so `full`\nalready IS the untouched upstream response and a third value would silently\nalias it.\n\nWhy the six without it have none:\n\n- **`fa_get_flight_map`'s product IS the image.** It returns a rendered PNG —\n  written to disk, or inline base64 with `inline: true`. Routing that through a\n  rung whose whole job is removing images would delete exactly what you asked\n  for, so it is not wired and never should be.\n- **`fa_healthcheck`** answers \"is this connector working?\" with a verdict, not\n  a record. There is nothing in it to strip.\n- **The four alert writes return receipts** — an id, a status, a\n  preview and its `confirmToken`. A receipt has nothing to strip and everything to keep.\n  `fa_get_alerts_endpoint` is the read of that pair and does take `view`.\n\nPassing `view` to one of those six is not an error and not a warning: MCP tool\nschemas are non-strict, so the key is dropped and you get that tool's ordinary\noutput.\n\n## Notes\n\n- Flight idents can be a designator (`UAL123`), a registration (`N12345`), or an `fa_flight_id`; position/track/route/map tools take an `fa_flight_id`.\n- Paged collections return a `links.next` cursor — pass it back as `cursor` to fetch more.\n- Every request rides your own AeroAPI key; usage counts against your subscription quota.\n\nFile v1.2.3:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"flightaware-mcp\",\n  \"version\": \"1.2.3\",\n  \"publishedAt\": 1790991703718\n}\n\nFile v1.2.3:skill-card.md\n\n## Description:\n\nConnects an agent to FlightAware AeroAPI for flight tracking, airport information, schedules, aircraft lookups, and flight alerts.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nTravelers, aviation enthusiasts, and developers use this skill to check live flight status, airport activity, schedules, and aircraft information, or manage flight alerts through their own AeroAPI account.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: An untrusted package or exposed AeroAPI key could compromise the user's account.\n\nMitigation: Verify the npm package before installing and provide only your own AeroAPI key through the MCP configuration.\n\nRisk: AeroAPI requests may consume quota or incur charges.\n\nMitigation: Check account limits and costs before making repeated or premium-tier requests.\n\nRisk: Creating, updating, or deleting alerts changes account settings.\n\nMitigation: Review each proposed alert change and obtain user confirmation before submitting it.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/chrischall/skills/flightaware-mcp)\n- [FlightAware AeroAPI portal](https://www.flightaware.com/aeroapi/portal/)\n- [FlightAware MCP npm package](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n\n## Skill Output:\n\n**Output Type(s):** [Text, JSON, PNG images]\n\n**Output Format:** [MCP tool responses with flight and airport data; optional flight-map PNG]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Compact responses omit image and avatar URLs; full responses preserve AeroAPI data.]\n\n## Skill Version(s):\n\n1.2.3 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.2.2: 3 files, 4345 bytes\n\nFiles: skill-card.md (2084b), SKILL.md (6290b), _meta.json (134b)\n\nFile v1.2.2:SKILL.md\n\n---\nname: flightaware-mcp\ndescription: Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases like \"where is flight UAL123\", \"track flight\", \"JFK departures\", \"is my flight delayed\", \"flights near\", \"who owns tail number N12345\", or \"set up a flight alert\". Requires the @chrischall/flightaware-mcp package installed and the flightaware server registered (see Setup), plus an AeroAPI key.\n---\n\n# flightaware-mcp\n\nMCP server for **FlightAware AeroAPI** (v4) — live flight tracking, airport boards, operators, schedules, aircraft, and flight alerts, exposed to Claude over stdio.\n\n- **npm:** [npmjs.com/package/@chrischall/flightaware-mcp](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- **Source:** [github.com/chrischall/flightaware-mcp](https://github.com/chrischall/flightaware-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"flightaware\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/flightaware-mcp\"],\n      \"env\": {\n        \"AEROAPI_API_KEY\": \"your-aeroapi-key-here\"\n      }\n    }\n  }\n}\n```\n\nGet a key at [flightaware.com/aeroapi/portal](https://www.flightaware.com/aeroapi/portal/). The free **Personal** tier (500 calls/month) is enough to get started; AeroAPI bills per query.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/flightaware-mcp\ncd flightaware-mcp\nnpm install && npm run build\n```\n\n## Environment\n\n| Var | Required | Purpose |\n| --- | --- | --- |\n| `AEROAPI_API_KEY` | yes | Your FlightAware AeroAPI key (sent as the `x-apikey` header). |\n| `AEROAPI_OUTPUT_DIR` | no | Default directory for flight-map PNGs (default: cwd). |\n| `AEROAPI_CACHE_TTL` | no | Seconds to cache identical **live-data** GET responses to cut per-query billing (default: 15; `0` disables). |\n| `AEROAPI_STATIC_CACHE_TTL` | no | Longer TTL for **reference data** that rarely changes — airport/operator info, routes, ownership, canonical lookups (default: 3600; `0` disables). |\n\n## Tools\n\nEvery read tool below takes an optional `view` and answers on the **compact**\nrung when you omit it — see [Response shape](#response-shape-view).\n\n**Flights:** `fa_get_flights`, `fa_search_flights`, `fa_search_flights_advanced`, `fa_search_flight_positions`, `fa_count_flights`, `fa_get_flight_track`, `fa_get_flight_position`, `fa_get_flight_route`, `fa_get_flight_map`, `fa_get_flight_history`, `fa_resolve_flight`\n\n**Airports:** `fa_get_airport`, `fa_get_airport_flights`, `fa_get_airport_flight_counts`, `fa_get_airport_routes`, `fa_list_airports`, `fa_get_nearby_airports`, `fa_get_airport_delays`, `fa_get_airport_weather`, `fa_resolve_airport`\n\n**Operators / aircraft:** `fa_get_operator`, `fa_get_operator_flights`, `fa_list_operators`, `fa_get_aircraft_owner`\n\n**Schedules / predictive:** `fa_get_scheduled_flights`, `fa_foresight_search` (Foresight is a premium tier — expect a 402/403 on a Personal key)\n\n**Alerts** (account-mutating writes ask the user to confirm first — a confirmation prompt where the client supports one; otherwise the first call makes no network call and returns a preview plus a `confirmToken`, and only a repeat call with that token, after the user approves, performs the write): `fa_list_alerts`, `fa_get_alert`, `fa_create_alert`, `fa_update_alert`, `fa_delete_alert`, `fa_get_alerts_endpoint`, `fa_set_alerts_endpoint`\n\n## Response shape (`view`)\n\nTwenty-eight of the thirty-four tools take `view: \"compact\" | \"full\"`, and\n**`compact` is the default** — every read answers on the slim rung without\nbeing asked. In practice that is *every read tool here except*\n`fa_get_flight_map` and `fa_healthcheck`; the four alert writes\n(`fa_create_alert`, `fa_update_alert`, `fa_delete_alert`,\n`fa_set_alerts_endpoint`) take none either.\n\n**Compact here is media stripping, not a field projection — do not expect a\nfield list.** It removes image and avatar URLs from the payload and nothing\nelse. These tools hand back AeroAPI's response close to verbatim, and this repo\nholds no captured AeroAPI fixture and no documented field list, so nothing in\nit can honestly say which of FlightAware's fields matter and which are noise.\nInventing a keep-list would risk a flight record coming back with holes in it\nthat reads like a verified answer. Stripping is subtractive: it cannot lose a\nfield nobody knew about. The practical consequence is that on a typical AeroAPI\nflight or airport payload compact saves little — it is the honest ceiling, not\na compression claim.\n\n`view: \"full\"` returns AeroAPI's payload untouched. There is deliberately **no\n`raw` rung**: nothing normalises the payload on the way through, so `full`\nalready IS the untouched upstream response and a third value would silently\nalias it.\n\nWhy the six without it have none:\n\n- **`fa_get_flight_map`'s product IS the image.** It returns a rendered PNG —\n  written to disk, or inline base64 with `inline: true`. Routing that through a\n  rung whose whole job is removing images would delete exactly what you asked\n  for, so it is not wired and never should be.\n- **`fa_healthcheck`** answers \"is this connector working?\" with a verdict, not\n  a record. There is nothing in it to strip.\n- **The four alert writes return receipts** — an id, a status, a\n  preview and its `confirmToken`. A receipt has nothing to strip and everything to keep.\n  `fa_get_alerts_endpoint` is the read of that pair and does take `view`.\n\nPassing `view` to one of those six is not an error and not a warning: MCP tool\nschemas are non-strict, so the key is dropped and you get that tool's ordinary\noutput.\n\n## Notes\n\n- Flight idents can be a designator (`UAL123`), a registration (`N12345`), or an `fa_flight_id`; position/track/route/map tools take an `fa_flight_id`.\n- Paged collections return a `links.next` cursor — pass it back as `cursor` to fetch more.\n- Every request rides your own AeroAPI key; usage counts against your subscription quota.\n\nFile v1.2.2:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"flightaware-mcp\",\n  \"version\": \"1.2.2\",\n  \"publishedAt\": 1790787415281\n}\n\nFile v1.2.2:skill-card.md\n\n## Description:\n\nConnects an agent to FlightAware AeroAPI for live flight tracking, airport information, schedules, aircraft details, and flight alerts.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and other users can ask an agent to check flight status and position, inspect airport activity, look up aircraft and schedules, or manage FlightAware flight alerts using their own AeroAPI key.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: An external package uses the user's AeroAPI key for live requests that may consume quota.\n\nMitigation: Verify the package before installing, protect the key, and monitor AeroAPI usage.\n\nRisk: Alert-management tools can change account settings.\n\nMitigation: Review the proposed alert operation and confirm it only when intended.\n\nRisk: A global MCP configuration could expose the connector across projects.\n\nMitigation: Use a project-local MCP configuration when narrower access is needed.\n\n## Reference(s):\n\n- [ClawHub skill listing](https://clawhub.ai/chrischall/skills/flightaware-mcp)\n- [FlightAware MCP npm package](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- [FlightAware AeroAPI portal](https://www.flightaware.com/aeroapi/portal/)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Configuration guidance, Shell commands, Image files]\n\n**Output Format:** [Text or Markdown responses, MCP configuration examples, and optional PNG flight maps]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Flight data is returned from AeroAPI; optional maps may be saved to disk or returned inline.]\n\n## Skill Version(s):\n\n1.2.2 (source: server-resolved ClawHub release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.2.1: 3 files, 4333 bytes\n\nFiles: skill-card.md (2067b), SKILL.md (6290b), _meta.json (134b)\n\nFile v1.2.1:SKILL.md\n\n---\nname: flightaware-mcp\ndescription: Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases like \"where is flight UAL123\", \"track flight\", \"JFK departures\", \"is my flight delayed\", \"flights near\", \"who owns tail number N12345\", or \"set up a flight alert\". Requires the @chrischall/flightaware-mcp package installed and the flightaware server registered (see Setup), plus an AeroAPI key.\n---\n\n# flightaware-mcp\n\nMCP server for **FlightAware AeroAPI** (v4) — live flight tracking, airport boards, operators, schedules, aircraft, and flight alerts, exposed to Claude over stdio.\n\n- **npm:** [npmjs.com/package/@chrischall/flightaware-mcp](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- **Source:** [github.com/chrischall/flightaware-mcp](https://github.com/chrischall/flightaware-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"flightaware\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/flightaware-mcp\"],\n      \"env\": {\n        \"AEROAPI_API_KEY\": \"your-aeroapi-key-here\"\n      }\n    }\n  }\n}\n```\n\nGet a key at [flightaware.com/aeroapi/portal](https://www.flightaware.com/aeroapi/portal/). The free **Personal** tier (500 calls/month) is enough to get started; AeroAPI bills per query.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/flightaware-mcp\ncd flightaware-mcp\nnpm install && npm run build\n```\n\n## Environment\n\n| Var | Required | Purpose |\n| --- | --- | --- |\n| `AEROAPI_API_KEY` | yes | Your FlightAware AeroAPI key (sent as the `x-apikey` header). |\n| `AEROAPI_OUTPUT_DIR` | no | Default directory for flight-map PNGs (default: cwd). |\n| `AEROAPI_CACHE_TTL` | no | Seconds to cache identical **live-data** GET responses to cut per-query billing (default: 15; `0` disables). |\n| `AEROAPI_STATIC_CACHE_TTL` | no | Longer TTL for **reference data** that rarely changes — airport/operator info, routes, ownership, canonical lookups (default: 3600; `0` disables). |\n\n## Tools\n\nEvery read tool below takes an optional `view` and answers on the **compact**\nrung when you omit it — see [Response shape](#response-shape-view).\n\n**Flights:** `fa_get_flights`, `fa_search_flights`, `fa_search_flights_advanced`, `fa_search_flight_positions`, `fa_count_flights`, `fa_get_flight_track`, `fa_get_flight_position`, `fa_get_flight_route`, `fa_get_flight_map`, `fa_get_flight_history`, `fa_resolve_flight`\n\n**Airports:** `fa_get_airport`, `fa_get_airport_flights`, `fa_get_airport_flight_counts`, `fa_get_airport_routes`, `fa_list_airports`, `fa_get_nearby_airports`, `fa_get_airport_delays`, `fa_get_airport_weather`, `fa_resolve_airport`\n\n**Operators / aircraft:** `fa_get_operator`, `fa_get_operator_flights`, `fa_list_operators`, `fa_get_aircraft_owner`\n\n**Schedules / predictive:** `fa_get_scheduled_flights`, `fa_foresight_search` (Foresight is a premium tier — expect a 402/403 on a Personal key)\n\n**Alerts** (account-mutating writes ask the user to confirm first — a confirmation prompt where the client supports one; otherwise the first call makes no network call and returns a preview plus a `confirmToken`, and only a repeat call with that token, after the user approves, performs the write): `fa_list_alerts`, `fa_get_alert`, `fa_create_alert`, `fa_update_alert`, `fa_delete_alert`, `fa_get_alerts_endpoint`, `fa_set_alerts_endpoint`\n\n## Response shape (`view`)\n\nTwenty-eight of the thirty-four tools take `view: \"compact\" | \"full\"`, and\n**`compact` is the default** — every read answers on the slim rung without\nbeing asked. In practice that is *every read tool here except*\n`fa_get_flight_map` and `fa_healthcheck`; the four alert writes\n(`fa_create_alert`, `fa_update_alert`, `fa_delete_alert`,\n`fa_set_alerts_endpoint`) take none either.\n\n**Compact here is media stripping, not a field projection — do not expect a\nfield list.** It removes image and avatar URLs from the payload and nothing\nelse. These tools hand back AeroAPI's response close to verbatim, and this repo\nholds no captured AeroAPI fixture and no documented field list, so nothing in\nit can honestly say which of FlightAware's fields matter and which are noise.\nInventing a keep-list would risk a flight record coming back with holes in it\nthat reads like a verified answer. Stripping is subtractive: it cannot lose a\nfield nobody knew about. The practical consequence is that on a typical AeroAPI\nflight or airport payload compact saves little — it is the honest ceiling, not\na compression claim.\n\n`view: \"full\"` returns AeroAPI's payload untouched. There is deliberately **no\n`raw` rung**: nothing normalises the payload on the way through, so `full`\nalready IS the untouched upstream response and a third value would silently\nalias it.\n\nWhy the six without it have none:\n\n- **`fa_get_flight_map`'s product IS the image.** It returns a rendered PNG —\n  written to disk, or inline base64 with `inline: true`. Routing that through a\n  rung whose whole job is removing images would delete exactly what you asked\n  for, so it is not wired and never should be.\n- **`fa_healthcheck`** answers \"is this connector working?\" with a verdict, not\n  a record. There is nothing in it to strip.\n- **The four alert writes return receipts** — an id, a status, a\n  preview and its `confirmToken`. A receipt has nothing to strip and everything to keep.\n  `fa_get_alerts_endpoint` is the read of that pair and does take `view`.\n\nPassing `view` to one of those six is not an error and not a warning: MCP tool\nschemas are non-strict, so the key is dropped and you get that tool's ordinary\noutput.\n\n## Notes\n\n- Flight idents can be a designator (`UAL123`), a registration (`N12345`), or an `fa_flight_id`; position/track/route/map tools take an `fa_flight_id`.\n- Paged collections return a `links.next` cursor — pass it back as `cursor` to fetch more.\n- Every request rides your own AeroAPI key; usage counts against your subscription quota.\n\nFile v1.2.1:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"flightaware-mcp\",\n  \"version\": \"1.2.1\",\n  \"publishedAt\": 1790351668816\n}\n\nFile v1.2.1:skill-card.md\n\n## Description:\n\nConnects an agent to FlightAware AeroAPI for flight tracking, airport and aircraft information, schedules, and flight alerts.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nAgents and their users can check live flight status, routes, airport activity, schedules, and aircraft ownership, and manage flight alerts.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The AeroAPI key is stored in MCP configuration and used for billable requests.\n\nMitigation: Protect the key, review the package or linked source before installation, and monitor API usage and charges.\n\nRisk: Creating, updating, or deleting flight alerts changes the user's account.\n\nMitigation: Review the alert-change preview and obtain user approval before confirming the write.\n\nRisk: Flight-map output can write PNG files to the selected directory.\n\nMitigation: Choose an appropriate output directory and review file output before use.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/chrischall/skills/flightaware-mcp)\n- [FlightAware AeroAPI portal](https://www.flightaware.com/aeroapi/portal/)\n- [flightaware-mcp npm package](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- [Source repository linked in skill documentation](https://github.com/chrischall/flightaware-mcp)\n\n## Skill Output:\n\n**Output Type(s):** [Text, JSON, Configuration, Guidance, Images]\n\n**Output Format:** [Markdown guidance and JSON responses; optional PNG flight maps]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Flight maps may be saved as files or returned inline.]\n\n## Skill Version(s):\n\n1.2.1 (source: server-resolved release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.2.0: 3 files, 4409 bytes\n\nFiles: skill-card.md (2254b), SKILL.md (6290b), _meta.json (134b)\n\nFile v1.2.0:SKILL.md\n\n---\nname: flightaware-mcp\ndescription: Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases like \"where is flight UAL123\", \"track flight\", \"JFK departures\", \"is my flight delayed\", \"flights near\", \"who owns tail number N12345\", or \"set up a flight alert\". Requires the @chrischall/flightaware-mcp package installed and the flightaware server registered (see Setup), plus an AeroAPI key.\n---\n\n# flightaware-mcp\n\nMCP server for **FlightAware AeroAPI** (v4) — live flight tracking, airport boards, operators, schedules, aircraft, and flight alerts, exposed to Claude over stdio.\n\n- **npm:** [npmjs.com/package/@chrischall/flightaware-mcp](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- **Source:** [github.com/chrischall/flightaware-mcp](https://github.com/chrischall/flightaware-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"flightaware\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/flightaware-mcp\"],\n      \"env\": {\n        \"AEROAPI_API_KEY\": \"your-aeroapi-key-here\"\n      }\n    }\n  }\n}\n```\n\nGet a key at [flightaware.com/aeroapi/portal](https://www.flightaware.com/aeroapi/portal/). The free **Personal** tier (500 calls/month) is enough to get started; AeroAPI bills per query.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/flightaware-mcp\ncd flightaware-mcp\nnpm install && npm run build\n```\n\n## Environment\n\n| Var | Required | Purpose |\n| --- | --- | --- |\n| `AEROAPI_API_KEY` | yes | Your FlightAware AeroAPI key (sent as the `x-apikey` header). |\n| `AEROAPI_OUTPUT_DIR` | no | Default directory for flight-map PNGs (default: cwd). |\n| `AEROAPI_CACHE_TTL` | no | Seconds to cache identical **live-data** GET responses to cut per-query billing (default: 15; `0` disables). |\n| `AEROAPI_STATIC_CACHE_TTL` | no | Longer TTL for **reference data** that rarely changes — airport/operator info, routes, ownership, canonical lookups (default: 3600; `0` disables). |\n\n## Tools\n\nEvery read tool below takes an optional `view` and answers on the **compact**\nrung when you omit it — see [Response shape](#response-shape-view).\n\n**Flights:** `fa_get_flights`, `fa_search_flights`, `fa_search_flights_advanced`, `fa_search_flight_positions`, `fa_count_flights`, `fa_get_flight_track`, `fa_get_flight_position`, `fa_get_flight_route`, `fa_get_flight_map`, `fa_get_flight_history`, `fa_resolve_flight`\n\n**Airports:** `fa_get_airport`, `fa_get_airport_flights`, `fa_get_airport_flight_counts`, `fa_get_airport_routes`, `fa_list_airports`, `fa_get_nearby_airports`, `fa_get_airport_delays`, `fa_get_airport_weather`, `fa_resolve_airport`\n\n**Operators / aircraft:** `fa_get_operator`, `fa_get_operator_flights`, `fa_list_operators`, `fa_get_aircraft_owner`\n\n**Schedules / predictive:** `fa_get_scheduled_flights`, `fa_foresight_search` (Foresight is a premium tier — expect a 402/403 on a Personal key)\n\n**Alerts** (account-mutating writes ask the user to confirm first — a confirmation prompt where the client supports one; otherwise the first call makes no network call and returns a preview plus a `confirmToken`, and only a repeat call with that token, after the user approves, performs the write): `fa_list_alerts`, `fa_get_alert`, `fa_create_alert`, `fa_update_alert`, `fa_delete_alert`, `fa_get_alerts_endpoint`, `fa_set_alerts_endpoint`\n\n## Response shape (`view`)\n\nTwenty-eight of the thirty-four tools take `view: \"compact\" | \"full\"`, and\n**`compact` is the default** — every read answers on the slim rung without\nbeing asked. In practice that is *every read tool here except*\n`fa_get_flight_map` and `fa_healthcheck`; the four alert writes\n(`fa_create_alert`, `fa_update_alert`, `fa_delete_alert`,\n`fa_set_alerts_endpoint`) take none either.\n\n**Compact here is media stripping, not a field projection — do not expect a\nfield list.** It removes image and avatar URLs from the payload and nothing\nelse. These tools hand back AeroAPI's response close to verbatim, and this repo\nholds no captured AeroAPI fixture and no documented field list, so nothing in\nit can honestly say which of FlightAware's fields matter and which are noise.\nInventing a keep-list would risk a flight record coming back with holes in it\nthat reads like a verified answer. Stripping is subtractive: it cannot lose a\nfield nobody knew about. The practical consequence is that on a typical AeroAPI\nflight or airport payload compact saves little — it is the honest ceiling, not\na compression claim.\n\n`view: \"full\"` returns AeroAPI's payload untouched. There is deliberately **no\n`raw` rung**: nothing normalises the payload on the way through, so `full`\nalready IS the untouched upstream response and a third value would silently\nalias it.\n\nWhy the six without it have none:\n\n- **`fa_get_flight_map`'s product IS the image.** It returns a rendered PNG —\n  written to disk, or inline base64 with `inline: true`. Routing that through a\n  rung whose whole job is removing images would delete exactly what you asked\n  for, so it is not wired and never should be.\n- **`fa_healthcheck`** answers \"is this connector working?\" with a verdict, not\n  a record. There is nothing in it to strip.\n- **The four alert writes return receipts** — an id, a status, a\n  preview and its `confirmToken`. A receipt has nothing to strip and everything to keep.\n  `fa_get_alerts_endpoint` is the read of that pair and does take `view`.\n\nPassing `view` to one of those six is not an error and not a warning: MCP tool\nschemas are non-strict, so the key is dropped and you get that tool's ordinary\noutput.\n\n## Notes\n\n- Flight idents can be a designator (`UAL123`), a registration (`N12345`), or an `fa_flight_id`; position/track/route/map tools take an `fa_flight_id`.\n- Paged collections return a `links.next` cursor — pass it back as `cursor` to fetch more.\n- Every request rides your own AeroAPI key; usage counts against your subscription quota.\n\nFile v1.2.0:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"flightaware-mcp\",\n  \"version\": \"1.2.0\",\n  \"publishedAt\": 1790262610474\n}\n\nFile v1.2.0:skill-card.md\n\n## Description:\n\nLive flight tracking and aviation data via FlightAware AeroAPI through MCP.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to configure and operate a FlightAware MCP server for live flight status, aircraft, airport, schedule, route, position, map, and alert workflows.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill uses the user's FlightAware AeroAPI key for live requests, which may consume subscription quota.\n\nMitigation: Configure the intended AeroAPI key only, monitor quota usage, and use the documented cache settings where appropriate.\n\nRisk: Alert-management tools can change FlightAware account configuration.\n\nMitigation: Review alert creation, update, deletion, and endpoint-change prompts before approving them.\n\nRisk: Installation depends on a third-party npm package and repository.\n\nMitigation: Verify that the npm package and repository match the trusted publisher before installing or running the MCP server.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/chrischall/skills/flightaware-mcp)\n- [npm package](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- [FlightAware AeroAPI portal](https://www.flightaware.com/aeroapi/portal/)\n- [flightaware-mcp source repository](https://github.com/chrischall/flightaware-mcp)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Files, Guidance]\n\n**Output Format:** [Markdown guidance with inline JSON and shell code blocks; configured MCP tools return flight data, receipts, and optional PNG map files.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires a FlightAware AeroAPI key; live requests may count against the user's FlightAware quota.]\n\n## Skill Version(s):\n\n1.2.0 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.1.2: 3 files, 4334 bytes\n\nFiles: skill-card.md (2180b), SKILL.md (6113b), _meta.json (134b)\n\nFile v1.1.2:SKILL.md\n\n---\nname: flightaware-mcp\ndescription: Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases like \"where is flight UAL123\", \"track flight\", \"JFK departures\", \"is my flight delayed\", \"flights near\", \"who owns tail number N12345\", or \"set up a flight alert\". Requires the @chrischall/flightaware-mcp package installed and the flightaware server registered (see Setup), plus an AeroAPI key.\n---\n\n# flightaware-mcp\n\nMCP server for **FlightAware AeroAPI** (v4) — live flight tracking, airport boards, operators, schedules, aircraft, and flight alerts, exposed to Claude over stdio.\n\n- **npm:** [npmjs.com/package/@chrischall/flightaware-mcp](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- **Source:** [github.com/chrischall/flightaware-mcp](https://github.com/chrischall/flightaware-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"flightaware\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/flightaware-mcp\"],\n      \"env\": {\n        \"AEROAPI_API_KEY\": \"your-aeroapi-key-here\"\n      }\n    }\n  }\n}\n```\n\nGet a key at [flightaware.com/aeroapi/portal](https://www.flightaware.com/aeroapi/portal/). The free **Personal** tier (500 calls/month) is enough to get started; AeroAPI bills per query.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/flightaware-mcp\ncd flightaware-mcp\nnpm install && npm run build\n```\n\n## Environment\n\n| Var | Required | Purpose |\n| --- | --- | --- |\n| `AEROAPI_API_KEY` | yes | Your FlightAware AeroAPI key (sent as the `x-apikey` header). |\n| `AEROAPI_OUTPUT_DIR` | no | Default directory for flight-map PNGs (default: cwd). |\n| `AEROAPI_CACHE_TTL` | no | Seconds to cache identical **live-data** GET responses to cut per-query billing (default: 15; `0` disables). |\n| `AEROAPI_STATIC_CACHE_TTL` | no | Longer TTL for **reference data** that rarely changes — airport/operator info, routes, ownership, canonical lookups (default: 3600; `0` disables). |\n\n## Tools\n\nEvery read tool below takes an optional `view` and answers on the **compact**\nrung when you omit it — see [Response shape](#response-shape-view).\n\n**Flights:** `fa_get_flights`, `fa_search_flights`, `fa_search_flights_advanced`, `fa_search_flight_positions`, `fa_count_flights`, `fa_get_flight_track`, `fa_get_flight_position`, `fa_get_flight_route`, `fa_get_flight_map`, `fa_get_flight_history`, `fa_resolve_flight`\n\n**Airports:** `fa_get_airport`, `fa_get_airport_flights`, `fa_get_airport_flight_counts`, `fa_get_airport_routes`, `fa_list_airports`, `fa_get_nearby_airports`, `fa_get_airport_delays`, `fa_get_airport_weather`, `fa_resolve_airport`\n\n**Operators / aircraft:** `fa_get_operator`, `fa_get_operator_flights`, `fa_list_operators`, `fa_get_aircraft_owner`\n\n**Schedules / predictive:** `fa_get_scheduled_flights`, `fa_foresight_search` (Foresight is a premium tier — expect a 402/403 on a Personal key)\n\n**Alerts** (account-mutating writes are confirm-gated — without `confirm: true` they return a dry-run preview and make no network call): `fa_list_alerts`, `fa_get_alert`, `fa_create_alert`, `fa_update_alert`, `fa_delete_alert`, `fa_get_alerts_endpoint`, `fa_set_alerts_endpoint`\n\n## Response shape (`view`)\n\nTwenty-eight of the thirty-four tools take `view: \"compact\" | \"full\"`, and\n**`compact` is the default** — every read answers on the slim rung without\nbeing asked. In practice that is *every read tool here except*\n`fa_get_flight_map` and `fa_healthcheck`; the four alert writes\n(`fa_create_alert`, `fa_update_alert`, `fa_delete_alert`,\n`fa_set_alerts_endpoint`) take none either.\n\n**Compact here is media stripping, not a field projection — do not expect a\nfield list.** It removes image and avatar URLs from the payload and nothing\nelse. These tools hand back AeroAPI's response close to verbatim, and this repo\nholds no captured AeroAPI fixture and no documented field list, so nothing in\nit can honestly say which of FlightAware's fields matter and which are noise.\nInventing a keep-list would risk a flight record coming back with holes in it\nthat reads like a verified answer. Stripping is subtractive: it cannot lose a\nfield nobody knew about. The practical consequence is that on a typical AeroAPI\nflight or airport payload compact saves little — it is the honest ceiling, not\na compression claim.\n\n`view: \"full\"` returns AeroAPI's payload untouched. There is deliberately **no\n`raw` rung**: nothing normalises the payload on the way through, so `full`\nalready IS the untouched upstream response and a third value would silently\nalias it.\n\nWhy the six without it have none:\n\n- **`fa_get_flight_map`'s product IS the image.** It returns a rendered PNG —\n  written to disk, or inline base64 with `inline: true`. Routing that through a\n  rung whose whole job is removing images would delete exactly what you asked\n  for, so it is not wired and never should be.\n- **`fa_healthcheck`** answers \"is this connector working?\" with a verdict, not\n  a record. There is nothing in it to strip.\n- **The four alert writes return receipts** — an id, a status, a dry-run\n  preview. A receipt has nothing to strip and everything to keep.\n  `fa_get_alerts_endpoint` is the read of that pair and does take `view`.\n\nPassing `view` to one of those six is not an error and not a warning: MCP tool\nschemas are non-strict, so the key is dropped and you get that tool's ordinary\noutput.\n\n## Notes\n\n- Flight idents can be a designator (`UAL123`), a registration (`N12345`), or an `fa_flight_id`; position/track/route/map tools take an `fa_flight_id`.\n- Paged collections return a `links.next` cursor — pass it back as `cursor` to fetch more.\n- Every request rides your own AeroAPI key; usage counts against your subscription quota.\n\nFile v1.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"flightaware-mcp\",\n  \"version\": \"1.1.2\",\n  \"publishedAt\": 1790199502147\n}\n\nFile v1.1.2:skill-card.md\n\n## Description:\n\nLive flight tracking and aviation data via FlightAware AeroAPI through MCP for flight, airport, operator, aircraft, schedule, and alert workflows.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and aviation users use this skill to connect an agent to FlightAware AeroAPI for live flight status, positions, routes, airport boards, weather, delays, schedules, aircraft ownership, and alert management.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill depends on an external npm MCP package that receives the user's FlightAware AeroAPI key.\n\nMitigation: Install it only after reviewing the package or source to the level required for your supply-chain assurance.\n\nRisk: FlightAware alert tools can modify account state when confirmed.\n\nMitigation: Use the documented dry-run behavior first and provide explicit confirmation only for intended alert changes.\n\nRisk: AeroAPI usage is billed or quota-limited per query.\n\nMitigation: Configure cache TTLs where appropriate and monitor usage against the selected FlightAware plan.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/chrischall/skills/flightaware-mcp)\n- [npm package @chrischall/flightaware-mcp](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- [FlightAware AeroAPI portal](https://www.flightaware.com/aeroapi/portal/)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown with JSON and bash code blocks]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Can return FlightAware API responses, compact or full views, and flight-map PNG files when the MCP server is configured.]\n\n## Skill Version(s):\n\n1.1.2 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.1.1: 3 files, 4365 bytes\n\nFiles: skill-card.md (2375b), SKILL.md (6113b), _meta.json (134b)\n\nFile v1.1.1:SKILL.md\n\n---\nname: flightaware-mcp\ndescription: Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases like \"where is flight UAL123\", \"track flight\", \"JFK departures\", \"is my flight delayed\", \"flights near\", \"who owns tail number N12345\", or \"set up a flight alert\". Requires the @chrischall/flightaware-mcp package installed and the flightaware server registered (see Setup), plus an AeroAPI key.\n---\n\n# flightaware-mcp\n\nMCP server for **FlightAware AeroAPI** (v4) — live flight tracking, airport boards, operators, schedules, aircraft, and flight alerts, exposed to Claude over stdio.\n\n- **npm:** [npmjs.com/package/@chrischall/flightaware-mcp](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- **Source:** [github.com/chrischall/flightaware-mcp](https://github.com/chrischall/flightaware-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"flightaware\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/flightaware-mcp\"],\n      \"env\": {\n        \"AEROAPI_API_KEY\": \"your-aeroapi-key-here\"\n      }\n    }\n  }\n}\n```\n\nGet a key at [flightaware.com/aeroapi/portal](https://www.flightaware.com/aeroapi/portal/). The free **Personal** tier (500 calls/month) is enough to get started; AeroAPI bills per query.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/flightaware-mcp\ncd flightaware-mcp\nnpm install && npm run build\n```\n\n## Environment\n\n| Var | Required | Purpose |\n| --- | --- | --- |\n| `AEROAPI_API_KEY` | yes | Your FlightAware AeroAPI key (sent as the `x-apikey` header). |\n| `AEROAPI_OUTPUT_DIR` | no | Default directory for flight-map PNGs (default: cwd). |\n| `AEROAPI_CACHE_TTL` | no | Seconds to cache identical **live-data** GET responses to cut per-query billing (default: 15; `0` disables). |\n| `AEROAPI_STATIC_CACHE_TTL` | no | Longer TTL for **reference data** that rarely changes — airport/operator info, routes, ownership, canonical lookups (default: 3600; `0` disables). |\n\n## Tools\n\nEvery read tool below takes an optional `view` and answers on the **compact**\nrung when you omit it — see [Response shape](#response-shape-view).\n\n**Flights:** `fa_get_flights`, `fa_search_flights`, `fa_search_flights_advanced`, `fa_search_flight_positions`, `fa_count_flights`, `fa_get_flight_track`, `fa_get_flight_position`, `fa_get_flight_route`, `fa_get_flight_map`, `fa_get_flight_history`, `fa_resolve_flight`\n\n**Airports:** `fa_get_airport`, `fa_get_airport_flights`, `fa_get_airport_flight_counts`, `fa_get_airport_routes`, `fa_list_airports`, `fa_get_nearby_airports`, `fa_get_airport_delays`, `fa_get_airport_weather`, `fa_resolve_airport`\n\n**Operators / aircraft:** `fa_get_operator`, `fa_get_operator_flights`, `fa_list_operators`, `fa_get_aircraft_owner`\n\n**Schedules / predictive:** `fa_get_scheduled_flights`, `fa_foresight_search` (Foresight is a premium tier — expect a 402/403 on a Personal key)\n\n**Alerts** (account-mutating writes are confirm-gated — without `confirm: true` they return a dry-run preview and make no network call): `fa_list_alerts`, `fa_get_alert`, `fa_create_alert`, `fa_update_alert`, `fa_delete_alert`, `fa_get_alerts_endpoint`, `fa_set_alerts_endpoint`\n\n## Response shape (`view`)\n\nTwenty-eight of the thirty-four tools take `view: \"compact\" | \"full\"`, and\n**`compact` is the default** — every read answers on the slim rung without\nbeing asked. In practice that is *every read tool here except*\n`fa_get_flight_map` and `fa_healthcheck`; the four alert writes\n(`fa_create_alert`, `fa_update_alert`, `fa_delete_alert`,\n`fa_set_alerts_endpoint`) take none either.\n\n**Compact here is media stripping, not a field projection — do not expect a\nfield list.** It removes image and avatar URLs from the payload and nothing\nelse. These tools hand back AeroAPI's response close to verbatim, and this repo\nholds no captured AeroAPI fixture and no documented field list, so nothing in\nit can honestly say which of FlightAware's fields matter and which are noise.\nInventing a keep-list would risk a flight record coming back with holes in it\nthat reads like a verified answer. Stripping is subtractive: it cannot lose a\nfield nobody knew about. The practical consequence is that on a typical AeroAPI\nflight or airport payload compact saves little — it is the honest ceiling, not\na compression claim.\n\n`view: \"full\"` returns AeroAPI's payload untouched. There is deliberately **no\n`raw` rung**: nothing normalises the payload on the way through, so `full`\nalready IS the untouched upstream response and a third value would silently\nalias it.\n\nWhy the six without it have none:\n\n- **`fa_get_flight_map`'s product IS the image.** It returns a rendered PNG —\n  written to disk, or inline base64 with `inline: true`. Routing that through a\n  rung whose whole job is removing images would delete exactly what you asked\n  for, so it is not wired and never should be.\n- **`fa_healthcheck`** answers \"is this connector working?\" with a verdict, not\n  a record. There is nothing in it to strip.\n- **The four alert writes return receipts** — an id, a status, a dry-run\n  preview. A receipt has nothing to strip and everything to keep.\n  `fa_get_alerts_endpoint` is the read of that pair and does take `view`.\n\nPassing `view` to one of those six is not an error and not a warning: MCP tool\nschemas are non-strict, so the key is dropped and you get that tool's ordinary\noutput.\n\n## Notes\n\n- Flight idents can be a designator (`UAL123`), a registration (`N12345`), or an `fa_flight_id`; position/track/route/map tools take an `fa_flight_id`.\n- Paged collections return a `links.next` cursor — pass it back as `cursor` to fetch more.\n- Every request rides your own AeroAPI key; usage counts against your subscription quota.\n\nFile v1.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"flightaware-mcp\",\n  \"version\": \"1.1.1\",\n  \"publishedAt\": 1790178097823\n}\n\nFile v1.1.1:skill-card.md\n\n## Description:\n\nflightaware-mcp helps agents use FlightAware AeroAPI through MCP for live flight tracking, airport boards, operator and aircraft lookups, scheduled flights, and confirm-gated FlightAware alert management.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to configure and operate a FlightAware MCP server for flight status, route, airport, operator, aircraft, schedule, and alert workflows with their own AeroAPI key.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill depends on a third-party npm package and requires a FlightAware AeroAPI key.\n\nMitigation: Install only after reviewing and trusting the package, and provide the AeroAPI key through environment configuration rather than embedding it in prompts or shared files.\n\nRisk: AeroAPI requests can consume quota or create billing impact.\n\nMitigation: Monitor FlightAware account usage, use the documented cache settings where appropriate, and avoid broad repeated queries unless the cost is acceptable.\n\nRisk: Alert-management tools can change FlightAware alert settings when explicitly confirmed.\n\nMitigation: Review dry-run previews and require deliberate confirmation before creating, updating, deleting, or changing alert endpoints.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/chrischall/skills/flightaware-mcp)\n- [npm package @chrischall/flightaware-mcp](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- [FlightAware AeroAPI portal](https://www.flightaware.com/aeroapi/portal/)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with JSON configuration and shell command snippets]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires a user-provided FlightAware AeroAPI key and a registered flightaware MCP server.]\n\n## Skill Version(s):\n\n1.1.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.1.0: 3 files, 4357 bytes\n\nFiles: skill-card.md (2276b), SKILL.md (6113b), _meta.json (134b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: flightaware-mcp\ndescription: Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases like \"where is flight UAL123\", \"track flight\", \"JFK departures\", \"is my flight delayed\", \"flights near\", \"who owns tail number N12345\", or \"set up a flight alert\". Requires the @chrischall/flightaware-mcp package installed and the flightaware server registered (see Setup), plus an AeroAPI key.\n---\n\n# flightaware-mcp\n\nMCP server for **FlightAware AeroAPI** (v4) — live flight tracking, airport boards, operators, schedules, aircraft, and flight alerts, exposed to Claude over stdio.\n\n- **npm:** [npmjs.com/package/@chrischall/flightaware-mcp](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- **Source:** [github.com/chrischall/flightaware-mcp](https://github.com/chrischall/flightaware-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"flightaware\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/flightaware-mcp\"],\n      \"env\": {\n        \"AEROAPI_API_KEY\": \"your-aeroapi-key-here\"\n      }\n    }\n  }\n}\n```\n\nGet a key at [flightaware.com/aeroapi/portal](https://www.flightaware.com/aeroapi/portal/). The free **Personal** tier (500 calls/month) is enough to get started; AeroAPI bills per query.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/flightaware-mcp\ncd flightaware-mcp\nnpm install && npm run build\n```\n\n## Environment\n\n| Var | Required | Purpose |\n| --- | --- | --- |\n| `AEROAPI_API_KEY` | yes | Your FlightAware AeroAPI key (sent as the `x-apikey` header). |\n| `AEROAPI_OUTPUT_DIR` | no | Default directory for flight-map PNGs (default: cwd). |\n| `AEROAPI_CACHE_TTL` | no | Seconds to cache identical **live-data** GET responses to cut per-query billing (default: 15; `0` disables). |\n| `AEROAPI_STATIC_CACHE_TTL` | no | Longer TTL for **reference data** that rarely changes — airport/operator info, routes, ownership, canonical lookups (default: 3600; `0` disables). |\n\n## Tools\n\nEvery read tool below takes an optional `view` and answers on the **compact**\nrung when you omit it — see [Response shape](#response-shape-view).\n\n**Flights:** `fa_get_flights`, `fa_search_flights`, `fa_search_flights_advanced`, `fa_search_flight_positions`, `fa_count_flights`, `fa_get_flight_track`, `fa_get_flight_position`, `fa_get_flight_route`, `fa_get_flight_map`, `fa_get_flight_history`, `fa_resolve_flight`\n\n**Airports:** `fa_get_airport`, `fa_get_airport_flights`, `fa_get_airport_flight_counts`, `fa_get_airport_routes`, `fa_list_airports`, `fa_get_nearby_airports`, `fa_get_airport_delays`, `fa_get_airport_weather`, `fa_resolve_airport`\n\n**Operators / aircraft:** `fa_get_operator`, `fa_get_operator_flights`, `fa_list_operators`, `fa_get_aircraft_owner`\n\n**Schedules / predictive:** `fa_get_scheduled_flights`, `fa_foresight_search` (Foresight is a premium tier — expect a 402/403 on a Personal key)\n\n**Alerts** (account-mutating writes are confirm-gated — without `confirm: true` they return a dry-run preview and make no network call): `fa_list_alerts`, `fa_get_alert`, `fa_create_alert`, `fa_update_alert`, `fa_delete_alert`, `fa_get_alerts_endpoint`, `fa_set_alerts_endpoint`\n\n## Response shape (`view`)\n\nTwenty-eight of the thirty-four tools take `view: \"compact\" | \"full\"`, and\n**`compact` is the default** — every read answers on the slim rung without\nbeing asked. In practice that is *every read tool here except*\n`fa_get_flight_map` and `fa_healthcheck`; the four alert writes\n(`fa_create_alert`, `fa_update_alert`, `fa_delete_alert`,\n`fa_set_alerts_endpoint`) take none either.\n\n**Compact here is media stripping, not a field projection — do not expect a\nfield list.** It removes image and avatar URLs from the payload and nothing\nelse. These tools hand back AeroAPI's response close to verbatim, and this repo\nholds no captured AeroAPI fixture and no documented field list, so nothing in\nit can honestly say which of FlightAware's fields matter and which are noise.\nInventing a keep-list would risk a flight record coming back with holes in it\nthat reads like a verified answer. Stripping is subtractive: it cannot lose a\nfield nobody knew about. The practical consequence is that on a typical AeroAPI\nflight or airport payload compact saves little — it is the honest ceiling, not\na compression claim.\n\n`view: \"full\"` returns AeroAPI's payload untouched. There is deliberately **no\n`raw` rung**: nothing normalises the payload on the way through, so `full`\nalready IS the untouched upstream response and a third value would silently\nalias it.\n\nWhy the six without it have none:\n\n- **`fa_get_flight_map`'s product IS the image.** It returns a rendered PNG —\n  written to disk, or inline base64 with `inline: true`. Routing that through a\n  rung whose whole job is removing images would delete exactly what you asked\n  for, so it is not wired and never should be.\n- **`fa_healthcheck`** answers \"is this connector working?\" with a verdict, not\n  a record. There is nothing in it to strip.\n- **The four alert writes return receipts** — an id, a status, a dry-run\n  preview. A receipt has nothing to strip and everything to keep.\n  `fa_get_alerts_endpoint` is the read of that pair and does take `view`.\n\nPassing `view` to one of those six is not an error and not a warning: MCP tool\nschemas are non-strict, so the key is dropped and you get that tool's ordinary\noutput.\n\n## Notes\n\n- Flight idents can be a designator (`UAL123`), a registration (`N12345`), or an `fa_flight_id`; position/track/route/map tools take an `fa_flight_id`.\n- Paged collections return a `links.next` cursor — pass it back as `cursor` to fetch more.\n- Every request rides your own AeroAPI key; usage counts against your subscription quota.\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"flightaware-mcp\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1789872540699\n}\n\nFile v1.1.0:skill-card.md\n\n## Description:\n\nLive flight tracking and aviation data via FlightAware AeroAPI through MCP.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to configure and use a FlightAware MCP server for live flight status, routes, positions, airport boards, aircraft ownership, schedules, weather, delays, and confirm-gated flight alert management.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill requires an AeroAPI key in MCP configuration.\n\nMitigation: Store the key only in local configuration or environment-managed secrets and avoid sharing generated MCP config with the key included.\n\nRisk: FlightAware AeroAPI calls consume the user's subscription quota and may incur billing.\n\nMitigation: Use the documented caching settings where appropriate and review usage against the FlightAware plan before high-volume queries.\n\nRisk: Alert tools can modify FlightAware alert settings when confirm is set to true.\n\nMitigation: Review the dry-run preview before using confirm: true for create, update, delete, or endpoint changes.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/chrischall/skills/flightaware-mcp)\n- [npm package: @chrischall/flightaware-mcp](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- [FlightAware AeroAPI portal](https://www.flightaware.com/aeroapi/portal/)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance, files]\n\n**Output Format:** [Markdown guidance with JSON and bash code blocks; MCP tool outputs return FlightAware response data and can write flight-map PNG files.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires an AeroAPI API key. Compact view strips media URLs by default, and alert writes are confirm-gated.]\n\n## Skill Version(s):\n\n1.1.0 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.","readmeExcerpt":"Skill: flightaware-mcp Owner: chrischall Summary: Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases","codeSnippets":[],"executableExamples":[{"language":"json","snippet":"{\n  \"mcpServers\": {\n    \"flightaware\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/flightaware-mcp\"],\n      \"env\": {\n        \"AEROAPI_API_KEY\": \"your-aeroapi-key-here\"\n      }\n    }\n  }\n}"},{"language":"bash","snippet":"git clone https://github.com/chrischall/flightaware-mcp\ncd flightaware-mcp\nnpm install && npm run build"},{"language":"json","snippet":"{\n  \"mcpServers\": {\n    \"flightaware\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/flightaware-mcp\"],\n      \"env\": {\n        \"AEROAPI_API_KEY\": \"your-aeroapi-key-here\"\n      }\n    }\n  }\n}"},{"language":"bash","snippet":"git clone https://github.com/chrischall/flightaware-mcp\ncd flightaware-mcp\nnpm install && npm run build"},{"language":"json","snippet":"{\n  \"mcpServers\": {\n    \"flightaware\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/flightaware-mcp\"],\n      \"env\": {\n        \"AEROAPI_API_KEY\": \"your-aeroapi-key-here\"\n      }\n    }\n  }\n}"},{"language":"bash","snippet":"git clone https://github.com/chrischall/flightaware-mcp\ncd flightaware-mcp\nnpm install && npm run build"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: flightaware-mcp\ndescription: Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases like \"where is flight UAL123\", \"track flight\", \"JFK departures\", \"is my flight delayed\", \"flights near\", \"who owns tail number N12345\", or \"set up a flight alert\". Requires the @chrischall/flightaware-mcp package installed and the flightaware server registered (see Setup), plus an AeroAPI key.\n---\n\n# flightaware-mcp\n\nMCP server for **FlightAware AeroAPI** (v4) — live flight tracking, airport boards, operators, schedules, aircraft, and flight alerts, exposed to Claude over stdio.\n\n- **npm:** [npmjs.com/package/@chrischall/flightaware-mcp](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- **Source:** [github.com/chrischall/flightaware-mcp](https://github.com/chrischall/flightaware-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"flightaware\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/flightaware-mcp\"],\n      \"env\": {\n        \"AEROAPI_API_KEY\": \"your-aeroapi-key-here\"\n      }\n    }\n  }\n}\n```\n\nGet a key at [flightaware.com/aeroapi/portal](https://www.flightaware.com/aeroapi/portal/). The free **Personal** tier (500 calls/month) is enough to get started; AeroAPI bills per query.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/flightaware-mcp\ncd flightaware-mcp\nnpm install && npm run build\n```\n\n## Environment\n\n| Var | Required | Purpose |\n| --- | --- | --- |\n| `AEROAPI_API_KEY` | yes | Your FlightAware AeroAPI key (sent as the `x-apikey` header). |\n| `AEROAPI_OUTPUT_DIR` | no | Default directory for flight-map PNGs (default: `~/Downloads/flightaware-mcp`). |\n| `AEROAPI_CACHE_TTL` | no | Seconds to cache identical **live-data** GET responses to cut per-query billing (default: 15; `0` disables). |\n| `AEROAPI_STATIC_CACHE_TTL` | no | Longer TTL for **reference data** that rarely changes — airport/operator info, routes, ownership, canonical lookups (default: 3600; `0` disables). |\n\n## Tools\n\nEvery read tool below takes an optional `view` and answers on the **compact**\nrung when you omit it — see [Response shape](#response-shape-view).\n\n**Flights:** `fa_get_flights`, `fa_search_flights`, `fa_search_flights_advanced`, `fa_search_flight_positions`, `fa_count_flights`, `fa_get_flight_track`, `fa_get_flight_position`, `fa_get_flight_route`, `fa_get_flight_map`, `fa_get_flight_history`, `fa_resolve_flight`\n\n**Airports:** `fa_get_airport`, `fa_get_airport_flights`, `fa_get_airport_flight_counts`, `fa_get_airport_routes`, `fa_list_airports`, `fa_get_nearby_airports`, `fa_get_airport_delays`, `fa_get_airport_weat"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"flightaware-mcp\",\n  \"version\": \"1.3.1\",\n  \"publishedAt\": 1791588252647\n}"},{"path":"skill-card.md","content":"## Description:\n\nProvides flight tracking, airport information, schedules, aircraft ownership lookups, and flight alert management through FlightAware AeroAPI.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nTravelers, aviation enthusiasts, and developers use this skill to check flight status, positions, airport activity, schedules, and aircraft ownership, or to manage flight alerts.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Installing an unverified package could expose the user's environment or API key.\n\nMitigation: Verify the npm/GitHub package provenance before installation and use an AeroAPI key with only the privileges needed.\n\nRisk: Alert writes can change FlightAware account alert settings and endpoints.\n\nMitigation: Keep alert creation, updates, deletion, and endpoint changes subject to explicit user confirmation.\n\n## Reference(s):\n\n- [ClawHub skill listing](https://clawhub.ai/chrischall/skills/flightaware-mcp)\n- [npm package (linked in skill)](https://www.npmjs.com/package/@chrischall/flightaware-mcp)\n- [FlightAware AeroAPI portal](https://www.flightaware.com/aeroapi/portal/)\n\n## Skill Output:\n\n**Output Type(s):** [Text, JSON, PNG images]\n\n**Output Format:** [Flight and airport data, alert receipts, and optional flight-map PNGs]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Flight maps can be saved locally or returned inline; live requests use the user's AeroAPI quota.]\n\n## Skill Version(s):\n\n1.3.1 (source: server-resolved ClawHub release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases like \"where is flight UAL123\", \"track flight\", \"JFK departures\", \"is my flight delayed\", \"flights near\", \"who owns tail number N12345\", or \"set up a flight alert\". Requires the @chrischall/flightaware-mcp package installed and the flightaware server registered (see Setup), plus an AeroAPI key. Skill: flightaware-mcp Owner: chrischall Summary: Live flight tracking and aviation data via FlightAware AeroAPI through MCP. Use when the user asks to track a flight, look up a flight's status/position/route/track, see an airport's arrivals/departures/delays/weather, find flights for an airline, look up an aircraft's owner, get scheduled flights between dates, or manage FlightAware flight alerts. Triggers on phrases","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1244,"uniquenessScore":45,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T02:52:36.604Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T02:52:36.604Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T07:40:39.371Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}