Skip to main content
Glama

Server Details

Investigate Internet outages with IODA events, alerts, and connectivity signals via MCP.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
cyanheads/ioda-outages-mcp-server
GitHub Stars
1
Server Listing
ioda-outages-mcp-server

TDQS

A4.1/5.0

Scored across 6 tools

Disambiguation4/5

Each tool has a distinct output shape: raw outage events (find_outages), detection/recovery transitions (get_alerts), numeric time series (get_signals), short-lookback aggregate health (get_status), entity lookup (search_entities), and ranked rollups (summarize_outages). The main overlap is get_status, which re-collects events, alerts, and signals that the standalone tools also return, but the 1–24h lookback vs. explicit window distinction keeps it separable. Descriptions explicitly position the aggregate tools as entry points that route to the standalone ones.

Naming Consistency5/5

All six tools use the same ioda_ prefix and snake_case verb_noun pattern: find_outages, get_alerts, get_signals, get_status, search_entities, summarize_outages. Verbs vary (find/get/search/summarize) but consistently reflect the operation type rather than being arbitrary.

Tool Count5/5

Six tools is well-scoped for an outage-data API: one entity resolver, three evidence fetchers at different granularities, one ranking tool, and one convenience status tool. No obvious redundancy or filler beyond the intentional status aggregation.

Completeness4/5

The surface covers the full investigation lifecycle from entity resolution through raw events, transitions, signals, ranking, and a quick status check, with no dead ends for the core workflow. Minor gaps exist around metadata (e.g. listing available sources/methods or datasource time coverage) that agents must infer from descriptions.

Available Tools

6 tools
ioda_find_outagesIoda Find OutagesA
Read-onlyIdempotent
Inspect

Find IODA outage events overlapping an explicit Unix-second window of at most 31 days. Omit entity filters for global scope, which searches one day outside the window by default instead of 14; global searches over multi-day windows can time out, so narrow the window or add entityType. A code requires its entityType. relatedToType and relatedToCode limit results to entityType entities within one country, region, ASN, or geoasn. Source scores are not an absolute severity scale. Starts at until are included; adjacent windows can duplicate boundary detections. Starts may precede from; ends can be clipped at until and do not establish recovery. ignoreMethods excludes source.method, source.*, or *.method upstream before scoring. includeAlerts adds nested transitions and can increase size. Pages are zero-based; keep filters and limit fixed.

NameRequiredDescriptionDefault
fromYesInclusive Unix seconds UTC; no milliseconds; window at most 31 days.
pageNoZero-based upstream page; restart at 0 when changing limit.
limitNoUpstream page size; values above 100 are served as 100 with a notice. Keep fixed when continuing.
untilYesInclusive Unix seconds UTC for transition/event-start selection, after from and no later than now; adjacent windows can duplicate boundary detections.
sourceNobgp, ping-slash24, merit-nt, or gtr; blank means all sources. Case and whitespace are normalized.
entityCodeNoTwo-letter country code, IODA numeric region code, decimal ASN (AS prefix accepted), or geoasn code joining an ASN and a region or country code (40934-576, 59962-IR); resolve names with ioda_search_entities and pass a returned code here.
entityTypeNocountry, region, asn, or geoasn (one ASN within a region or country); whitespace and case are normalized.
ignoreMethodsNoDetection methods to exclude upstream before event construction and scoring; duplicates are removed, and an empty array excludes nothing. Keep fixed across ranking and drill-down calls.
includeAlertsNoInclude original nested alert transitions and baselines; may substantially increase response size.
relatedToCodeNoScope entity code, normalized like entityCode for relatedToType (IR, 1829, AS42337, 60627-IR); resolve names with ioda_search_entities. Provide with relatedToType.
relatedToTypeNoScope type: country, region, asn, or geoasn. With relatedToCode, returns entityType entities related to that entity, such as the regions or networks of one country. Requires entityType and excludes entityCode; blank is omitted. Outage membership coverage is unverified independently of row pagination; page ioda_search_entities and query selected codes individually.
extendWindowSecondsNoSeconds before from to search for the start of an event overlapping the window, and after until for its recovery; only overlapping events are returned. Defaults to 1209600 (14 days) with entityType and 86400 (one day) without it, because large global extensions can time out; the applied value is echoed. Values above 1209600 are served as 1209600 with a notice. Zero may miss long-running detections.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
eventsNoOriginal outage events and source scores without merging or ranking.
noticeNoResult interpretation and concrete next call.
appliedNoEvery normalized input, effective window, filter and pagination value.
truncatedNoA full page may have further records; not an exact total.
paginationNoUpstream page and possible continuation.
provenanceNoEndpoint and original source attribution.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover read-only/idempotent/open-world, and the description adds substantial non-obvious behavior: timeout risk on global searches, that source scores are not an absolute severity scale, boundary duplicate detections between adjacent windows, starts preceding 'from', ends clipped at 'until' with no recovery guarantee, and ignoreMethods filtering upstream before scoring. The includeAlerts size warning and 'keep filters and limit fixed' pagination rule are also disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and window cap, and nearly every clause carries information that is not in the schema. It is, however, a dense semicolon-chained block with little visual structure, and a couple of clauses (zero-based pages, keep limit fixed) duplicate schema text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 12 parameters, an output schema, and annotations already in place, the description covers the remaining risk surface an agent needs before calling: timeout-prone configurations, window-span limits, default extension values, boundary duplication, and paging discipline. Nothing material is left undisclosed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description adds real semantics beyond the schema: the 14-day vs 1-day extendWindowSeconds default split by entityType, the 'a code requires its entityType' coupling, and the relatedToType/relatedToCode scoping semantics. Only the ignoreMethods exclusion grammar and the page/limit rules are essentially restated from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Find IODA outage events') plus the binding constraint ('overlapping an explicit Unix-second window of at most 31 days'), which is far more than a restatement of the name. It never names a sibling, though, so an agent must infer from the plot whether to use this versus ioda_summarize_outages or ioda_get_alerts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete selection guidance: omit entity filters for global scope, and narrow the window or add entityType when global multi-day searches time out. It also states the entityCode-requires-entityType rule and the relatedToCode/relatedToType pairing. It does not explicitly route to the aggregate sibling (ioda_summarize_outages) or alerts sibling, which keeps it below 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ioda_get_alertsIoda Get AlertsA
Read-onlyIdempotent
Inspect

Retrieve IODA detection and recovery transitions in an explicit Unix-second window of at most 31 days. Omit entity filters for global scope; a code requires entityType. relatedToType and relatedToCode limit results to entityType entities within one country, region, ASN, or geoasn, served at page 0 only. Each transition retains its source, level, condition, value and baseline; levels and baselines are not a source-independent severity scale. Transitions include both requested bounds, widened by extendWindowSeconds; adjacent windows can duplicate boundary detections. ignoreMethods excludes source.method, source.*, or *.method upstream. Missing transitions do not establish health. Pages are zero-based; keep filters and limit fixed.

NameRequiredDescriptionDefault
fromYesInclusive Unix seconds UTC; no milliseconds; window at most 31 days.
pageNoZero-based upstream page; restart at 0 when changing limit.
limitNoUpstream page size; values above 100 are served as 100 with a notice. Keep fixed when continuing.
untilYesInclusive Unix seconds UTC for transition/event-start selection, after from and no later than now; adjacent windows can duplicate boundary detections.
sourceNobgp, ping-slash24, merit-nt, or gtr; blank means all sources. Case and whitespace are normalized.
entityCodeNoTwo-letter country code, IODA numeric region code, decimal ASN (AS prefix accepted), or geoasn code joining an ASN and a region or country code (40934-576, 59962-IR); resolve names with ioda_search_entities and pass a returned code here.
entityTypeNocountry, region, asn, or geoasn (one ASN within a region or country); whitespace and case are normalized.
ignoreMethodsNoDetection methods to exclude upstream before event construction and scoring; duplicates are removed, and an empty array excludes nothing. Keep fixed across ranking and drill-down calls.
relatedToCodeNoScope entity code, normalized like entityCode for relatedToType (IR, 1829, AS42337, 60627-IR); resolve names with ioda_search_entities. Provide with relatedToType.
relatedToTypeNoScope type: country, region, asn, or geoasn. With relatedToCode, returns entityType entities related to that entity, such as the regions or networks of one country. Requires entityType and excludes entityCode; blank is omitted. Outage membership coverage is unverified independently of row pagination; page ioda_search_entities and query selected codes individually.
extendWindowSecondsNoSeconds before from and after until to also return transitions from; zero, the default, returns only transitions inside the window. Without entityType, large extensions are slow globally and can time out, so add entityType or keep the extension small. Values above 1209600 (14 days) are served as 1209600 with a notice.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
alertsNoLiteral detection and recovery transitions with source baselines.
noticeNoResult interpretation and concrete next call.
appliedNoEvery normalized input, effective window, filter and pagination value.
truncatedNoA full page may have further records; not an exact total.
paginationNoUpstream page and possible continuation.
provenanceNoEndpoint and original source attribution.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover readOnly/openWorld/idempotent, yet the description adds substantial behavioral context: bounds widened by extendWindowSeconds, duplicate boundary detections across adjacent windows, upstream ignoreMethods filtering, the 100/14-day serving caps, and the caveat that missing transitions do not establish health. That is exactly the extra context annotations cannot supply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and window limits, and each subsequent sentence carries a real constraint or caveat. It is dense and long, but no sentence is redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter tool with an output schema, the description covers time-window semantics, pagination behavior, filter interactions, truncation notices and timeout risk, so an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description contributes cross-parameter constraints the schema documents only in isolation: a code requires entityType, relatedToType excludes entityCode, relatedTo* is served at page 0 only, and filters plus limit must stay fixed across pages.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: retrieve IODA detection and recovery transitions within an explicit Unix-second window of at most 31 days. The scope is unambiguous, but the description never contrasts the tool with siblings like ioda_get_signals or ioda_find_outages, so the agent must infer which query surface to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage conditions: omit entity filters for global scope, a code requires entityType, relatedToType/relatedToCode are limited to page 0, and it points at ioda_search_entities for name resolution. It stops short of naming when to prefer the sibling outage/signal tools instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ioda_get_signalsIoda Get SignalsA
Read-onlyIdempotent
Inspect

Fetch numeric BGP visibility, active IPv4 /24 probing, or Merit telescope series for one entity in an explicit Unix-second window of at most 31 days. source is required: bgp, ping-slash24, or merit-nt. Nulls are missing observations, not zero connectivity. maxPoints requests upstream aggregation, not first-N samples; smaller values lose temporal resolution. Returned series retain aligned boundary buckets with exclusive returned until bounds that may extend beyond requested bounds; timestamps and intervals support cross-source comparisons.

NameRequiredDescriptionDefault
fromYesRequested start Unix seconds UTC; window at most 31 days. Aligned returned buckets may begin earlier.
untilYesRequested end Unix seconds UTC, after from and no later than now. Returned bucket bounds are exclusive and may extend beyond this requested bound due to alignment.
sourceYesExactly bgp, ping-slash24, or merit-nt; case and whitespace normalized. gtr and ucsd-nt are not supported numeric sources.
maxPointsNoUpstream aggregation target, not a local sample cap; smaller targets lose temporal resolution. Values above 2000 are served as 2000 with a notice.
entityCodeYesTwo-letter country code, IODA numeric region code, decimal ASN (AS prefix accepted), or geoasn code joining an ASN and a region or country code (40934-576, 59962-IR); resolve names with ioda_search_entities and pass a returned code here.
entityTypeYescountry, region, asn, or geoasn (one ASN within a region or country); whitespace and case are normalized.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
noticeNoResult interpretation and concrete next call.
seriesNoAll numeric subtypes and buckets, preserving nulls and aligned bounds.
appliedNoEvery normalized input, effective window, filter and pagination value.
semanticsNoSource-specific measurement semantics and IODA unit.
truncatedNoA full page may have further records; not an exact total.
provenanceNoEndpoint and original source attribution.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations by disclosing interpretation-critical behavior: nulls mean missing observations rather than zero connectivity, maxPoints triggers upstream aggregation rather than first-N sampling so smaller values degrade temporal resolution, and returned buckets are aligned with exclusive bounds that may extend past the requested window. These are exactly the traits an agent cannot infer from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and scope, then ordered into constraints, semantics, and return-shape caveats; every sentence carries information. Slight redundancy with the schema's maxPoints wording and dense noun-stacking keep it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, yet it still explains boundary alignment and exclusive bounds, which is what an agent needs for cross-source comparison. What remains missing is sibling routing — nothing tells the agent when to prefer this over ioda_get_status or ioda_find_outages for the same entity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does add interpretive value for maxPoints (aggregation vs. sampling trade-off) and the source enum, but much of that content duplicates the schema text verbatim, and it adds nothing for from/until/entityType/entityCode beyond what the schema already specifies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Fetch) and a precisely enumerated resource: numeric BGP visibility, ping-slash24 probing, or Merit telescope series for a single entity within an explicit Unix-second window capped at 31 days. The scope language ('one entity', 'explicit Unix-second window') makes it distinguishable from status/outage-summary siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage constraints are stated (source is required and limited to three values; window at most 31 days), which implies when the tool is applicable, but there is no explicit routing guidance against siblings such as ioda_get_status or ioda_find_outages. The only alternative-tool pointer ('resolve names with ioda_search_entities') lives in the entityCode schema description, not the tool description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ioda_get_statusIoda Get StatusA
Read-onlyIdempotent
Inspect

Inspect recent IODA detection evidence and measurement coverage for one entity over a lookback of 1–24 hours. Collect events, alerts, bgp, ping-slash24 and merit-nt evidence. Partial failures remain explicit and route to standalone tools. recent, stale, no_data and unknown describe observation availability; buckets within the 1800-second publication allowance count as pending, not missing. No alerts is not an all-clear. IODA measures macroscopic connectivity, not one office or a shutdown cause.

NameRequiredDescriptionDefault
entityCodeYesTwo-letter country code, IODA numeric region code, decimal ASN (AS prefix accepted), or geoasn code joining an ASN and a region or country code (40934-576, 59962-IR); resolve names with ioda_search_entities and pass a returned code here.
entityTypeYescountry, region, asn, or geoasn (one ASN within a region or country); whitespace and case are normalized.
lookbackHoursNoHours before the captured invocation time; values above 24 are served as 24 with a notice naming the uncovered earlier window. The exact window is returned.

Output Schema

NameRequiredDescription
asOfNoCaptured invocation time, Unix seconds UTC
errorNoPresent when the call failed. Absent on success.
alertsNoSuccessful alert component
entityNoRequested entity
eventsNoSuccessful event component
noticeNoResult interpretation and concrete next call.
windowNoExact investigation window
appliedNoEvery normalized input, effective window, filter and pagination value.
signalsNoCoverage for each core source
detectionNoReturned lookback detection evidence
truncatedNoA full page may have further records; not an exact total.
componentsNoFive component outcomes in request order
limitationsNoScope, completeness, alignment and freshness qualifications

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, openWorld), but the description adds interpretive behavior that annotations cannot convey: partial failures surface explicitly, the 1800-second publication allowance makes buckets pending rather than missing, 'no alerts is not an all-clear,' and IODA measures macroscopic connectivity rather than a single office or shutdown cause. These caveats materially change how an agent should report results, which is exactly the value-add expected at this bar.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence and every subsequent sentence carries distinct information (evidence sources, failure behavior, status vocabulary, connectivity caveat). It is dense but not padded; terms like 'ping-slash24' and 'merit-nt' are opaque without domain familiarity, which is a minor readability cost.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a composite aggregator with an output schema (which removes any need to describe return values), the description covers the status vocabulary, publication-lag semantics, partial-failure behavior, and interpretation limits. The remaining gap is routing guidance for degraded cases, which points at sibling tools but never names them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all three parameters, and the baseline of 3 applies. The description restates the 1–24 hour lookback and 'one entity' scope without adding format or syntax detail. It also slightly understates the schema's maximum of 240 while the schema explains the clamping-with-notice behavior, leaving the description marginally weaker than the structured field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: inspect IODA detection evidence and measurement coverage for one entity over a 1–24 hour lookback. The enumeration of collected evidence (events, alerts, bgp, ping-slash24, merit-nt) makes clear this is an aggregate status snapshot, which implicitly distinguishes it from ioda_get_alerts and ioda_get_signals. It stops short of naming any sibling explicitly, so full differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Partial failures remain explicit and route to standalone tools' gestures at alternatives without naming them, so an agent cannot tell whether that means ioda_get_alerts, ioda_get_signals, or both. There is no guidance on when to prefer ioda_find_outages or ioda_summarize_outages over this aggregate view. Usage is implied by the framing ('inspect ... for one entity') rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ioda_search_entitiesIoda Search EntitiesA
Read-onlyIdempotent
Inspect

Resolve country, region, autonomous-system, or geoasn (one ASN within a region or country) names and codes for outage investigations. Choose entityType and either query or entityCode; omit both to list the type. Countries use two letters, regions numeric IODA codes, ASNs decimal digits (AS prefix accepted), geoasns an ASN and a region or country code (40934-576, 59962-IR). Add relatedToType and relatedToCode to list entityType entities within one country, region, ASN, or geoasn, such as the regions or networks of a country; a scope combines with query. Metadata does not establish measurement coverage. Pages are zero-based; keep limit fixed when continuing.

NameRequiredDescriptionDefault
pageNoZero-based upstream page; restart at 0 when changing limit.
limitNoUpstream page size; values above 100 are served as 100 with a notice. Keep fixed when continuing.
queryNoName substring, trimmed to at most 200 UTF-16 code units; blank is omitted. Mutually exclusive with entityCode.
entityCodeNoTwo-letter country code, IODA numeric region code, decimal ASN (AS prefix accepted), or geoasn code joining an ASN and a region or country code (40934-576, 59962-IR); resolve names with ioda_search_entities and pass a returned code here.
entityTypeYescountry, region, asn, or geoasn (one ASN within a region or country); whitespace and case are normalized.
relatedToCodeNoScope entity code, normalized like entityCode for relatedToType (IR, 1829, AS42337, 60627-IR); resolve names with ioda_search_entities. Provide with relatedToType.
relatedToTypeNoScope type: country, region, asn, or geoasn. With relatedToCode, returns entityType entities related to that entity, such as the regions or networks of one country. Requires entityType and excludes entityCode; blank is omitted. Outage membership coverage is unverified independently of row pagination; page ioda_search_entities and query selected codes individually.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
noticeNoResult interpretation and concrete next call.
appliedNoEvery normalized input, effective window, filter and pagination value.
entitiesNoOriginal entity metadata; not measurement coverage.
truncatedNoA full page may have further records; not an exact total.
paginationNoUpstream page and possible continuation.
provenanceNoEndpoint and original source attribution.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare read-only, idempotent, open-world behavior. The description adds useful caveats beyond the annotations, including that metadata does not establish measurement coverage and that pagination is zero-based with a fixed limit when continuing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and then covers parameter modes, relationship scoping, and pagination caveats. It is dense but efficient; each clause adds actionable information, though the single long paragraph is less scannable than it could be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a seven-parameter search tool with full schema descriptions, annotations, and an output schema, the description covers the important modes, relationship scoping, code formats, and pagination behavior. No critical invocation detail appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is already strong. The description nevertheless adds semantic guidance about entityType values, mutual exclusivity of query and entityCode, code formats such as 40934-576 and 59962-IR, and how related scopes combine with query.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: resolving country, region, ASN, and geoasn names and codes for outage investigations. It clearly distinguishes the entity types it handles, but it does not explicitly contrast itself with sibling tools such as ioda_find_outages or ioda_get_alerts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit invocation guidance: choose entityType and either query or entityCode, omit both to list the type, and use relatedToType with relatedToCode to scope results. It does not explain when to use this tool instead of the sibling outage, alert, signal, status, or summary tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ioda_summarize_outagesIoda Summarize OutagesA
Read-onlyIdempotent
Inspect

Rank the entities of one entityType by IODA's outage summary score over an explicit Unix-second window of at most 31 days, such as the countries or a country's regions hit hardest this week. Rows keep IODA's order, descending scores.overall. IODA merges overlapping events from different sources, scores each merged event as the product of its sources' scores, and sums the merged events into overall; each . key sums that source's event scores. Scores are window totals for ranking the rows of one request, not current status, and are not comparable across requests with different windows. Add entityCode for one entity, or relatedToType and relatedToCode to rank entityType entities within one country, region, ASN, or geoasn; large type-only rankings can time out. Event-start selection includes until, so adjacent windows can duplicate boundary detections. ignoreMethods excludes source.method, source.*, or *.method upstream before scoring; keep exclusions fixed when comparing rankings or drilling into events and alerts. An empty result is not an all-clear. Pages are zero-based; keep filters and limit fixed.

NameRequiredDescriptionDefault
fromYesInclusive Unix seconds UTC; no milliseconds; window at most 31 days.
pageNoZero-based upstream page; restart at 0 when changing limit.
limitNoUpstream page size; values above 100 are served as 100 with a notice. Keep fixed when continuing.
untilYesInclusive Unix seconds UTC for transition/event-start selection, after from and no later than now; adjacent windows can duplicate boundary detections.
entityCodeNoTwo-letter country code, IODA numeric region code, decimal ASN (AS prefix accepted), or geoasn code joining an ASN and a region or country code (40934-576, 59962-IR); resolve names with ioda_search_entities and pass a returned code here.
entityTypeYescountry, region, asn, or geoasn (one ASN within a region or country); whitespace and case are normalized.
ignoreMethodsNoDetection methods to exclude upstream before event construction and scoring; duplicates are removed, and an empty array excludes nothing. Keep fixed across ranking and drill-down calls.
relatedToCodeNoScope entity code, normalized like entityCode for relatedToType (IR, 1829, AS42337, 60627-IR); resolve names with ioda_search_entities. Provide with relatedToType.
relatedToTypeNoScope type: country, region, asn, or geoasn. With relatedToCode, returns entityType entities related to that entity, such as the regions or networks of one country. Requires entityType and excludes entityCode; blank is omitted. Outage membership coverage is unverified independently of row pagination; page ioda_search_entities and query selected codes individually.
extendWindowSecondsNoSeconds before from to search for the start of an event overlapping the window, and after until for its recovery; defaults to 1209600 (14 days), IODA's default. Values above 1209600 are served as 1209600 with a notice. Large extensions on type-only rankings can time out; zero may miss long-running detections.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
noticeNoResult interpretation and concrete next call.
appliedNoEvery normalized input, effective window, filter and pagination value.
summariesNoIODA's per-entity summaries in its own order, descending scores.overall.
truncatedNoA full page may have further records; not an exact total.
paginationNoUpstream page and possible continuation.
provenanceNoEndpoint and original source attribution.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnly/idempotent/openWorld, and the description goes well beyond: it discloses score construction, that scores are window totals not current status, non-comparability across windows, boundary duplication from inclusive 'until', timeout risk, and that an empty result is not an all-clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose and ranking order, with zero filler. It is dense and crammed into a single paragraph, so structure could be improved, but nearly every sentence carries non-redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-param read tool with a full output schema and complete param descriptions, the description covers the tricky edges an agent needs (window comparability, exclusions, pagination stability, timeouts, empty results). Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description nonetheless adds meaning beyond the schema, e.g. ignoreMethods exclusion semantics and cross-request consistency, and explains entityCode vs relatedToType/relatedToCode roles. Minor gaps like extendWindowSeconds are left largely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Rank), resource (entities of one entityType), metric (IODA outage summary score), and window constraint (at most 31 days), with a concrete example. Clearly distinguishable from siblings like ioda_find_outages or ioda_get_alerts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains when to use relatedToType/entityCode scoping, warns large type-only rankings can time out, and notes that rankings/drill-down calls should keep filters and exclusions fixed. It implies events and alerts as alternatives but never explicitly names a sibling to use instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updates
    • First observedioda_find_outages
    • First observedioda_get_alerts
    • First observedioda_get_signals
    • First observedioda_get_status
    • First observedioda_search_entities
    • First observedioda_summarize_outages

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables read-only API incident triage through MCP tools that classify HTTP failures, timeouts, slow responses, rate limits, and missing observations, and inspect configured public service endpoints, producing structured and human-readable incident reports.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables evidence-first incident command: investigate outages, analyze evidence, approve simulated responses, verify recovery, and export postmortems through MCP tools.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients to query bundled synthetic logs, service metrics, and traces through three bounded read-only tools for evidence-first incident investigation.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.