orrerySAFE
Free, open source, self-hosted business development intelligence for U.S. federal government contracting.
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
55b2ba9cc846OBSERVED · 2026-10-11Connect
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 mcp add orrery -- uvx orrery
{
"mcpServers": {
"orrery": {
"command": "uvx",
"args": [
"orrery"
]
}
}
}Exposed tools (25)
21 read · 4 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
assessments | read | Stored AI assessments of a pursuit, newest first, each with its provenance (slot, |
awards | read | Award history from USAspending, newest action first. Filters: awarding office code |
contractor | read | One contractor by UEI: names seen, awards won with their offices and values, and every |
entity | read | One agency, office, or contractor: its place in the hierarchy, children, aliases, |
gate | read | Record a gate decision with its rationale: go advances to the next stage, no-go closes |
history | read | The change log of a tracked notice: every stage, win-probability, and notes change. |
link_notice | read | Attach a notice to a pursuit (role: solicitation, rfi, sources-sought, presolicitation, |
new_pursuit | read | Open a pursuit in the workflow |
notice | read | Everything public about one notice: typed fields, description, agency chain, |
pipeline | read | The user |
profile | read | The user |
pursuit | read | One pursuit in full: its gate and whether it is ready, tasks, linked notices, the |
pursuits | read | The user |
queue_status | read | Pending description and attachment fetches, and the next descriptions in line. |
quota_today | read | Today |
recompetes | read | The recompete radar: awards whose period of performance (options included) ends within |
run_saved_search | write | Run a saved search over active notices. |
save_search | write | Create or replace a saved search. Matching notices are fetched first. |
saved_searches | read | The user |
search | read | Keyword search across notice text and attachment text (FTS5 syntax allowed); one row |
task_done | read | Mark a task done. |
tasks | read | The user |
track | write | Start tracking a notice (default stage watching) or update its stage, win probability |
upcoming | read | Active solicitations with a response deadline within the next N days, soonest first. |
update_pursuit | write | Set a pursuit |
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.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (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)
.mise.toml
("attachment; filename=../../.hidden", "hidden"),os.environ.setdefault("ANTHROPIC_BASE_URL", "http://127.0.0.1:9")return "".encode() + out.getvalue().encode("utf-8")**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,
Gates applied: no_behavioural_pass.
55b2ba9cc846full audit observations/trust-audit/mcp-server/chrisfulcher__orrery.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 55b2ba9cc846 | SAFE | B | 89 | first audit |
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.