Space Satellite Filings (FCC satellite licensing docket) API v1
Generated from
core.contract.describe_space_satellite_filings_v1()and checked fixture-backed examples. Do not hand-edit the example JSON files.
Capability
- Capability:
space.satellite_filings - Primitive:
query_space_satellite_filings_v1 - Status:
available - Current source:
space.fcc.ibfs_sat - Source publisher: Federal Communications Commission
- Snapshot behavior:
as_of = latestresolves to an exact snapshot date in every response.
What It Can Answer
- Every FCC space-station filing on record back to the 1960s — applicant, application type, status, lifecycle dates — cited to the exact record in the FCC's own daily dump.
- The licensing trail of any satellite operator or system (e.g. every SpaceX or Intelsat filing), with the FCC's own description text.
- Where each filing stands (the FCC's verbatim status vocabulary with its own decode), updated daily for filings in the docket.
- Filing counts by applicant, type, status, applicant state, or period — the satellite-buildout pipeline signal (new-filing intake ends at the FCC's ICFS cutover, ~mid-2025 — engraved).
- Row-level detail records when
include_recordsis true. - Raw FCC record evidence for any returned row-level citation.
Represented Facts
The FCC's IBFS daily bulk database dump records every space-station (SAT-subsystem) filing in the FCC satellite licensing docket back to the 1960s — file number, call sign, application type and status in the FCC's own vocabulary (verbatim codes plus the FCC's own decode text from the same dump vintage), the full lifecycle date family, the FCC's plain-English description, and the applicant identity joined by the source's own address_key — served as-reported and cited to the exact recordNew-filing intake into IBFS structurally ended at the FCC's ICFS system cutover (~mid-2025; measured: zero 2026-filed records while 2026-dated status actions continue daily), and ICFS publishes no bulk data — so filings submitted after the cutover are not in this source (PD-064, engraved as a refusal)
Data Point Contract
- Data point:
space.satellite_filings - Product spec:
blocks/space_satellite_filings/card.md - Grain:
filing - Source basis:
space.fcc.ibfs_sat - Represented fact: The FCC satellite licensing docket — every space-station (SAT-subsystem) filing in the FCC's International Bureau Filing System, served as-reported from the FCC's own daily bulk database dump, one record per filing. Each filing carries the FCC's public filing key (
file_number, e.g. SATLOA2025061800149), the call sign, the application type and status in the FCC's OWN vocabulary (verbatim codes plus the FCC's own decode text from the code tables inside the SAME dump vintage — never re-labeled), the full lifecycle date family (filed / grant / deny / dismiss / surrender / begin / expire / last-update / status-date), the FCC's plain-English filing description, and the applicant identity joined by the source's own address_key (name, DBA, city, state, zip, country — the APPLICANT's mailing address, labeled as such; satellites are not in states). The docket reaches back to the 1960s in every capture, and status/action updates on existing filings continue to flow daily. THE ENGRAVED BOUNDARY (PD-064): new-filing intake into IBFS structurally ENDED at the FCC's ICFS system cutover (~mid-2025; measured: zero 2026 filings while 2026-dated status actions continue) and the successor ICFS system publishes no bulk artifact — so filings SUBMITTED after the cutover are not in this source. That truncation is a property of the source, stated here and in the tool copy, never papered over. One authorization can cover thousands of satellites (NGSO systems); filings are filings, never a satellite count, never an orbital catalog, never launch activity. The event period is date_filed; on the one observed source-typo row (a year-4017 date_filed) it falls back to the FCC's receipt-date stamp embedded in the file number itself, with the provenance labeled (report_period_source). History accrues forward from daily captures (the FCC keeps no public per-vintage archive).
Does not answer:
filings SUBMITTED to the FCC after the ICFS cutover (~mid-2025) — the FCC moved new-filing intake to ICFS, which publishes no bulk data; this source's new-filing intake structurally ends there (status updates on existing filings continue daily) — PD-064satellites in orbit or an orbital catalog (Space-Track is non-redistributable and refused; a filing is an authorization event, not a spacecraft)launch activity or launch counts (the FAA surface is its own planned block)a satellite count (one NGSO authorization can cover thousands of satellites; filings are never a proxy for fleet size)the satellite's location (state/city are the APPLICANT's mailing address, labeled applicant_*; satellites are not in states)earth-station (SES), telecom-carrier (ITC/214), or any non-SAT IBFS docket — out of scope for this blockfrequency assignments / technical spectrum parameters (the dump's engineering tables are not served in v1)whether a granted system is built, launched, or operating
REST Surface
GET /v1/healthGET /v1/capabilitiesGET /v1/space/satellite-filings/schemaPOST /v1/space/satellite-filings/queryPOST /v1/evidence/source-row
MCP Surface
list_capabilities_v1describe_space_satellite_filings_v1query_space_satellite_filings_v1get_source_evidence_v1
Local MCP Setup
Some MCP clients launch servers from the user's home directory or ignore a configured cwd. Use uv run --directory so the server always starts from the repository project.
{
"command": "uv",
"args": [
"run",
"--directory",
"/absolute/path/to/OSINT",
"python",
"-m",
"core.mcp_server"
]
}
Leave EXASCALE_PARQUET_BASE / EXASCALE_RAW_BASE unset: the one server hosts every data point's tools, and with no override it resolves each block's promoted snapshots and raw archive from the repository layout. Setting either env var points ALL tools at one directory — a per-block path breaks every other block's tools. They exist only for single-source sandboxes and tests.
Request Schema
Filters:
as_offile_numbercallsignstatus_codeapp_type_codestateapplicant_nameapplicant_countryreport_perioddate_grantdate_expire
Input field semantics:
| Field | Answer Label | Source Field | Semantics | Definition | Counting Definition |
|---|---|---|---|---|---|
report_period_source |
event-period provenance | report_period_source |
pd064_event_period_provenance | 'date_filed' for every filing whose date_filed cell parses; 'file_number' on the one observed source-typo row (a year-4017 date_filed), where the event period comes from the FCC's receipt-date stamp embedded in the file number itself (PD-064). Served on DETAIL records. | A provenance label, not a number — it qualifies report_period; never aggregated. |
applicant_state |
applicant address state | applicant_state |
fcc_ibfs_address_state_verbatim | The APPLICANT's mailing address state as the FCC recorded it — never the satellite's location (satellites are not in states). The canonical state anchor carries the USPS-validated value; blanks (the FCC's shape for foreign applicants) are null. |
An address label, not a number; group by state for the validated anchor. |
description |
FCC filing description | description |
fcc_ibfs_filing_description_verbatim | The FCC's own plain-English description of the filing, verbatim (e.g. the mission or request text the applicant filed). Served on DETAIL records. | Free text, never aggregated. |
Group by:
status_codeapp_type_codestateapplicant_nameapplicant_country
Date range parameters:
report_period_fromreport_period_todate_grant_fromdate_grant_todate_expire_fromdate_expire_to
Controls:
include_recordsinclude_evidencelimitorder_bytop_norderrollup_other
Ranking (how order_by / top_n / order join — order_by ranks groups by a metric, never a group_by dimension; top_n needs both a group_by and an order_by):
{
"no_ranking": "Omit order_by and top_n to return all groups in group-key order.",
"order": {
"default": "desc",
"valid_values": [
"desc",
"asc"
]
},
"order_by": {
"accepts": "one of output.metrics",
"note": "Ranks the groups by a metric (a measure). Not a group_by dimension \u2014 rows already come back grouped by each group_by field.",
"requires": [
"group_by"
],
"valid_values": [
"source_record_count"
]
},
"top_n": {
"note": "Keeps the top N groups by order_by; the rest fold into one (other) remainder (additive metrics sum into it, non-additive ones are nulled) so the result still reconciles to summary.totals.",
"requires": [
"group_by",
"order_by"
],
"type": "positive integer"
}
}
Output Schema
Aggregate metrics:
source_record_count
Metric groups:
{
"records": [
"source_record_count"
]
}
Response summary fields:
group_counttotals
Accepted fact policy:
- Query responses contain accepted, gate-passed facts only.
- Gate, monitor, and audit quality signals are internal controls, not agent-facing answer caveats.
- If a source snapshot is not fit to serve, the source must fail closed before it reaches this API.
Metric metadata:
| Metric | Category | Unit | Aggregation | Additive Across Groups | Authoritative Total | Definition |
|---|---|---|---|---|---|---|
source_record_count |
records | count | count source records | true | summary.totals.source_record_count |
Count of FCC space-station (SAT) docket filings in the current result scope. A filing is an authorization EVENT — never a satellite count (one NGSO grant can cover thousands of satellites). |
Rollup rules:
summary.totals.<metric>is the authoritative total for the full matched query.- Grouped row metrics may be summed only when
additive_across_groupsistrue.
Detail record fields returned when include_records is true:
source_idfile_numbersource_record_keyfiling_keycallsignsubsystem_codestatus_codestatus_textlast_action_codeapp_type_codeapp_type_textdescriptionaddress_key_rawapplicant_nameapplicant_dba_nameapplicant_cityapplicant_stateapplicant_zipapplicant_countrystatereport_period_sourceapplicant_unresolvedstatus_datelast_action_datedate_fileddate_grantdate_denydate_dismissdate_surrenderdate_begindate_expiredate_last_updatereport_periodsource_row_numberas_ofraw_file_sha256citation
Row-level citation fields:
source_idsource_urlsource_filesheetsource_rowfile_numberraw_file_sha256as_of
Aggregate citation fields:
source_idpublishersource_urlsource_fileraw_file_sha256as_ofsource_rows_countsource_rows_sampleverifylineage_filter
Codebooks
| Field | Coverage | Codes | Examples | Note |
|---|---|---|---|---|
app_type_code |
every SAT application type the FCC defines | 12 | LOA = Launch and Operating Authority, STA = Special Temporary Authority, MOD = Modification, AMD = Amendment, T/C = Transfer of Control |
Verbatim FCC codes; the served app_type_text is the FCC's own decode from the same capture vintage. LOA (Launch and Operating Authority) is a new satellite system's operating application; STA is temporary authority; MOD modifies a grant. |
status_code |
the FCC's full filing-status vocabulary | 8 | ATPN = Action Taken Public Notice, A/C = Action Complete, AFPN = Accepted for Filing Public Notice, UNBLK = Unblocked, FPRVD = Filed - payment received |
Verbatim FCC codes; the served status_text is the FCC's own decode from the same capture vintage. The dominant terminal statuses on the SAT docket are A/C (Action Complete) and ATPN (Action Taken Public Notice); AFPN (Accepted for Filing Public Notice) marks a filing in process. |
The complete machine-readable codebooks are included in capability-schema.json.
Checked Examples
| Agent question | Request params | Checked output |
|---|---|---|
| What is one operator's FCC satellite filing mix (new systems, modifications, temporary authorities)? | {"applicant_name": "Space Exploration Holdings, LLC", "group_by": ["app_type_code"]} |
satellite-filings-by-applicant.json |
| Who filed the most FCC space-station applications since 2020? | {"group_by": ["applicant_name"], "order_by": "source_record_count", "report_period_from": "2020-01-01", "top_n": 10} |
most-active-satellite-filers.json |
| Show a specific FCC satellite filing with its full record and citation. | {"file_number": "SATLOA2025061800149", "include_records": true, "limit": 1} |
satellite-filings-detail-with-citation.json |
| Verify the raw workbook row behind a returned citation | citations[ref].verify (aggregate) or records[0].citation (detail) |
source-row-evidence.json |
| Dogfood the tool sequence as an agent | list -> describe -> query -> evidence |
agent-dogfood-transcript.json |
The checked schema output is capability-schema.json.
Agent Workflow
- Call
list_capabilities_v1and selectspace.satellite_filings. - Call
describe_space_satellite_filings_v1to inspect valid filters, groupings, metrics, and citation fields. - Call
query_space_satellite_filings_v1with bounded JSON params. - If the answer needs proof, pass a returned row-level
citationobject toget_source_evidence_v1. - Answer with the resolved
as_ofand relevant citations. Present returned metrics as authoritative for their declared source, snapshot, grain, and aggregation.