Skip to main content
Glama

Orbit Sentinel MCP Server

CI Release MCP Registry orbit-sentinel-mcp MCP server Go Reference License: MIT MCP Badge

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/mcp

Transport 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/mcp

Then 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.

brew install --cask viventine-space/tap/orbit-sentinel-mcp

Installs 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-mcp

Windows: unzip and note the full path to orbit-sentinel-mcp.exe.

Build from source

go install github.com/viventine-space/orbit-sentinel-mcp@latest

Related MCP server: N2YO Satellite Tracker MCP Server

Configure

The server reads two environment variables:

Variable

Purpose

MCP_API_URL

Orbit Sentinel API base URL (https://orbit-sentinel.viventine.com)

MCP_API_KEY

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-mcp

Restart 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.y

Asset 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 tools
get_bond_portfolioA
Read-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_dossierA
Read-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_profileB
Read-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_detailA
Read-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_distributionA
Read-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_launch_historyA
Read-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_statusA
Read-only

Get system health status including database connectivity, pipeline queue depth, and per-source crawl health.

get_top_filersA
Read-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_adherenceA
Read-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.

researchA
Read-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_entitiesB
Read-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_awardsA
Read-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_filingsB
Read-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_stationsA
Read-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_positionsA
Read-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_satellitesA
Read-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_screeningA
Read-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_filingsA
Read-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_semanticA
Read-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_authorizationsA
Read-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_spectrumA
Read-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

    A3.8/5.0

    Scored across 22 tools

    Disambiguation4/5

    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.

    Naming Consistency4/5

    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.

    Tool Count3/5

    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`.

    Completeness5/5

    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

    ActivityActive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers