@curless/agentbank-mcp 0.0.1 → 0.0.3
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 +17 -1
- package/dist/index.js +1 -1
- package/dist/tools.d.ts +226 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +277 -1
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -28,10 +28,26 @@ npx @curless/agentbank-mcp
|
|
|
28
28
|
|
|
29
29
|
## Tools
|
|
30
30
|
|
|
31
|
+
**Merchant discovery**
|
|
31
32
|
- `list_merchants` — list merchants, optionally by category
|
|
32
33
|
- `get_merchant` — full merchant info
|
|
34
|
+
- `get_merchant_catalog` — items + prices for a merchant
|
|
33
35
|
- `get_agent_card` — A2A / ACP compatible agent card
|
|
34
|
-
- `invoke_skill` — call a skill (
|
|
36
|
+
- `invoke_skill` — call a skill (`search_availability`, `book_room`, `order_item`, …)
|
|
37
|
+
|
|
38
|
+
**PaymentIntents** (the money primitive — capture moves real money ⚠️)
|
|
39
|
+
- `create_payment_intent` — create a PI; pass `idempotencyKey` for safe retries
|
|
40
|
+
- `get_payment_intent` / `list_payment_intents` — status + history
|
|
41
|
+
- `capture_payment_intent` ⚠️ — charge the rail and book the ledger
|
|
42
|
+
|
|
43
|
+
**Resources** (read-only / admin)
|
|
44
|
+
- `get_wallet_balances` — Curless balances (fiat + crypto)
|
|
45
|
+
- `list_agents` / `get_agent` / `update_agent` — your spending entities
|
|
46
|
+
- `list_customers` / `get_customer` / `update_customer` — end users / payers
|
|
47
|
+
|
|
48
|
+
What you can actually do is gated by the scope of the `AGENTBANK_AGENT_TOKEN`
|
|
49
|
+
you set — give it `agent:execute` for buyer flows, `agentbank:admin` to
|
|
50
|
+
manage agents/customers.
|
|
35
51
|
|
|
36
52
|
## Local dev
|
|
37
53
|
|
package/dist/index.js
CHANGED
|
@@ -24,7 +24,7 @@ const fetchApi = async (path, init = {}) => {
|
|
|
24
24
|
}
|
|
25
25
|
return (await res.json());
|
|
26
26
|
};
|
|
27
|
-
const server = new Server({ name: 'agentbank-mcp', version: '0.0.
|
|
27
|
+
const server = new Server({ name: 'agentbank-mcp', version: '0.0.3' }, { capabilities: { tools: {} } });
|
|
28
28
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));
|
|
29
29
|
server.setRequestHandler(CallToolRequestSchema, async (req) => dispatchTool(req.params.name, req.params.arguments, fetchApi));
|
|
30
30
|
const transport = new StdioServerTransport();
|
package/dist/tools.d.ts
CHANGED
|
@@ -36,9 +36,21 @@ export declare const TOOLS: readonly [{
|
|
|
36
36
|
};
|
|
37
37
|
};
|
|
38
38
|
};
|
|
39
|
+
}, {
|
|
40
|
+
readonly name: "get_merchant_catalog";
|
|
41
|
+
readonly description: "Get a merchant's product/service catalog (items + prices + currency).";
|
|
42
|
+
readonly inputSchema: {
|
|
43
|
+
readonly type: "object";
|
|
44
|
+
readonly required: readonly ["merchantId"];
|
|
45
|
+
readonly properties: {
|
|
46
|
+
readonly merchantId: {
|
|
47
|
+
readonly type: "string";
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
};
|
|
39
51
|
}, {
|
|
40
52
|
readonly name: "get_agent_card";
|
|
41
|
-
readonly description: "Get the protocol-native agent card for a
|
|
53
|
+
readonly description: "Get the protocol-native agent card for a merchant, including its available skills (A2A / ACP compatible).";
|
|
42
54
|
readonly inputSchema: {
|
|
43
55
|
readonly type: "object";
|
|
44
56
|
readonly required: readonly ["merchantId"];
|
|
@@ -66,6 +78,219 @@ export declare const TOOLS: readonly [{
|
|
|
66
78
|
};
|
|
67
79
|
};
|
|
68
80
|
};
|
|
81
|
+
}, {
|
|
82
|
+
readonly name: "create_payment_intent";
|
|
83
|
+
readonly description: "⚠️ Create a PaymentIntent (an obligation, not yet charged). Money moves only when capture_payment_intent runs. Pass an idempotencyKey to make retries safe — the same key returns the same PI.";
|
|
84
|
+
readonly inputSchema: {
|
|
85
|
+
readonly type: "object";
|
|
86
|
+
readonly required: readonly ["organizationId", "curlessMerchantId", "amount", "currency", "protocol", "items"];
|
|
87
|
+
readonly properties: {
|
|
88
|
+
readonly organizationId: {
|
|
89
|
+
readonly type: "string";
|
|
90
|
+
};
|
|
91
|
+
readonly agentId: {
|
|
92
|
+
readonly type: "string";
|
|
93
|
+
};
|
|
94
|
+
readonly curlessMerchantId: {
|
|
95
|
+
readonly type: "string";
|
|
96
|
+
};
|
|
97
|
+
readonly amount: {
|
|
98
|
+
readonly type: "integer";
|
|
99
|
+
readonly description: "minor units (USD cents, USDC 6-decimal base units)";
|
|
100
|
+
};
|
|
101
|
+
readonly currency: {
|
|
102
|
+
readonly type: "string";
|
|
103
|
+
};
|
|
104
|
+
readonly protocol: {
|
|
105
|
+
readonly type: "string";
|
|
106
|
+
readonly enum: string[];
|
|
107
|
+
};
|
|
108
|
+
readonly items: {
|
|
109
|
+
readonly type: "array";
|
|
110
|
+
readonly items: {
|
|
111
|
+
readonly type: "object";
|
|
112
|
+
readonly required: readonly ["catalogItemId", "quantity", "unitPrice"];
|
|
113
|
+
readonly properties: {
|
|
114
|
+
readonly catalogItemId: {
|
|
115
|
+
readonly type: "string";
|
|
116
|
+
};
|
|
117
|
+
readonly quantity: {
|
|
118
|
+
readonly type: "integer";
|
|
119
|
+
};
|
|
120
|
+
readonly unitPrice: {
|
|
121
|
+
readonly type: "integer";
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
readonly idempotencyKey: {
|
|
127
|
+
readonly type: "string";
|
|
128
|
+
};
|
|
129
|
+
readonly metadata: {
|
|
130
|
+
readonly type: "object";
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
}, {
|
|
135
|
+
readonly name: "get_payment_intent";
|
|
136
|
+
readonly description: "Get a PaymentIntent by id (status, amount, rail reference, timestamps).";
|
|
137
|
+
readonly inputSchema: {
|
|
138
|
+
readonly type: "object";
|
|
139
|
+
readonly required: readonly ["paymentIntentId"];
|
|
140
|
+
readonly properties: {
|
|
141
|
+
readonly paymentIntentId: {
|
|
142
|
+
readonly type: "string";
|
|
143
|
+
};
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
}, {
|
|
147
|
+
readonly name: "list_payment_intents";
|
|
148
|
+
readonly description: "List PaymentIntents for the caller (paginated, newest first). Optional status filter.";
|
|
149
|
+
readonly inputSchema: {
|
|
150
|
+
readonly type: "object";
|
|
151
|
+
readonly properties: {
|
|
152
|
+
readonly status: {
|
|
153
|
+
readonly type: "string";
|
|
154
|
+
readonly enum: string[];
|
|
155
|
+
};
|
|
156
|
+
readonly limit: {
|
|
157
|
+
readonly type: "integer";
|
|
158
|
+
};
|
|
159
|
+
readonly offset: {
|
|
160
|
+
readonly type: "integer";
|
|
161
|
+
};
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
}, {
|
|
165
|
+
readonly name: "capture_payment_intent";
|
|
166
|
+
readonly description: "⚠️ Capture a PaymentIntent — this MOVES MONEY. Charges the rail (card / stablecoin) and books the ledger. Idempotent on the PI id; re-calling on an already-captured PI is a no-op.";
|
|
167
|
+
readonly inputSchema: {
|
|
168
|
+
readonly type: "object";
|
|
169
|
+
readonly required: readonly ["paymentIntentId"];
|
|
170
|
+
readonly properties: {
|
|
171
|
+
readonly paymentIntentId: {
|
|
172
|
+
readonly type: "string";
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
}, {
|
|
177
|
+
readonly name: "get_wallet_balances";
|
|
178
|
+
readonly description: "Read the org's Curless balances (fiat + crypto). Read-only proxy over the Curless money-ops API.";
|
|
179
|
+
readonly inputSchema: {
|
|
180
|
+
readonly type: "object";
|
|
181
|
+
readonly properties: {};
|
|
182
|
+
};
|
|
183
|
+
}, {
|
|
184
|
+
readonly name: "list_agents";
|
|
185
|
+
readonly description: "List the org's agents (spending entities). Requires agentbank:admin scope.";
|
|
186
|
+
readonly inputSchema: {
|
|
187
|
+
readonly type: "object";
|
|
188
|
+
readonly properties: {
|
|
189
|
+
readonly limit: {
|
|
190
|
+
readonly type: "integer";
|
|
191
|
+
};
|
|
192
|
+
readonly offset: {
|
|
193
|
+
readonly type: "integer";
|
|
194
|
+
};
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
}, {
|
|
198
|
+
readonly name: "get_agent";
|
|
199
|
+
readonly description: "Get one agent by id (name, status, spend policy). Requires agentbank:admin scope.";
|
|
200
|
+
readonly inputSchema: {
|
|
201
|
+
readonly type: "object";
|
|
202
|
+
readonly required: readonly ["agentId"];
|
|
203
|
+
readonly properties: {
|
|
204
|
+
readonly agentId: {
|
|
205
|
+
readonly type: "string";
|
|
206
|
+
};
|
|
207
|
+
};
|
|
208
|
+
};
|
|
209
|
+
}, {
|
|
210
|
+
readonly name: "update_agent";
|
|
211
|
+
readonly description: "Update an agent — name / description / status (active|paused|revoked) / defaultCurrency / spendPolicy. Only fields you pass are changed. Requires agentbank:admin scope.";
|
|
212
|
+
readonly inputSchema: {
|
|
213
|
+
readonly type: "object";
|
|
214
|
+
readonly required: readonly ["agentId"];
|
|
215
|
+
readonly properties: {
|
|
216
|
+
readonly agentId: {
|
|
217
|
+
readonly type: "string";
|
|
218
|
+
};
|
|
219
|
+
readonly name: {
|
|
220
|
+
readonly type: "string";
|
|
221
|
+
};
|
|
222
|
+
readonly description: {
|
|
223
|
+
readonly type: "string";
|
|
224
|
+
};
|
|
225
|
+
readonly status: {
|
|
226
|
+
readonly type: "string";
|
|
227
|
+
readonly enum: readonly ["active", "paused", "revoked"];
|
|
228
|
+
};
|
|
229
|
+
readonly defaultCurrency: {
|
|
230
|
+
readonly type: "string";
|
|
231
|
+
};
|
|
232
|
+
readonly spendPolicy: {
|
|
233
|
+
readonly type: "object";
|
|
234
|
+
};
|
|
235
|
+
};
|
|
236
|
+
};
|
|
237
|
+
}, {
|
|
238
|
+
readonly name: "list_customers";
|
|
239
|
+
readonly description: "List the org's customers (Stripe-style end users / payers). Requires agentbank:admin scope.";
|
|
240
|
+
readonly inputSchema: {
|
|
241
|
+
readonly type: "object";
|
|
242
|
+
readonly properties: {
|
|
243
|
+
readonly limit: {
|
|
244
|
+
readonly type: "integer";
|
|
245
|
+
};
|
|
246
|
+
readonly offset: {
|
|
247
|
+
readonly type: "integer";
|
|
248
|
+
};
|
|
249
|
+
};
|
|
250
|
+
};
|
|
251
|
+
}, {
|
|
252
|
+
readonly name: "get_customer";
|
|
253
|
+
readonly description: "Get one customer by id. Requires agentbank:admin scope.";
|
|
254
|
+
readonly inputSchema: {
|
|
255
|
+
readonly type: "object";
|
|
256
|
+
readonly required: readonly ["customerId"];
|
|
257
|
+
readonly properties: {
|
|
258
|
+
readonly customerId: {
|
|
259
|
+
readonly type: "string";
|
|
260
|
+
};
|
|
261
|
+
};
|
|
262
|
+
};
|
|
263
|
+
}, {
|
|
264
|
+
readonly name: "update_customer";
|
|
265
|
+
readonly description: "Update a customer — externalId / email / name / status (active|disabled) / curlessWalletId / metadata. Only fields you pass are changed. Requires agentbank:admin scope.";
|
|
266
|
+
readonly inputSchema: {
|
|
267
|
+
readonly type: "object";
|
|
268
|
+
readonly required: readonly ["customerId"];
|
|
269
|
+
readonly properties: {
|
|
270
|
+
readonly customerId: {
|
|
271
|
+
readonly type: "string";
|
|
272
|
+
};
|
|
273
|
+
readonly externalId: {
|
|
274
|
+
readonly type: "string";
|
|
275
|
+
};
|
|
276
|
+
readonly email: {
|
|
277
|
+
readonly type: "string";
|
|
278
|
+
};
|
|
279
|
+
readonly name: {
|
|
280
|
+
readonly type: "string";
|
|
281
|
+
};
|
|
282
|
+
readonly status: {
|
|
283
|
+
readonly type: "string";
|
|
284
|
+
readonly enum: readonly ["active", "disabled"];
|
|
285
|
+
};
|
|
286
|
+
readonly curlessWalletId: {
|
|
287
|
+
readonly type: "string";
|
|
288
|
+
};
|
|
289
|
+
readonly metadata: {
|
|
290
|
+
readonly type: "object";
|
|
291
|
+
};
|
|
292
|
+
};
|
|
293
|
+
};
|
|
69
294
|
}];
|
|
70
295
|
export declare const dispatchTool: (name: string, rawArgs: Record<string, unknown> | undefined, fetchApi: FetchApi) => Promise<ToolResult>;
|
|
71
296
|
//# sourceMappingURL=tools.d.ts.map
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAE3E,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAE3E,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAyBF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BA0EwD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAkChB,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+FhE,CAAC;AA8EX,eAAO,MAAM,YAAY,GACvB,MAAM,MAAM,EACZ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC5C,UAAU,QAAQ,KACjB,OAAO,CAAC,UAAU,CA8GpB,CAAC"}
|
package/dist/tools.js
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
const PAYMENT_PROTOCOLS = [
|
|
3
|
+
'a2a',
|
|
4
|
+
'acp',
|
|
5
|
+
'ap2',
|
|
6
|
+
'ucp',
|
|
7
|
+
'mcp',
|
|
8
|
+
'x402',
|
|
9
|
+
'tap',
|
|
10
|
+
'mc',
|
|
11
|
+
'direct',
|
|
12
|
+
];
|
|
13
|
+
const PI_STATUSES = [
|
|
14
|
+
'initiated',
|
|
15
|
+
'authorized',
|
|
16
|
+
'authorizing',
|
|
17
|
+
'captured',
|
|
18
|
+
'settled',
|
|
19
|
+
'reconciled',
|
|
20
|
+
'failed',
|
|
21
|
+
'refunded',
|
|
22
|
+
'disputed',
|
|
23
|
+
];
|
|
2
24
|
export const TOOLS = [
|
|
25
|
+
// --- merchant discovery ---
|
|
3
26
|
{
|
|
4
27
|
name: 'list_merchants',
|
|
5
28
|
description: 'List Curless merchants available to pay, optionally filtered by category.',
|
|
@@ -21,9 +44,18 @@ export const TOOLS = [
|
|
|
21
44
|
properties: { merchantId: { type: 'string' } },
|
|
22
45
|
},
|
|
23
46
|
},
|
|
47
|
+
{
|
|
48
|
+
name: 'get_merchant_catalog',
|
|
49
|
+
description: "Get a merchant's product/service catalog (items + prices + currency).",
|
|
50
|
+
inputSchema: {
|
|
51
|
+
type: 'object',
|
|
52
|
+
required: ['merchantId'],
|
|
53
|
+
properties: { merchantId: { type: 'string' } },
|
|
54
|
+
},
|
|
55
|
+
},
|
|
24
56
|
{
|
|
25
57
|
name: 'get_agent_card',
|
|
26
|
-
description: 'Get the protocol-native agent card for a
|
|
58
|
+
description: 'Get the protocol-native agent card for a merchant, including its available skills (A2A / ACP compatible).',
|
|
27
59
|
inputSchema: {
|
|
28
60
|
type: 'object',
|
|
29
61
|
required: ['merchantId'],
|
|
@@ -43,6 +75,143 @@ export const TOOLS = [
|
|
|
43
75
|
},
|
|
44
76
|
},
|
|
45
77
|
},
|
|
78
|
+
// --- PaymentIntents (the money primitive) ---
|
|
79
|
+
{
|
|
80
|
+
name: 'create_payment_intent',
|
|
81
|
+
description: '⚠️ Create a PaymentIntent (an obligation, not yet charged). Money moves only when capture_payment_intent runs. Pass an idempotencyKey to make retries safe — the same key returns the same PI.',
|
|
82
|
+
inputSchema: {
|
|
83
|
+
type: 'object',
|
|
84
|
+
required: ['organizationId', 'curlessMerchantId', 'amount', 'currency', 'protocol', 'items'],
|
|
85
|
+
properties: {
|
|
86
|
+
organizationId: { type: 'string' },
|
|
87
|
+
agentId: { type: 'string' },
|
|
88
|
+
curlessMerchantId: { type: 'string' },
|
|
89
|
+
amount: {
|
|
90
|
+
type: 'integer',
|
|
91
|
+
description: 'minor units (USD cents, USDC 6-decimal base units)',
|
|
92
|
+
},
|
|
93
|
+
currency: { type: 'string' },
|
|
94
|
+
protocol: { type: 'string', enum: PAYMENT_PROTOCOLS },
|
|
95
|
+
items: {
|
|
96
|
+
type: 'array',
|
|
97
|
+
items: {
|
|
98
|
+
type: 'object',
|
|
99
|
+
required: ['catalogItemId', 'quantity', 'unitPrice'],
|
|
100
|
+
properties: {
|
|
101
|
+
catalogItemId: { type: 'string' },
|
|
102
|
+
quantity: { type: 'integer' },
|
|
103
|
+
unitPrice: { type: 'integer' },
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
idempotencyKey: { type: 'string' },
|
|
108
|
+
metadata: { type: 'object' },
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
name: 'get_payment_intent',
|
|
114
|
+
description: 'Get a PaymentIntent by id (status, amount, rail reference, timestamps).',
|
|
115
|
+
inputSchema: {
|
|
116
|
+
type: 'object',
|
|
117
|
+
required: ['paymentIntentId'],
|
|
118
|
+
properties: { paymentIntentId: { type: 'string' } },
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
name: 'list_payment_intents',
|
|
123
|
+
description: 'List PaymentIntents for the caller (paginated, newest first). Optional status filter.',
|
|
124
|
+
inputSchema: {
|
|
125
|
+
type: 'object',
|
|
126
|
+
properties: {
|
|
127
|
+
status: { type: 'string', enum: PI_STATUSES },
|
|
128
|
+
limit: { type: 'integer' },
|
|
129
|
+
offset: { type: 'integer' },
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
name: 'capture_payment_intent',
|
|
135
|
+
description: '⚠️ Capture a PaymentIntent — this MOVES MONEY. Charges the rail (card / stablecoin) and books the ledger. Idempotent on the PI id; re-calling on an already-captured PI is a no-op.',
|
|
136
|
+
inputSchema: {
|
|
137
|
+
type: 'object',
|
|
138
|
+
required: ['paymentIntentId'],
|
|
139
|
+
properties: { paymentIntentId: { type: 'string' } },
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
// --- read-only support resources ---
|
|
143
|
+
{
|
|
144
|
+
name: 'get_wallet_balances',
|
|
145
|
+
description: "Read the org's Curless balances (fiat + crypto). Read-only proxy over the Curless money-ops API.",
|
|
146
|
+
inputSchema: { type: 'object', properties: {} },
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
name: 'list_agents',
|
|
150
|
+
description: "List the org's agents (spending entities). Requires agentbank:admin scope.",
|
|
151
|
+
inputSchema: {
|
|
152
|
+
type: 'object',
|
|
153
|
+
properties: { limit: { type: 'integer' }, offset: { type: 'integer' } },
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
name: 'get_agent',
|
|
158
|
+
description: 'Get one agent by id (name, status, spend policy). Requires agentbank:admin scope.',
|
|
159
|
+
inputSchema: {
|
|
160
|
+
type: 'object',
|
|
161
|
+
required: ['agentId'],
|
|
162
|
+
properties: { agentId: { type: 'string' } },
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
name: 'update_agent',
|
|
167
|
+
description: 'Update an agent — name / description / status (active|paused|revoked) / defaultCurrency / spendPolicy. Only fields you pass are changed. Requires agentbank:admin scope.',
|
|
168
|
+
inputSchema: {
|
|
169
|
+
type: 'object',
|
|
170
|
+
required: ['agentId'],
|
|
171
|
+
properties: {
|
|
172
|
+
agentId: { type: 'string' },
|
|
173
|
+
name: { type: 'string' },
|
|
174
|
+
description: { type: 'string' },
|
|
175
|
+
status: { type: 'string', enum: ['active', 'paused', 'revoked'] },
|
|
176
|
+
defaultCurrency: { type: 'string' },
|
|
177
|
+
spendPolicy: { type: 'object' },
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
name: 'list_customers',
|
|
183
|
+
description: "List the org's customers (Stripe-style end users / payers). Requires agentbank:admin scope.",
|
|
184
|
+
inputSchema: {
|
|
185
|
+
type: 'object',
|
|
186
|
+
properties: { limit: { type: 'integer' }, offset: { type: 'integer' } },
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
name: 'get_customer',
|
|
191
|
+
description: 'Get one customer by id. Requires agentbank:admin scope.',
|
|
192
|
+
inputSchema: {
|
|
193
|
+
type: 'object',
|
|
194
|
+
required: ['customerId'],
|
|
195
|
+
properties: { customerId: { type: 'string' } },
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
name: 'update_customer',
|
|
200
|
+
description: 'Update a customer — externalId / email / name / status (active|disabled) / curlessWalletId / metadata. Only fields you pass are changed. Requires agentbank:admin scope.',
|
|
201
|
+
inputSchema: {
|
|
202
|
+
type: 'object',
|
|
203
|
+
required: ['customerId'],
|
|
204
|
+
properties: {
|
|
205
|
+
customerId: { type: 'string' },
|
|
206
|
+
externalId: { type: 'string' },
|
|
207
|
+
email: { type: 'string' },
|
|
208
|
+
name: { type: 'string' },
|
|
209
|
+
status: { type: 'string', enum: ['active', 'disabled'] },
|
|
210
|
+
curlessWalletId: { type: 'string' },
|
|
211
|
+
metadata: { type: 'object' },
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
},
|
|
46
215
|
];
|
|
47
216
|
const ok = (out) => ({
|
|
48
217
|
content: [{ type: 'text', text: JSON.stringify(out, null, 2) }],
|
|
@@ -51,6 +220,7 @@ const fail = (message) => ({
|
|
|
51
220
|
content: [{ type: 'text', text: `Error: ${message}` }],
|
|
52
221
|
isError: true,
|
|
53
222
|
});
|
|
223
|
+
// --- input schemas ---
|
|
54
224
|
const listMerchantsSchema = z.object({
|
|
55
225
|
category: z.enum(['hotel', 'food', 'flight', 'marketplace', 'generic']).optional(),
|
|
56
226
|
limit: z.number().int().positive().optional(),
|
|
@@ -62,6 +232,52 @@ const invokeSchema = z.object({
|
|
|
62
232
|
skillId: z.string().min(1),
|
|
63
233
|
input: z.record(z.unknown()).default({}),
|
|
64
234
|
});
|
|
235
|
+
const createPiSchema = z.object({
|
|
236
|
+
organizationId: z.string().min(1),
|
|
237
|
+
agentId: z.string().optional(),
|
|
238
|
+
curlessMerchantId: z.string().min(1),
|
|
239
|
+
amount: z.number().int().positive(),
|
|
240
|
+
currency: z.string().min(3).max(8),
|
|
241
|
+
protocol: z.enum(PAYMENT_PROTOCOLS),
|
|
242
|
+
items: z
|
|
243
|
+
.array(z.object({
|
|
244
|
+
catalogItemId: z.string(),
|
|
245
|
+
quantity: z.number().int().positive(),
|
|
246
|
+
unitPrice: z.number().int().nonnegative(),
|
|
247
|
+
}))
|
|
248
|
+
.min(1),
|
|
249
|
+
idempotencyKey: z.string().optional(),
|
|
250
|
+
metadata: z.record(z.unknown()).optional(),
|
|
251
|
+
});
|
|
252
|
+
const piIdSchema = z.object({ paymentIntentId: z.string().min(1) });
|
|
253
|
+
const listPiSchema = z.object({
|
|
254
|
+
status: z.enum(PI_STATUSES).optional(),
|
|
255
|
+
limit: z.number().int().positive().optional(),
|
|
256
|
+
offset: z.number().int().nonnegative().optional(),
|
|
257
|
+
});
|
|
258
|
+
const pageSchema = z.object({
|
|
259
|
+
limit: z.number().int().positive().optional(),
|
|
260
|
+
offset: z.number().int().nonnegative().optional(),
|
|
261
|
+
});
|
|
262
|
+
const agentIdSchema = z.object({ agentId: z.string().min(1) });
|
|
263
|
+
const customerIdSchema = z.object({ customerId: z.string().min(1) });
|
|
264
|
+
const updateAgentSchema = z.object({
|
|
265
|
+
agentId: z.string().min(1),
|
|
266
|
+
name: z.string().min(1).optional(),
|
|
267
|
+
description: z.string().optional(),
|
|
268
|
+
status: z.enum(['active', 'paused', 'revoked']).optional(),
|
|
269
|
+
defaultCurrency: z.string().optional(),
|
|
270
|
+
spendPolicy: z.record(z.unknown()).optional(),
|
|
271
|
+
});
|
|
272
|
+
const updateCustomerSchema = z.object({
|
|
273
|
+
customerId: z.string().min(1),
|
|
274
|
+
externalId: z.string().min(1).optional(),
|
|
275
|
+
email: z.string().email().optional(),
|
|
276
|
+
name: z.string().min(1).optional(),
|
|
277
|
+
status: z.enum(['active', 'disabled']).optional(),
|
|
278
|
+
curlessWalletId: z.string().min(1).optional(),
|
|
279
|
+
metadata: z.record(z.unknown()).optional(),
|
|
280
|
+
});
|
|
65
281
|
const qs = (params) => {
|
|
66
282
|
const entries = Object.entries(params)
|
|
67
283
|
.filter(([, v]) => v !== undefined)
|
|
@@ -80,6 +296,10 @@ export const dispatchTool = async (name, rawArgs, fetchApi) => {
|
|
|
80
296
|
const a = merchantSchema.parse(args);
|
|
81
297
|
return ok(await fetchApi(`/v1/merchants/${encodeURIComponent(a.merchantId)}`));
|
|
82
298
|
}
|
|
299
|
+
case 'get_merchant_catalog': {
|
|
300
|
+
const a = merchantSchema.parse(args);
|
|
301
|
+
return ok(await fetchApi(`/v1/merchants/${encodeURIComponent(a.merchantId)}/catalog`));
|
|
302
|
+
}
|
|
83
303
|
case 'get_agent_card': {
|
|
84
304
|
const a = merchantSchema.parse(args);
|
|
85
305
|
return ok(await fetchApi(`/v1/merchants/${encodeURIComponent(a.merchantId)}/agent-card`));
|
|
@@ -88,6 +308,62 @@ export const dispatchTool = async (name, rawArgs, fetchApi) => {
|
|
|
88
308
|
const a = invokeSchema.parse(args);
|
|
89
309
|
return ok(await fetchApi(`/v1/merchants/${encodeURIComponent(a.merchantId)}/skills/${encodeURIComponent(a.skillId)}/invoke`, { method: 'POST', body: JSON.stringify(a.input) }));
|
|
90
310
|
}
|
|
311
|
+
case 'create_payment_intent': {
|
|
312
|
+
const a = createPiSchema.parse(args);
|
|
313
|
+
const { idempotencyKey, ...body } = a;
|
|
314
|
+
return ok(await fetchApi('/v1/payment-intents', {
|
|
315
|
+
method: 'POST',
|
|
316
|
+
body: JSON.stringify(body),
|
|
317
|
+
headers: idempotencyKey ? { 'idempotency-key': idempotencyKey } : undefined,
|
|
318
|
+
}));
|
|
319
|
+
}
|
|
320
|
+
case 'get_payment_intent': {
|
|
321
|
+
const a = piIdSchema.parse(args);
|
|
322
|
+
return ok(await fetchApi(`/v1/payment-intents/${encodeURIComponent(a.paymentIntentId)}`));
|
|
323
|
+
}
|
|
324
|
+
case 'list_payment_intents': {
|
|
325
|
+
const a = listPiSchema.parse(args);
|
|
326
|
+
return ok(await fetchApi(`/v1/payment-intents${qs({ status: a.status, limit: a.limit, offset: a.offset })}`));
|
|
327
|
+
}
|
|
328
|
+
case 'capture_payment_intent': {
|
|
329
|
+
const a = piIdSchema.parse(args);
|
|
330
|
+
return ok(await fetchApi(`/v1/payment-intents/${encodeURIComponent(a.paymentIntentId)}/capture`, {
|
|
331
|
+
method: 'POST',
|
|
332
|
+
}));
|
|
333
|
+
}
|
|
334
|
+
case 'get_wallet_balances': {
|
|
335
|
+
return ok(await fetchApi('/v1/wallets'));
|
|
336
|
+
}
|
|
337
|
+
case 'list_agents': {
|
|
338
|
+
const a = pageSchema.parse(args);
|
|
339
|
+
return ok(await fetchApi(`/v1/agents${qs({ limit: a.limit, offset: a.offset })}`));
|
|
340
|
+
}
|
|
341
|
+
case 'get_agent': {
|
|
342
|
+
const a = agentIdSchema.parse(args);
|
|
343
|
+
return ok(await fetchApi(`/v1/agents/${encodeURIComponent(a.agentId)}`));
|
|
344
|
+
}
|
|
345
|
+
case 'update_agent': {
|
|
346
|
+
const { agentId, ...patch } = updateAgentSchema.parse(args);
|
|
347
|
+
return ok(await fetchApi(`/v1/agents/${encodeURIComponent(agentId)}`, {
|
|
348
|
+
method: 'PATCH',
|
|
349
|
+
body: JSON.stringify(patch),
|
|
350
|
+
}));
|
|
351
|
+
}
|
|
352
|
+
case 'list_customers': {
|
|
353
|
+
const a = pageSchema.parse(args);
|
|
354
|
+
return ok(await fetchApi(`/v1/customers${qs({ limit: a.limit, offset: a.offset })}`));
|
|
355
|
+
}
|
|
356
|
+
case 'get_customer': {
|
|
357
|
+
const a = customerIdSchema.parse(args);
|
|
358
|
+
return ok(await fetchApi(`/v1/customers/${encodeURIComponent(a.customerId)}`));
|
|
359
|
+
}
|
|
360
|
+
case 'update_customer': {
|
|
361
|
+
const { customerId, ...patch } = updateCustomerSchema.parse(args);
|
|
362
|
+
return ok(await fetchApi(`/v1/customers/${encodeURIComponent(customerId)}`, {
|
|
363
|
+
method: 'PATCH',
|
|
364
|
+
body: JSON.stringify(patch),
|
|
365
|
+
}));
|
|
366
|
+
}
|
|
91
367
|
default:
|
|
92
368
|
return fail(`unknown tool: ${name}`);
|
|
93
369
|
}
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,2EAA2E;QACxF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE;gBACzF,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;aAC5B;SACF;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,6CAA6C;QAC1D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC,YAAY,CAAC;YACxB,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;SAC/C;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,mHAAmH;QACrH,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC,YAAY,CAAC;YACxB,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;SAC/C;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,4KAA4K;QAC9K,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;YACnC,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC9B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC1B;SACF;KACF;CACO,CAAC;AAEX,MAAM,EAAE,GAAG,CAAC,GAAY,EAAc,EAAE,CAAC,CAAC;IACxC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;CAChE,CAAC,CAAC;AACH,MAAM,IAAI,GAAG,CAAC,OAAe,EAAc,EAAE,CAAC,CAAC;IAC7C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;IACtD,OAAO,EAAE,IAAI;CACd,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CAClD,CAAC,CAAC;AACH,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACnE,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACzC,CAAC,CAAC;AAEH,MAAM,EAAE,GAAG,CAAC,MAAmD,EAAU,EAAE;IACzE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACnC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAqB,CAAC,CAAC;IACvD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAClE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,IAAY,EACZ,OAA4C,EAC5C,QAAkB,EACG,EAAE;IACvB,MAAM,IAAI,GAAG,OAAO,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,MAAM,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC1C,OAAO,EAAE,CACP,MAAM,QAAQ,CACZ,gBAAgB,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CACjF,CACF,CAAC;YACJ,CAAC;YACD,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrC,OAAO,EAAE,CAAC,MAAM,QAAQ,CAAC,iBAAiB,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;YACjF,CAAC;YACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,MAAM,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrC,OAAO,EAAE,CAAC,MAAM,QAAQ,CAAC,iBAAiB,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;YAC5F,CAAC;YACD,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnC,OAAO,EAAE,CACP,MAAM,QAAQ,CACZ,iBAAiB,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAClG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAClD,CACF,CAAC;YACJ,CAAC;YACD;gBACE,OAAO,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,yBAAyB,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,IAAI,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|