Skip to main content
Glama

fcc-spectrum-mcp-server

Find FCC-licensed sites near a point

fcc_spectrum_find_transmitters
Read-onlyIdempotent

Find FCC-licensed sites within a radius of a coordinate, nearest first, each with its callsign, licensee, distance, coordinates, filed location type and class, ground elevation, structure height, and authorized frequencies. Filter by frequency or band, radio service, location type, location class, and live status (active by default). Unset location_class keeps all filed roles, including receive and passive locations; filed classes describe authorization, not actual on-air activity. Coordinates are decimal degrees or DMS strings. Mobile and temporary-fixed operating areas are returned at their center with radiusKm and match when the center lies within radius_km. Locations without valid coordinates are omitted; market-area licenses without site records are found with fcc_spectrum_search_frequencies.

Input Schema

NameRequiredDescriptionDefault
unitNoUnit of the frequencies: kHz, MHz (default), or GHz.MHz
limitNoPositive integer sites per page; values above 100 are clamped to 100 with a notice.
cursorNonextCursor from the previous page of the same search; omit for the first page.
statusNoA active (default), L pending legal, X term pending, or "any" for all three. Other statuses keep no site records.A
latitudeYesSearch center latitude: decimal degrees (47.6205, "47.6205") or a DMS string with hemisphere ("47-37-13.8 N", "47°37'13.8"N").
longitudeYesSearch center longitude: decimal degrees (-122.3493) or a DMS string with hemisphere ("122-20-57.5 W").
radius_kmNoSearch radius in km (0.1–100).
frequency_lowNoOnly sites authorized on this frequency, in unit; with frequency_high, the band's lower edge. Matches any assignment whose occupied band overlaps.
location_typeNoOne ULS location type code, case-insensitive: "F" keeps fixed sites only, "M" mobile and "T" temporary-fixed operating areas; see fcc_spectrum_list_reference topic "location_types". Omit for every type.
radio_serviceNoTwo-character radio service code, e.g. "IG" (industrial/business pool); see fcc_spectrum_list_reference topic "radio_services".
frequency_highNoBand upper edge in unit; requires frequency_low.
location_classNoOne filed FCC location class, case-insensitive: C Centerpoint, L IQ/QQ Area of Operation Desc, P Passive Repeater Location, R Receive Location, T Transmit Location. Omit for every class; filed classes do not establish actual on-air activity.
max_frequencies_per_siteNoPositive integer frequency budget per site; values above 50 are clamped to 50 with a notice. frequencyCount carries the full count.

Output Schema

NameRequiredDescriptionDefault
capNoThe page limit applied.
errorNoPresent when the call failed. Absent on success.
shownNoSites on this page.
sitesNoFCC-licensed sites, nearest first; filed classes can include transmit, receive, and passive roles.
noticeNoWhy nothing matched and how to widen the search, or how to page further.
dataAsOfNoCreation time of the newest applied ULS file (ISO 8601).
truncatedNoTrue when more sites follow this page.
nextCursorNoPass as cursor with the same inputs for the next page; absent on the last page.
totalCountNoSites within the radius matching the filters, across every page.
searchCenterNoThe search circle as the server applied it (DMS input converted).
appliedFiltersNoFilters as the server applied them, normalized values and defaults included.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • changedInput schema / properties / limit / description
      Previous value: -"Sites per page (1–100)."New value: +"Positive integer sites per page; values above 100 are clamped to 100 with a notice."
    • changedInput schema / properties / limit / maximum
      Previous value: -100New value: +9007199254740991
    • addedInput schema / properties / location_class
      Added value: +{
      +  "description": "One filed FCC location class, case-insensitive: C Centerpoint, L IQ/QQ Area of Operation Desc, P Passive Repeater Location, R Receive Location, T Transmit Location. Omit for every class; filed classes do not establish actual on-air activity.",
      +  "enum": [
      +    "C",
      +    "L",
      +    "P",
      +    "R",
      +    "T"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / max_frequencies_per_site / description
      Previous value: -"Most frequencies listed per site (1–50); frequencyCount carries the full count."New value: +"Positive integer frequency budget per site; values above 50 are clamped to 50 with a notice. frequencyCount carries the full count."
    • changedInput schema / properties / max_frequencies_per_site / maximum
      Previous value: -50New value: +9007199254740991
    • addedOutput schema / properties / appliedFilters / properties / location_class
      Added value: +{
      +  "description": "Filed location class filter.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / sites / description
      Previous value: -"Transmitter sites, nearest first."New value: +"FCC-licensed sites, nearest first; filed classes can include transmit, receive, and passive roles."
    • changedOutput schema / properties / sites / items / description
      Previous value: -"One transmitter site."New value: +"One FCC-licensed site with its filed location role."
    • changedOutput schema / properties / sites / items / properties / frequencies / items / properties / stationClasses / description
      Previous value: -"Distinct station classes filed for this frequency across antennas and modulation steps."New value: +"Distinct station classes filed for this frequency across antennas and modulation steps; decode each with fcc_spectrum_list_reference, topic \"station_classes\", filter set to the code. Unknown filed codes remain unchanged."
    • addedOutput schema / properties / sites / items / properties / locationClassCode
      Added value: +{
      +  "description": "Filed FCC location class: C centerpoint, L area description, P passive repeater, R receive, T transmit; absent when not filed.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / sites / items / properties / locationClassLabel
      Added value: +{
      +  "description": "FCC label of the filed class; absent for an unknown code. Authorization metadata does not establish actual on-air activity.",
      +  "type": "string"
      +}
  2. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations cover the safe-read profile, but the description adds substantial behavioral detail beyond them: clamping notices for limit/frequency budget, mobile/temporary areas matched at center with radiusKm, omission of sites without valid coordinates, and the crucial caveat that filed classes describe authorization rather than on-air activity.

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

Conciseness4/5

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

Dense but front-loaded, leading with purpose and returned fields before the filter and edge-case caveats. Every sentence carries semantics, with only mild redundancy in re-listing returned fields already covered by the output schema.

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

Completeness4/5

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

For a 13-parameter geo search with an output schema present, the description is complete on filtering semantics and edge cases without needing to explain return values. Enumerating returned fields is slightly redundant given the output schema, but nothing an agent needs to call correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds interpretive value: it clarifies that unset location_class retains all filed roles including receive/passive, and that coordinates accept decimal or DMS forms. These go beyond restating the schema.

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

Purpose5/5

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

States a specific verb and resource ('Find FCC-licensed sites within a radius of a coordinate') plus ordering ('nearest first') and the returned fields. It clearly distinguishes itself from siblings by routing market-area licenses to fcc_spectrum_search_frequencies.

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

Usage Guidelines4/5

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

Provides clear context (radius search, active-by-default, filterable dimensions) and explicitly redirects to a sibling for market-area licenses lacking site records. It does not state when to prefer this over fcc_spectrum_search_licenses, so it stops short of full when/when-not guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.