fcc-broadband-mcp-server
Server Details
FCC broadband availability, coverage analysis, and digital divide data for US geographies.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- cyanheads/fcc-broadband-mcp-server
- GitHub Stars
- 1
- Server Listing
- fcc-broadband-mcp-server
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.5/5 across 9 of 9 tools scored.
Most tools have distinct purposes, but fcc_compare_areas and fcc_find_underserved both rank areas by unserved population, which could confuse an agent. fcc_get_coverage_summary is distinct as it focuses on a single geography, while the other two handle multiple areas.
All tools follow a consistent fcc_verb_noun pattern (e.g., list, search, get, geocode). Minor deviation: 'find' in fcc_find_underserved could be 'search' for consistency, but overall naming is predictable and clear.
With 9 tools, the server is well-scoped for its purpose of FCC broadband data analysis. Each tool covers a specific aspect (geocoding, availability, providers, coverage summaries, data downloads) without unnecessary redundancy.
The tool set provides comprehensive coverage of the FCC broadband data domain: geocoding, block-level availability, provider search and details, coverage summaries for multiple geography types, and data file listings. There are no significant gaps for typical broadband analysis workflows.
Available Tools
9 toolsfcc_compare_areasCompare Broadband Coverage Across AreasARead-onlyIdempotentInspect
Compares broadband coverage metrics across multiple geographies of the same type and returns a ranked table sorted by unserved or underserved population. Answers "which counties in this state have the worst broadband access?" and drives BEAD funding prioritization. Provide up to 50 geography IDs, or set compare_all_states=true for all 50 states + DC. Data is from FCC Form 477 (as of June 2021).
| Name | Required | Description | Default |
|---|---|---|---|
| sort_by | No | "unserved_pct" = share of population with no broadband (default). "unserved_pop" = raw headcount for BEAD funding. "coverage_pct" = share with any coverage. "competitive_pct" = share with 2+ providers. Every option ranks worst-first, so rank 1 is the highest unserved share or headcount, or the lowest coverage or competitive share. | unserved_pct |
| speed_down | No | Download speed threshold in Mbps. 25 = FCC legacy standard. 100 = BEAD program standard. | 25 |
| tech_filter | No | Technology filter. "acfosw" = any wired or fixed wireless. "f" = fiber only. "c" = cable only. "a" = DSL. "s" = satellite. "w" = fixed wireless. | acfosw |
| geography_ids | No | Array of FIPS GEOIDs to compare (up to 50). For all 50 states, omit and set compare_all_states=true. | |
| geography_type | Yes | Geographic level to compare. Must be uniform across all geographies in the comparison. | |
| compare_all_states | No | When true, compares all 50 states + DC. Overrides geography_ids. Requires geography_type="state". |
Output Schema
| Name | Required | Description |
|---|---|---|
| areas | Yes | Ranked comparison of geographies by the selected sort field. |
| sortBy | Yes | Ranking field used. |
| techFilter | Yes | Technology filter applied. |
| totalAreas | Yes | Total number of areas compared. |
| dataVintage | Yes | Data vintage — Form 477 data as of June 2021. |
| geographyType | Yes | Geography type compared. |
| speedDownMbps | Yes | Speed threshold in Mbps. |
| appliedFilters | Yes | Filters and parameters applied to this comparison. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context beyond the annotations: it returns a ranked table, sorts by unserved/underserved population, and notes the data vintage (FCC Form 477 as of June 2021). The read-only and idempotent hints are already provided, so the description's additional details about output and data recency are valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the main purpose and output, then provides a use case and key usage modes. No filler or redundant information; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core use case, the comparison scope, data source recency, and the alternative mode (compare_all_states). With a rich schema and output schema present, the description doesn't need to explain every parameter, and it sufficiently contextualizes when to use the tool for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 reinforces the max size of geography_ids and the compare_all_states override, but it doesn't add semantic meaning beyond what the schema already provides for parameters like sort_by, speed_down, and tech_filter. The schema descriptions are already thorough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Compares') and resource ('broadband coverage metrics across multiple geographies') while producing a ranked table. It also provides a concrete use case ('which counties in this state have the worst broadband access?') that distinguishes it from sibling tools focused on single-area queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use this tool (comparing geographies of the same type, BEAD funding prioritization) and explicit usage instructions (provide up to 50 IDs or set compare_all_states=true). It doesn't explicitly mention alternative sibling tools, but the purpose is distinct enough that an agent can infer when to choose this over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcc_find_underservedFind Underserved AreasARead-onlyIdempotentInspect
Finds geographic areas with limited or no broadband coverage at a given speed threshold, ranked by unserved population. The core tool for BEAD program analysis and broadband equity research. Accepts a state abbreviation to narrow scope or runs nationwide. Defaults to rural areas where underservice is most concentrated. Data is from FCC Form 477 (as of June 2021).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of areas to return, ranked by unserved population (descending). | |
| state | No | 2-letter USPS state or territory code (e.g., "WY", "MS", "PR") to limit scope. An unrecognized code is rejected, not ignored. Omit for nationwide search — returns top areas only. | |
| speed_down | No | Download speed threshold in Mbps for defining "underserved." 25 = FCC legacy standard. 100 = BEAD program standard. | 25 |
| tech_filter | No | Technology filter. "acfosw" = any wired or fixed wireless. "f" = fiber only. "c" = cable only. | acfosw |
| geography_type | No | Geographic granularity for results. "county" is most useful for policy analysis and BEAD eligibility. "cd" = congressional district. "place" = census-designated place. "cbsa" = metro area. | county |
| min_unserved_pop | No | Minimum population with no coverage to include. Defaults to 1, which keeps fully covered areas out of a ranking of underserved ones. Set to 0 to rank every area regardless of unserved population, or higher to drop small gaps (e.g., 500 keeps only areas with at least 500 unserved residents). | |
| urban_rural_filter | No | Defaults to rural ("R") — where underservice is most concentrated. Use "U" to find underserved urban areas (digital redlining research). Set to "all" for both. | R |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit that was applied. Present when truncated. |
| areas | Yes | Ranked list of underserved areas. |
| shown | No | Number of areas returned after applying the limit. Present when truncated. |
| notice | No | Guidance about the result set — how to broaden the filters when nothing matched, and how to narrow the query when the upstream scan hit its row ceiling. Absent when neither applies. |
| truncated | No | True when more areas matched than the limit returned. Absent when not truncated. |
| scanRowCap | No | Raw upstream row ceiling that bound the scan. Present only when scanTruncated is true. |
| totalFound | Yes | Total number of areas found before applying the limit filter. |
| dataVintage | Yes | Data vintage — Form 477 data as of June 2021. |
| geographyType | Yes | Geography type returned. |
| scanTruncated | No | True when the upstream row scan stopped at its ceiling before reaching the end of the matching data, so totalFound and the ranking cover only the portion that was scanned. Absent when the scan read every matching row. |
| speedDownMbps | Yes | Speed threshold used in Mbps. |
| appliedFilters | Yes | Filters applied to this query. |
| urbanRuralFilter | Yes | Urban/rural filter applied. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnly and idempotent behavior. The description adds valuable context: data source and vintage ('FCC Form 477 (as of June 2021)') and the default to rural areas. These go beyond annotations and help the agent set expectations about data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each carrying distinct information: core function and ranking, intended use and scope, and data source. No fluff or redundancy; front-loaded with the most important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query tool with an output schema and fully documented parameters, the description supplies essential high-level context: purpose, ranking, scope options, default behavior, and data vintage. It is complete enough for an agent to understand when and why to use this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 mentions general concepts like 'speed threshold' and 'state abbreviation,' but these do not add meaning beyond what the parameter descriptions already provide. No additional parameter semantics are introduced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Finds geographic areas with limited or no broadband coverage at a given speed threshold, ranked by unserved population.' It distinguishes itself by positioning as 'the core tool for BEAD program analysis and broadband equity research,' which is unique among sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context ('BEAD program analysis and broadband equity research') and explains scope selection (state abbreviation or nationwide). It does not explicitly mention alternatives or exclusions, but the context is strong enough to guide appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcc_geocode_blockGeocode Census BlockARead-onlyIdempotentInspect
Converts a latitude/longitude coordinate to a 15-digit census block FIPS code, plus county FIPS, county name, state FIPS, state code, and state name. This is the required prerequisite for fcc_search_availability since the broadband dataset is indexed by census block, not address. The block is resolved against 2010 census boundaries, the vintage the Form 477 deployment dataset is keyed by, so the returned blockFips can be passed straight to fcc_search_availability; a 2020-vintage block ID from another source will not match. Uses the FCC public Geo API — no authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | Latitude of the location in decimal degrees (e.g., 47.6062 for Seattle, WA). Must be within the continental US, Alaska, Hawaii, or US territories. | |
| longitude | Yes | Longitude of the location in decimal degrees (e.g., -122.3321 for Seattle, WA). Negative for western hemisphere. |
Output Schema
| Name | Required | Description |
|---|---|---|
| blockFips | Yes | 15-digit census block FIPS code on 2010 census boundaries (e.g., "530330081002024"). Pass this to fcc_search_availability to look up broadband providers. |
| stateCode | Yes | 2-letter state abbreviation (e.g., "WA"). |
| stateFips | Yes | 2-digit state FIPS code (e.g., "53" for Washington). |
| stateName | Yes | Full state name (e.g., "Washington"). |
| countyFips | Yes | 5-digit county FIPS code (e.g., "53033" for King County, WA). |
| countyName | Yes | Human-readable county name (e.g., "King"). |
| censusVintage | Yes | Decennial census whose block boundaries blockFips belongs to. Always "2010" — the vintage the Form 477 deployment dataset behind fcc_search_availability is keyed by. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and idempotentHint annotations, the description reveals the tool uses the FCC public Geo API with no authentication required, and clarifies that results are resolved against 2010 census boundaries. This adds meaningful behavioral context not available from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the primary purpose, and each sentence adds essential context (prerequisite, vintage, API details). No word is wasted, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the tool is relatively simple, the description sufficiently covers the key contextual aspects: the purpose, the relationship to fcc_search_availability, the vintage boundary, and the lack of authentication. It is complete for an effective agent decision.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already provides clear definitions for latitude and longitude including bounds and examples. The description adds no additional parameter-specific semantics beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool converts lat/long to a 15-digit census block FIPS code plus ancillary geographic identifiers. It also distinguishes itself by explicitly noting it is a prerequisite for fcc_search_availability, differentiating it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool: as the required prerequisite for fcc_search_availability because the broadband dataset is indexed by census block. It also warns about vintage mismatches (2010 vs 2020), providing clear guidance on when this specific tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcc_get_coverage_summaryGet Broadband Coverage SummaryARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| speed_down | No | Minimum 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_filter | No | 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. | acfosw |
| geography_id | No | 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. | |
| tribal_filter | No | Filter to tribal ("T") or non-tribal ("N") areas. Use "T" to assess Native American connectivity gaps. | all |
| geography_type | Yes | Geographic 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_filter | No | Filter to urban ("U") or rural ("R") areas only, or "all" for both combined. Rural breakdown is key for BEAD program analysis. | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| breakdown | Yes | Per-segment breakdown by urban/rural and tribal/non-tribal. |
| geography | Yes | The queried geography. |
| population | Yes | Population counts by provider availability tier. |
| techFilter | Yes | Technology filter applied. |
| coveragePct | Yes | Percentage of population with at least one provider at the given speed. |
| dataVintage | Yes | Data vintage — Form 477 data as of June 2021. |
| unservedPct | Yes | Percentage with zero providers — FCC "unserved" definition. |
| speedDownMbps | Yes | Download speed threshold used in Mbps. |
| appliedFilters | Yes | Filters applied to this query. |
| competitivePct | Yes | Percentage with two or more providers. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description doesn't need to restate safety. It adds valuable context: the data is from FCC Form 477 as of June 2021, indicating a potential data vintage limitation, and it returns summary counts rather than raw records. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core return value, then adding context about geography types, data source, and usage guidance. Every sentence earns its place, and there is no redundant or vague wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema and output schema presence, the description covers the essential context: what the tool returns, what geography levels it supports, the data vintage, and how to use it for BEAD analysis. This is complete enough for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% description coverage for all six parameters, including defaults and enums. The description adds a policy-specific speed recommendation (100 Mbps for BEAD) but does not explain individual parameters, so the schema carries the weight. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a broadband coverage summary with specific detail: population counts by provider tiers at a speed threshold, split by urban/rural and tribal/non-tribal. It also identifies itself as the primary tool for digital divide analysis, distinguishing it from siblings like search_availability or find_underserved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong usage context: it is 'the primary tool for digital divide and equity analysis' and specifically recommends using 100 Mbps for BEAD policy analysis. It does not explicitly list when not to use it, but the guidance is clear enough for an agent to select it over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcc_get_providerGet Provider ProfileARead-onlyIdempotentInspect
Returns a national-level coverage profile for a specific holding company (by hoconum): technologies deployed and the population covered at each download speed tier. Population figures come from the FCC provider summary table and count each person once, regardless of how many technologies the provider uses to reach them. Use fcc_search_providers to find valid hoconum values. Data is from FCC Form 477 (as of June 2021).
| Name | Required | Description | Default |
|---|---|---|---|
| hoconum | Yes | Holding company number from fcc_search_providers — digits only, e.g. "130317" for Comcast Corporation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hoconum | Yes | Holding company number. |
| techCodes | Yes | Technology codes this provider reports nationally. Empty when the provider reports no population coverage (e.g. business-only carriers). |
| techLabels | Yes | Human-readable technology descriptions. |
| dataVintage | Yes | Data vintage — Form 477 data as of June 2021. |
| holdingCompanyName | Yes | Holding company name. |
| speedTierPopulation | Yes | National covered population by download speed tier, from the FCC all-technology rollup. Tiers with no coverage are omitted; empty when the provider reports no population coverage. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint and idempotentHint, so the description adds value by explaining deduplication of population counts across technologies, the data source (FCC Form 477 as of June 2021), and the national-level scope. These details go beyond the structured annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses four sentences, each adding distinct information: primary purpose, population counting nuance, validation path, and data vintage. It is concise and front-loaded with the main verb and resource, with no wasteful phrases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool with an output schema, the description covers the purpose, data semantics, prerequisite lookup, and data source. It does not need to explain return values because the output schema exists, and it includes the dedup nuance that is otherwise non-obvious.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the hoconum parameter with pattern, description, and example. The tool description mentions 'by hoconum' and points to fcc_search_providers, but this is largely redundant with the schema's description. Since schema coverage is 100%, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action: 'Returns a national-level coverage profile for a specific holding company' by hoconum, including technologies and population per download speed tier. It distinguishes this from siblings (e.g., fcc_search_providers) by focusing on retrieving a profile for a known provider rather than searching or comparing areas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear context for when to use this tool: when you need a provider's national coverage profile. It also points to fcc_search_providers as a prerequisite for finding valid hoconum values, but it does not explicitly state when to avoid this tool in favor of alternatives, leaving some implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcc_list_downloadsList BDC DownloadsARead-onlyIdempotentInspect
Lists downloadable BDC data files for a specific as-of date — fixed availability by state and provider, mobile coverage, and challenge data — with file metadata (provider, state, technology, record count). Download URLs are included for each file. Requires FCC BDC API credentials (FCC_BDC_USERNAME and FCC_BDC_HASH_VALUE). Use fcc_list_filing_periods first to determine valid as_of_date values (BDC dates start June 2022); a date that is not on the calendar, or that falls before the first BDC period, is rejected without credentials, while a well-formed date the BDC API does not publish is rejected once credentials let the published set be read. One as-of date can carry thousands of per-provider files, so results come back a page at a time: totalFiles counts every file matching the filters, the response reports the offset and the count on this page, and it carries a nextOffset to pass back for the following page until the last one, which omits it.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of files to return on one page. | |
| state | No | Filter to one state's files (2-letter abbreviation, e.g., "WA"). | |
| offset | No | Zero-based index of the first file to return, within the files matching the filters. Start at 0 and follow the nextOffset each response carries. | |
| category | No | File category. "State" = per-state coverage files. "Provider" = per-provider files. "Summary" = aggregate coverage tables. | |
| data_type | No | "availability" = ISP-reported coverage files (by state and provider). "challenge" = consumer and government dispute records. | availability |
| as_of_date | Yes | BDC as-of date in YYYY-MM-DD format (e.g., "2024-06-30"). Get valid dates from fcc_list_filing_periods with include_bdc=true. | |
| provider_name | No | Partial provider holding company name to filter results (case-insensitive). | |
| technology_type | No | Filter to a specific technology type of coverage data. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Files actually returned on this page. Zero both when nothing matched and when the offset is past the end; the notice says which. |
| files | Yes | Downloadable BDC files on this page, in the order the BDC API lists them. |
| notice | Yes | Where this page sits in the matching set and how to continue — or, when the page is empty, whether nothing matched the filters or the offset ran past the end. |
| offset | Yes | Zero-based index of the first file on this page. |
| asOfDate | Yes | The queried as-of date. |
| dataType | Yes | Data type queried (availability or challenge). |
| pageSize | Yes | Maximum files one page returns — the limit that was applied. |
| truncated | Yes | True when this page holds fewer files than totalFiles, so more pages exist. |
| nextOffset | No | Offset to pass back for the next page. Omitted on the last page and when the offset is past the end. |
| totalFiles | Yes | Files matching the filters across every page, not just this one. Compare against the count enrichment field to see how much of the set this page holds. |
| appliedFilters | Yes | Filters applied to this query. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly, idempotent, and closed-world behavior. The description adds crucial context: credential requirements, pagination semantics, and edge-case rejection behavior before and after credentials are validated. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph with no filler. Every sentence contributes value: purpose, file scope, metadata, credentials, prerequisites, error behavior, and pagination. It is front-loaded with the core function and then provides necessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers auth, prerequisite tool usage, error modes, pagination, and file scope. With an output schema present, it correctly omits detailed return-value explanations while still mentioning key fields like totalFiles, offset, and nextOffset.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with detailed descriptions for all 8 parameters. The description adds high-level context about the large result set, which justifies the need for pagination parameters, and reinforces the offset/nextOffset workflow described in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as listing downloadable BDC data files with metadata and download URLs for a specific as-of date. It uses a specific verb+resource ('Lists downloadable BDC data files') and distinguishes from sibling tools like fcc_list_filing_periods, which lists calendar periods rather than files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to call fcc_list_filing_periods first to determine valid as_of_date values, and explains error behavior for invalid dates versus unpublished dates. It also provides clear pagination usage guidance, telling the agent to follow nextOffset until it is omitted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcc_list_filing_periodsList Filing PeriodsARead-onlyIdempotentInspect
Returns available data vintages: Form 477 filing periods (hardcoded Jun 2015 – Jun 2021, always available) and BDC as-of dates from the authenticated API (Jun 2022 onward, requires credentials). Call this before fcc_list_downloads to determine valid as_of_date values. Note: there is a data gap between June 2021 (last Form 477) and June 2022 (first BDC filing period).
| Name | Required | Description | Default |
|---|---|---|---|
| include_bdc | No | When true, also fetches BDC as-of dates from the authenticated API (requires FCC_BDC_USERNAME and FCC_BDC_HASH_VALUE). When false (default), returns only hardcoded Form 477 periods. |
Output Schema
| Name | Required | Description |
|---|---|---|
| periods | Yes | Available filing periods sorted newest first. |
| bdcCount | Yes | Number of BDC periods returned (0 when credentials not configured or include_bdc=false). |
| dataNote | Yes | Note on data availability and the Form 477 vs. BDC gap. |
| form477Count | Yes | Number of Form 477 periods returned (always available). |
| hasBdcCredentials | Yes | Whether BDC API credentials are configured in this deployment. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description doesn't need to restate safety. It adds valuable context: hardcoded periods are always available, BDC requires authentication, and there is a data gap between June 2021 and June 2022. This goes beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences convey all key facts: data sources, time ranges, availability, credentials, ordering, and a data gap. No redundancy or filler. Information is front-loaded with the primary output, making it highly scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential preconditions (auth for BDC), sequencing (before fcc_list_downloads), and the data gap that could invalidate reasoning. Output schema exists, so return format need not be explained. For a list tool with one optional parameter, this is exceptionally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description covers the include_bdc parameter fully (100% coverage), so the baseline is 3. The description does add context about the parameter's purpose (determining valid as_of_date values), but this is marginal and largely restates the schema's explanation of credentials. No significant new parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'returns' and identifies the resource as 'available data vintages' including Form 477 and BDC periods. It distinguishes itself from fcc_list_downloads by explicitly positioning this as the precursor to determine valid as_of_date values, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs 'Call this before fcc_list_downloads to determine valid as_of_date values', providing a clear when-to-use directive and naming the relevant sibling. It also notes the BDC branch requires credentials, offering important context for whether to invoke this tool at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcc_search_availabilitySearch Broadband AvailabilityARead-onlyIdempotentInspect
Queries broadband providers and advertised speeds at a census block from FCC Form 477 data (as of June 2021). Answers "which ISPs serve this location and what speeds do they offer?" — the core tool for address-level broadband lookup. Requires a 15-digit census block FIPS code; use fcc_geocode_block to convert coordinates first. Data reflects ISP-reported availability at the block level, which may overstate actual coverage for some addresses.
| Name | Required | Description | Default |
|---|---|---|---|
| consumer | No | Filter to consumer service (true) or business service (false). Omit to return both consumer and business offerings. | |
| block_fips | Yes | 15-digit census block FIPS code on 2010 census boundaries, the vintage this Form 477 dataset is keyed by (e.g., "530330081002024"). Obtain from fcc_geocode_block using address coordinates — a 2020-vintage block ID matches no deployment row. | |
| tech_filter | No | Technology codes to filter, from the complete Form 477 taxonomy: 0=All other, 10=Asymmetric xDSL, 11=ADSL2, 12=VDSL, 20=Symmetric xDSL, 30=Other copper wireline, 40=Cable modem, 41=Cable modem DOCSIS 1/1.1/2.0, 42=Cable modem DOCSIS 3.0, 43=Cable modem DOCSIS 3.1, 50=Fiber to the end user, 60=Satellite, 70=Terrestrial fixed wireless, 90=Electric power line. Omit to return all technologies. | |
| min_speed_down | No | Minimum advertised download speed in Mbps to include in results. Omit to return all providers regardless of speed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notice | No | Recovery hint when no providers are found — suggests how to broaden the query. Absent on successful results. |
| blockFips | Yes | The queried census block FIPS code. |
| providers | Yes | ISP offerings reported for this census block. |
| dataVintage | Yes | Data vintage — all Form 477 data on FCC Open Data is as of June 2021. For newer BDC data, use fcc_list_downloads. |
| appliedFilters | Yes | Filters applied to this query. |
| totalProviders | Yes | Total number of distinct holding companies offering service at this block. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description warns that ISP-reported availability may overstate actual coverage and notes the June 2021 vintage. This provides decision-relevant caveats without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, front-loaded with the core query and answer, then prerequisite and caveat. None of the sentences are filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present and annotations indicating read-only/idempotent behavior, the description's caveat about data overstatement and the geocoding prerequisite make it self-sufficient for an agent to decide when and how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 restates the 15-digit FIPS requirement but adds no new parameter-level detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses 'Queries' with a specific resource (broadband providers and advertised speeds at a census block) and explicitly answers a concrete question. It positions itself as 'the core tool for address-level broadband lookup,' distinguishing it from the sibling geocoder and other FCC tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the prerequisite (15-digit census block FIPS, get from fcc_geocode_block) and the data vintage. It doesn't explicitly name exclusions or alternative tools beyond the geocoder, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcc_search_providersSearch Broadband ProvidersARead-onlyIdempotentInspect
Searches for ISPs by holding company name, filtered by state and technology type. Returns a deduplicated list of matching providers with hoconum identifiers for follow-up calls to fcc_get_provider. Answers "which ISPs serve Washington with fiber?" and "find all Comcast entities." Geographic filtering is state-level; sub-state granularity requires cross-referencing block data. Against the live FCC API the search reads a bounded window of deployment rows to find which holding companies match, so when scanTruncated comes back true the providers are a sample of the matches rather than every one of them and no true match count is available; a narrower filter raises the share of matches the sample surfaces but cannot make it complete, and only a deployment running the local Form 477 mirror returns every match. The sample is of which companies come back — every company that does carries its complete national footprint, since statesServed and techCodes are resolved per company rather than read off the window, at the cost of one lookup per provider returned. Data is from FCC Form 477 (as of June 2021).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of distinct providers to return. | |
| state | No | 2-letter state abbreviation (e.g., "WA") to limit results to providers serving that state. Matches individual deployment filings, so every filter given must hold on one filing together — a provider is returned for state="WA" with tech_filter=["50"] only if it filed fiber in Washington, not if it filed fiber elsewhere and something else in Washington. | |
| name_search | No | Partial holding company name to search (case-insensitive). e.g., "Comcast", "T-Mobile", "Frontier". Omit to list all providers in a state. | |
| tech_filter | No | Technology codes to filter, from the complete Form 477 taxonomy: 0=All other, 10=Asymmetric xDSL, 11=ADSL2, 12=VDSL, 20=Symmetric xDSL, 30=Other copper wireline, 40=Cable modem, 41=Cable modem DOCSIS 1/1.1/2.0, 42=Cable modem DOCSIS 3.0, 43=Cable modem DOCSIS 3.1, 50=Fiber to the end user, 60=Satellite, 70=Terrestrial fixed wireless, 90=Electric power line. Omit for all technologies. Matches individual deployment filings like state does, so pairing this with name_search narrows to filings made under the matched name — a holding company that files some technologies under an acquired brand name can come back empty here while its techCodes list the technology. To ask what one company deploys, search the name alone and read techCodes off the result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit that was applied. Present when capped. |
| shown | No | Number of providers returned. Present when capped. |
| notice | No | Guidance about the result set — that the list was capped at the limit, that the upstream scan returned a sample rather than every match, and how to broaden the search when nothing matched. Absent when none applies. |
| providers | Yes | Matching providers, deduplicated by holding company. |
| truncated | No | True when results were capped at the limit and more providers may exist. Absent when not capped. |
| scanRowCap | No | Raw upstream row ceiling that bound the scan. Present only when scanTruncated is true. |
| totalCount | No | Distinct providers matching the query, before the limit. Present only when the scan read every matching row — absent when scanTruncated is true, because the true match count is then unknown. |
| totalFound | Yes | Providers in this response. Not the number matching the query — that is totalCount, and it is only knowable when the scan read every matching row. |
| dataVintage | Yes | Data vintage — Form 477 data as of June 2021. |
| scanTruncated | No | True when the upstream row scan stopped at its ceiling before reaching the end of the matching data, so the providers returned are a sample of the matches rather than the complete set. Bounds which companies came back, not what each one reports — statesServed and techCodes are resolved per company and stay complete. Absent when the scan read every matching row. |
| appliedFilters | Yes | Filters applied to this query. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with readOnlyHint and idempotentHint annotations, the description adds crucial behavioral details: the search reads a bounded window, so results may be a sample when scanTruncated is true, and each returned provider carries its full national footprint at the cost of one lookup per provider. This goes far beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place, covering sampling behavior, deduplication, filter semantics, and data source. It is front-loaded with the core purpose and structured logically, making it easy for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has complex behavior (bounded window reads, sampling, per-company resolution) and the description thoroughly explains these caveats, including what scanTruncated means and when results are incomplete. Given an output schema exists, the description is remarkably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already explains state and tech_filter semantics in detail (e.g., matching on individual filings). The tool description adds little beyond the schema, so the baseline of 3 is appropriate; it does not materially enrich parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb ('Searches for ISPs') and names the resource (holding company) and filters (state and technology type). It also differentiates from siblings by stating it returns hoconum identifiers for follow-up calls to fcc_get_provider and answering concrete questions like 'which ISPs serve Washington with fiber?'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool via example questions and provides a when-not through 'Geographic filtering is state-level; sub-state granularity requires cross-referencing block data.' It also names an alternative for complete results: 'only a deployment running the local Form 477 mirror returns every match.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables querying and exploring FCC Open Data datasets via Socrata SoQL, including dataset search, metadata retrieval, and data querying.13MIT
- FlicenseNot gradedqualityDmaintenanceEnables access to US Census Bureau TIGERweb geographic boundary data, returning GeoJSON for states, counties, census tracts, places, ZCTAs, and congressional districts.1
- FlicenseNot gradedqualityDmaintenanceEnables access to U.S. Census Bureau data including demographics, population, income, and housing statistics. Users can query specific variables, search datasets, and retrieve geographic FIPS codes across various surveys like the American Community Survey and Decennial Census.1
- AlicenseNot gradedqualityCmaintenanceProvides access to the U.S. Census Bureau Geocoding Services API, enabling geocoding addresses, reverse geocoding coordinates, and retrieving Census geographies without an API key.MIT
Your Connectors
Sign in to create a connector for this server.