@attesso/mcp 1.3.1 → 2.0.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Attesso
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,25 +1,11 @@
1
1
  # @attesso/mcp
2
2
 
3
- Model Context Protocol server for Attesso settlement operations. Works with any MCP-compatible AI assistant:
3
+ MCP server for Attesso authorization and safety tools. Works with Claude Desktop and any MCP-compatible client.
4
4
 
5
- - Claude Desktop
6
- - Cursor
7
- - Windsurf
8
- - Continue
9
- - Zed
10
- - Cline
11
- - And more
12
-
13
- ## Installation
14
-
15
- ```bash
16
- npm install @attesso/mcp
17
- ```
5
+ Attesso doesn't touch money — it authorizes, validates, revokes, and audits. This MCP server lets AI agents check their spending authorization and audit trail.
18
6
 
19
7
  ## Setup
20
8
 
21
- Add to your MCP client's configuration. For Claude Desktop (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
22
-
23
9
  ```json
24
10
  {
25
11
  "mcpServers": {
@@ -34,25 +20,20 @@ Add to your MCP client's configuration. For Claude Desktop (`~/Library/Applicati
34
20
  }
35
21
  ```
36
22
 
37
- Restart Claude Desktop after updating the configuration.
38
-
39
23
  ## Available Tools
40
24
 
41
25
  ### Read Operations
42
26
 
43
27
  | Tool | Description |
44
28
  |------|-------------|
45
- | `attesso_get_mandate` | Get mandate details (status, limits, restrictions, remaining spend) |
46
- | `attesso_get_payment` | Check payment status and details |
47
- | `attesso_get_passport` | Get passport token for merchant authentication |
29
+ | `attesso_get_mandate` | Get mandate details: spending limit, status, restrictions |
30
+ | `attesso_get_audit_trail` | Full liability chain, biometric proof, and audit trail |
48
31
 
49
32
  ### Write Operations
50
33
 
51
34
  | Tool | Description |
52
35
  |------|-------------|
53
- | `attesso_execute_payment` | Execute a payment against a mandate |
54
- | `attesso_capture` | Capture an authorized payment with final amount |
55
- | `attesso_cancel` | Cancel authorization and release held funds |
36
+ | `attesso_revoke_mandate` | Revoke mandate, atomically destroy all derived instruments |
56
37
 
57
38
  ## Environment Variables
58
39
 
@@ -71,74 +52,24 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
71
52
 
72
53
  const server = createAttessoMCPServer({
73
54
  apiKey: process.env.ATTESSO_API_KEY,
74
- mandateId: 'mandate_xyz', // Optional: pre-configure mandate
75
- readOnlyMode: false, // Optional: disable write operations
55
+ mandateId: 'mandate_xyz',
56
+ readOnlyMode: false,
76
57
  });
77
58
 
78
59
  const transport = new StdioServerTransport();
79
60
  await server.connect(transport);
80
61
  ```
81
62
 
82
- ## Security Notes
83
-
84
- 1. **API Keys**: Only use restricted keys (`rk_test_*` for development, `rk_live_*` for production) with MCP. Never use management keys (`sk_mgmt_*`).
85
-
86
- 2. **Mandate Creation**: Mandates require user biometric authentication (FaceID/TouchID) and cannot be created via MCP. The user must pre-authorize a mandate before the AI assistant can use it.
87
-
88
- 3. **Read-Only Mode**: For monitoring dashboards or status checks, enable read-only mode to prevent accidental payments:
89
- ```json
90
- {
91
- "env": {
92
- "ATTESSO_API_KEY": "rk_test_...",
93
- "ATTESSO_READ_ONLY": "true"
94
- }
95
- }
96
- ```
97
-
98
- 4. **Idempotency**: Payment operations automatically generate idempotency keys for safe retries.
99
-
100
- ## Example Conversation
101
-
102
- **User**: What's the status of mandate_abc123?
103
-
104
- **Claude** (calls `attesso_get_mandate`):
105
- ```json
106
- {
107
- "id": "mandate_abc123",
108
- "status": "active",
109
- "spendingLimit": 50000,
110
- "amountSpent": 0,
111
- "currency": "USD"
112
- }
113
- ```
114
-
115
- **Claude**: Mandate mandate_abc123 is active with $500.00 available to spend.
63
+ ## Security
116
64
 
117
- ---
118
-
119
- **User**: Book me a flight to NYC for $347
120
-
121
- **Claude** (calls `attesso_execute_payment`):
122
- ```json
123
- {
124
- "id": "pay_xyz789",
125
- "mandateId": "mandate_abc123",
126
- "amount": 34700,
127
- "merchant": "United Airlines",
128
- "status": "completed"
129
- }
130
- ```
131
-
132
- **Claude**: Done! I've charged $347.00 to United Airlines. Payment ID: pay_xyz789.
65
+ - **API Keys**: Only restricted keys (`rk_test_*`, `rk_live_*`). Never management keys.
66
+ - **Mandate creation requires biometric auth** — cannot be done via MCP. The user must pre-authorize.
67
+ - **Read-only mode**: For monitoring without revocation capability.
133
68
 
134
69
  ## Related Packages
135
70
 
136
- - [`@attesso/sdk`](https://www.npmjs.com/package/@attesso/sdk) - API client with Vercel AI SDK integration
137
- - [`@attesso/types`](https://www.npmjs.com/package/@attesso/types) - TypeScript types
138
-
139
- ## Documentation
140
-
141
- Full documentation: https://www.attesso.com/docs
71
+ - [`@attesso/sdk`](https://www.npmjs.com/package/@attesso/sdk) API client with Vercel AI SDK integration
72
+ - [`@attesso/types`](https://www.npmjs.com/package/@attesso/types) TypeScript types
142
73
 
143
74
  ## License
144
75
 
@@ -11,33 +11,14 @@ export declare const schemas: {
11
11
  }, {
12
12
  mandateId: string;
13
13
  }>;
14
- issueCard: z.ZodObject<{
14
+ revokeMandate: z.ZodObject<{
15
15
  mandateId: z.ZodString;
16
- amount: z.ZodNumber;
17
- ttlSeconds: z.ZodOptional<z.ZodNumber>;
18
- allowedMccs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
19
- blockedMccs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
20
16
  }, "strip", z.ZodTypeAny, {
21
17
  mandateId: string;
22
- amount: number;
23
- ttlSeconds?: number | undefined;
24
- allowedMccs?: string[] | undefined;
25
- blockedMccs?: string[] | undefined;
26
18
  }, {
27
19
  mandateId: string;
28
- amount: number;
29
- ttlSeconds?: number | undefined;
30
- allowedMccs?: string[] | undefined;
31
- blockedMccs?: string[] | undefined;
32
20
  }>;
33
- getCard: z.ZodObject<{
34
- cardId: z.ZodString;
35
- }, "strip", z.ZodTypeAny, {
36
- cardId: string;
37
- }, {
38
- cardId: string;
39
- }>;
40
- revokeMandate: z.ZodObject<{
21
+ getAuditTrail: z.ZodObject<{
41
22
  mandateId: z.ZodString;
42
23
  }, "strip", z.ZodTypeAny, {
43
24
  mandateId: string;
@@ -46,7 +27,6 @@ export declare const schemas: {
46
27
  }>;
47
28
  };
48
29
  export type GetMandateInput = z.infer<typeof schemas.getMandate>;
49
- export type IssueCardInput = z.infer<typeof schemas.issueCard>;
50
- export type GetCardInput = z.infer<typeof schemas.getCard>;
51
30
  export type RevokeMandateInput = z.infer<typeof schemas.revokeMandate>;
31
+ export type GetAuditTrailInput = z.infer<typeof schemas.getAuditTrail>;
52
32
  //# sourceMappingURL=schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;AACjE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;AAC/D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;CAYnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;AACjE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC;AACvE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC"}
@@ -7,18 +7,11 @@ export const schemas = {
7
7
  getMandate: z.object({
8
8
  mandateId: z.string().describe('The unique identifier of the mandate to retrieve'),
9
9
  }),
10
- issueCard: z.object({
11
- mandateId: z.string().describe('The mandate ID to issue an ephemeral card from'),
12
- amount: z.number().positive().describe('Amount in cents the agent wants to spend (e.g., 34700 for $347.00)'),
13
- ttlSeconds: z.number().int().min(60).max(900).optional().describe('Card time-to-live in seconds (60-900, default 300)'),
14
- allowedMccs: z.array(z.string()).optional().describe('Restrict card to these merchant category codes'),
15
- blockedMccs: z.array(z.string()).optional().describe('Block card from these merchant category codes'),
16
- }),
17
- getCard: z.object({
18
- cardId: z.string().describe('The unique identifier of the card to retrieve'),
19
- }),
20
10
  revokeMandate: z.object({
21
11
  mandateId: z.string().describe('The mandate ID to revoke'),
22
12
  }),
13
+ getAuditTrail: z.object({
14
+ mandateId: z.string().describe('The mandate ID to get the audit trail for'),
15
+ }),
23
16
  };
24
17
  //# sourceMappingURL=schemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;KACnF,CAAC;IAEF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;QAChF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;QAC5G,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QACvH,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;QACtG,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;KACtG,CAAC;IAEF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;KAC7E,CAAC;IAEF,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC;QACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAC3D,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;KACnF,CAAC;IAEF,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC;QACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAC3D,CAAC;IAEF,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC;QACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KAC5E,CAAC;CACH,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * MCP Server Factory for Attesso
3
3
  *
4
- * Creates an MCP server that exposes Attesso payment tools.
4
+ * Creates an MCP server that exposes Attesso authorization tools.
5
5
  * Used by Claude Desktop and other MCP-compatible AI assistants.
6
6
  */
7
7
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
@@ -19,12 +19,11 @@ export interface AttessoMCPServerConfig {
19
19
  /**
20
20
  * If provided, use this mandate ID for all operations.
21
21
  * Falls back to ATTESSO_MANDATE_ID env var.
22
- * Useful for pre-configured agents with a known mandate.
23
22
  */
24
23
  mandateId?: string;
25
24
  /**
26
- * If true, only expose read-only tools (get_mandate, get_card).
27
- * Write operations (issue_card, revoke_mandate) will not be available.
25
+ * If true, only expose read-only tools (get_mandate, get_audit_trail).
26
+ * Write operations (revoke_mandate) will not be available.
28
27
  * @default false
29
28
  */
30
29
  readOnlyMode?: boolean;
@@ -41,14 +40,6 @@ export interface AttessoMCPServerConfig {
41
40
  * const transport = new StdioServerTransport();
42
41
  * await server.connect(transport);
43
42
  * ```
44
- *
45
- * @example With configuration
46
- * ```typescript
47
- * const server = createAttessoMCPServer({
48
- * mandateId: 'mandate_xyz',
49
- * readOnlyMode: true,
50
- * });
51
- * ```
52
43
  */
53
44
  export declare function createAttessoMCPServer(config?: AttessoMCPServerConfig): Server;
54
45
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAoBnE,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,GAAE,sBAA2B,GAAG,MAAM,CAmIlF"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAmBnE,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,GAAE,sBAA2B,GAAG,MAAM,CAwFlF"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * MCP Server Factory for Attesso
3
3
  *
4
- * Creates an MCP server that exposes Attesso payment tools.
4
+ * Creates an MCP server that exposes Attesso authorization tools.
5
5
  * Used by Claude Desktop and other MCP-compatible AI assistants.
6
6
  */
7
7
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
@@ -20,18 +20,9 @@ import { getToolByName, getReadOnlyTools, getAllTools, } from './tools.js';
20
20
  * const transport = new StdioServerTransport();
21
21
  * await server.connect(transport);
22
22
  * ```
23
- *
24
- * @example With configuration
25
- * ```typescript
26
- * const server = createAttessoMCPServer({
27
- * mandateId: 'mandate_xyz',
28
- * readOnlyMode: true,
29
- * });
30
- * ```
31
23
  */
32
24
  export function createAttessoMCPServer(config = {}) {
33
25
  const apiKey = config.apiKey ?? process.env.ATTESSO_API_KEY;
34
- // Validate API key format (only restricted keys allowed for agents)
35
26
  if (apiKey && !apiKey.startsWith('rk_test_') && !apiKey.startsWith('rk_live_')) {
36
27
  console.error('Error: Attesso MCP server requires restricted keys (rk_test_* or rk_live_*)');
37
28
  }
@@ -41,7 +32,6 @@ export function createAttessoMCPServer(config = {}) {
41
32
  });
42
33
  const defaultMandateId = config.mandateId ?? process.env.ATTESSO_MANDATE_ID;
43
34
  const readOnlyMode = config.readOnlyMode ?? false;
44
- // Get tools based on mode
45
35
  const availableTools = readOnlyMode ? getReadOnlyTools() : getAllTools();
46
36
  const server = new Server({
47
37
  name: 'attesso',
@@ -51,7 +41,6 @@ export function createAttessoMCPServer(config = {}) {
51
41
  tools: {},
52
42
  },
53
43
  });
54
- // Handle list_tools request
55
44
  server.setRequestHandler(ListToolsRequestSchema, async () => {
56
45
  const tools = availableTools.map((tool) => ({
57
46
  name: tool.name,
@@ -60,61 +49,32 @@ export function createAttessoMCPServer(config = {}) {
60
49
  }));
61
50
  return { tools };
62
51
  });
63
- // Handle call_tool request
64
52
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
65
53
  const { name, arguments: args } = request.params;
66
54
  const toolDef = getToolByName(name);
67
55
  if (!toolDef) {
68
56
  return {
69
- content: [
70
- {
71
- type: 'text',
72
- text: JSON.stringify({ error: `Unknown tool: ${name}` }),
73
- },
74
- ],
57
+ content: [{ type: 'text', text: JSON.stringify({ error: `Unknown tool: ${name}` }) }],
75
58
  isError: true,
76
59
  };
77
60
  }
78
- // Check read-only mode
79
61
  if (readOnlyMode && toolDef.isWriteOperation) {
80
62
  return {
81
- content: [
82
- {
83
- type: 'text',
84
- text: JSON.stringify({
85
- error: 'Write operations are disabled in read-only mode',
86
- tool: name,
87
- }),
88
- },
89
- ],
63
+ content: [{ type: 'text', text: JSON.stringify({ error: 'Write operations are disabled in read-only mode', tool: name }) }],
90
64
  isError: true,
91
65
  };
92
66
  }
93
- // Validate input
94
67
  const parseResult = toolDef.zodSchema.safeParse(args);
95
68
  if (!parseResult.success) {
96
69
  return {
97
- content: [
98
- {
99
- type: 'text',
100
- text: JSON.stringify({
101
- error: 'Invalid input',
102
- details: parseResult.error.format(),
103
- }),
104
- },
105
- ],
70
+ content: [{ type: 'text', text: JSON.stringify({ error: 'Invalid input', details: parseResult.error.format() }) }],
106
71
  isError: true,
107
72
  };
108
73
  }
109
74
  try {
110
75
  const result = await executeToolCall(client, name, parseResult.data, defaultMandateId);
111
76
  return {
112
- content: [
113
- {
114
- type: 'text',
115
- text: JSON.stringify(result, null, 2),
116
- },
117
- ],
77
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
118
78
  };
119
79
  }
120
80
  catch (error) {
@@ -124,52 +84,36 @@ export function createAttessoMCPServer(config = {}) {
124
84
  ? { error: error.message }
125
85
  : { error: 'Unknown error' };
126
86
  return {
127
- content: [
128
- {
129
- type: 'text',
130
- text: JSON.stringify(errorMessage),
131
- },
132
- ],
87
+ content: [{ type: 'text', text: JSON.stringify(errorMessage) }],
133
88
  isError: true,
134
89
  };
135
90
  }
136
91
  });
137
92
  return server;
138
93
  }
139
- /**
140
- * Execute a tool call against the Attesso API.
141
- */
142
94
  async function executeToolCall(client, toolName, input, defaultMandateId) {
143
95
  switch (toolName) {
144
96
  case 'attesso_get_mandate': {
145
97
  const { mandateId } = input;
146
98
  const id = mandateId ?? defaultMandateId;
147
- if (!id) {
99
+ if (!id)
148
100
  throw new AttessoError('MANDATE_NOT_FOUND', 'mandateId is required');
149
- }
150
101
  return client.getMandate(id);
151
102
  }
152
- case 'attesso_issue_card': {
153
- const { mandateId, amount, ttlSeconds, allowedMccs, blockedMccs } = input;
103
+ case 'attesso_revoke_mandate': {
104
+ const { mandateId } = input;
154
105
  const id = mandateId ?? defaultMandateId;
155
- if (!id) {
106
+ if (!id)
156
107
  throw new AttessoError('MANDATE_NOT_FOUND', 'mandateId is required');
157
- }
158
- return client.issueCard(id, { amount, ttlSeconds, allowedMccs, blockedMccs });
108
+ await client.revokeMandate(id);
109
+ return { revoked: true };
159
110
  }
160
- case 'attesso_get_card': {
161
- const { cardId } = input;
162
- // Use the SDK's request method via a direct API call
163
- return client.request('GET', `/v1/cards/${cardId}`);
164
- }
165
- case 'attesso_revoke_mandate': {
111
+ case 'attesso_get_audit_trail': {
166
112
  const { mandateId } = input;
167
113
  const id = mandateId ?? defaultMandateId;
168
- if (!id) {
114
+ if (!id)
169
115
  throw new AttessoError('MANDATE_NOT_FOUND', 'mandateId is required');
170
- }
171
- // Use the SDK's request method via a direct API call
172
- return client.request('DELETE', `/v1/mandates/${id}`);
116
+ return client.getDisputeEvidence(id);
173
117
  }
174
118
  default:
175
119
  throw new Error(`Unknown tool: ${toolName}`);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
1
  /**
2
2
  * MCP Tool Definitions for Attesso
3
3
  *
4
- * Defines the 4 tools exposed via MCP:
4
+ * Defines the 3 tools exposed via MCP:
5
5
  * - attesso_get_mandate (read)
6
- * - attesso_issue_card (write)
7
- * - attesso_get_card (read)
8
6
  * - attesso_revoke_mandate (write)
7
+ * - attesso_get_audit_trail (read)
9
8
  */
10
9
  import { z } from 'zod';
11
10
  import { zodToJsonSchema } from 'zod-to-json-schema';
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;IAChD,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,eAAe,EAAE,cAAc,EA0C3C,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEtE;AAED,wBAAgB,gBAAgB,IAAI,cAAc,EAAE,CAEnD;AAED,wBAAgB,WAAW,IAAI,cAAc,EAAE,CAE9C"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;IAChD,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,eAAe,EAAE,cAAc,EA+B3C,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEtE;AAED,wBAAgB,gBAAgB,IAAI,cAAc,EAAE,CAEnD;AAED,wBAAgB,WAAW,IAAI,cAAc,EAAE,CAE9C"}
package/dist/src/tools.js CHANGED
@@ -1,11 +1,10 @@
1
1
  /**
2
2
  * MCP Tool Definitions for Attesso
3
3
  *
4
- * Defines the 4 tools exposed via MCP:
4
+ * Defines the 3 tools exposed via MCP:
5
5
  * - attesso_get_mandate (read)
6
- * - attesso_issue_card (write)
7
- * - attesso_get_card (read)
8
6
  * - attesso_revoke_mandate (write)
7
+ * - attesso_get_audit_trail (read)
9
8
  */
10
9
  import { zodToJsonSchema } from 'zod-to-json-schema';
11
10
  import { schemas } from './schemas.js';
@@ -14,35 +13,25 @@ export const toolDefinitions = [
14
13
  {
15
14
  name: 'attesso_get_mandate',
16
15
  description: 'Get details about a spending mandate including the spending limit, status, and restrictions. ' +
17
- 'Use this to check how much money is available before issuing a card.',
16
+ 'Use this to check what the user has authorized and what constraints apply.',
18
17
  inputSchema: zodToJsonSchema(schemas.getMandate, 'GetMandateInput'),
19
18
  zodSchema: schemas.getMandate,
20
19
  isWriteOperation: false,
21
20
  },
22
21
  {
23
- name: 'attesso_get_card',
24
- description: 'Get the status and details of an issued ephemeral card. ' +
25
- 'Use this to check if a card is still active or has been used.',
26
- inputSchema: zodToJsonSchema(schemas.getCard, 'GetCardInput'),
27
- zodSchema: schemas.getCard,
22
+ name: 'attesso_get_audit_trail',
23
+ description: 'Get the complete audit trail for a mandate including biometric proof, ' +
24
+ 'developer identity, agent actions, and revocation events. ' +
25
+ 'Use this to review what happened under a mandate or to resolve a dispute.',
26
+ inputSchema: zodToJsonSchema(schemas.getAuditTrail, 'GetAuditTrailInput'),
27
+ zodSchema: schemas.getAuditTrail,
28
28
  isWriteOperation: false,
29
29
  },
30
30
  // Write operations
31
- {
32
- name: 'attesso_issue_card',
33
- description: 'Issue an ephemeral virtual card from a standing mandate. ' +
34
- 'This auth-holds the user\'s payment method and creates a card with a TTL. ' +
35
- 'The card auto-destructs after use or when the TTL expires. ' +
36
- 'Amount must be in cents (e.g., 34700 for $347.00). ' +
37
- 'Only call this when you are ready to make a purchase.',
38
- inputSchema: zodToJsonSchema(schemas.issueCard, 'IssueCardInput'),
39
- zodSchema: schemas.issueCard,
40
- isWriteOperation: true,
41
- },
42
31
  {
43
32
  name: 'attesso_revoke_mandate',
44
- description: 'Revoke a mandate so it can no longer be used to issue cards. ' +
45
- 'Use this when the mandate is no longer needed.',
33
+ description: 'Revoke a mandate, atomically destroying all derived payment instruments ' +
34
+ 'across all processors. Use this when spending authorization is no longer needed.',
46
35
  inputSchema: zodToJsonSchema(schemas.revokeMandate, 'RevokeMandateInput'),
47
36
  zodSchema: schemas.revokeMandate,
48
37
  isWriteOperation: true,
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAUvC,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,kBAAkB;IAClB;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,+FAA+F;YAC/F,sEAAsE;QACxE,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,iBAAiB,CAAC;QACnE,SAAS,EAAE,OAAO,CAAC,UAAU;QAC7B,gBAAgB,EAAE,KAAK;KACxB;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,0DAA0D;YAC1D,+DAA+D;QACjE,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC;QAC7D,SAAS,EAAE,OAAO,CAAC,OAAO;QAC1B,gBAAgB,EAAE,KAAK;KACxB;IACD,mBAAmB;IACnB;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,2DAA2D;YAC3D,4EAA4E;YAC5E,6DAA6D;YAC7D,qDAAqD;YACrD,uDAAuD;QACzD,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC;QACjE,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,gBAAgB,EAAE,IAAI;KACvB;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,+DAA+D;YAC/D,gDAAgD;QAClD,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC;QACzE,SAAS,EAAE,OAAO,CAAC,aAAa;QAChC,gBAAgB,EAAE,IAAI;KACvB;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,eAAe,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAUvC,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,kBAAkB;IAClB;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,+FAA+F;YAC/F,4EAA4E;QAC9E,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,iBAAiB,CAAC;QACnE,SAAS,EAAE,OAAO,CAAC,UAAU;QAC7B,gBAAgB,EAAE,KAAK;KACxB;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EACT,wEAAwE;YACxE,4DAA4D;YAC5D,2EAA2E;QAC7E,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC;QACzE,SAAS,EAAE,OAAO,CAAC,aAAa;QAChC,gBAAgB,EAAE,KAAK;KACxB;IACD,mBAAmB;IACnB;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,0EAA0E;YAC1E,kFAAkF;QACpF,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC;QACzE,SAAS,EAAE,OAAO,CAAC,aAAa;QAChC,gBAAgB,EAAE,IAAI;KACvB;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,eAAe,CAAC;AACzB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@attesso/mcp",
3
- "version": "1.3.1",
4
- "description": "Attesso bindings for the Model Context Protocol.",
3
+ "version": "2.0.0",
4
+ "description": "Attesso MCP server. Authorization and safety tools for AI agents.",
5
5
  "author": "Attesso",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -34,8 +34,7 @@
34
34
  "scripts": {
35
35
  "build": "tsc",
36
36
  "dev": "tsc --watch",
37
- "clean": "rm -rf dist",
38
- "test": "vitest run"
37
+ "clean": "rm -rf dist"
39
38
  },
40
39
  "keywords": [
41
40
  "attesso",
@@ -43,15 +42,15 @@
43
42
  "model-context-protocol",
44
43
  "ai-agents",
45
44
  "mandates",
46
- "virtual-cards",
47
- "payments",
45
+ "authorization",
46
+ "safety",
48
47
  "claude",
49
48
  "llm"
50
49
  ],
51
50
  "dependencies": {
52
51
  "@attesso/sdk": "workspace:*",
53
52
  "@attesso/types": "workspace:*",
54
- "@modelcontextprotocol/sdk": "^1.25.0",
53
+ "@modelcontextprotocol/sdk": "^1.26.0",
55
54
  "zod-to-json-schema": "^3.23.0"
56
55
  },
57
56
  "peerDependencies": {
@@ -63,8 +62,8 @@
63
62
  }
64
63
  },
65
64
  "devDependencies": {
66
- "typescript": "^5.7.0",
67
- "vitest": "^2.1.0",
65
+ "typescript": "^5.9.0",
66
+ "vitest": "^4.0.0",
68
67
  "zod": "^3.25.0"
69
68
  }
70
69
  }