agent-passport-system-mcp 2.19.1 → 2.20.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 CHANGED
@@ -10,7 +10,7 @@ MCP server for the [Agent Passport System](https://github.com/aeoess/agent-passp
10
10
 
11
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
- **125 tools** across 63 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.
13
+ **125 tools** across 96 modules (64 core + 32 v2 constitutional governance). 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
 
@@ -61,7 +61,7 @@ Or for remote SSE:
61
61
  ```
62
62
  </details>
63
63
 
64
- ## Tools (63)
64
+ ## Tools (125)
65
65
 
66
66
  ### Identity (Layer 1) — 5 tools
67
67
 
@@ -208,8 +208,8 @@ Layer 1 — Agent Passport Protocol (Ed25519 identity)
208
208
 
209
209
  ## Links
210
210
 
211
- - npm SDK: [agent-passport-system](https://www.npmjs.com/package/agent-passport-system) (v1.29.2, 1929 tests)
212
- - Python SDK: [agent-passport-system](https://pypi.org/project/agent-passport-system/) (v0.5.1)
211
+ - npm SDK: [agent-passport-system](https://www.npmjs.com/package/agent-passport-system) (v1.33.0, 2230 tests)
212
+ - Python SDK: [agent-passport-system](https://pypi.org/project/agent-passport-system/) (v0.8.0)
213
213
  - Paper (Protocol): [doi.org/10.5281/zenodo.18749779](https://doi.org/10.5281/zenodo.18749779)
214
214
  - Paper (Faceted Narrowing): [doi.org/10.5281/zenodo.19260073](https://doi.org/10.5281/zenodo.19260073)
215
215
  - Docs: [aeoess.com/llms-full.txt](https://aeoess.com/llms-full.txt)
package/build/index.js CHANGED
@@ -52,7 +52,9 @@ requestV2Migration,
52
52
  // v2: Attestation
53
53
  createV2Attestation, assessV2AttestationQuality, } from "agent-passport-system";
54
54
  // Agent Attestation Architecture (Phase 1 — Consilium Build)
55
- import { createIssuanceContext, bindAttestation, createEmptyEvidenceRecord, PASSPORT_GRADE_LABELS, } from "agent-passport-system";
55
+ import { createIssuanceContext, bindAttestation, createEmptyEvidenceRecord, PASSPORT_GRADE_LABELS,
56
+ // v1.33.0 — action_ref + freshness + evidence-based grade
57
+ computeActionRef, isEvidenceFresh, computeEvidenceAge, classifyEvidenceQuality, evidenceQualityToGrade, } from "agent-passport-system";
56
58
  // Data Governance (Modules 36A, 38, 39 + Enforcement Gate + Training Attribution)
57
59
  import { registerSelfAttestedSource, createContributionLedger, queryContributions, getSourceMetrics, getAgentDataFootprint, generateSettlement, verifySettlement, generateDataComplianceReport, DataEnforcementGate, createTrainingAttribution, verifyTrainingAttribution, createTrainingLedger, recordTrainingAttribution, getModelDataSources, } from "agent-passport-system";
58
60
  // Data Lifecycle Governance (Modules 43+)
@@ -4225,6 +4227,55 @@ server.tool("apply_reputation_downgrade", "Apply import policy downgrade to a fo
4225
4227
  const result = applyReputationDowngrade(rep, policy);
4226
4228
  return { content: [{ type: "text", text: `🌐 Reputation Downgrade\n\nAccepted: ${result.accepted}\nOriginal tier: ${args.attested_tier} → Effective: ${result.effectiveTier}\nOriginal diversity: ${args.attested_diversity_score} → Effective: ${result.effectiveDiversity.toFixed(2)}\nDowngrade ratio: ${args.downgrade_ratio}` }] };
4227
4229
  });
4230
+ // ═══════════════════════════════════════
4231
+ // v1.33.0 — action_ref + freshness + evidence-based grade
4232
+ // ═══════════════════════════════════════
4233
+ server.tool("compute_action_ref", "Compute content-addressed request identity (SHA-256 of agentId + actionType + scope + normalized timestamp). Two receipts with the same action_ref describe the same request.", {
4234
+ agent_id: z.string(),
4235
+ action_type: z.string(),
4236
+ scope_required: z.array(z.string()),
4237
+ timestamp: z.string().optional().describe("ISO 8601 timestamp; defaults to now"),
4238
+ }, async (args) => {
4239
+ const intent = {
4240
+ agentId: args.agent_id,
4241
+ action: { type: args.action_type, scopeRequired: args.scope_required },
4242
+ createdAt: args.timestamp ?? new Date().toISOString(),
4243
+ };
4244
+ const ref = computeActionRef(intent);
4245
+ return { content: [{ type: "text", text: `🔗 action_ref: ${ref}\n\nAgent: ${args.agent_id}\nType: ${args.action_type}\nScope: ${args.scope_required.join(', ')}\nTimestamp: ${intent.createdAt}` }] };
4246
+ });
4247
+ server.tool("is_evidence_fresh", "Check whether typed attestation evidence is still fresh. rotating: ttl required; snapshot: maxAge optional; static: always fresh.", {
4248
+ type: z.enum(['rotating', 'snapshot', 'static']),
4249
+ valid_at: z.string().describe("ISO 8601 timestamp evidence was produced"),
4250
+ ttl: z.number().optional().describe("Seconds (required for rotating)"),
4251
+ max_age: z.number().optional().describe("Seconds (optional for snapshot)"),
4252
+ now: z.string().optional().describe("ISO 8601 override for current time"),
4253
+ }, async (args) => {
4254
+ const freshness = { type: args.type, validAt: args.valid_at };
4255
+ if (args.ttl !== undefined)
4256
+ freshness.ttl = args.ttl;
4257
+ if (args.max_age !== undefined)
4258
+ freshness.maxAge = args.max_age;
4259
+ const nowDate = args.now ? new Date(args.now) : undefined;
4260
+ const fresh = isEvidenceFresh(freshness, nowDate);
4261
+ const ageSec = computeEvidenceAge(freshness, nowDate);
4262
+ return { content: [{ type: "text", text: `${fresh ? '✅' : '❌'} Evidence fresh: ${fresh}\n\nType: ${args.type}\nValid at: ${args.valid_at}\nAge: ${ageSec}s${args.ttl !== undefined ? `\nTTL: ${args.ttl}s` : ''}${args.max_age !== undefined ? `\nMax age: ${args.max_age}s` : ''}` }] };
4263
+ });
4264
+ server.tool("classify_evidence_quality", "Classify attestation evidence quality (none / issuer_vouched / infrastructure / principal_bound) and return the corresponding grade (0-3).", {
4265
+ method: z.string().optional().describe("Attestation method (e.g. 'spiffe')"),
4266
+ has_issuer_signature: z.boolean().optional(),
4267
+ has_principal_binding: z.boolean().optional(),
4268
+ evidence: z.record(z.any()).optional().describe("Evidence object (checked for known infrastructure keys)"),
4269
+ }, async (args) => {
4270
+ const quality = classifyEvidenceQuality({
4271
+ method: args.method,
4272
+ hasIssuerSignature: args.has_issuer_signature,
4273
+ hasPrincipalBinding: args.has_principal_binding,
4274
+ evidence: args.evidence,
4275
+ });
4276
+ const grade = evidenceQualityToGrade(quality);
4277
+ return { content: [{ type: "text", text: `🎖️ Evidence Quality: ${quality}\nGrade: ${grade}\n\nInputs:\n method: ${args.method ?? 'none'}\n issuerSignature: ${args.has_issuer_signature ?? false}\n principalBinding: ${args.has_principal_binding ?? false}\n evidence keys: ${args.evidence ? Object.keys(args.evidence).join(', ') || '(empty)' : '(none)'}` }] };
4278
+ });
4228
4279
  server.prompt("coordination_role", "Get instructions for your assigned coordination role", {}, async () => {
4229
4280
  const role = state.agentRole || 'default';
4230
4281
  const instructions = ROLE_PROMPTS[role] || ROLE_PROMPTS['default'];
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "agent-passport-system-mcp",
3
- "version": "2.19.1",
3
+ "version": "2.20.0",
4
4
  "mcpName": "io.github.aeoess/agent-passport-mcp",
5
- "description": "MCP server for the Agent Passport System — enforcement infrastructure for the agent economy. 125 tools across 95 modules. Policy eval <2ms. Identity, delegation, reputation, enforcement, attestation, feeless Nano wallet, commerce.",
5
+ "description": "MCP server for the Agent Passport System — enforcement infrastructure for the agent economy. 128 tools across 103 modules. Policy eval <2ms. Identity, delegation, reputation, enforcement, attestation, 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.29.1",
52
+ "agent-passport-system": "^1.33.0",
53
53
  "zod": "^3.25.76"
54
54
  },
55
55
  "devDependencies": {