Atlas / MCP servers / jentrix-au / Jentrix open client

Jentrix open clientBLOCK

mcp/jentrix-au/jentrix

Jentrix open client: the CLI and the official Claude Code and Codex plugins

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

Overview

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

The command-line client and the official coding-agent plugins for Jentrix — open at the edge, governed at the centre. Everything that runs on your machine is in this repository; everything that decides authority (authorization, tenancy, audit, idempotency, concurrency, rate limits) is enforced by the hosted service on every request, whatever the client says.

The CLI depends on all four plugin packages with exact pins and materializes them into your provider — Claude Code and Codex with the hook commands pinned to absolute paths, OpenCode through one mana

Read from source at commit 9b8266e74a41OBSERVED · 2026-10-12
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
claude mcp add plugin-pi --env STACKS_TOKEN=${STACKS_TOKEN} -- npx -y @jentrix/[email protected]
claude-desktop
{
  "mcpServers": {
    "plugin-pi": {
      "command": "npx",
      "args": [
        "-y",
        "@jentrix/[email protected]"
      ],
      "env": {
        "STACKS_TOKEN": "${STACKS_TOKEN}"
      }
    }
  }
}
03

Exposed tools (2)

2 read · 0 write · 0 destructive.

ToolRiskDescription
list_widgetsreadLists widgets.
synthetic_linkreadsynthetic required-nullable fixture
04

Trust audit

BLOCKgrade D · trust 63/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
none-observed
Network
declared (3 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
found

Findings (25)

CRITICALHard-coded secrets · secret.anthropic · CWE-798, CWE-321
contract-vectors.json:72
"input": "env sk-ant-api03-ABCDEFGHIJKLMNOPQRST",
CRITICALHard-coded secrets · secret.aws · CWE-798, CWE-321
contract-vectors.json:57
"input": "key AKIAABCDEFGHIJKLMNOP used",
CRITICALHard-coded secrets · secret.private_key · CWE-798, CWE-321
contract-vectors.json:87
"input": "before\n-----BEGIN RSA PRIVATE KEY-----\nMIIabc\nxyz\n-----END RSA PRIVATE KEY-----\nafter",
CRITICALHard-coded secrets · secret.slack · CWE-798, CWE-321
contract-vectors.json:62
"input": "xoxb-123456789012-abcdef ok",
CRITICALHard-coded secrets · secret.stripe · CWE-798, CWE-321
contract-vectors.json:82
"input": "sk_live_ABCDEF0123456789 charged",
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/commands/login.ts:156
url = new URL(trimmed, "http://127.0.0.1");
MEDIUMHard-coded secrets · secret.anthropic · CWE-798, CWE-321
docs/contract/mvp.json:5072
"input": "env sk-ant-api03-ABCDEFGHIJKLMNOPQRST",
MEDIUMHard-coded secrets · secret.anthropic · CWE-798, CWE-321
test/push.test.ts:755
"anthropic sk-ant-abcdefghijklmnopqrstuvwx",
MEDIUMHard-coded secrets · secret.anthropic · CWE-798, CWE-321
test/push.test.ts:762
assert.ok(!out.includes("sk-ant-abcdefghijklmnopqrstuvwx"));
MEDIUMHard-coded secrets · secret.anthropic · CWE-798, CWE-321
test/session-capture.smoke.test.ts:34
"Authorization: Bearer tmo_abcdefghijklmnop123 in /Users/operator/work tm_secret_value_123456 sk-ant-abcdefghijklmnopqrstu",
MEDIUMHard-coded secrets · secret.aws · CWE-798, CWE-321
EXTRACTION.md:85
fake by construction (`tm_0123456789abcdefTOKEN`, `AKIAABCDEFGHIJKLMNOP`,
MEDIUMHard-coded secrets · secret.aws · CWE-798, CWE-321
docs/contract/mvp.json:5057
"input": "key AKIAABCDEFGHIJKLMNOP used",
MEDIUMHard-coded secrets · secret.aws · CWE-798, CWE-321
test/push.test.ts:757
"aws AKIAABCDEFGHIJKLMNOP",
MEDIUMHard-coded secrets · secret.aws · CWE-798, CWE-321
test/push.test.ts:764
assert.ok(!out.includes("AKIAABCDEFGHIJKLMNOP"));
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/artifact-register.test.ts:35
resolveTarget: () => ({ token: "tm_test_token_abcdefghijklmnop", url: "http://localhost:3000/api/mcp" }),
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/audit-corrections.test.ts:52
resolveTarget: () => ({ token: "tm_test_token_abcdefghijklmnop", url: "http://localhost:3000/api/mcp" }),
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/config.test.ts:139
const secret = "tm_super_secret_value";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/evidence-forms.test.ts:49
token: "tm_test_token_abcdefghijklmnop",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/push.test.ts:37
token: "tm_test_token_abcdefghijklmnop",
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
docs/contract/mvp.json:5087
"input": "before\n-----BEGIN RSA PRIVATE KEY-----\nMIIabc\nxyz\n-----END RSA PRIVATE KEY-----\nafter",
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
test/push.test.ts:758
"-----BEGIN PRIVATE KEY-----\nabc\n-----END PRIVATE KEY-----",
MEDIUMHard-coded secrets · secret.slack · CWE-798, CWE-321
docs/contract/mvp.json:5062
"input": "xoxb-123456789012-abcdef ok",
MEDIUMHard-coded secrets · secret.stripe · CWE-798, CWE-321
docs/contract/mvp.json:5082
"input": "sk_live_ABCDEF0123456789 charged",
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/fixtures/write-marker.mjs:4
import { writeAlignmentMarker } from "../../src/session/state.ts";
LOWNetwork egress · net.env_exfil · CWE-200, CWE-319
test/proxy.test.ts:51
Object.assign(process.env ... fetch(
Why it matters. reads secrets in the same file that sends data out

Gates applied: critical_finding, no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 9b8266e74a41full audit observations/trust-audit/mcp-server/jentrix-au__jentrix.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-129b8266e74a41BLOCKD63first audit
06

Questions

What is the @jentrix/cli MCP server?

Jentrix open client: the CLI and the official Claude Code and Codex plugins

What tools does @jentrix/cli expose?

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

Is @jentrix/cli safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (63/100) and found 5 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 @jentrix/cli need?

It reads STACKS_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 @jentrix/cli run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as @jentrix/plugin-pi at 0.1.1.

How current is this page?

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

Advertisement