orbit-sentinel-mcp
An MCP server exposing Orbit Sentinel's 950K+ space regulatory filings (FCC, ITU, UNOOSA, FAA-AST) plus linked satellite, spectrum, financial, and compliance data through 20 read-only tools.
Research & search:
researchruns parallel filing/entity/semantic search;search_filingsfilters by keyword, agency, type, status, date, or file number;search_semanticdoes meaning-based vector search.Filing analytics:
get_filing_detail(spectrum, orbital params, ground stations, attachments, policy arguments),get_filing_distribution,get_filing_trends(growth, top movers),get_top_filers, andsearch_positionsfor who supported/opposed what in dockets.Entities:
search_entities(fuzzy name/type/country),get_entity_profile(filing history, co-filers, linked satellites),get_entity_dossier(cross-source rollup incl. corporate family/subsidiaries).Satellites & launches:
search_satellites(UCS + Space-Track SATCAT by name, NORAD, orbit, status),get_launch_history(FAA/GCAT vehicle, site, outcome).Spectrum & ground segment:
search_spectrum(who holds a frequency band),search_ground_stations(earth stations by band, state, operator, or proximity),search_space_station_authorizations(FCC SSAL, U.S. market access).Financial & compliance:
get_bond_portfolio(FCC surety bonds vs. computed 25.165 liability),milestone_adherence(47 CFR 25.164 deployment grading),search_sec_filings,search_federal_awards(USAspending),search_screening(OFAC/BIS/ITAR sanctions hits).Operations:
get_system_statusfor database, pipeline queue, and crawl health.
Provides access to extracted space regulatory filings from the FCC, enabling search and retrieval of filings related to satellite and spectrum matters.
Orbit Sentinel MCP Server
MCP (Model Context Protocol) server for Orbit Sentinel — 950K+ space regulatory filings from FCC, ITU, UNOOSA, and FAA-AST, queryable from Claude Desktop, Claude Code, Cursor, or any MCP client.
An API key is required. Beta access: https://console.viventine.com.
The server is a thin, open-source (MIT) client of the public REST API — nine Go files, easy to audit before you run it. Run it locally over stdio, or skip the install entirely and point your client at the hosted remote endpoint (below).
Install
Remote (no install)
The lowest-friction path — no binary, no updates. Point any HTTP-capable MCP client at:
https://orbit-sentinel.viventine.com/mcpTransport is Streamable HTTP (stateless). Two ways to authenticate:
OAuth (recommended) — sign in with your Viventine account in the browser; no key to copy or store. In Claude Code:
claude mcp add --transport http orbit-sentinel https://orbit-sentinel.viventine.com/mcpThen run /mcp -> orbit-sentinel -> authenticate. A browser opens for sign-in
and consent; Claude Code stores the token and refreshes it automatically. The
same works as a custom connector in claude.ai / Claude Desktop (Settings ->
Connectors -> Add custom connector -> paste the URL -> sign in).
API key — if you'd rather use a static key (or your client can't do OAuth), pass your console key as a bearer token:
claude mcp add --transport http orbit-sentinel \
https://orbit-sentinel.viventine.com/mcp \
--header "Authorization: Bearer <your-key>"Get a key / beta access at https://console.viventine.com.
Generic MCP clients — any Streamable HTTP client works via OAuth 2.1
(RFC 9728 protected-resource discovery) or an Authorization: Bearer <key>
header. Requests sending Python's default urllib User-Agent (Python-urllib/x.y)
are blocked at our edge with HTTP 403; set your own User-Agent, or use requests
or httpx. An unauthenticated tools/call answers
HTTP 401 with a WWW-Authenticate header pointing at the protected-resource
metadata, which is how OAuth-capable clients discover the flow; initialize
and tools/list stay open. For a stdio-only client, bridge with
npx mcp-remote https://orbit-sentinel.viventine.com/mcp.
Claude Desktop (one-click)
Download orbit-sentinel-mcp.mcpb and double-click it — Claude Desktop installs the extension and prompts for your API key. Bundles macOS (universal), Linux, and Windows binaries.
Homebrew (macOS — recommended)
brew install --cask viventine-space/tap/orbit-sentinel-mcpInstalls to $(brew --prefix)/bin/orbit-sentinel-mcp, handles the quarantine
flag for you, and upgrades with brew upgrade.
Manual download
Download the archive for your platform from the latest release, then:
tar -xzf orbit-sentinel-mcp_*.tar.gz
mkdir -p ~/bin && mv orbit-sentinel-mcp ~/bin/macOS only — the binary is not notarized yet, so clear the quarantine flag once:
xattr -d com.apple.quarantine ~/bin/orbit-sentinel-mcpWindows: unzip and note the full path to orbit-sentinel-mcp.exe.
Build from source
go install github.com/viventine-space/orbit-sentinel-mcp@latestRelated MCP server: N2YO Satellite Tracker MCP Server
Configure
The server reads two environment variables:
Variable | Purpose |
| Orbit Sentinel API base URL ( |
| Your API key from the console |
Claude Desktop — add to ~/Library/Application Support/Claude/claude_desktop_config.json
(Windows: %APPDATA%\Claude\claude_desktop_config.json), using the absolute
path to the binary (~ is not expanded):
{
"mcpServers": {
"orbit-sentinel": {
"command": "/absolute/path/to/orbit-sentinel-mcp",
"env": {
"MCP_API_URL": "https://orbit-sentinel.viventine.com",
"MCP_API_KEY": "<your-key>"
}
}
}
}Claude Code — one command:
claude mcp add orbit-sentinel \
--env MCP_API_URL=https://orbit-sentinel.viventine.com \
--env MCP_API_KEY=<your-key> \
-- ~/bin/orbit-sentinel-mcpRestart your client; the Orbit Sentinel tools (research, search_filings,
get_entity_profile, …) appear in the tools menu.
Releasing (maintainers)
Tag and push — GitHub Actions builds and publishes all platforms:
git tag v0.x.y && git push origin v0.x.yAsset names are version-stable (orbit-sentinel-mcp_<os>_<arch>.tar.gz), so
releases/latest/download/... URLs always serve the newest build.
The Claude Desktop bundle (orbit-sentinel-mcp.mcpb) is packed and uploaded
by the release workflow — the manifest template lives at mcpb/manifest.json
(its version is stamped from the tag at pack time).
Then repeat the Glama release
— it does not auto-update from GitHub, and it gates the quality score on the
badge above. On the Dockerfile admin page,
the saved build spec should carry over (build steps install Go and go build;
placeholder parameters need a dummy MCP_API_KEY to satisfy the env schema) —
click Build, then Make Release with the new version. Manual for now;
consider Glama API integration next release cycle.
Available Tools
22 toolsget_bond_portfolioARead-only
Get FCC surety bond portfolio for satellite operators. Two distinct figures per operator: the POSTED bond, which is an amount an FCC document states and is absent for most authorizations, and the COMPUTED 47 CFR 25.165 liability, which is Orbit Sentinel's own arithmetic and is not a bond anyone has posted. Never report a computed figure as an operator's actual bond, and read 'not documented' as unknown rather than zero. Also returns summary statistics and FAA financial responsibility data. Use for questions about satellite operator financial obligations, bond compliance, or TPL coverage.
Inputs: page, operator, per_page, entity_id, +1 more.
get_entity_dossierARead-only
Get a cross-source dossier for an entity (by UUID): regulatory filings, SEC financial signals, sanctions/export-control screening hits, and asset footprint (satellites, ground stations, federal awards, surety bonds) — counts plus recent samples in one call. The most complete single view of an operator. Set include_family=true to roll the totals up across the entity's corporate family.
Inputs: id (required), include_family, family_confidence, include_subsidiaries.
get_entity_profileBRead-only
Get a detailed entity profile including filing history by agency, related entities (co-filers), linked satellites, and cross-references.
Inputs: id (required), filed_after, filed_before.
get_filing_detailARead-only
Get full details of a specific regulatory filing, by UUID or agency file number, including spectrum data, orbital parameters, ground stations, signals, related filings, attachments, and (for policy filings) executive summary, overall stance, and structured arguments.
Inputs: id (required).
get_filing_distributionARead-only
Get filing count distribution by filing type. Filter by agency and date range. Use for questions about what types of filings are most common.
Inputs: agency, entity_type, filed_after, filed_before.
get_filing_trendsARead-only
Get filing volume trends over time periods with optional top movers (entities with biggest changes). Use for questions about growth, trends, emerging players, or year-over-year comparisons.
Inputs: agency, periods, entity_id, top_movers, +2 more.
get_launch_historyARead-only
Get launch history for a space entity. Returns launches from the FAA/GCAT database including vehicle type, launch site, outcome, and date. Requires entity_id.
Inputs: entity_id (required), limit, vehicle.
get_system_statusARead-only
Get system health status including database connectivity, pipeline queue depth, and per-source crawl health.
get_top_filersARead-only
Get the top filing entities ranked by number of filings. Filter by agency and date range. Use for questions about who files the most, biggest players, or filing rankings.
Inputs: limit, agency, entity_type, filed_after, +1 more.
milestone_adherenceARead-only
FCC deployment milestone adherence (47 CFR 25.164): which authorized satellite systems met their deployment milestones. Grading is deliberately asymmetric — an adverse grade must be earned, a favourable grade must be labelled. 'missed' and 'met_late' appear only where a human verified a cited FCC document; otherwise the row reads 'verification_required', which asserts nothing about the operator and must not be reported as a miss. Favourable grades are never withheld, so read verification_status: 'arithmetic_corroborated' means the deployment counts independently agree — a computation, not a person, did the corroborating — and 'uncorroborated' means the arithmetic is SILENT, not that it disagrees; no favourable grade is currently contradicted by the data. computed_grade always carries the raw arithmetic even where classification withholds it. Filter by call_sign, classification, is_ngso; set summary=true for aggregate counts, which include withheld_adverse and uncorroborated_favourable.
Inputs: limit, is_ngso, summary, call_sign, +1 more.
researchARead-only
Primary research tool — searches filings, entities, and semantic index in parallel. Use this FIRST for any question. Pass the agency parameter for agency-specific questions (e.g., agency="FCC" for FCC questions).
Inputs: question (required), focus, agency.
search_entitiesBRead-only
Search regulatory entities (companies, operators, manufacturers, governments) by name, type, or country. Supports fuzzy name matching.
Inputs: q, page, type, country, +1 more.
search_federal_awardsARead-only
Search U.S. federal awards (USAspending contracts + IDVs) by recipient, agency, award type, NAICS, or minimum amount, joined to the resolved recipient entity. Ordered by award amount (largest first). Use for 'NASA contracts to Boeing over $1B' or an operator's federal funding footprint.
Inputs: limit, naics, since, agency, +4 more.
search_filingsBRead-only
Search space regulatory filings by keyword, agency, type, status, date range, agency file number (exact or prefix such as SES-LIC), FCC station call sign or applicant entity. Returns a paginated list of filings from FCC, ITU, UNOOSA, and other agencies.
Inputs: q, page, type, agency, +13 more.
search_ground_stationsARead-only
Search ground / earth stations by name, frequency band, operator, entity, U.S. state, or geographic proximity (near='lat,lon' within radius_km, ordered by great-circle distance). Defaults to the FCC IBFS earth-station archive (one row per call sign, through 2025-06-17); source=acma|ised|ofcom reads a national register, source=extracted the stations extracted from filings. Each result is labeled with its source. group_by=state|operator returns call-sign counts per bucket (other sources: group_by=operator, station counts). Use for 'earth stations within 200km of 38.9,-77.0', 'how many V-band earth stations per state', or an operator's gateway footprint.
Inputs: band, name, near, limit, +12 more.
search_positionsARead-only
Search LLM-extracted policy arguments across COMMENT / REPLY / PETITION filings. Filter by docket, overall stance, argument type, target party, filer, or filing date. Use this to answer questions like 'who opposed X?', 'what did SpaceX argue in 25-306?', 'which filings support modular satellite licensing?'. Returns one row per (filing, argument).
Inputs: q, filer, limit, docket, +6 more.
search_satellitesARead-only
Search the satellite catalog (UCS + Space-Track SATCAT) by name, operator, country, orbit class, status, object type, launch or decay date range, COSPAR, or NORAD id. Joined to the resolved operator entity. Every response includes total, the full number of matching objects (rows are capped at 500 per call; page with offset), so answer counting questions from total — set count_only=true to skip the rows. Combine filters in one call instead of splitting the search, e.g. a constellation's payloads launched in a given year: name=, object_type=payload, launched_after=-01-01, launched_before=-12-31, count_only=true. Use for counting a fleet or a segment, 'what does SpaceX have in LEO?', 'find NORAD 44713', or building an operator's fleet.
Inputs: name, sort, limit, norad, +13 more.
search_screeningARead-only
Check entities against consolidated sanctions / export-control screening lists (OFAC SDN, BIS Entity List, ITAR Debarred, etc.). Filter by entity, name, list source, or minimum match similarity. Use for compliance / due-diligence questions.
Inputs: list, name, limit, entity_id, +1 more.
search_sec_filingsARead-only
Search SEC filings for tracked space companies (8-K material events, 10-Q, 10-K). Filter by ticker, CIK, company name, resolved entity, form type, or date, or fetch one filing by accession number. Use for financial signals — e.g. recent 8-Ks for a satellite operator.
Inputs: cik, limit, since, until, +6 more.
search_semanticARead-only
Semantic vector search across filing text using natural language. Uses nomic-embed-text-v1.5 embeddings to find filings by meaning, not just keywords. Note: FCC filings have limited embedding coverage — use search_filings for FCC keyword search.
Inputs: query (required), limit, agency, filed_after, +2 more.
search_space_station_authorizationsARead-only
Search the FCC Approved Space Station List (SSAL): U.S.-licensed space stations and foreign-licensed ones approved for U.S. market access, by operator, system, licensing administration, call sign, entity, orbit type (is_ngso), foreign licensing (foreign) and grant (granted). Each row carries us_market_access (granted and foreign). Every response includes total, the full match count; set count_only=true to skip the rows. Use for 'how many foreign NGSO systems have U.S. market access?' (is_ngso=true, foreign=true, granted=true, count_only=true) or 'is Telesat's system on the SSAL?'.
Inputs: limit, system, foreign, granted, +6 more.
search_spectrumARead-only
Find which entities hold a frequency band. Given a range in MHz, returns spectrum allocations overlapping it, joined to the source filing and applicant — e.g. 'who is allocated 11700-12200 MHz downlink?'. Filter by agency, direction, polarization, or holder name.
Inputs: limit, agency, holder, direction, +3 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 22 tools
Most tools target clearly distinct resources or actions, and descriptions do a good job separating keyword filing search, semantic search, policy-argument search, satellite search, and ground-station search. The main ambiguity is between the meta `research` tool and its underlying search tools, and between `get_entity_profile` and `get_entity_dossier`, which could cause misselection without close reading.
The set is dominated by a consistent snake_case `get_*` / `search_*` verb_noun pattern. Minor deviations are `milestone_adherence`, which is a noun phrase, and `research`, which is a bare verb, but neither breaks readability.
At 22 tools this is a heavy surface, above the typical well-scoped range, though the domain is broad and most tools map to real subdomains. Some consolidation seems possible, especially around `research` vs individual searches and `get_entity_dossier` vs `get_entity_profile`.
The surface covers regulatory filings, entities, satellites, ground stations, spectrum, space-station authorizations, policy positions, SEC filings, federal awards, sanctions screening, bonds, launch history, milestone adherence, and filing analytics. For a read-only space-regulatory intelligence server, there are no obvious missing lifecycle operations.
Maintenance
Related MCP Connectors
Orbital data center & space AI compute tracker MCP: projects, launches, orbits, alerts. 100 free/day
Read-only space industry data: launches, slips, funding, companies, space weather, Moon race, jobs.
Live space data for AI agents - rocket launches, ISS passes, launch news. Free, no auth.
Digital-regulation tracking and analysis across jurisdictions; STRIDE access is required.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceSatellite Tracking MCP Server4MIT
- AlicenseBqualityDmaintenanceProvides access to satellite tracking data from N2YO, allowing users to query satellite positions, predict passes, and access TLE data through natural language requests.13MIT
- FlicenseNot gradedqualityDmaintenanceEnables satellite orbital mechanics calculations including visibility predictions, access window analysis, and TLE generation from natural language descriptions. Supports 200+ world cities and multiple orbit types (LEO, MEO, GEO, SSO, Molniya, Polar).-
- AlicenseNot gradedqualityCmaintenanceAI-powered patent search and analysis across 220M+ global patents. Semantic search, prior art discovery, novelty/patentability reports, and patent content retrieval.Apache 2.0