Atlas / MCP servers / sashabogi / trantor

trantorBLOCK

mcp/sashabogi/trantor

The hub-world for AI agent crews — orchestrate Claude Code, Codex, Gemini, Kimi & DeepSeek as live crews with a plan-aware Advisor, a Kanban/flow command center, a testing gate, and an economics brain (Scrooge).

Verdict
BLOCK
Grade
F
Trust score
45 /100
Exposed tools
27 19r · 8w · 0d
Transport
stdio
License
MIT
Stars
1
01

Overview

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

████████╗██████╗  █████╗ ███╗   ██╗████████╗ ██████╗ ██████╗
╚══██╔══╝██╔══██╗██╔══██╗████╗  ██║╚══██╔══╝██╔═══██╗██╔══██╗
██║   ██████╔╝███████║██╔██╗ ██║   ██║   ██║   ██║██████╔╝
██║   ██╔══██╗██╔══██║██║╚██╗██║   ██║   ██║   ██║██╔══██╗
██║   ██║  ██║██║  ██║██║ ╚████║   ██║   ╚██████╔╝██║  ██║
╚═╝   ╚═╝  ╚═╝╚═╝  ╚═╝╚═╝  ╚═══╝   ╚═╝    ╚═════╝ ╚═╝  ╚═╝

The hub-world for AI agent crews.

*One Advisor decides how your work runs — solo, cheap inline calls, or a live crew of Claude Code, Codex, GLM, Kimi, DeepSeek — or any model you bring — in their own terminal windows, routed by your actual plans, supervised on a live + historical board you can scroll back through, learning from every failure.*

[](./LICENSE)

Install

npm install -g trantor
trantor setup        # hub becomes an always-on service + config + wires your AI CLIs + doctor

Then give Claude Code (the orchestrator) the plugin:

claude plugin marketplace add sashabogi/trantor
claude plugin install trantor

Kimi Code CLI as orchestrator (same capabilities — the relay_* MCP tools, the crew/handoff/ research skills, and the full hook set: session registration, focus cards, todo mirroring, heartbeats, inbox delivery, handoff/baton pass, sub-agent cards):

  1. Register the relay MCP server in ~/.kimi-code/mcp.json:
{
"mcpServers": {
"relay": {
"command": "node",
"args": ["/mcp.mjs"],
"env": { "RELAY_AGENT": "kimi-orch" },
"startupTimeoutMs": 15000,
"toolTimeo
Read from source at commit 677084b994b1OBSERVED · 2026-10-12
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
claude mcp add trantor --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN} --env DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY} --env GEMINI_API_KEY=${GEMINI_API_KEY} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "trantor": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
        "CLAUDE_CODE_OAUTH_TOKEN": "${CLAUDE_CODE_OAUTH_TOKEN}",
        "DEEPSEEK_API_KEY": "${DEEPSEEK_API_KEY}",
        "GEMINI_API_KEY": "${GEMINI_API_KEY}"
      }
    }
  }
}
03

Exposed tools (27)

19 read · 8 write · 0 destructive.

ToolRiskDescription
alphareadBuild alpha
betareadBuild beta
gammareadExplore gamma
relay_advisewriteTHE ADVISOR — ask the brain how to execute a body of work before spending tokens. Give it your work packages (with difficulty); it weighs task shape x the user
relay_askreadAsk a BLOCKING question on your card without forfeiting the contract (#7756). This is the correct move when the contract omits a fact you cannot proceed without — never invent the value. Sends a kind:ask message to the card
relay_boardreadShow a project
relay_contractsread
relay_duty_failurereadDuty-seat only: record that a required cross-session socket nudge was skipped or that a relay send returned 403. The hub appends the failure to the target project
relay_handoffwriteWrite a rich handoff for THIS session so a fresh session (any agent) can take over with a full context window instead of compacting. Provide a complete markdown summary (TASK / STATE / KEY DECISIONS / NEXT STEPS / KEY FILES). Universal — works in any agent, not just Claude
relay_inboxread
relay_lessonreadRecord a LESSON learned from a failure so future crews avoid it — injected into agents
relay_peersreadFind who you can talk to: the live agent sessions on the relay (online in last 5 min), including sessions in projects linked to yours. Call this BEFORE concluding you have no way to reach someone — the session ids it returns are what relay_send takes.
relay_phase_goalwriteSet what a PHASE is for — its goal — shown as the phase header in the Flow view (overrides the theme auto-derived from card titles). Capture this when you plan a phase so the board says what each milestone needs to do, not just
relay_project_briefwriteSet a one-paragraph brief for a project shown on the dashboard: what it is, why it matters, and the goal. Defaults to THIS project; pass
relay_proposalsreadList THIS session
relay_proposeread
relay_scroogereadDelegate a SMALL, SELF-CONTAINED piece of grunt work (draft a function, summarize, extract, classify, boilerplate) to a cheap external model via Scrooge — costs a fraction of a cent and keeps the result OUT of expensive context where possible. Returns the model
relay_sendwriteSend a live message to another agent session (or
relay_statuswriteSet this session
relay_task_addwriteAdd a Kanban card to a project
relay_task_checkreadTick (or untick) ONE acceptance item on a card
relay_task_movewriteMove a Kanban card as you progress: todo -> doing -> testing -> done. NEVER move straight to done: move to
relay_verify_gatereadRecord a VERIFICATION GATE — a claim that MUST be independently verified before the related work ships (e.g.
relay_waitreadBlock up to
relay_whoamireadShow this session
relay_withdraw_proposalreadWithdraw one of THIS session
wflowreadWF step
04

Trust audit

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

LayerWhat it checksResult
L0Provenance & inventoryFAIL
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 (11 observation(s))
Network
declared (10 observation(s))
Shell
declared (9 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHInventory / provenance · inv.suspicious_name · CWE-1104
bin/crew-payload.mjs
crew-payload.mjs
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
engine/test-routing.py:18
exec(compile(open(SCROOGE).read(), "scrooge", "exec"), g)
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
lib/docker-janitor.mjs:16
try { r = exec(["ps", "--format", "{{.ID}} {{.Names}}"]); } catch { return null; }
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
lib/docker-janitor.mjs:79
try { r = exec(["stop", ...ids]); } catch { return { unavailable: true, stopped: [], failed: [] }; }
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
lib/seats.mjs:87
const parsed = JSON.parse(exec(bin, ["agent", "list"], { encoding: "utf8", timeout: 4000, stdio: ["ignore", "pipe", "ignore"] }));
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
deploy/setup-netcup.sh:37
DATABASE_URL=postgresql://trantor:[email protected]:5432/trantor
MEDIUMInventory / provenance · inv.binary · CWE-1104
.DS_Store
.DS_Store
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
bin/migrate-store.mjs
migrate-store.mjs
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
desktop/src-tauri/icons/icon.icns
icon.icns
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
engine/bin/__pycache__/scrooge-capabilitiescpython-314.pyc
scrooge-capabilitiescpython-314.pyc
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
hub/migrations.mjs
migrations.mjs
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
bin/cli.mjs:184
if (r.ok) console.log(`Invite token: ${j.token}\nShare this with the new member: trantor enroll ${j.token}`);
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
bin/balances.mjs:47
try { await signedPost("http://127.0.0.1:4477/balances", snap, { timeoutMs: 2500 }); } catch {}
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/runner/test-doctor.mjs:74
const SECRET = "sk-1111secretmiddle2222";
MEDIUMHard-coded secrets · secret.github · CWE-798, CWE-321
test/crew/test-crew-redact.mjs:26
ghp: "ghp_AbCdEf0123456789AbCdEf0123456789ab",
MEDIUMHard-coded secrets · secret.github · CWE-798, CWE-321
test/runner/test-scrub.mjs:18
"github pat":            "ghp_abcdefghijklmnopqrstuvwxyz0123456789",
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
test/runner/test-scrub.mjs:23
"pem private key":       "-----BEGIN RSA PRIVATE KEY-----",
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
test/runner/test-scrub.mjs:24
"pem private key plain": "-----BEGIN PRIVATE KEY-----",
MEDIUMHard-coded secrets · secret.slack · CWE-798, CWE-321
test/runner/test-scrub.mjs:20
"slack token":           "xoxb-1234567890-abcdefghij",
MEDIUMHard-coded secrets · secret.stripe · CWE-798, CWE-321
test/runner/test-scrub.mjs:15
"stripe live key":       "sk_live_abcdefghijklmnop1234",
LOWInventory / provenance · inv.hidden_file · CWE-1104
.DS_Store
.DS_Store
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
test/.DS_Store
.DS_Store
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.suspicious_name · CWE-1104
test/crew/test-crew-payload.mjs
test-crew-payload.mjs
Why it matters. member named after an attack tool
Fix. remove or justify
LOWInventory / provenance · inv.suspicious_name · CWE-1104
test/crew/test-payload-prefix.mjs
test-payload-prefix.mjs
Why it matters. member named after an attack tool
Fix. remove or justify
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
lib/session-liveness.mjs:72
const parent = join(home, ".kimi", "sessions", createHash("md5").update(cwd).digest("hex"));

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 677084b994b1full audit observations/trust-audit/mcp-server/sashabogi__trantor.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-12677084b994b1BLOCKF45first audit
06

Questions

What is the trantor MCP server?

The hub-world for AI agent crews — orchestrate Claude Code, Codex, Gemini, Kimi & DeepSeek as live crews with a plan-aware Advisor, a Kanban/flow command center, a testing gate, and an economics brain (Scrooge).

What tools does trantor expose?

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

Is trantor safe to connect to an agent?

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

What credentials does trantor need?

It reads ANTHROPIC_API_KEY, CLAUDE_CODE_OAUTH_TOKEN, DEEPSEEK_API_KEY, GEMINI_API_KEY, GITHUB_TOKEN, GOOGLE_API_KEY, OPENROUTER_API_KEY, RELAY_AUTH, RELAY_BOOTSTRAP_TOKEN, TRANTOR_IDENTITY_KEYCHAIN, TRANTOR_NO_KEYCHAIN and TRANTOR_SECRETS_BACKEND 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 trantor run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as trantor at 0.18.90.

How current is this page?

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

Advertisement