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 +4 -4
- package/build/index.js +52 -1
- package/package.json +3 -3
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
|
|
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 (
|
|
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.
|
|
212
|
-
- Python SDK: [agent-passport-system](https://pypi.org/project/agent-passport-system/) (v0.
|
|
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,
|
|
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.
|
|
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.
|
|
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.
|
|
52
|
+
"agent-passport-system": "^1.33.0",
|
|
53
53
|
"zod": "^3.25.76"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|