Atlas / MCP servers / chrisfulcher / orrery

orrerySAFE

mcp/chrisfulcher/orrery

Free, open source, self-hosted business development intelligence for U.S. federal government contracting.

Verdict
SAFE
Grade
B
Trust score
89 /100
Exposed tools
25 21r · 4w · 0d
Transport
—
License
Apache-2.0
Stars
1
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Free, open source, self-hosted business development intelligence for U.S. federal government contracting.

An orrery is a clockwork model of a system too large to see at once, built so the parts can be watched moving in relation to each other. That is the ambition: agencies, offices, contractors, contracts and the opportunities between them, in one model you run yourself.

Status

Early, and usable today. The primary interface is orrery top, a full-screen terminal UI; every command also runs from the shell and prints --json. It installs from source or with docker compose, and runs with no SAM.gov account at all (see Before you start).

Working now

  • Ingest — a NAICS slice of SAM.gov notices (codes you list, matched by

prefix, so 5415 takes the whole industry group), from the daily bulk extract or the API, with their attachments; three years of USAspending award history; and SAM.gov entity registrations.

  • Search — full text across notice descriptions and the text extracted from

PDF, Word and spreadsheet attachments, by keyword or by meaning through an embedding endpoint you choose.

  • Context — a notice's page carries the agency chain, the incumbent, the

office's recent awards in the same NAICS, the government contacts named on it, and the documents. Every vendor is an entity with its registration on record.

  • Pursuits — a requirement you intend to win moves through your own gated

stages (streamlined Shipley by default, editable) by recorded decisions. The dashboard shows this week's work on your calendar rather than the government's, and the recompete radar surfaces requirements from the award history months before any notice.

  • AI you choose — a fast model writes a two-sentence summary, a work type,

keywords, and the set-aside the text states for every fe

Read from source at commit 55b2ba9cc846OBSERVED · 2026-10-11
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add orrery -- uvx orrery
claude-desktop
{
  "mcpServers": {
    "orrery": {
      "command": "uvx",
      "args": [
        "orrery"
      ]
    }
  }
}
03

Exposed tools (25)

21 read · 4 write · 0 destructive.

ToolRiskDescription
assessmentsreadStored AI assessments of a pursuit, newest first, each with its provenance (slot,
awardsreadAward history from USAspending, newest action first. Filters: awarding office code
contractorreadOne contractor by UEI: names seen, awards won with their offices and values, and every
entityreadOne agency, office, or contractor: its place in the hierarchy, children, aliases,
gatereadRecord a gate decision with its rationale: go advances to the next stage, no-go closes
historyreadThe change log of a tracked notice: every stage, win-probability, and notes change.
link_noticereadAttach a notice to a pursuit (role: solicitation, rfi, sources-sought, presolicitation,
new_pursuitreadOpen a pursuit in the workflow
noticereadEverything public about one notice: typed fields, description, agency chain,
pipelinereadThe user
profilereadThe user
pursuitreadOne pursuit in full: its gate and whether it is ready, tasks, linked notices, the
pursuitsreadThe user
queue_statusreadPending description and attachment fetches, and the next descriptions in line.
quota_todayreadToday
recompetesreadThe recompete radar: awards whose period of performance (options included) ends within
run_saved_searchwriteRun a saved search over active notices.
save_searchwriteCreate or replace a saved search. Matching notices are fetched first.
saved_searchesreadThe user
searchreadKeyword search across notice text and attachment text (FTS5 syntax allowed); one row
task_donereadMark a task done.
tasksreadThe user
trackwriteStart tracking a notice (default stage watching) or update its stage, win probability
upcomingreadActive solicitations with a response deadline within the next N days, soonest first.
update_pursuitwriteSet a pursuit
04

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (5 observation(s))
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (5)

LOWInventory / provenance · inv.hidden_file · CWE-1104
.mise.toml
.mise.toml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/test_sam_client.py:257
("attachment; filename=../../.hidden", "hidden"),
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/conftest.py:26
os.environ.setdefault("ANTHROPIC_BASE_URL", "http://127.0.0.1:9")
LOWObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
tests/conftest.py:369
return "".encode() + out.getvalue().encode("utf-8")
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
README.md:96
**A chat model** (optional; needed only for `orrery pursuit assess`). Two slots, `fast` for grunt work and `deep` for judgment, each any OpenAI-compatible endpoint (Ollama, LM Studio, llama.cpp, vLLM,
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha 55b2ba9cc846full audit observations/trust-audit/mcp-server/chrisfulcher__orrery.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1155b2ba9cc846SAFEB89first audit
06

Questions

What is the orrery MCP server?

Free, open source, self-hosted business development intelligence for U.S. federal government contracting.

What tools does orrery expose?

25 in total: 21 read-only, 4 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is orrery safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.

What credentials does orrery need?

No credential environment variables were found in its source, so it appears to need none.

How current is this page?

The grade is for one exact copy of the source (55b2ba9cc846), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement