Data source: OpenSky Network API
https://context.gnist.ai/mcp/opensky/
AuthenticationAll requests require a Gnist-API-Key header (or api_key query parameter).
Free tier: 100 calls/day. Get your API key.
Tools (4)
get_aircraft_statesGet live aircraft positions from the OpenSky Network.
Returns real-time ADS-B state vectors for aircraft currently in
the air. Filter by geographic bounding box or specific ICAO24
transponder addresses. Data includes position, altitude, speed,
heading, and country of origin.
Tip: Use a bounding box to focus on a region (e.g. lamin=40,
lamax=50, lomin=-5, lomax=10 for Western Europe).
Args:
lamin: Lower latitude bound. All 4 bbox params required together.
lamax: Upper latitude bound.
lomin: Lower longitude bound.
lomax: Upper longitude bound.
icao24: ICAO24 hex addresses to filter by. Max 10.
limit: Maximum aircraft to return (1-2000, default 200).
Returns:
Live aircraft with position, altitude, speed, heading, callsign.
| Parameter | Type | Required | Description |
|---|---|---|---|
lamin | any | optional | Lower latitude bound (WGS-84 degrees, e.g. 45.0). All four bbox params required together. |
lamax | any | optional | Upper latitude bound (e.g. 50.0). |
lomin | any | optional | Lower longitude bound (e.g. -5.0). |
lomax | any | optional | Upper longitude bound (e.g. 5.0). |
icao24 | any | optional | ICAO24 hex addresses to filter (e.g. ["3c6444", "a1b2c3"]). Max 10. |
limit | integer | optional | Maximum aircraft to return (1-2000, default 200). (default: 200) |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_aircraft_states",
"arguments": {}
}
}get_flight_trackGet the flight trajectory (waypoints) for an aircraft.
Returns the path an aircraft has taken, with latitude, longitude,
altitude, and heading at each waypoint. Use time_value=0 for the
current live track, or a specific Unix timestamp for a historical
flight (up to 30 days back).
Args:
icao24: ICAO24 hex address (6 hex characters, e.g. "3c6444").
time_value: Unix timestamp within the flight. 0 for live track.
Returns:
Flight path with callsign, start/end times, and waypoints
(time, lat, lon, altitude, heading, on_ground).
| Parameter | Type | Required | Description |
|---|---|---|---|
icao24 | string | required | ICAO24 hex address of the aircraft (e.g. "3c6444"). Use search_aircraft to find addresses. |
time_value | integer | optional | Unix timestamp within the flight. Use 0 for current/live track. (default: 0) |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_flight_track",
"arguments": {
"icao24": "example"
}
}
}search_aircraftSearch for a specific aircraft by ICAO24 address or callsign.
Two search modes:
- By ICAO24: directly queries for the aircraft (no bbox needed).
- By callsign: searches within a bounding box region and filters
by callsign match. Bounding box is required for callsign search.
Args:
icao24: ICAO24 hex address to look up directly.
callsign: Callsign to search for (requires bounding box).
lamin: Lower latitude bound (for callsign search).
lamax: Upper latitude bound.
lomin: Lower longitude bound.
lomax: Upper longitude bound.
limit: Maximum results (1-200, default 50).
Returns:
Matching aircraft with position, altitude, speed, heading.
| Parameter | Type | Required | Description |
|---|---|---|---|
icao24 | any | optional | ICAO24 hex address to look up (e.g. "3c6444"). Directly queries the aircraft. |
callsign | any | optional | Callsign to search for (e.g. "DLH9MT", "RYR1234"). Requires bounding box. |
lamin | any | optional | Lower latitude bound (required for callsign search). |
lamax | any | optional | Upper latitude bound. |
lomin | any | optional | Lower longitude bound. |
lomax | any | optional | Upper longitude bound. |
limit | integer | optional | Maximum results (1-200, default 50). (default: 50) |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "search_aircraft",
"arguments": {}
}
}report_feedbackReport a bug, feature request, or general feedback for this data source.
Use this when something doesn't work as expected, when you'd like
a new feature, or when you have suggestions for improvement.
Args:
feedback: Describe the issue or suggestion.
feedback_type: One of 'bug', 'feature_request', or 'general'.
| Parameter | Type | Required | Description |
|---|---|---|---|
feedback | string | required | |
feedback_type | string | optional | (default: "general") |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "report_feedback",
"arguments": {
"feedback": "example"
}
}
}Quick Start
curl -X POST "https://context.gnist.ai/mcp/opensky/" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_flight_track", "arguments": {"icao24": "example"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/opensky/",
headers={"Gnist-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
json={
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_flight_track",
"arguments": {
"icao24": "example"
}
}
},
)
print(resp.json())