agent-passport-system-mcp 2.24.0 → 2.25.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 +3 -3
- package/build/index.js +113 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -12,13 +12,13 @@ Enforcement and accountability layer for AI agents. Bring your own identity. 20
|
|
|
12
12
|
APS_PROFILE=essential npx agent-passport-system-mcp
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
`essential` is the default profile — the
|
|
15
|
+
`essential` is the default profile — the 149 tools 90% of integrations need. Set `APS_PROFILE=full` for all 149 tools.
|
|
16
16
|
|
|
17
17
|
Available profiles: essential (default), identity, governance, coordination, commerce, data, gateway, comms, minimal, full.
|
|
18
18
|
|
|
19
19
|
> **For AI agents:** 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).
|
|
20
20
|
|
|
21
|
-
Works with any MCP client: Claude Desktop, Claude Code, Cursor, Windsurf, and more. Full surface area under `APS_PROFILE=full`:
|
|
21
|
+
Works with any MCP client: Claude Desktop, Claude Code, Cursor, Windsurf, and more. Full surface area under `APS_PROFILE=full`: 149 tools across 103 modules (71 core + 32 v2 constitutional governance). Independently cited by [PDR in Production (Nanook & Gerundium, UBC)](https://doi.org/10.5281/zenodo.19323172).
|
|
22
22
|
|
|
23
23
|
## Quick Start
|
|
24
24
|
|
|
@@ -216,7 +216,7 @@ Layer 1 — Agent Passport Protocol (Ed25519 identity)
|
|
|
216
216
|
|
|
217
217
|
## Links
|
|
218
218
|
|
|
219
|
-
- npm SDK: [agent-passport-system](https://www.npmjs.com/package/agent-passport-system) (v1.
|
|
219
|
+
- npm SDK: [agent-passport-system](https://www.npmjs.com/package/agent-passport-system) (v1.44.0, 2910 tests)
|
|
220
220
|
- Python SDK: [agent-passport-system](https://pypi.org/project/agent-passport-system/) (v0.8.0)
|
|
221
221
|
- Paper (Protocol): [doi.org/10.5281/zenodo.18749779](https://doi.org/10.5281/zenodo.18749779)
|
|
222
222
|
- Paper (Faceted Narrowing): [doi.org/10.5281/zenodo.19260073](https://doi.org/10.5281/zenodo.19260073)
|
package/build/index.js
CHANGED
|
@@ -64,7 +64,9 @@ import { createDerivationReceipt, resolveExtendedLineage, evaluateRevocationImpa
|
|
|
64
64
|
// Rome-Complete: Charter, Approval, Time, Reserve, Federation
|
|
65
65
|
import { createCharter, signCharter, verifyCharter, evaluateThreshold, createApprovalRequest, addApprovalSignature, createHybridTimestamp, compareTimestamps, validateTemporalRights, createReserveAttestation, vouchReputation, applyReputationDowngrade,
|
|
66
66
|
// v2 boundary primitives (AttributionConsent, ProvisionalStatement, HumanEscalationFlag)
|
|
67
|
-
createAttributionReceipt, signAttributionConsent, verifyAttributionConsent, checkArtifactCitations, receiptCore, createProvisional, promoteStatement, verifyPromotion, withdrawProvisional, withdrawalPayload, isBinding, checkEscalationRequired, requestOwnerConfirmation, recordOwnerConfirmation,
|
|
67
|
+
createAttributionReceipt, signAttributionConsent, verifyAttributionConsent, checkArtifactCitations, receiptCore, createProvisional, promoteStatement, verifyPromotion, withdrawProvisional, withdrawalPayload, isBinding, checkEscalationRequired, requestOwnerConfirmation, recordOwnerConfirmation,
|
|
68
|
+
// Attribution Primitive (unified four-axis signed Merkle receipt)
|
|
69
|
+
computeAttributionActionRef, constructAttributionPrimitive, projectAttribution, verifyAttributionProjection, verifyAttributionPrimitive, checkProjectionConsistency, } from "agent-passport-system";
|
|
68
70
|
// ═══════════════════════════════════════
|
|
69
71
|
// State Management
|
|
70
72
|
// ═══════════════════════════════════════
|
|
@@ -649,6 +651,13 @@ const TOOL_SCOPE_MAP = {
|
|
|
649
651
|
'aps_withdraw_provisional': 'coordination',
|
|
650
652
|
'aps_check_escalation_required': 'delegation',
|
|
651
653
|
'aps_record_owner_confirmation': 'delegation',
|
|
654
|
+
// Attribution Primitive (unified four-axis signed Merkle receipt)
|
|
655
|
+
'aps_construct_attribution_primitive': 'governance',
|
|
656
|
+
'aps_project_attribution': 'governance',
|
|
657
|
+
'aps_verify_attribution_projection': 'governance',
|
|
658
|
+
'aps_verify_attribution_primitive': 'governance',
|
|
659
|
+
'aps_check_projection_consistency': 'governance',
|
|
660
|
+
'aps_compute_attribution_action_ref': 'identity',
|
|
652
661
|
};
|
|
653
662
|
// ═══════════════════════════════════════
|
|
654
663
|
// TOOL: list_profiles
|
|
@@ -4738,6 +4747,109 @@ server.tool("aps_record_owner_confirmation", "Escalation boundary: owner signs a
|
|
|
4738
4747
|
return { content: [{ type: "text", text: safeError("recordOwnerConfirmation failed", e) }], isError: true };
|
|
4739
4748
|
}
|
|
4740
4749
|
});
|
|
4750
|
+
// ═══════════════════════════════════════
|
|
4751
|
+
// Attribution Primitive — unified four-axis signed Merkle receipt
|
|
4752
|
+
// Spec: ATTRIBUTION-PRIMITIVE-v1.1.md. One signed object per action with
|
|
4753
|
+
// four axis projections (D, P, G, C) that verify independently.
|
|
4754
|
+
// ═══════════════════════════════════════
|
|
4755
|
+
server.tool("aps_construct_attribution_primitive", "Build and sign a four-axis AttributionPrimitive for an action. Axes: D (data sources), P (protocol modules), G (delegation chain), C (compute providers). Returns the complete signed object.", {
|
|
4756
|
+
action: z.object({
|
|
4757
|
+
agentId: z.string(),
|
|
4758
|
+
actionType: z.string(),
|
|
4759
|
+
params: z.record(z.any()),
|
|
4760
|
+
nonce: z.string(),
|
|
4761
|
+
}).describe("Action identity tuple; the action_ref is derived as sha256(canonical(this))"),
|
|
4762
|
+
axes: z.object({
|
|
4763
|
+
D: z.array(z.any()),
|
|
4764
|
+
P: z.array(z.any()),
|
|
4765
|
+
G: z.array(z.any()),
|
|
4766
|
+
C: z.array(z.any()),
|
|
4767
|
+
}).describe("Four-axis content. See spec §1.2 for entry shapes per axis."),
|
|
4768
|
+
issuer: z.string().describe("Issuer DID (gateway or agent producing the receipt)"),
|
|
4769
|
+
issuer_private_key: z.string().describe("Ed25519 private key hex that signs the envelope"),
|
|
4770
|
+
timestamp: z.string().optional().describe("ISO-8601 UTC with ms precision + Z (§2.5). Defaults to now()."),
|
|
4771
|
+
}, async (args) => {
|
|
4772
|
+
try {
|
|
4773
|
+
const primitive = constructAttributionPrimitive({
|
|
4774
|
+
action: args.action,
|
|
4775
|
+
axes: args.axes,
|
|
4776
|
+
issuer: args.issuer,
|
|
4777
|
+
issuerPrivateKey: args.issuer_private_key,
|
|
4778
|
+
timestamp: args.timestamp,
|
|
4779
|
+
});
|
|
4780
|
+
return { content: [{ type: "text", text: JSON.stringify(primitive, null, 2) }] };
|
|
4781
|
+
}
|
|
4782
|
+
catch (e) {
|
|
4783
|
+
return { content: [{ type: "text", text: safeError("constructAttributionPrimitive failed", e) }], isError: true };
|
|
4784
|
+
}
|
|
4785
|
+
});
|
|
4786
|
+
server.tool("aps_project_attribution", "Extract a single-axis projection from an AttributionPrimitive. The projection carries the axis content plus a two-hop Merkle path that lets a downstream verifier reconstruct the signed root without seeing the other three axes. axis: 'D' | 'P' | 'G' | 'C'.", {
|
|
4787
|
+
primitive: z.any().describe("An AttributionPrimitive (from aps_construct_attribution_primitive)"),
|
|
4788
|
+
axis: z.enum(["D", "P", "G", "C"]).describe("Axis to project"),
|
|
4789
|
+
}, async (args) => {
|
|
4790
|
+
try {
|
|
4791
|
+
const projection = projectAttribution(args.primitive, args.axis);
|
|
4792
|
+
return { content: [{ type: "text", text: JSON.stringify(projection, null, 2) }] };
|
|
4793
|
+
}
|
|
4794
|
+
catch (e) {
|
|
4795
|
+
return { content: [{ type: "text", text: safeError("projectAttribution failed", e) }], isError: true };
|
|
4796
|
+
}
|
|
4797
|
+
});
|
|
4798
|
+
server.tool("aps_verify_attribution_projection", "Verify a single-axis AttributionProjection under the issuer's Ed25519 public key. Returns {valid: true} or {valid: false, reason: 'INVALID_AXIS_TAG'|'MERKLE_MISMATCH'|'SIGNATURE_INVALID'|'MALFORMED'}. Verification is purely local — no other axes required.", {
|
|
4799
|
+
projection: z.any().describe("An AttributionProjection (from aps_project_attribution)"),
|
|
4800
|
+
issuer_public_key: z.string().describe("Issuer Ed25519 public key hex"),
|
|
4801
|
+
}, async (args) => {
|
|
4802
|
+
try {
|
|
4803
|
+
const result = verifyAttributionProjection(args.projection, args.issuer_public_key);
|
|
4804
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
4805
|
+
}
|
|
4806
|
+
catch (e) {
|
|
4807
|
+
return { content: [{ type: "text", text: safeError("verifyAttributionProjection failed", e) }], isError: true };
|
|
4808
|
+
}
|
|
4809
|
+
});
|
|
4810
|
+
server.tool("aps_verify_attribution_primitive", "End-to-end verify of a full AttributionPrimitive: constructs projections for all four axes and verifies each one. Useful as a post-construction sanity check or for verifying a primitive received from a peer.", {
|
|
4811
|
+
primitive: z.any().describe("An AttributionPrimitive"),
|
|
4812
|
+
issuer_public_key: z.string().describe("Issuer Ed25519 public key hex"),
|
|
4813
|
+
}, async (args) => {
|
|
4814
|
+
try {
|
|
4815
|
+
const result = verifyAttributionPrimitive(args.primitive, args.issuer_public_key);
|
|
4816
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
4817
|
+
}
|
|
4818
|
+
catch (e) {
|
|
4819
|
+
return { content: [{ type: "text", text: safeError("verifyAttributionPrimitive failed", e) }], isError: true };
|
|
4820
|
+
}
|
|
4821
|
+
});
|
|
4822
|
+
server.tool("aps_check_projection_consistency", "Cross-projection consistency check (§2.4): given two projections, confirm they originate from the same signed receipt. Returns {same_receipt: true} or {same_receipt: false, reason: 'DIFFERENT_ACTIONS'|'DIFFERENT_RECEIPTS'|'DIFFERENT_SIGNATURES'|'METADATA_MISMATCH'}.", {
|
|
4823
|
+
projection_a: z.any().describe("First AttributionProjection"),
|
|
4824
|
+
projection_b: z.any().describe("Second AttributionProjection"),
|
|
4825
|
+
}, async (args) => {
|
|
4826
|
+
try {
|
|
4827
|
+
const result = checkProjectionConsistency(args.projection_a, args.projection_b);
|
|
4828
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
4829
|
+
}
|
|
4830
|
+
catch (e) {
|
|
4831
|
+
return { content: [{ type: "text", text: safeError("checkProjectionConsistency failed", e) }], isError: true };
|
|
4832
|
+
}
|
|
4833
|
+
});
|
|
4834
|
+
server.tool("aps_compute_attribution_action_ref", "Derive the action_ref (hex sha256) for an action tuple. action_ref is the content-addressed anchor that all four axis projections bind to. Useful for indexing primitives by action without constructing the full primitive.", {
|
|
4835
|
+
agentId: z.string(),
|
|
4836
|
+
actionType: z.string(),
|
|
4837
|
+
params: z.record(z.any()),
|
|
4838
|
+
nonce: z.string(),
|
|
4839
|
+
}, async (args) => {
|
|
4840
|
+
try {
|
|
4841
|
+
const action_ref = computeAttributionActionRef({
|
|
4842
|
+
agentId: args.agentId,
|
|
4843
|
+
actionType: args.actionType,
|
|
4844
|
+
params: args.params,
|
|
4845
|
+
nonce: args.nonce,
|
|
4846
|
+
});
|
|
4847
|
+
return { content: [{ type: "text", text: JSON.stringify({ action_ref }, null, 2) }] };
|
|
4848
|
+
}
|
|
4849
|
+
catch (e) {
|
|
4850
|
+
return { content: [{ type: "text", text: safeError("computeAttributionActionRef failed", e) }], isError: true };
|
|
4851
|
+
}
|
|
4852
|
+
});
|
|
4741
4853
|
server.prompt("coordination_role", "Get instructions for your assigned coordination role", {}, async () => {
|
|
4742
4854
|
const role = state.agentRole || 'default';
|
|
4743
4855
|
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.25.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. 149 tools across 122 modules. Policy eval <2ms. Identity, delegation, reputation, enforcement, attestation, feeless Nano wallet, commerce, attribution primitive. Tracks SDK v1.44.0 (2,910 tests).",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
8
|
"agent-passport-system-mcp": "./build/bin.js",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"homepage": "https://github.com/aeoess/agent-passport-mcp",
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
53
|
-
"agent-passport-system": "^1.
|
|
53
|
+
"agent-passport-system": "^1.44.0",
|
|
54
54
|
"zod": "^3.25.76"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|