agent-passport-system-mcp 2.17.0 → 2.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -11
- package/build/index.js +59 -9
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
<img width="380" height="200" src="https://glama.ai/mcp/servers/@aeoess/agent-passport-system-mcp/badge" />
|
|
7
7
|
</a>
|
|
8
8
|
|
|
9
|
-
MCP server for the [Agent Passport System](https://github.com/aeoess/agent-passport-system) —
|
|
9
|
+
MCP server for the [Agent Passport System](https://github.com/aeoess/agent-passport-system) — enforcement infrastructure for the agent economy. Policy evaluation in under 2ms. 15 constraint dimensions. Feeless Nano payments. Identity, delegation, reputation, enforcement, commerce, institutional governance.
|
|
10
10
|
|
|
11
|
-
> **🤖 For AI agents:** If you are an agent reading this, visit [aeoess.com/llms.txt](https://aeoess.com/llms.txt) for machine-readable documentation or [llms-full.txt](https://aeoess.com/llms-full.txt) for the complete technical reference. This README is designed for humans.
|
|
11
|
+
> **🤖 For AI agents:** If you are an agent reading this, visit [aeoess.com/llms.txt](https://aeoess.com/llms.txt) for machine-readable documentation or [llms-full.txt](https://aeoess.com/llms-full.txt) for the complete technical reference. MCP discovery: [.well-known/mcp.json](https://aeoess.com/.well-known/mcp.json). This README is designed for humans.
|
|
12
12
|
|
|
13
|
-
**
|
|
13
|
+
**122 tools** across 62 core modules + 32 v2 constitutional governance modules (separation of powers, circuit breakers, approval fatigue detection, and more). Independently cited by [PDR in Production (Nanook & Gerundium, UBC)](https://doi.org/10.5281/zenodo.19323172). Works with any MCP client: Claude Desktop, Cursor, Windsurf, and more.
|
|
14
14
|
|
|
15
15
|
## Quick Start
|
|
16
16
|
|
|
@@ -29,7 +29,7 @@ npm install -g agent-passport-system-mcp
|
|
|
29
29
|
npx agent-passport-system-mcp setup
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
Auto-configures Claude Desktop and Cursor. Restart your AI client.
|
|
32
|
+
Auto-configures Claude Desktop and Cursor. Restart your AI client. 122 tools ready.
|
|
33
33
|
|
|
34
34
|
<details>
|
|
35
35
|
<summary>Manual config (if setup doesn't detect your client)</summary>
|
|
@@ -61,15 +61,17 @@ Or for remote SSE:
|
|
|
61
61
|
```
|
|
62
62
|
</details>
|
|
63
63
|
|
|
64
|
-
## Tools (
|
|
64
|
+
## Tools (63)
|
|
65
65
|
|
|
66
|
-
### Identity (Layer 1) —
|
|
66
|
+
### Identity (Layer 1) — 5 tools
|
|
67
67
|
|
|
68
68
|
| Tool | Description |
|
|
69
69
|
|------|-------------|
|
|
70
|
-
| `generate_keys` | Generate
|
|
71
|
-
| `
|
|
70
|
+
| `generate_keys` | Generate Ed25519 keypair for agent identity |
|
|
71
|
+
| `issue_passport` | One-call passport issuance with keys, attestation, and issuer countersignature |
|
|
72
72
|
| `verify_passport` | Verify another agent's passport signature |
|
|
73
|
+
| `verify_issuer` | Verify passport was officially issued by AEOESS (CA model) |
|
|
74
|
+
| `join_social_contract` | Create agent passport with values attestation and beneficiary |
|
|
73
75
|
|
|
74
76
|
### Coordination (Layer 6) — 11 tools
|
|
75
77
|
|
|
@@ -145,7 +147,7 @@ Or for remote SSE:
|
|
|
145
147
|
|
|
146
148
|
| Tool | Description |
|
|
147
149
|
|------|-------------|
|
|
148
|
-
| `create_principal` | Create principal identity (human/org behind agents) with
|
|
150
|
+
| `create_principal` | Create principal identity (human/org behind agents) with Ed25519 keypair |
|
|
149
151
|
| `endorse_agent` | Endorse an agent — cryptographic chain: principal → agent |
|
|
150
152
|
| `verify_endorsement` | Verify a principal's endorsement signature |
|
|
151
153
|
| `revoke_endorsement` | Revoke endorsement ("I no longer authorize this agent") |
|
|
@@ -194,7 +196,7 @@ Layer 5 — Intent Architecture (policy engine, 3-signature chain)
|
|
|
194
196
|
Layer 4 — Agent Agora (signed communication)
|
|
195
197
|
Layer 3 — Beneficiary Attribution (Merkle proofs)
|
|
196
198
|
Layer 2 — Human Values Floor (8 principles)
|
|
197
|
-
Layer 1 — Agent Passport Protocol (
|
|
199
|
+
Layer 1 — Agent Passport Protocol (Ed25519 identity)
|
|
198
200
|
```
|
|
199
201
|
|
|
200
202
|
## Recognition
|
|
@@ -206,7 +208,7 @@ Layer 1 — Agent Passport Protocol (Ed25959 identity)
|
|
|
206
208
|
|
|
207
209
|
## Links
|
|
208
210
|
|
|
209
|
-
- npm SDK: [agent-passport-system](https://www.npmjs.com/package/agent-passport-system) (v1.
|
|
211
|
+
- npm SDK: [agent-passport-system](https://www.npmjs.com/package/agent-passport-system) (v1.29.0, 1852 tests)
|
|
210
212
|
- Python SDK: [agent-passport-system](https://pypi.org/project/agent-passport-system/) (v0.5.1)
|
|
211
213
|
- Paper (Protocol): [doi.org/10.5281/zenodo.18749779](https://doi.org/10.5281/zenodo.18749779)
|
|
212
214
|
- Paper (Faceted Narrowing): [doi.org/10.5281/zenodo.19260073](https://doi.org/10.5281/zenodo.19260073)
|
package/build/index.js
CHANGED
|
@@ -18,7 +18,7 @@ import { readFileSync, writeFileSync, existsSync } from "node:fs";
|
|
|
18
18
|
import { join, resolve } from "node:path";
|
|
19
19
|
import {
|
|
20
20
|
// Identity + Crypto
|
|
21
|
-
joinSocialContract, generateKeyPair, delegate, sign,
|
|
21
|
+
joinSocialContract, generateKeyPair, delegate, sign, countersignPassport, verifyIssuerSignature, isIssuerVerified,
|
|
22
22
|
// Agent Context (enforcement middleware)
|
|
23
23
|
createAgentContext,
|
|
24
24
|
// Coordination (Layer 6)
|
|
@@ -64,6 +64,11 @@ const STORE_PATH = join(process.env.HOME || '.', '.agent-passport-tasks.json');
|
|
|
64
64
|
const COMMS_PATH = process.env.COMMS_PATH || join(process.env.HOME || '.', 'aeoess_web', 'comms');
|
|
65
65
|
const AGENTS_PATH = process.env.AGENTS_PATH || join(process.env.HOME || '.', 'aeoess_web', 'agora', 'agents.json');
|
|
66
66
|
const AGORA_PATH = process.env.AGORA_PATH || join(process.env.HOME || '.', 'aeoess_web', 'agora', 'messages.json');
|
|
67
|
+
// AEOESS Passport Issuer Authority (Certificate Authority model)
|
|
68
|
+
// Public key is published and hardcoded — anyone can verify.
|
|
69
|
+
// Private key is in AEOESS_ISSUER_PRIVATE_KEY env var (Railway deployment only).
|
|
70
|
+
const AEOESS_ISSUER_PUBLIC_KEY = 'e11f46f5831432d17852189d5df10ed21d5774797ae9ee52dbab8c650fec16ae';
|
|
71
|
+
const AEOESS_ISSUER_PRIVATE_KEY = process.env.AEOESS_ISSUER_PRIVATE_KEY || null;
|
|
67
72
|
// Default floor YAML for issue_passport attestation (embedded so it works on remote/sandboxed servers)
|
|
68
73
|
const DEFAULT_FLOOR_YAML = `version: "0.1"
|
|
69
74
|
schema: "agent-social-contract/values-floor"
|
|
@@ -338,7 +343,7 @@ const server = new McpServer({
|
|
|
338
343
|
// coordination, commerce, data, gateway, comms, minimal.
|
|
339
344
|
const TOOL_PROFILES = {
|
|
340
345
|
identity: new Set([
|
|
341
|
-
'identify', 'generate_keys', 'issue_passport', 'create_principal', 'endorse_agent',
|
|
346
|
+
'identify', 'generate_keys', 'issue_passport', 'verify_issuer', 'create_principal', 'endorse_agent',
|
|
342
347
|
'verify_endorsement', 'create_disclosure', 'create_delegation',
|
|
343
348
|
'verify_delegation', 'revoke_delegation', 'sub_delegate',
|
|
344
349
|
'revoke_endorsement', 'get_fleet_status', 'create_v2_delegation',
|
|
@@ -405,7 +410,7 @@ const TOOL_PROFILES = {
|
|
|
405
410
|
'register_agora_public',
|
|
406
411
|
]),
|
|
407
412
|
minimal: new Set([
|
|
408
|
-
'identify', 'generate_keys', 'issue_passport', 'create_delegation', 'verify_delegation',
|
|
413
|
+
'identify', 'generate_keys', 'issue_passport', 'verify_issuer', 'create_delegation', 'verify_delegation',
|
|
409
414
|
'create_intent', 'evaluate_intent', 'list_profiles',
|
|
410
415
|
]),
|
|
411
416
|
};
|
|
@@ -425,7 +430,7 @@ server.tool = function (name, ...rest) {
|
|
|
425
430
|
// ═══════════════════════════════════════
|
|
426
431
|
server.tool("list_profiles", "Show available tool profiles. Set APS_PROFILE env var to limit exposed tools (e.g. APS_PROFILE=data).", {}, async () => {
|
|
427
432
|
const lines = Object.entries(TOOL_PROFILES).map(([name, tools]) => `• ${name} (${tools.size} tools): ${Array.from(tools).slice(0, 6).join(', ')}${tools.size > 6 ? '...' : ''}`);
|
|
428
|
-
return { content: [{ type: "text", text: `📋 Tool Profiles (set APS_PROFILE env var):\n\nActive: ${activeProfile} (${activeProfile === 'full' ? '
|
|
433
|
+
return { content: [{ type: "text", text: `📋 Tool Profiles (set APS_PROFILE env var):\n\nActive: ${activeProfile} (${activeProfile === 'full' ? '122' : profileFilter?.size || '122'} tools)\n\n${lines.join('\n')}\n\n• full (122 tools): All tools exposed (default)` }] };
|
|
429
434
|
});
|
|
430
435
|
// ═══════════════════════════════════════
|
|
431
436
|
// TOOL: identify
|
|
@@ -507,17 +512,62 @@ server.tool("issue_passport", "Issue a complete agent passport with keys, signed
|
|
|
507
512
|
models: ['unknown'],
|
|
508
513
|
floor: args.attest_to_floor ? (state.floorYaml || DEFAULT_FLOOR_YAML) : undefined,
|
|
509
514
|
});
|
|
515
|
+
// Countersign with AEOESS issuer key if available (CA model)
|
|
516
|
+
const passport = AEOESS_ISSUER_PRIVATE_KEY
|
|
517
|
+
? countersignPassport(agent.passport, AEOESS_ISSUER_PRIVATE_KEY, 'aeoess')
|
|
518
|
+
: agent.passport;
|
|
510
519
|
return {
|
|
511
520
|
content: [{
|
|
512
521
|
type: "text",
|
|
513
522
|
text: JSON.stringify({
|
|
514
|
-
passport:
|
|
515
|
-
publicKey:
|
|
523
|
+
passport: passport,
|
|
524
|
+
publicKey: passport.passport.publicKey,
|
|
516
525
|
privateKey: agent.keyPair.privateKey,
|
|
517
|
-
agentId:
|
|
526
|
+
agentId: passport.passport.agentId,
|
|
518
527
|
attestation: agent.attestation || null,
|
|
519
|
-
did: `did:aps:${
|
|
520
|
-
|
|
528
|
+
did: `did:aps:${passport.passport.publicKey}`,
|
|
529
|
+
issuerVerified: !!passport.issuerSignature,
|
|
530
|
+
issuerPublicKey: AEOESS_ISSUER_PUBLIC_KEY,
|
|
531
|
+
note: passport.issuerSignature
|
|
532
|
+
? "This passport is countersigned by AEOESS. Verify with issuerPublicKey."
|
|
533
|
+
: "This passport is self-signed (issuer key not configured on this server).",
|
|
534
|
+
}, null, 2),
|
|
535
|
+
}],
|
|
536
|
+
};
|
|
537
|
+
});
|
|
538
|
+
// ═══════════════════════════════════════
|
|
539
|
+
// TOOL: verify_issuer
|
|
540
|
+
// ═══════════════════════════════════════
|
|
541
|
+
server.tool("verify_issuer", "Verify that a passport was officially issued by AEOESS. Checks the issuer countersignature against the published AEOESS public key. Returns false for self-signed passports.", {
|
|
542
|
+
passport: z.object({
|
|
543
|
+
passport: z.any(),
|
|
544
|
+
signature: z.string(),
|
|
545
|
+
signedAt: z.string(),
|
|
546
|
+
issuerSignature: z.object({
|
|
547
|
+
issuerId: z.string(),
|
|
548
|
+
issuerPublicKey: z.string(),
|
|
549
|
+
signature: z.string(),
|
|
550
|
+
signedAt: z.string(),
|
|
551
|
+
}).optional(),
|
|
552
|
+
}).describe("The signed passport object to verify"),
|
|
553
|
+
}, async (args) => {
|
|
554
|
+
const sp = args.passport;
|
|
555
|
+
const hasIssuerSig = isIssuerVerified(sp);
|
|
556
|
+
const isValid = hasIssuerSig ? verifyIssuerSignature(sp, AEOESS_ISSUER_PUBLIC_KEY) : false;
|
|
557
|
+
return {
|
|
558
|
+
content: [{
|
|
559
|
+
type: "text",
|
|
560
|
+
text: JSON.stringify({
|
|
561
|
+
verified: isValid,
|
|
562
|
+
hasIssuerSignature: hasIssuerSig,
|
|
563
|
+
issuerId: sp.issuerSignature?.issuerId || null,
|
|
564
|
+
issuerPublicKey: AEOESS_ISSUER_PUBLIC_KEY,
|
|
565
|
+
agentId: sp.passport?.agentId || null,
|
|
566
|
+
note: isValid
|
|
567
|
+
? "This passport was officially issued by AEOESS."
|
|
568
|
+
: hasIssuerSig
|
|
569
|
+
? "Passport has an issuer signature but it does NOT match AEOESS. Do not trust."
|
|
570
|
+
: "This passport is self-signed. It was NOT issued through official AEOESS infrastructure.",
|
|
521
571
|
}, null, 2),
|
|
522
572
|
}],
|
|
523
573
|
};
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-passport-system-mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.18.0",
|
|
4
4
|
"mcpName": "io.github.aeoess/agent-passport-mcp",
|
|
5
|
-
"description": "MCP server for the Agent Passport System —
|
|
5
|
+
"description": "MCP server for the Agent Passport System — enforcement infrastructure for the agent economy. 122 tools across 94 modules. Policy eval <2ms. Identity, delegation, reputation, enforcement, feeless Nano wallet, commerce.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
8
|
"agent-passport-system-mcp": "./build/bin.js",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"homepage": "https://github.com/aeoess/agent-passport-mcp",
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
52
|
-
"agent-passport-system": "^1.
|
|
52
|
+
"agent-passport-system": "^1.29.0",
|
|
53
53
|
"zod": "^3.25.76"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|