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.4/5 across 9 of 9 tools scored.
Each tool serves a unique function: geocoding, provider search, coverage summaries, file listings, etc. No two tools have overlapping purposes; descriptions clearly differentiate them.
All tools follow a consistent `fcc_verb_noun` pattern in snake_case, making it easy to infer functionality. Examples: `fcc_geocode_block`, `fcc_list_downloads`.
With 9 tools covering geocoding, search, comparison, summary, and data access, the count is well-scoped for a broadband data server. No tool seems superfluous or missing.
The tool set provides a complete workflow for broadband analysis: geocoding, address-level and provider search, coverage summaries, area comparison, underserved identification, and data download. No obvious gaps.
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. | 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?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering safety profile. The description adds meaningful behavioral context: the tool returns a ranked table sorted by unserved or underserved population, and the data is from FCC Form 477 as of June 2021—a critical limitation for recency-sensitive decisions. This goes beyond the 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?
The description is four sentences, each contributing essential information: what it does, an example use case, key usage constraints, and data source. It is front-loaded with the core action and output, and there is no redundant or filler content. Every sentence 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?
Given the tool's complexity (6 parameters, 4 enums), the description covers the main usage scenarios, constraints, and data vintage. The output schema exists, so the description does not need to explain return values. Annotations cover safety, and the schema covers parameter details. The description adds the essential 'why' and 'how' context, making it complete for an agent to select and invoke the tool 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?
Schema description coverage is 100%, so the baseline is 3. The description mentions the 'up to 50 geography IDs' and 'compare_all_states=true' modes, but these are already detailed in the schema. It does not add meaningfully new parameter semantics beyond what the schema provides, though it reinforces the conceptual context of the sort_by options for BEAD funding.
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 compares broadband coverage metrics across multiple geographies of the same type and outputs a ranked table. It provides a concrete example question ('which counties in this state have the worst broadband access?') and distinguishes itself from siblings like fcc_get_coverage_summary by focusing on multi-geography comparison. The verb+resource+output structure is specific and unambiguous.
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 multiple geographies, answering ranking questions, and supporting BEAD funding prioritization. It also provides usage constraints (up to 50 IDs or compare_all_states=true, same geography type). However, it does not explicitly name alternatives or state when not to use it, 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_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 state code (e.g., "WY", "MS") to limit scope. 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. Use to filter out very small areas (e.g., 500 filters areas with fewer than 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 | Recovery hint when no areas are found — suggests how to broaden the filters. Absent on successful results. |
| truncated | No | True when more areas matched than the limit returned. Absent when not truncated. |
| 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. |
| 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 declare read-only and idempotent, so the description's disclosure of data vintage (FCC Form 477, June 2021), default rural filter, and ranking mechanism adds valuable behavioral context without contradicting 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?
Three sentences: main function, positioning, and scope/data source. Every sentence earns its place, with no fluff, and the most important purpose is front-loaded.
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 detailed input schema, the description covers the purpose, data source, and defaults. It could mention the BEAD speed threshold (100 Mbps) but the schema already does, so it's complete enough.
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 provides 100% coverage of parameter descriptions, including enums for speed_down, tech_filter, geography_type, and urban_rural_filter. The description only adds a high-level framing (rural defaults, ranking) but does not add new per-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 clearly states the tool's function with a specific verb ('Finds geographic areas...'), scope ('at a given speed threshold, ranked by unserved population'), and even distinguishes it from siblings via 'core tool for BEAD program analysis'. This gives it a clear identity.
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 positions the tool for BEAD program analysis and broadband equity research, and notes the state filter to narrow scope. It implies when to use it (for ranked underserved areas) but does not explicitly name alternatives or when not to use it, which would make it a 5.
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. 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 (e.g., "530330081021016"). 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"). |
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 safety profile is covered. The description adds valuable context beyond annotations by disclosing the external dependency ('Uses the FCC public Geo API') and the lack of auth requirements. This goes beyond what the annotations alone provide, though it does not cover potential rate limits or error behavior, which would be nice but is not critical for a read-only lookup.
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 exactly two sentences, with the primary action and result front-loaded in the first sentence. The second sentence provides essential contextual guidance (prerequisite relationship, API type, auth) without any fluff or repetition of schema details. 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 clearly explains the tool's purpose, output fields, prerequisite usage, and external API dependence. Combined with the presence of an output schema (which the description need not duplicate), the description fully covers what an agent needs to know to invoke this tool correctly, especially in the context of the sibling tools like fcc_search_availability.
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 has 100% description coverage for both parameters (latitude and longitude), including examples and range constraints. The tool description itself does not add additional parameter-specific semantics beyond what the schema already captures, so it earns the baseline score of 3. There is no gap requiring compensation.
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 ('Converts') and clearly identifies the resource (a lat/long coordinate to census block FIPS plus related geographic identifiers). It distinguishes itself from sibling tools by explicitly mentioning the prerequisite relationship to fcc_search_availability, making its unique role evident.
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 states when to use this tool: 'This is the required prerequisite for fcc_search_availability since the broadband dataset is indexed by census block, not address.' This provides the exact context and rationale for choosing this tool over alternatives, effectively guiding the agent on when it should be invoked.
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): states served, technologies deployed, and the number of locations covered at each download speed tier. 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 (e.g., "130152" for Comcast). Required identifier for the provider. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hoconum | Yes | Holding company number. |
| techCodes | Yes | Technology codes this provider deploys nationally. |
| techLabels | Yes | Human-readable technology descriptions. |
| dataVintage | Yes | Data vintage — Form 477 data as of June 2021. |
| holdingCompanyName | Yes | Holding company name. |
| speedTierLocations | Yes | Download speed tier location counts (national totals). |
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 safety profile is known. The description adds valuable context: data source (FCC Form 477) and vintage (June 2021), plus national-level scope, which goes beyond what annotations provide.
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?
Two sentences with no wasted words. The main action and outcome are front-loaded, followed by a practical instruction and data provenance. Every sentence contributes to understanding the tool.
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 single-parameter lookup with an output schema present, the description is complete. It states what the response contains (states, technologies, speed tiers), the required input, and the data source, leaving no obvious gaps for an agent to misuse the 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 covers hoconum fully with an example and provenance from fcc_search_providers. The description reinforces this by explicitly linking the parameter to the search tool, adding semantic context that the schema alone does not provide.
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 starts with 'Returns a national-level coverage profile for a specific holding company', clearly stating verb, resource, and scope. It enumerates the specific data points (states served, technologies deployed, speed tiers) which distinguishes it from sibling tools like fcc_get_coverage_summary.
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?
Description explicitly tells users to 'Use fcc_search_providers to find valid hoconum values', providing a direct alternative for obtaining the required parameter. This is clear usage guidance for a one-parameter lookup, covering the main prerequisite.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Filter to one state's files (2-letter abbreviation, e.g., "WA"). | |
| 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 |
|---|---|---|
| files | Yes | Downloadable BDC files matching the filters. |
| notice | No | Recovery hint when no files are found — suggests how to broaden the search. Absent on successful results. |
| asOfDate | Yes | The queried as-of date. |
| dataType | Yes | Data type queried (availability or challenge). |
| totalFiles | Yes | Total number of files returned after filtering. |
| appliedFilters | Yes | Filters applied to this query. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, establishing a safe read operation. The description adds meaningful context about credential requirements and the inclusion of download URLs and metadata, without contradicting the annotations. It does not elaborate on pagination or error behavior, but this is not critical given 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 three sentences long, starts with the core purpose, then details outputs, then covers credentials and prerequisite. Every sentence adds distinct value with no redundancy or fluff.
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 tool's complexity (6 params, output schema present, read-only annotations), the description covers purpose, scope, credential requirements, and prerequisite. It might have mentioned pagination or limits, but the presence of an output schema and the simple listing nature make the current description sufficient.
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 has 100% description coverage, with all six parameters documented including examples and cross-references to fcc_list_filing_periods. The description itself does not add additional parameter-level detail beyond what is in the schema, so a baseline 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 lists downloadable BDC data files for a specific as-of date, specifying the types of data and that it includes file metadata and download URLs. It distinguishes itself from sibling tools by focusing on file downloads rather than queries or summaries, and explicitly references fcc_list_filing_periods for date validation.
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 provides a clear prerequisite, 'Use fcc_list_filing_periods first to determine valid as_of_date values,' and notes the need for FCC BDC API credentials. It implies the tool is for downloading files rather than analyzing coverage, but does not explicitly enumerate what other tools should be used for instead.
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 (e.g., "530330081021016"). Obtain from fcc_geocode_block using address coordinates. | |
| tech_filter | No | Technology codes to filter. 50=Fiber to premises, 40–43=Cable modem, 10–12=DSL variants, 60=Satellite, 70=Fixed wireless. 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?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: the data is 'as of June 2021' and 'reflects ISP-reported availability at the block level, which may overstate actual coverage for some addresses.' This is a meaningful data-quality caveat that helps set expectations.
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 with no redundancy: sentence 1 states purpose and data source, sentence 2 clarifies the use case and prerequisite, sentence 3 provides data limitations. It is front-loaded, skimmable, and every sentence 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?
Given the 4 parameters, 1 required, and the presence of an output schema, the description covers the essential context: how to obtain the required input (via fcc_geocode_block), what data vintage to expect (June 2021), and a key accuracy limitation. With an output schema available, not explaining return values is acceptable.
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%, with each parameter already documented in detail (e.g., block_fips pattern, tech_filter enum codes, consumer filter). The description adds no parameter-level semantics beyond the schema; it only repeats the block_fips requirement. Per the calibration baseline, a 3 is appropriate when the schema carries the load.
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 opens with a specific verb and resource: 'Queries broadband providers and advertised speeds at a census block from FCC Form 477 data.' It also answers the core question ('which ISPs serve this location and what speeds do they offer?') and frames it as the 'core tool for address-level broadband lookup,' distinguishing it from sibling tools that target other scopes.
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: when you have a census block FIPS code, this is the tool to use. It explicitly names a prerequisite/alternative: 'use fcc_geocode_block to convert coordinates first.' However, it does not explicitly state when not to use this tool versus other siblings like fcc_search_providers or fcc_get_coverage_summary, so it misses the full when-not guidance.
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. 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. | |
| 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. 50=Fiber, 40–43=Cable, 10–12=DSL, 60=Satellite, 70=Fixed wireless. Omit for all technologies. |
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 | Recovery hint when no providers are found — suggests how to broaden the search. Absent on successful results. |
| 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. |
| totalFound | Yes | Number of distinct providers returned. |
| dataVintage | Yes | Data vintage — Form 477 data as of June 2021. |
| appliedFilters | Yes | Filters applied to this query. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, but the description adds valuable behavioral context: it states deduplication of results, identifies the output includes hoconum identifiers, provides data provenance (FCC Form 477 as of June 2021), and clarifies geographic filtering scope. This goes well beyond the minimal annotation info.
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 purpose, and every sentence adds distinct useful information (purpose, output details, examples, limitations/data source). No fluff or redundancy, making it appropriately sized 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 annotations cover safety, the description is complete: it explains what the tool does, what it returns (deduplicated list with identifiers), provides usage examples, notes data freshness and limitations, and indicates the follow-up tool. No critical gaps remain for an agent to select and invoke the tool 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?
Schema coverage is 100% with each parameter already documented. The description restates general filtering by state/technology but does not add new parameter-specific meaning beyond the schema. It does not elaborate on `limit`, `name_search`, or the tech code semantics beyond what is in the schema, so baseline 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 uses a specific verb ('Searches for ISPs') and names the resource (holding company name, state, technology type). It clearly distinguishes this from sibling tools by mentioning 'hoconum identifiers for follow-up calls to fcc_get_provider' and providing concrete example queries, making it evident that this is a provider discovery tool rather than a coverage or geocoding tool.
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 usage context via examples ('which ISPs serve Washington with fiber?') and notes the follow-up tool (fcc_get_provider), implying when to use this tool. It also mentions a limitation (state-level granularity) that signals when not to use it for sub-state queries, but it does not explicitly contrast with alternative sibling tools like fcc_search_availability.
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
- Alicense-qualityCmaintenanceEnables querying and exploring FCC Open Data datasets via Socrata SoQL, including dataset search, metadata retrieval, and data querying.Last updated29MIT
- Flicense-qualityDmaintenanceEnables access to US Census Bureau TIGERweb geographic boundary data, returning GeoJSON for states, counties, census tracts, places, ZCTAs, and congressional districts.Last updated1
- Flicense-qualityDmaintenanceEnables 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.Last updated1
- Alicense-qualityCmaintenanceProvides access to the U.S. Census Bureau Geocoding Services API, enabling geocoding addresses, reverse geocoding coordinates, and retrieving Census geographies without an API key.Last updatedMIT
Your Connectors
Sign in to create a connector for this server.