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.
Files changed (3) hide show
  1. package/README.md +13 -11
  2. package/build/index.js +59 -9
  3. 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) — governance infrastructure for the agent economy. Identity, delegation, reputation, enforcement, commerce, institutional governance.
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
- **121 tools** across 57 core modules + 32 v2 constitutional governance modules (separation of powers, circuit breakers, approval fatigue detection, and more). Works with any MCP client: Claude Desktop, Cursor, Windsurf, and more.
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. 121 tools ready.
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 (61)
64
+ ## Tools (63)
65
65
 
66
- ### Identity (Layer 1) — 3 tools
66
+ ### Identity (Layer 1) — 5 tools
67
67
 
68
68
  | Tool | Description |
69
69
  |------|-------------|
70
- | `generate_keys` | Generate Ed25959 keypair for agent identity |
71
- | `join_social_contract` | Create agent passport with values attestation and beneficiary |
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 Ed25959 keypair |
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 (Ed25959 identity)
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.28.0, 1707 tests)
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' ? '120' : profileFilter?.size || '120'} tools)\n\n${lines.join('\n')}\n\n• full (120 tools): All tools exposed (default)` }] };
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: agent.passport,
515
- publicKey: agent.passport.passport.publicKey,
523
+ passport: passport,
524
+ publicKey: passport.passport.publicKey,
516
525
  privateKey: agent.keyPair.privateKey,
517
- agentId: agent.passport.passport.agentId,
526
+ agentId: passport.passport.agentId,
518
527
  attestation: agent.attestation || null,
519
- did: `did:aps:${agent.passport.passport.publicKey}`,
520
- note: "Store the privateKey securely. Use publicKey and agentId for identification. The passport object is signed and verifiable by anyone.",
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.17.0",
3
+ "version": "2.18.0",
4
4
  "mcpName": "io.github.aeoess/agent-passport-mcp",
5
- "description": "MCP server for the Agent Passport System — governance infrastructure for the agent economy. 121 tools across 86 modules. Identity, delegation, reputation, enforcement, commerce.",
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.28.0",
52
+ "agent-passport-system": "^1.29.0",
53
53
  "zod": "^3.25.76"
54
54
  },
55
55
  "devDependencies": {