{"openapi":"3.0.3","info":{"title":"Gnist Context — IODA (Internet Outage Detection)","description":"Internet outage detection and analysis — real-time alerts, processed events, aggregated summaries, and time-series signal data for countries, ASNs, and regions. Monitors BGP, active probing, and traffic data.\n\n- **MCP endpoint:** `https://context.gnist.ai/mcp/ioda/`\n- **Toolkit page:** `/toolkits/ioda`\n- **Full API spec:** `/api/openapi.json`\n- **Get an API key:** `/signup`","version":"1.0.0","contact":{"name":"GnistAI","url":"https://gnist.ai"}},"servers":[{"url":"https://context.gnist.ai","description":"Production"}],"paths":{"/rest/ioda/get_outage_alerts":{"post":{"tags":["Security"],"summary":"get_outage_alerts","description":"Get recent internet outage alerts from IODA (Georgia Tech).\n\nReturns alerts about detected internet connectivity disruptions worldwide.\nMonitors BGP routing, active probing, and traffic data to detect outages\naffecting countries, autonomous systems (ASNs), and regions.\n\nArgs:\n    country_code: ISO 3166-1 alpha-2 country code to filter by (e.g. \"US\", \"DE\", \"NO\").\n    asn: Autonomous System Number to filter by (e.g. \"15169\" for Google).\n    hours: Lookback window in hours (1-720, default 24).\n    limit: Maximum results to return (1-200, default 20).\n\nReturns:\n    Dict with 'source', 'count', and 'alerts' list. Each alert includes\n    entity info, datasource, severity level, timestamp, and signal values.","operationId":"ioda_get_outage_alerts","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO 3166-1 alpha-2 country code to filter by (e.g. \"US\", \"DE\", \"NO\")."},"asn":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Autonomous System Number to filter by (e.g. \"15169\" for Google, \"13335\" for Cloudflare)."},"hours":{"default":24,"description":"Lookback window in hours (1-720, default 24).","type":"number"},"limit":{"default":20,"description":"Maximum results to return (1-200, default 20).","type":"integer"}},"type":"object"}}}}}},"/rest/ioda/get_outage_events":{"post":{"tags":["Security"],"summary":"get_outage_events","description":"Get processed internet outage events with severity and duration.\n\nUnlike raw alerts, events are correlated and processed to show distinct\noutage incidents with start/end times, severity scores, and affected\ndatasources. Use this for a cleaner view of actual outage incidents.\n\nArgs:\n    country_code: ISO 3166-1 alpha-2 country code to filter by (e.g. \"US\", \"DE\", \"NO\").\n    asn: Autonomous System Number to filter by (e.g. \"15169\" for Google).\n    hours: Lookback window in hours (1-720, default 24).\n    limit: Maximum results to return (1-200, default 20).\n\nReturns:\n    Dict with 'source', 'count', and 'events' list. Each event includes\n    entity info, start/end times, severity score, and contributing datasources.","operationId":"ioda_get_outage_events","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO 3166-1 alpha-2 country code to filter by (e.g. \"US\", \"DE\", \"NO\")."},"asn":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Autonomous System Number to filter by (e.g. \"15169\" for Google)."},"hours":{"default":24,"description":"Lookback window in hours (1-720, default 24).","type":"number"},"limit":{"default":20,"description":"Maximum results to return (1-200, default 20).","type":"integer"}},"type":"object"}}}}}},"/rest/ioda/get_outage_summary":{"post":{"tags":["Security"],"summary":"get_outage_summary","description":"Get aggregated outage summaries showing which entities had the most disruptions.\n\nProvides a high-level overview of outage activity, ranked by severity.\nUseful for identifying the most impacted countries, ASNs, or regions\nin a given time window.\n\nArgs:\n    country_code: ISO 3166-1 alpha-2 country code to filter by (e.g. \"US\", \"DE\", \"NO\").\n    hours: Lookback window in hours (1-720, default 24).\n    limit: Maximum results to return (1-200, default 20).\n\nReturns:\n    Dict with 'source', 'count', and 'summaries' list. Each summary includes\n    entity info, aggregate score, outage count, and contributing datasources.","operationId":"ioda_get_outage_summary","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO 3166-1 alpha-2 country code to filter by (e.g. \"US\", \"DE\", \"NO\")."},"hours":{"default":24,"description":"Lookback window in hours (1-720, default 24).","type":"number"},"limit":{"default":20,"description":"Maximum results to return (1-200, default 20).","type":"integer"}},"type":"object"}}}}}},"/rest/ioda/get_signals":{"post":{"tags":["Security"],"summary":"get_signals","description":"Get raw time-series signal data for a specific internet entity.\n\nReturns the actual measurement values over time for a given entity and\ndatasource. Useful for visualizing connectivity trends, detecting drops,\nand analyzing the magnitude of outages.\n\nArgs:\n    entity_type: Entity type: \"country\", \"asn\", \"region\", or \"county\".\n    entity_code: Entity code (e.g. \"US\" for country, \"15169\" for ASN).\n    hours: Lookback window in hours (1-720, default 24).\n    datasource: Data source: \"bgp\", \"ucsd-nt\", \"merit-nt\", \"gtr\", or \"ping-slash24\".\n    max_points: Maximum data points in the time series (1-5000, default 500).\n\nReturns:\n    Dict with 'source' and 'signal' containing the time-series data\n    including datasource, entity info, time range, step size, and values array.","operationId":"ioda_get_signals","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"entity_type":{"description":"Entity type: \"country\", \"asn\", \"region\", or \"county\".","type":"string"},"entity_code":{"description":"Entity code (e.g. \"US\" for country, \"15169\" for ASN).","type":"string"},"hours":{"default":24,"description":"Lookback window in hours (1-720, default 24).","type":"number"},"datasource":{"default":"bgp","description":"Data source: \"bgp\", \"ucsd-nt\", \"merit-nt\", \"gtr\", or \"ping-slash24\" (default \"bgp\").","type":"string"},"max_points":{"default":500,"description":"Maximum data points in the time series (1-5000, default 500).","type":"integer"}},"required":["entity_type","entity_code"],"type":"object"}}}}}},"/rest/ioda/search_entities":{"post":{"tags":["Security"],"summary":"search_entities","description":"Search for internet entities (countries, ASNs, regions) in IODA's database.\n\nFind entity codes needed for other IODA tools. For example, search for\n\"Google\" to find its ASN (15169), or \"Norway\" to find its country code.\n\nArgs:\n    query: Search term (e.g. \"United States\", \"Google\", \"Cloudflare\").\n    entity_type: Filter by entity type: \"country\", \"asn\", \"region\", or \"county\".\n    limit: Maximum results to return (1-200, default 20).\n\nReturns:\n    Dict with 'source', 'count', and 'entities' list. Each entity includes\n    type, code, name, and additional attributes.","operationId":"ioda_search_entities","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"query":{"description":"Search term (e.g. \"United States\", \"Google\", \"Cloudflare\").","type":"string"},"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter by entity type: \"country\", \"asn\", \"region\", or \"county\"."},"limit":{"default":20,"description":"Maximum results to return (1-200, default 20).","type":"integer"}},"required":["query"],"type":"object"}}}}}},"/rest/ioda/report_feedback":{"post":{"tags":["Security"],"summary":"report_feedback","description":"Report a bug, feature request, or general feedback for this data source.\n\nUse this when something doesn't work as expected, when you'd like\na new feature, or when you have suggestions for improvement.\n\nArgs:\n    feedback: Describe the issue or suggestion.\n    feedback_type: One of 'bug', 'feature_request', or 'general'.","operationId":"ioda_report_feedback","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"feedback":{"type":"string"},"feedback_type":{"default":"general","type":"string"}},"required":["feedback"],"type":"object"}}}}}}},"tags":[{"name":"Security","description":"Data sources: Security"}],"components":{"securitySchemes":{"ApiKeyHeader":{"type":"apiKey","in":"header","name":"gnist-api-key","description":"API key passed via request header."},"ApiKeyQuery":{"type":"apiKey","in":"query","name":"gnist_api_key","description":"API key passed via query parameter."}}}}