Skip to main content
Glama

fcc-spectrum-mcp-server

Get an FCC ULS license

fcc_spectrum_get_license
Read-onlyIdempotent

Fetch one FCC ULS license or spectrum lease in full by callsign or unique system identifier (USI): licensee (the lessee on a lease), status and key dates, its locations with coordinates, elevation, structure height, and ASR number, each location's antennas, and each antenna's authorized frequencies with power, ERP/EIRP, station class, transmitter, and emission designators; geographic-area licenses list their market and spectrum blocks, and lease links are shown in both directions. Large records are paged: one call lists whole locations up to 50 sites and 100 antennas, up to max_frequencies frequency rows, and 100 leases, and names the location_offset or lease_offset that reads the rest; location_number starts the locations at a location number the search tools return. Technical detail is kept for active, pending-legal, and term-pending records only. A callsign shared by several records returns the active one, else the most recent.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
usiNoUnique system identifier, as digits: the usi field of fcc_spectrum_search_licenses, fcc_spectrum_find_transmitters, or fcc_spectrum_search_frequencies results. Pass this or callsign, not both.
callsignNoCallsign or lease ID, e.g. "KNKA123" or "L000012345". Case, spaces, and one trailing portable suffix ("/4") are normalized. Pass this or usi, not both.
lease_offsetNoLease to start at, counted from 0 in lease-ID order; pass nextLeaseOffset from the previous call to read the next 100.
location_numberNoLocation number to start at: the locationNumber of a fcc_spectrum_find_transmitters or fcc_spectrum_search_frequencies result. A number the record does not file starts at the next one it does. Pass this or a nonzero location_offset, not both; page on with nextLocationOffset.
location_offsetNoLocation to start at, counted from 0 in location-number order; pass nextLocationOffset from the previous call to read the next locations. To start at a location number instead, pass location_number.
max_frequenciesNoMost frequency rows to return across the locations this call lists (1–1000); rows beyond it are dropped from the last locations first. Large microwave and land-mobile licenses exceed the default.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
capNoThe max_frequencies cap applied.
errorNoPresent when the call failed. Absent on success.
foundNoTrue when a record matched; false returns guidance and candidates instead.
shownNoFrequency rows returned.
noticeNoWhat this call left out and the call that reads it, where an unfiled location_number started the locations, or why an offset or location number listed nothing.
licenseNoThe record; present when found is true.
dataAsOfNoCreation time of the newest applied ULS file (ISO 8601).
guidanceNoWhy nothing matched and where to look next; present when found is false.
locationsNoLocations with antennas and frequency rows, one entry per location number (a number filed at several sites lists them in sites): whole locations from location_offset or location_number up to 50 sites and 100 antennas, or one larger location alone; present when found is true.
siteTotalNoSites the record files, each site of a shared location number counted; present when found is true.
truncatedNoTrue when this call leaves part of the record out: locations after the ones listed, frequency rows beyond max_frequencies, or leases after the ones listed.
candidatesNoUp to 5 records whose callsign starts with the one requested; present when a callsign lookup found nothing.
locationTotalNoLocation numbers the record files; present when found is true.
nextLeaseOffsetNoPass as lease_offset to read the leases after these; absent when none follow.
technicalRetainedNoFalse when the status is not A, L, or X (active, pending legal, term pending): sites and frequencies are kept only for those, so locations is empty.
nextLocationOffsetNoPass as location_offset to read the locations after these; absent when none follow.
otherCallsignRecordsNoOther records under the same callsign (ULS reuses callsigns); present when found is true.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior5/5

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

With annotations already covering the read-only/idempotent safety profile, the description adds substantial behavioral context beyond them: paging caps (50 locations, 100 antennas, max_frequencies rows, 100 leases), the nextLocationOffset/nextLeaseOffset paging protocol, truncation order ("rows beyond it are dropped from the last locations first"), the dedup rule for callsigns shared by several records, and the filter that technical detail is kept only for active, pending-legal, and term-pending records.

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?

Purpose and scope are front-loaded, and the dense later clauses about paging, detail retention, and dedup all carry information an agent needs. It is a single long semicolon-chained passage rather than cleanly separated sections, which slightly hurts scannability.

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?

An output schema exists, so return values need no explanation, yet the description still tells the agent what record types exist (geographic-area licenses with market/spectrum blocks, lease links in both directions) and how to page large records. Nothing needed to call this correctly appears to be 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 description coverage is 100%, so the schema already documents all six parameters with patterns, defaults, and constraints; that sets the baseline at 3. The description reinforces the meaning of the offsets and max_frequencies but adds little semantic detail the schema does not already carry.

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?

The description opens with a specific verb and resource ("Fetch one FCC ULS license or spectrum lease in full") and enumerates the returned structure down to antenna emission designators, so an agent knows exactly what this tool produces. It also names the two lookup keys (callsign, USI) that separate it from the search siblings.

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?

Usage context is implied clearly: usi values come from fcc_spectrum_search_licenses / find_transmitters / search_frequencies, and location_number comes from find_transmitters or search_frequencies results, which routes the agent to use this after searching. There is no explicit when-not statement or direct contrast with fcc_spectrum_search_licenses beyond this sourcing of arguments.

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.