Atlas / MCP servers / zz-plant / ambit

ambitBLOCK

mcp/zz-plant/ambit

See what you and your AI agents can do, and what one more step would unlock. Ambit maps Claude Code, Cursor, OpenCode and nine more agent configs into one local graph: what works, what to set up next, and what breaks if a piece goes.

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
63 51r · 12w · 0d
Transport
stdio · streamable-http
License
MIT
Stars
2
01

Overview

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

What you, your agents, and your machines can jointly do — and where your own time is going.

That is your ambit. Ambit reads the configs of Claude Code, Cursor, OpenCode and the other agent runtimes it knows into one local map of it, and shows how to widen it: what you can do now, what one more step would unlock, and which pieces are configured but not working.

[](https://github.com/zz-plant/ambit/actions/workflows/ci.yml) [](https://github.com/zz-plant/ambit/releases/latest) [](https://nodejs.org) [](./LICENSE)

**Try the live demo** · Get started · Connect it to your agent · FAQ · Docs

<img src="docs/assets/capability-graph-demo.gif" alt="Ambit showing one developer setup as a map: Embeddings, a next step, is selected and simulating it lights the four capabilities it would make reachable in green; then Shell Execution is switched off, what depends on it turns red, and nine working capabilities would stop; a second view colors the tools that interrupt a person most often, and a proposed config change waits for approval" width="920">

One setup, mapped. Pick a next step and Ambit shows what it would open: four more capabilities. Pick one you rely on and switch it off, and it counts the nine working things that would stop with it. Then which tools interrupt you most, and a change waiting on your approval.

npx ambit-cli, or `brew install z

Read from source at commit ba7b27ef4798OBSERVED · 2026-10-11
Advertisement
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. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (npm)
claude mcp add ambit-cli -- npx -y [email protected] mcp
03

Exposed tools (63)

51 read · 12 write · 0 destructive.

ToolRiskDescription
NUCreadhomelab host
PaymentsreadTake payments
actionsreadThe actions a capability confers and whether each may be performed: read a repository yes, merge to its default branch no. Omit capId for all. To ask before acting, use ambit_can.
affordancesreadThe domain of each capability, from the graph: institutional (needs an authority holder), economic (a budget), cognitive (a person), physical (a device).
auditwriteThe audit trail: a run end to end, a proposal
authoritywriteWhich reached capabilities may run unattended and which need approval. Being able to act is not permission to. Pass detail: true for every grant.
blockedreadRecord that a task was blocked by a missing capability. The same deficit hit repeatedly is a capability or workflow worth investigating.
bottlenecksreadThe capabilities the most others depend on: where an improvement pays most and a loss costs most.
briefingreadWhat this environment is, before you touch it: reached and proven, failing, waiting on a person, recently blocked, worth reaching next, and what changed since the last briefing. Read once at session start. Also ambit://briefing.
budgetsreadStanding budgets: what may be spent, on what, and what is left this period. A spend past a ceiling is refused until the period turns over. A person sets one.
canwriteAsk before running a tool you have not used this session. yes: act. ask: put it to the person. no: do not retry it under another name. Also returns the reason, what is missing and the budget left. Probes nothing. A no files the deficit.
capreadFind capabilities by domain or name. Returns the ids the other tools take.
catalogreadThe ways to acquire a capability (build, buy, subscribe, delegate, hire) compared by setup, one-time and recurring cost, privacy, verification and rollback.
combosreadCombos the graph can already support: every prerequisite in place, with a confidence.
contextreadThe session briefing as one block of prose, the text ambit_briefing returns with text: true.
councilreadThe first next step read five ways: what it opens, rests on, has cost and may do once reached, and whether its foundation works. Per seat a sentence, a command and a stance, and whether they split.
credentialsreadWhat revoking each credential would end. Providers that present the same credential fail together.
decayreadCapabilities not touched for long enough to doubt, with days since the last config change.
deficitswriteRecurring capability deficits, worst first: which missing capabilities keep stopping different work.
diffreadPer domain, what was recently practiced, improved or regretted, from the last 50 outcomes.
digestreadHow much work still runs through the human, and which interventions are reducible: recurring approvals and permission blocks could become a bounded grant or automation. days: window (default 7).
economicsreadDeclared costs and goal values: attention value per hour, recurring and purchase costs, what each goal is worth.
evidencereadVerification history of one capability: what was tried, when, and whether it passed.
goalreadRoute a goal, in words, to the capabilities that cover it: ranked, each with its plan delta.
goal_valuereadOne goal
healthreadDomain health scores.
impactwriteWhat would stop, and what would only lose a provider, if a capability went away.
incident_resolvewriteClose the open incident run for a service with its outcome. MTTR is the ledger
incidentsreadProbe the hosts the infrastructure manifest names, record each answer as a check run, and open an incident run per offline service, with the authority decision for recovery (restart ALLOW, CONFIRM or DENY).
ledgerreadEvery recorded frontier observation: how the system
nearreadNear-miss combos: one or two prerequisites away, with high existing maturity.
nextreadThe capabilities worth reaching next: why, cost, and the command that proposes each. Ranked by what has blocked work once the ledger has data, by leverage per setup hour before.
objectsreadWhat may be done to a particular thing, and what is proved about doing it there. Evidence about one repository says nothing about another.
opportunitiesreadRanked changes worth making, from recurring human burden priced by attention. by: attention (default), cash, roi, reliability, frontier. budget (dollars): the best combination within it.
opportunityreadOne ranked opportunity in full: burden, proposed capability, acquisition, expected effect, payback, confidence.
pathsreadThe ways to reach a capability compared by setup time, risk and lock-in: which steps are config changes that can be undone, and which are installers that cannot.
pendingreadDrafts waiting on a person, each with its cost, what it bills and what it unlocks. Surface them together: a batch is one interruption.
planwriteWhat is missing for a capability, in the order it must be closed, and which steps need a person.
portfolioreadAcross imported federation receipts: burden recurring across environments, person-specific single points of failure, and (with budget) where spend gains most. Never merges.
preferencesreadWhat each person prefers, and which plans would fight it (local or hosted, one-off or recurring). Pass who for one person.
preferences_observedreadWhat this person has approved and refused, by trait: local or hosted, one-off or recurring. Three decisions make a trait; one that went both ways is contested.
promotionsreadAuthority thresholds: which grants may widen on evidence, how much each still needs, what was promoted or put back. A person sets one; an agent only reads this.
proposalreadOne proposal in full, with its steps and simulated frontier.
proposalsreadEvery proposal drafted so far, newest first.
proposereadDraft a reviewable acquisition: ordered steps, the alternative chosen and its trade-offs, the simulated result. Nothing runs until a person approves it, and then only reversible config patches apply.
record_failurereadReport a tool failure you just hit as the runtime reported it: exit code, error text or kind. Ambit classifies it and attributes it to a capability where it can.
register_skillwritePut a skill you wrote on the map: an id, the capability it supplies, and a read-only command that proves it works. The check runs at once, so it arrives proven or failing.
reversiblereadWhich unreached capabilities could be acquired without a person and which need hands. apply refuses a step with no inverse, so this is also what an agent cannot do alone.
roireadRealized ROI of an applied proposal: interventions, hours, attention dollars and reliability before and after, against its prediction. Writes the observation back.
roi_summaryreadEvery applied proposal
run_beginwriteStart a work run. Returns the run id every later telemetry call attaches to. The run stays open until run_end.
run_endwriteClose a work run with its outcome, and the value of that outcome in cents when known.
scopereadWhat a scope covers and what it does not. For a target (repo:owner/name, device:nuc, svc:ollama): every grant, whether it covers the target, and the effective mode.
signalsreadFailures seen in the window that no one recorded, by class and tool, including those no capability could be attributed to: a gap in the model.
simulatereadThe frontier as it would be if a capability were acquired, including what it unblocks. A preview: changes nothing.
sincereadWhat entered the reachable frontier between two ISO timestamps (default: earliest observation to now), split into acquired and emerged through composition.
skillsreadSkills registered this way, and what each check last said.
spofreadCapabilities with exactly one provider, where redundancy is absent. Bottlenecks rank leverage; this ranks fragility.
statsreadCounts of capabilities: total, reached, verified and failing, and reached per domain.
usagereadWhere effort went over a window in days (default 30): times exercised, duration and interventions per capability. unmapped: tools used that no node covers. windows: tokens per five-hour window, and time left in this one.
verifywriteRun a capability
workreadRecent work runs and what each cost: elapsed time, events, capabilities exercised, human interventions, resources.
work_eventwriteRecord one observation into a run. kind: event, use, intervention, resource or outcome. interventionKind: judgment, authority, knowledge, physical, clerical or exception.
04

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

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

What the source does

Filesystem
declared (5 observation(s))
Network
declared (8 observation(s))
Shell
declared (6 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (23)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/engine/migrate.ts:24
exec(sql: string): void;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
bootstrap.sh:11
curl -s http://127.0.0.1:11434/api/tags >/dev/null 2>&1 && echo "  Ollama: running" || echo "  Ollama: not detected"
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
cli.js:246
const url = `http://127.0.0.1:${port}/`;
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/adapters/claude-code.ts:27
import { readClaudeCode, claudeCodeSeedInput } from '../../src/engine/claude-code.ts';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/adapters/hermes.ts:28
import { authorityBlock } from '../../src/shared/authority.ts';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/adapters/hermes.ts:30
import { defaultMapping } from '../../src/engine/seed/writers.ts';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/adapters/surface.ts:23
import { defaultMapping } from '../../src/engine/seed/writers.ts';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/adapters/surface.ts:96
const engine = new URL('../../src/engine/engine.ts', import.meta.url).pathname;
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
AGENTS.md:469
4. **No egress you did not type** — the graph is a local SQLite file and there is no telemetry. Five commands open a socket from Ambit's own code: `ambit notify` and `ambit notify-approvals`, each of
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
CHANGELOG.md:404
`ambit goal "<sentence>" --judge` closes the gap the roadmap named for goal routing: a goal that names none of the tree's words had no route in. When the vocabulary cannot recommend, the sentence goes
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/faq.md:53
| `ambit goal "<sentence>" --judge` (and `goal --spec <path> --judge`) | The sentence you typed, and the name and one-line description of every node in the curated tree, as one Choice question. Only w
LOWNetwork egress · net.tls_off · CWE-200, CWE-319
src/engine/cli.test.ts:256
run(dir, 'record', 'skill:breaks', '--verify=false');
Why it matters. certificate verification is disabled
Fix. leave verification on
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@biomejs/biome, @fontsource-variable/hubot-sans, @fontsource-variable/mona-sans, @fontsource/monaspace-neon, @types/bun, @types/node, @types/react, @types/react-dom
Why it matters. 19 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
AGENTS.md:469
4. **No egress you did not type** — the graph is a local SQLite file and there is no telemetry. Five commands open a socket from Ambit's own code: `ambit notify` and `ambit notify-approvals`, each of
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
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
CHANGELOG.md:19
A runtime puts every tool server's whole tool list into the model's context at the start of each session, called or not, and nothing said how much that was. `ambit weigh` starts each local server the
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
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
CHANGELOG.md:140
`/api/telemetry` took a post from anything that could reach it, which was harmless while it only recorded work. A use inside a run that ended in success counts toward a promotion threshold, though, so
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
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
README.md:226
An agent can try it before anyone registers anything: `ambit status` reads the agent configs on the machine, and the token counts in the session logs Claude Code, Codex, OpenCode and Amp keep, and wri
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
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
README.md:234
No agent needs a plugin for its token counts, since each keeps a log of its sessions: every `ambit` command, and the MCP server when it opens the graph, reads what changed in Claude Code's transcripts
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
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
README.md:110
**Rotating a shared token.** Before you revoke a personal access token, `ambit impact credential:github/user-token` names everything standing on it: the two background MCP tools and the scheduled sync
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
docs/deep-dive.md:32
> Can diagnose a failing service, modify its repository, deploy a fix, verify recovery, and report the intervention, because the system currently has repository write access, shell execution, deployme
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
docs/ideas.md:28
The same composition that widens a reach widens it whether or not anyone is watching. Give one model shell access, credentials, a scheduler and a second machine, and the system can do far more without
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
docs/why-ambit.md:70
The version of this I find most interesting is longitudinal. Instead of describing only today, record what the system could do at time T, and what changed. A system gains a machine, then network acces
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
docs/why-ambit.md:82
Give the same model shell access, persistent execution, credentials, browser control, local machines, memory, schedulers, and delegation, and you have created a radically more consequential system wit
Why it matters. asks the agent to read credentials

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha ba7b27ef4798full audit observations/trust-audit/mcp-server/zz-plant__ambit.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-11ba7b27ef4798BLOCKD69first audit
06

Questions

What is the ambit MCP server?

See what you and your AI agents can do, and what one more step would unlock. Ambit maps Claude Code, Cursor, OpenCode and nine more agent configs into one local graph: what works, what to set up next, and what breaks if a piece goes.

What tools does ambit expose?

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

Is ambit safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on.

What credentials does ambit need?

It reads AMBIT_API_TOKEN, AMBIT_APPROVAL_KEY, AMBIT_WEIGH_SECRET and PUSHOVER_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does ambit run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as ambit-cli at 0.6.0.

How current is this page?

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

Advertisement