Skip to main content
Glama

fcc-spectrum-mcp-server

Search FCC ULS authorizations by frequency

fcc_spectrum_search_frequencies
Read-onlyIdempotent

Find FCC ULS authorizations whose occupied band overlaps a frequency or band. Site assignments (land mobile, microwave, paging, cellular sites) return one row per site and frequency with the site's state and coordinates; market-area licenses and leases (PCS, AWS, 700 MHz, 3.45 and 3.7 GHz, and other auctioned blocks) return one row per spectrum block with its market code and name; 3.5 GHz Priority Access Licenses file no frequency, so list them with fcc_spectrum_search_licenses and radio_service PL. Filter by state, radio service, licensee, FRN, market code, and live status (active by default). For transmitter sites near a coordinate, use fcc_spectrum_find_transmitters.

Input Schema

NameRequiredDescriptionDefault
frnNoLicensee's FCC Registration Number, up to 10 digits; spaces and hyphens are removed and it is left-padded with zeros. Individual licensees match and are returned redacted.
kindNosite: transmitter-site assignments only; market: market-area spectrum blocks only; both (default).both
unitNoUnit of the frequencies: kHz, MHz (default), or GHz.MHz
limitNoPositive integer rows per page; values above 200 are clamped to 200 with a notice.
stateNoTwo-letter USPS code or full state name. Sites match on their filed state, or the state derived from their coordinates. Market blocks match when their FCC market area reaches the state (a multi-state market matches each of its states), their market name carries the state code, or their license files a site there; nationwide and Gulf of Mexico markets match no state.
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 frequency records.A
licenseeNoLicensee name words, with at least one letter or digit; every word must match the start of a word in the name, in any order. A word joined by - or & ("T-Mobile", "AT&T") matches its pieces side by side.
market_codeNoMarket code of the license, matched exactly, e.g. "PEA016", "CMA020", or "NW" (nationwide); market rows carry it as marketCode. Applies to site and market rows alike, since cellular (CMA) licenses file sites rather than blocks. Case, spaces, and hyphens are ignored, and the digits are left-padded with zeros ("pea16" reads as PEA016).
frequency_lowYesFrequency in unit; with frequency_high, the band's lower edge. Matches any authorization whose occupied band overlaps.
radio_serviceNoTwo-character radio service code, e.g. "WU" (700 MHz upper band); see fcc_spectrum_list_reference topic "radio_services".
frequency_highNoBand upper edge in unit; omit to search a single frequency.

Output Schema

NameRequiredDescriptionDefault
capNoThe page limit applied.
errorNoPresent when the call failed. Absent on success.
shownNoRows on this page.
noticeNoWhy nothing matched, what the state and redaction rules skipped, or how to page further.
dataAsOfNoCreation time of the newest applied ULS file (ISO 8601).
truncatedNoTrue when more rows follow this page.
nextCursorNoPass as cursor with the same inputs for the next page; absent on the last page. A page over a dense band can hold fewer rows than limit and still carry one.
totalCountNoRows matching the filters, across every page; at least this many when totalIsLowerBound is true.
assignmentsNoMatching site assignments and market blocks, frequency ascending.
appliedFiltersNoFilters as the server applied them, normalized values and defaults included.
totalIsLowerBoundNoTrue when a dense band was counted only in part, so totalCount is a lower bound; absent when the count is exact.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / limit / description
      Previous value: -"Rows per page (1–200)."New value: +"Positive integer rows per page; values above 200 are clamped to 200 with a notice."
    • changedInput schema / properties / limit / maximum
      Previous value: -200New value: +9007199254740991
    • addedOutput schema / properties / assignments / items / properties / locationClassCode
      Added value: +{
      +  "description": "Filed FCC location class, only on a single-site assignment; absent on shared-number assignments and market rows.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / assignments / items / properties / locationClassLabel
      Added value: +{
      +  "description": "FCC label of the filed class, only when known on a single-site assignment. Authorization metadata does not establish actual on-air activity.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / assignments / items / properties / stationClasses / description
      Previous value: -"Distinct station classes filed for this frequency at the site (site rows)."New value: +"Distinct station classes filed for this frequency at the site (site rows); decode each with fcc_spectrum_list_reference, topic \"station_classes\", filter set to the code. Unknown filed codes remain unchanged."
  2. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the read-only, idempotent, non-open-world profile, but the description adds genuinely useful behavior: site assignments return one row per site+frequency with state/coordinates, market-area licenses return one row per spectrum block with market code and name, and status defaults to active while other statuses keep no frequency records. It does not discuss pagination/cursor exhaustively, but the important shape-branching semantics are disclosed.

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

Conciseness4/5

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

Front-loads the core operation in the first sentence, then layers result-shape and routing detail. It is dense and multi-clause, and the row-shape sentences partly overlap the output schema, but no sentence is filler.

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

Completeness5/5

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

With 12 parameters, an output schema, and annotations already present, the description still supplies the routing decisions, default-status behavior, and the site-vs-market row semantics an agent needs to interpret results correctly. Nothing material is missing.

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

Parameters3/5

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

Schema coverage is 100%, so every parameter is already documented in detail, including unit, kind, limit clamping, and the market_code pattern. The description's list of filter dimensions (state, radio service, licensee, FRN, market code, status) largely restates the schema, so the baseline 3 applies.

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 ULS authorizations') plus the precise matching semantics ('whose occupied band overlaps a frequency or band'). This clearly separates it from fcc_spectrum_search_licenses (license-level lookups) and fcc_spectrum_find_transmitters (site search near a coordinate).

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

Usage Guidelines5/5

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

Explicitly routes the agent: use fcc_spectrum_search_licenses with radio_service PL for 3.5 GHz PALs that file no frequency, and fcc_spectrum_find_transmitters for transmitter sites near a coordinate. It also names the filter dimensions and the default status scope, leaving little to inference.

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.