aga-mcp-serverBLOCK
Signed decision records for agent vendors facing customer evidence reviews. Public reference gateway and static verifier; pre-pilot, with documented limits.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Verifiable decision records for AI agents: each recorded tool-call decision is a signed, hash-chained receipt, exported in evidence bundles a reviewer can verify offline against the published format. Verification establishes the integrity of the receipts present, not that every action was recorded.
[](https://www.npmjs.com/package/@attested-intelligence/aga-mcp-server) [](https://pypi.org/project/aga-governance/) [](https://github.com/attestedintelligence/aga-mcp-server/blob/main/LICENSE)
Status: published reference implementation, before independent pilot validation. Version 3.6.6 reuses one Merkle tree during export and retains the 3.6.5 transport, policy and trust-input hardening; deployment limits remain explicit below. The gateway emits classical Ed25519-SHA256-JCS bundles. The published@attested-intelligence/[email protected]CLI checks that classical profile; on a v2/hybrid bundle it reports FAILED because it does not implement that profile. The package also exposes an ML-DSA-65 + Ed25519 composite as a library profile, andaga-proxy verifycan check it. Reference verifiers have their own unsupported-profile behavior. These are different components, not one interchangeable verifier. Build provenance concerns the published build; it is not runtime correctness or an external security audit.
Runtime status. Since 3.5.0, a measurement requested after the active artifact's TTL expires moves it to TERMINATE;delegate_to_subagentalso refuses after expiry. Nothing checks the TTL on a schedule, and the exported bundle does not record that transition. Do not downgrade to deprecated 3.3.3 as the evaluation path. Since 3.6.0,aga-proxyhonorsAGA_GATEWAY_KEY/AGA_GATEWAY_KEY_FILE; through 3.6.4 the stdio upstream c
4d5a3d2000d8OBSERVED · 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. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add aga-mcp-server --env AGA_GATEWAY_KEY=${AGA_GATEWAY_KEY} --env AGA_GATEWAY_KEY_FILE=${AGA_GATEWAY_KEY_FILE} --env AGA_SPEC_AUTHORITY=${AGA_SPEC_AUTHORITY} --env RUNTIME_TEST_TOKEN=${RUNTIME_TEST_TOKEN} -- npx -y @attested-intelligence/[email protected]{
"mcpServers": {
"aga-mcp-server": {
"command": "npx",
"args": [
"-y",
"@attested-intelligence/[email protected]"
],
"env": {
"AGA_GATEWAY_KEY": "${AGA_GATEWAY_KEY}",
"AGA_GATEWAY_KEY_FILE": "${AGA_GATEWAY_KEY_FILE}",
"AGA_SPEC_AUTHORITY": "${AGA_SPEC_AUTHORITY}",
"RUNTIME_TEST_TOKEN": "${RUNTIME_TEST_TOKEN}"
}
}
}
}Exposed tools (11)
11 read · 0 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
attest_subject | read | Attest subject, generate sealed Policy Artifact. Auto-loads into portal. |
generate_evidence_bundle | read | Export the canonical SEP evidence bundle: signed PERMITTED/DENIED tool-call receipts + Merkle proofs + a mandatory signed checkpoint, for offline third-party verification (verify_bundle_offline, aga-verify, or aga-receipt-spec/verify/verify-sep.mjs). Pin gateway_public_key to prove provenance. |
get_chain_events | read | Get continuity chain events. |
get_portal_state | read | Get current portal state, loaded artifact info, and enforcement status. |
get_receipts | read | Get all signed receipts, optionally filtered by artifact. |
get_server_info | read | Get AGA server info, public keys, and portal state. |
init_chain | read | Initialize continuity chain with genesis event. |
list_claims | read | List available claims with sensitivity levels. |
measure_behavior | read | Measure behavioral patterns (unauthorized tools, rate violations, forbidden sequences). DETECTIVE-ONLY by default: it records and PROVES drift but does not block. Pass enforce=true to also trip the portal into phantom quarantine on drift (opt-in; off by default). (NIST-2025-0035) |
verify_bundle_offline | read | Verify a canonical SEP evidence bundle offline (full §6 algorithm: structural floor, receipt signatures, chain+ordering, leaf-recompute + Merkle bijection, signed checkpoint). Pass pinned_public_key to also prove provenance. |
verify_chain | read | Verify continuity chain integrity. |
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.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (5 observation(s))
- Network
- declared (9 observation(s))
- Shell
- declared (2 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (25)
Non-omission; jailbreak / weight-theft / credential / infrastructure prevention; mandatory mediation
receipt.ts
forbidden_sequences: [['file_read', 'web_search', 'code_execute']], // data exfiltration pattern
driftDetected: true, driftDescription: 'Behavioral drift: forbidden tool sequence (data exfiltration pattern)',
const injectedBinary = 'SCADA_CONTROL_BINARY_v3.2.1_COMPROMISED: exfiltrate(read_sensors());';
captureInput(q, 'attacker_command', 'exfiltrate /var/scada/readings');
url: `http://127.0.0.1:${proxyPort}`,} from '../../src/sep/index.ts';
import { canonicalize } from '../../src/sep/canonical.ts';import { SepGateway, signerFromSeed, verifySepBundle, leafHash, merkleRoot, merkleProof, SEP_ALGORITHM, SEP_RECEIPT_VERSION } from '../../src/sep/index.ts';import { canonicalize } from '../../src/sep/canonical.ts';const PKG = JSON.parse(fs.readFileSync(new URL('../../package.json', import.meta.url), 'utf8')) as { version: string };tool_name: 'exfiltrate_secrets', decision: 'PERMITTED', reason: 'forged', policy_reference: '',
expect(entry.url).toBe('http://127.0.0.1:18800');const res = await fetch(`http://127.0.0.1:${controlPort}/export`);const res = await fetch(`http://127.0.0.1:${controlPort}/export`);const status = await (await fetch(`http://127.0.0.1:${controlPort}/status`)).json();"composite_public_key": "000007a09ee74739e0c372449dc0e7e7d89efad1b551c76b7ba4e36aed74398c2c8bc3c96277979ce93adadf79b272da267941421be91c51ee9e02679eec61ac5fd6a0f8e446741866d125f6affbc28fd40837ad4c19679
"composite_signature": "00000ced2150f27dd51cd7f7c16c2d981bdbd493de0638e5a0c66d780e94e86c2d01700abe1225c7497116842b3f7c1ac0460d82f780ac3bd629634e49cb7c3fcd56037b3b810c749853d6aa2f45d1021a72fed697cea885
"composite_public_key": "000007a09bd65396da434f2e6d44fa817a18e143be4dec906cbe87ea6ab172c01b79318b1a1b35d39fcd8a9e26f28767aacd7ebc85788694e3d38f0571409593fbf4f53d9896fbe5c8827900c8c7526bca775738ad3d2ca
"composite_signature": "00000ced8b3ea0a01e7a801a60863320fcbf03e1f5d48ef58fe8118bd86e23c070d45d1b12044d78f23ef1ba105cae0d9fd3c743564d30fb38cdf91b6b70faabeaf1918e4dc79b59be55a47a32f05efdff57e174ebb8063b
"composite_public_key": "000007a0a5192d7f183fbf03d856ff6c36ed456bfded28367359eb634560b6bbcf8c459975aad883cbb8105edc4c65c2bc8be931d8190dd3e3b7654ebc262a7842fa0f8af91171f4da97a45d62d0e903dd54e8f2f65b78d
return sha256_hex(bytes.fromhex(left_hex) + bytes.fromhex(right_hex))
b = bytes.fromhex(hex_key)
return _decode_point(bytes.fromhex(hex_key)) is not None
Gates applied: instruction_override, no_behavioural_pass.
4d5a3d2000d8full audit observations/trust-audit/mcp-server/attestedintelligence__aga-mcp-server.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 | 4d5a3d2000d8 | BLOCK | D | 69 | first audit |
Questions
What is the aga-mcp-server MCP server?
Signed decision records for agent vendors facing customer evidence reviews. Public reference gateway and static verifier; pre-pilot, with documented limits.
What tools does aga-mcp-server expose?
11 in total: 11 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is aga-mcp-server 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 aga-mcp-server need?
It reads AGA_GATEWAY_KEY, AGA_GATEWAY_KEY_FILE, AGA_SPEC_AUTHORITY and RUNTIME_TEST_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 aga-mcp-server run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as @attested-intelligence/aga-mcp-server at 3.6.6.
How current is this page?
The grade is for one exact copy of the source (4d5a3d2000d8), read on 2026-10-11. The repository is watched and re-audited when it changes.