Skip to main content
Glama

fcc-spectrum-mcp-server

Search FCC ULS licenses

fcc_spectrum_search_licenses
Read-onlyIdempotent

Search FCC ULS licenses and spectrum leases by callsign, licensee name, FCC Registration Number (FRN), market code, radio service, status, and licensee state, returning one row per record with its unique system identifier (USI) for fcc_spectrum_get_license. At least one of callsign, licensee, frn, market_code, radio_service, or state is required; status only narrows. Defaults to active records; pass status "any" to include expired, cancelled, and terminated ones. Licensee name matching is word-based (every word must appear as a word prefix), not fuzzy.

Input Schema

NameRequiredDescriptionDefault
frnNoFCC Registration Number, up to 10 digits; spaces and hyphens are removed and it is left-padded with zeros.
limitNoPositive integer records per page; values above 100 are clamped to 100 with a notice.
stateNoLicensee mailing state: a two-letter USPS code (incl. DC, PR, VI, GU, AS, MP) or a full state name. This is the licensee's address, not the site location.
cursorNonextCursor from the previous page of the same search; omit for the first page.
statusNoLicense status: A active, L pending legal, X term pending, E expired, C canceled, T terminated, P parent station canceled, or "any" for every status. Defaults to A.A
callsignNoExact callsign or lease ID, e.g. "KNKA123" or "L000012345". Case, spaces, and one trailing portable suffix ("/4") are normalized. ULS reuses callsigns, so several records can match.
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 (e.g. "verizon wireless"). A word joined by - or & ("T-Mobile", "AT&T") matches its pieces side by side.
market_codeNoMarket code of a geographic-area license, matched exactly, e.g. "PEA016", "CMA020", "D06037", or "NW" (nationwide); results carry it as marketCode. Case, spaces, and hyphens are ignored, and the digits are left-padded with zeros ("pea16" reads as PEA016).
radio_serviceNoTwo-character radio service code, e.g. "CD" (paging) or "BR" (BRS); see fcc_spectrum_list_reference topic "radio_services".

Output Schema

NameRequiredDescriptionDefault
capNoThe page limit applied.
errorNoPresent when the call failed. Absent on success.
shownNoRecords on this page.
noticeNoWhy nothing matched, what redaction excluded, or how to page further.
dataAsOfNoCreation time of the newest applied ULS file (ISO 8601).
licensesNoMatching records, ranked by name-match relevance when licensee is given and in callsign order otherwise.
truncatedNoTrue when more records follow this page.
nextCursorNoPass as cursor with the same filters for the next page; absent on the last page.
totalCountNoRecords matching the filters, across every page.
appliedFiltersNoFilters as the server applied them, normalized values and defaults included.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / limit / description
      Previous value: -"Records per page (1–100)."New value: +"Positive integer records per page; values above 100 are clamped to 100 with a notice."
    • changedInput schema / properties / limit / maximum
      Previous value: -100New value: +9007199254740991
  2. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Adds non-obvious behavior well beyond the readOnly/idempotent annotations: default filtering to active records, that status "any" is needed to see expired/cancelled/terminated ones, that results are one row per record, and that licensee matching is word-prefix based rather than fuzzy. These are exactly the traits an agent would otherwise get wrong on the first call.

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

Conciseness5/5

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

Three dense sentences with zero filler: search scope first, the required-term constraint second, then defaults and matching semantics. Every clause carries operational information and the most important constraint is front-loaded.

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

Completeness5/5

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

For a 9-parameter search tool with an output schema and read-only annotations, the description covers what the structured fields cannot: the required-term rule, default status filtering, and name-matching algorithm. Pagination and value formats are fully handled by the schema, so nothing consequential 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 description coverage is 100%, so the baseline is 3, and the description adds a genuine semantic that the schema does not encode: the at-least-one-search-term requirement. It also reinforces status-narrowing and the non-fuzzy licensee semantics, though per-field syntax details remain the schema's job.

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 (search) and resource (FCC ULS licenses and spectrum leases), enumerates the searchable fields, and describes the return shape (one row per record with its USI). It also names the sibling fcc_spectrum_get_license as the consumer of the returned USI, so an agent can distinguish it from search_frequencies and find_transmitters.

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?

Gives a hard usage constraint that isn't in the schema (at least one of callsign/licensee/frn/market_code/radio_service/state is required, status only narrows) plus the default-status behavior and the "any" escape hatch. It routes to fcc_spectrum_get_license but never explicitly contrasts itself with the other search siblings, so it stops short of full when-not/alternative coverage.

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.