Skip to main content
Glama

Get Broadband Coverage Summary

fcc_get_coverage_summary
Read-onlyIdempotent

Returns a broadband coverage summary for a geography — population with zero, one, two, or three-plus providers at a given speed threshold, split by urban/rural and tribal/non-tribal segments. The primary tool for digital divide and equity analysis. Supports state, county, congressional district, census place, CBSA (metro area), tribal area, and national level. Data is from FCC Form 477 (as of June 2021). Use 100 Mbps as the speed threshold for BEAD program policy analysis.

Input Schema

NameRequiredDescriptionDefault
speed_downNoMinimum download speed threshold in Mbps. 25 = FCC legacy broadband definition. 100 = BEAD program standard (use this for current policy analysis). "0.2" = any service above 200 Kbps.25
tech_filterNoTechnology filter, one value: "acfosw" = every technology (default, the recommended baseline). "f" = fiber, "c" = cable, "a" = ADSL/DSL, "o" = other (symmetric DSL, other copper, power line), "s" = satellite, "w" = fixed wireless.acfosw
geography_idNoFIPS GEOID for the geography. State: 2-digit (e.g., "06" for California). County: 5-digit (e.g., "06037" for LA County). Congressional district: 4-digit state+district (e.g., "0601"). CBSA: 5-digit code. Place: 7-digit state+place (e.g., "0644000"). Omit for nation-level queries.
tribal_filterNoFilter to tribal ("T") or non-tribal ("N") areas. Use "T" to assess Native American connectivity gaps.all
geography_typeYesGeographic aggregation level. "nation" = US-wide totals (geography_id not needed). "cd" = congressional district. "place" = census-designated place. "cbsa" = core-based statistical area (metro area). "tribal" = tribal land area.
urban_rural_filterNoFilter to urban ("U") or rural ("R") areas only, or "all" for both combined. Rural breakdown is key for BEAD program analysis.all

Output Schema

NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
breakdownNoPer-segment breakdown by urban/rural and tribal/non-tribal.
geographyNoThe queried geography.
populationNoPopulation counts by provider availability tier.
techFilterNoTechnology filter applied.
coveragePctNoPercentage of population with at least one provider at the given speed.
dataVintageNoData vintage — Form 477 data as of June 2021.
unservedPctNoPercentage with zero providers — FCC "unserved" definition.
speedDownMbpsNoDownload speed threshold used in Mbps.
appliedFiltersNoFilters applied to this query.
competitivePctNoPercentage with two or more providers.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / geography / properties / id / description
      Previous value: -"FIPS GEOID (e.g., \"06\")."New value: +"FIPS GEOID (e.g., \"06\"), or \"0\" for United States national coverage."
  2. Changed1 schema field changed
    • changedInput schema / properties / tech_filter / description
      Previous value: -"Technology filter. \"acfosw\" = any wired or fixed wireless (recommended baseline). \"f\" = fiber only. \"c\" = cable only. \"a\" = ADSL/DSL only. \"s\" = satellite only. \"w\" = fixed wireless only. Mix letters for combinations, e.g., \"fc\" = fiber or cable."New value: +"Technology filter, one value: \"acfosw\" = every technology (default, the recommended baseline). \"f\" = fiber, \"c\" = cable, \"a\" = ADSL/DSL, \"o\" = other (symmetric DSL, other copper, power line), \"s\" = satellite, \"w\" = fixed wireless."
  3. Changed6 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "geography",
      +      "techFilter",
      +      "speedDownMbps",
      +      "population",
      +      "coveragePct",
      +      "unservedPct",
      +      "competitivePct",
      +      "breakdown",
      +      "dataVintage",
      +      "appliedFilters"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present when the call failed. Absent on success.",
      +  "properties": {
      +    "code": {
      +      "description": "JSON-RPC error code for this failure.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "description": "Machine-readable failure mode. Declared by this tool: `geography_not_found`: No area data found for the given geography ID and type. `invalid_geography_combo`: geography_id is omitted for a non-nation type, or geography_type is \"nation\" but geography_id is provided. `invalid_geography_id_shape`: geography_id digit count does not match the geography_type (state=2, county=5, cd=4, cbsa=5, place=7). Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "geography_not_found",
      +            "invalid_geography_combo",
      +            "invalid_geography_id_shape"
      +          ],
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "geography",
      -  "techFilter",
      -  "speedDownMbps",
      -  "population",
      -  "coveragePct",
      -  "unservedPct",
      -  "competitivePct",
      -  "breakdown",
      -  "dataVintage",
      -  "appliedFilters"
      -]
  4. Changed1 schema field changed
    • changedInput schema / properties / geography_id / description
      Previous value: -"FIPS GEOID for the geography. State: 2-digit (e.g., \"06\" for California). County: 5-digit (e.g., \"06037\" for LA County). Congressional district: 4-digit state+district (e.g., \"0601\"). CBSA: 5-digit code. Omit for nation-level queries."New value: +"FIPS GEOID for the geography. State: 2-digit (e.g., \"06\" for California). County: 5-digit (e.g., \"06037\" for LA County). Congressional district: 4-digit state+district (e.g., \"0601\"). CBSA: 5-digit code. Place: 7-digit state+place (e.g., \"0644000\"). Omit for nation-level queries."
  5. Changed2 schema fields changed
    • addedOutput schema / properties / appliedFilters
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Filters applied to this query.",
      +  "properties": {
      +    "geographyId": {
      +      "description": "FIPS GEOID queried. Absent for nation-level.",
      +      "type": "string"
      +    },
      +    "geographyType": {
      +      "description": "Geographic aggregation level queried.",
      +      "type": "string"
      +    },
      +    "speedDownMbps": {
      +      "description": "Download speed threshold in Mbps.",
      +      "type": "number"
      +    },
      +    "techFilter": {
      +      "description": "Technology filter applied.",
      +      "type": "string"
      +    },
      +    "tribalFilter": {
      +      "description": "Tribal/non-tribal filter applied.",
      +      "type": "string"
      +    },
      +    "urbanRuralFilter": {
      +      "description": "Urban/rural filter applied.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "geographyType",
      +    "techFilter",
      +    "speedDownMbps",
      +    "urbanRuralFilter",
      +    "tribalFilter"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "geography",
      -  "techFilter",
      -  "speedDownMbps",
      -  "population",
      -  "coveragePct",
      -  "unservedPct",
      -  "competitivePct",
      -  "breakdown",
      -  "dataVintage"
      -]New value: +[
      +  "geography",
      +  "techFilter",
      +  "speedDownMbps",
      +  "population",
      +  "coveragePct",
      +  "unservedPct",
      +  "competitivePct",
      +  "breakdown",
      +  "dataVintage",
      +  "appliedFilters"
      +]
  6. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and closed-world behavior, so the safety profile is covered. The description adds genuinely useful non-annotation context: the data provenance and vintage ('FCC Form 477, as of June 2021'), which tells an agent the numbers may be stale relative to current policy questions. It stops short of describing aggregation caveats or pagination, but the output schema presumably carries the return shape.

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?

Three sentences, front-loaded with the output definition, then supported geographies, then provenance and the BEAD speed tip. Every sentence carries information and nothing is padding. Slightly dense but well structured rather than bloated.

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 read-only analytical tool with an output schema and full parameter documentation, the description supplies everything else an agent needs: what the summary contains, the supported geography levels, the urban/rural and tribal segmentations, and the data vintage. Nothing material is missing for correct invocation or interpretation.

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% with 5 enum-constrained parameters, so the schema already documents every field's meaning and defaults. The description's speed-threshold advice largely duplicates the schema's own 'speed_down' description, adding little beyond it. Baseline 3 is appropriate when the schema does the heavy lifting.

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?

The description states a specific verb and resource ('Returns a broadband coverage summary') and precisely defines the output grain: population buckets of 0/1/2/3+ providers at a speed threshold, segmented by urban/rural and tribal status. It self-identifies as 'the primary tool for digital divide and equity analysis,' which distinguishes it from siblings like fcc_find_underserved and fcc_search_availability without needing to open another schema.

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 clear when-to-use context ('primary tool for digital divide and equity analysis') and actionable guidance for a specific policy case ('Use 100 Mbps as the speed threshold for BEAD program policy analysis'). It does not, however, explicitly name a competing sibling or state when *not* to use this tool (e.g., versus fcc_find_underserved), so routing is clear but not fully closed.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.