stables-mcp-server 2.2.1 → 2.3.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.
Files changed (38) hide show
  1. package/README.md +23 -6
  2. package/build/http/handler.d.ts.map +1 -1
  3. package/build/http/handler.js +9 -0
  4. package/build/http/handler.js.map +1 -1
  5. package/build/lib/stables-client.d.ts +138 -15
  6. package/build/lib/stables-client.d.ts.map +1 -1
  7. package/build/lib/stables-client.js +102 -6
  8. package/build/lib/stables-client.js.map +1 -1
  9. package/build/server.d.ts +2 -1
  10. package/build/server.d.ts.map +1 -1
  11. package/build/server.js +6 -1
  12. package/build/server.js.map +1 -1
  13. package/build/tools/balances.d.ts +15 -0
  14. package/build/tools/balances.d.ts.map +1 -0
  15. package/build/tools/balances.js +140 -0
  16. package/build/tools/balances.js.map +1 -0
  17. package/build/tools/customers.d.ts.map +1 -1
  18. package/build/tools/customers.js +330 -258
  19. package/build/tools/customers.js.map +1 -1
  20. package/build/tools/entitlements.d.ts +12 -0
  21. package/build/tools/entitlements.d.ts.map +1 -0
  22. package/build/tools/entitlements.js +83 -0
  23. package/build/tools/entitlements.js.map +1 -0
  24. package/build/tools/transfers.d.ts.map +1 -1
  25. package/build/tools/transfers.js +174 -89
  26. package/build/tools/transfers.js.map +1 -1
  27. package/build/tools/virtual-accounts.d.ts.map +1 -1
  28. package/build/tools/virtual-accounts.js +122 -12
  29. package/build/tools/virtual-accounts.js.map +1 -1
  30. package/build/version.d.ts +2 -0
  31. package/build/version.d.ts.map +1 -0
  32. package/build/version.js +3 -0
  33. package/build/version.js.map +1 -0
  34. package/build/worker.d.ts +16 -1
  35. package/build/worker.d.ts.map +1 -1
  36. package/build/worker.js +24 -1
  37. package/build/worker.js.map +1 -1
  38. package/package.json +11 -6
@@ -33,11 +33,7 @@ export function registerVirtualAccountTools(server, client) {
33
33
  .enum(["usdc", "usdt", "dai", "pyusd", "eurc"])
34
34
  .default("usdt")
35
35
  .describe("Stablecoin to receive"),
36
- developerFeePercent: z
37
- .string()
38
- .optional()
39
- .describe("Your fee on each deposit, as a numeric string (e.g. '0.5')"),
40
- }, async ({ customerId, sourceCurrency, destinationAddress, destinationPaymentRail, destinationCurrency, developerFeePercent, }) => {
36
+ }, async ({ customerId, sourceCurrency, destinationAddress, destinationPaymentRail, destinationCurrency, }) => {
41
37
  try {
42
38
  // deposit_handling_mode is deliberately absent: it is not part of the
43
39
  // create schema and was silently ignored here. The server sets it, and
@@ -50,7 +46,6 @@ export function registerVirtualAccountTools(server, client) {
50
46
  payment_rail: destinationPaymentRail,
51
47
  address: destinationAddress,
52
48
  },
53
- ...(developerFeePercent && { developer_fee_percent: developerFeePercent }),
54
49
  };
55
50
  const account = await client.createVirtualAccount(customerId, request);
56
51
  const instructions = account.source_deposit_instructions;
@@ -110,22 +105,32 @@ Share the deposit instructions with the customer to receive funds.`,
110
105
  }
111
106
  });
112
107
  // List Virtual Accounts (by customer)
113
- server.tool("list_virtual_accounts", "List all virtual accounts for a customer", {
114
- customerId: z.string().describe("The customer ID to list virtual accounts for"),
108
+ server.tool("list_virtual_accounts", "List payment routes (virtual accounts) for one customer, or across every customer when customerId is omitted", {
109
+ customerId: z
110
+ .string()
111
+ .optional()
112
+ .describe("Only this customer's routes; omit to list routes across all customers"),
115
113
  status: z
116
114
  .enum(["activated", "deactivated", "pending", "closed"])
117
115
  .optional()
118
116
  .describe("Filter by account status"),
119
117
  limit: z.number().optional().describe("Maximum number of accounts to return"),
120
- }, async ({ customerId, status, limit }) => {
118
+ startingAfter: z
119
+ .string()
120
+ .optional()
121
+ .describe("Return routes after this route ID (the last ID of the previous page)"),
122
+ }, async ({ customerId, status, limit, startingAfter }) => {
121
123
  try {
122
- const response = await client.listVirtualAccounts(customerId, { status, limit });
124
+ const response = customerId
125
+ ? await client.listVirtualAccounts(customerId, { status, limit, startingAfter })
126
+ : await client.listAllVirtualAccounts({ status, limit, startingAfter });
127
+ const scope = customerId ? `customer ${customerId}` : "any customer";
123
128
  if (response.data.length === 0) {
124
129
  return {
125
130
  content: [
126
131
  {
127
132
  type: "text",
128
- text: `No virtual accounts found for customer ${customerId}. Use 'create_virtual_account' to create one.`,
133
+ text: `No virtual accounts found for ${scope}. Use 'create_virtual_account' to create one.`,
129
134
  },
130
135
  ],
131
136
  };
@@ -145,7 +150,7 @@ Share the deposit instructions with the customer to receive funds.`,
145
150
  content: [
146
151
  {
147
152
  type: "text",
148
- text: `Virtual Accounts for Customer ${customerId} (${response.count} total):
153
+ text: `Virtual Accounts for ${scope} (${response.count} total):
149
154
 
150
155
  ${accountList}`,
151
156
  },
@@ -164,6 +169,111 @@ ${accountList}`,
164
169
  };
165
170
  }
166
171
  });
172
+ // AUD payment route whitelisting
173
+ const whitelistIds = {
174
+ customerId: z.string().describe("The customer ID"),
175
+ virtualAccountId: z.string().describe("The AUD payment route (virtual account) ID"),
176
+ };
177
+ server.tool("list_route_whitelist", "List the bank accounts whitelisted to pay into an AUD payment route. Some Australian routes only accept deposits from whitelisted source accounts.", whitelistIds, async ({ customerId, virtualAccountId }) => {
178
+ try {
179
+ const result = await client.listRouteWhitelist(customerId, virtualAccountId);
180
+ if (result.data.length === 0) {
181
+ return {
182
+ content: [{ type: "text", text: "No whitelisted source accounts on this route." }],
183
+ };
184
+ }
185
+ const lines = result.data
186
+ .map((a) => `- #${a.id}: BSB ${a.bsb_number} account ${a.account_number}${a.account_name ? ` (${a.account_name})` : ""} - ${a.account_status}`)
187
+ .join("\n");
188
+ return {
189
+ content: [
190
+ { type: "text", text: `Whitelisted source accounts (${result.count}):\n${lines}` },
191
+ ],
192
+ };
193
+ }
194
+ catch (error) {
195
+ return {
196
+ content: [
197
+ {
198
+ type: "text",
199
+ text: `Failed to list whitelist: ${error instanceof Error ? error.message : "Unknown error"}`,
200
+ },
201
+ ],
202
+ isError: true,
203
+ };
204
+ }
205
+ });
206
+ server.tool("add_route_whitelist_account", "Whitelist an Australian bank account (BSB and account number) to pay into an AUD payment route.", {
207
+ ...whitelistIds,
208
+ bsbNumber: z.string().describe("Source account BSB"),
209
+ accountNumber: z.string().describe("Source account number"),
210
+ enabled: z.boolean().default(true).describe("Whether deposits from it are accepted now"),
211
+ }, async ({ customerId, virtualAccountId, bsbNumber, accountNumber, enabled }) => {
212
+ try {
213
+ const account = await client.addRouteWhitelistAccount(customerId, virtualAccountId, {
214
+ bsb_number: bsbNumber,
215
+ account_number: accountNumber,
216
+ account_status: enabled ? "enabled" : "disabled",
217
+ });
218
+ return {
219
+ content: [
220
+ {
221
+ type: "text",
222
+ text: `Whitelisted #${account.id}: BSB ${account.bsb_number} account ${account.account_number} (${account.account_status})`,
223
+ },
224
+ ],
225
+ };
226
+ }
227
+ catch (error) {
228
+ return {
229
+ content: [
230
+ {
231
+ type: "text",
232
+ text: `Failed to whitelist account: ${error instanceof Error ? error.message : "Unknown error"}`,
233
+ },
234
+ ],
235
+ isError: true,
236
+ };
237
+ }
238
+ });
239
+ server.tool("update_route_whitelist_account", "Change or disable a whitelisted source account on an AUD payment route. Send the full record: BSB, account number and status.", {
240
+ ...whitelistIds,
241
+ sourceAccountId: z
242
+ .number()
243
+ .int()
244
+ .positive()
245
+ .describe("The whitelist entry ID (from list_route_whitelist)"),
246
+ bsbNumber: z.string().describe("Source account BSB"),
247
+ accountNumber: z.string().describe("Source account number"),
248
+ enabled: z.boolean().describe("false to stop accepting deposits from it"),
249
+ }, async ({ customerId, virtualAccountId, sourceAccountId, bsbNumber, accountNumber, enabled, }) => {
250
+ try {
251
+ const account = await client.updateRouteWhitelistAccount(customerId, virtualAccountId, sourceAccountId, {
252
+ bsb_number: bsbNumber,
253
+ account_number: accountNumber,
254
+ account_status: enabled ? "enabled" : "disabled",
255
+ });
256
+ return {
257
+ content: [
258
+ {
259
+ type: "text",
260
+ text: `Updated #${account.id}: BSB ${account.bsb_number} account ${account.account_number} (${account.account_status})`,
261
+ },
262
+ ],
263
+ };
264
+ }
265
+ catch (error) {
266
+ return {
267
+ content: [
268
+ {
269
+ type: "text",
270
+ text: `Failed to update whitelist entry: ${error instanceof Error ? error.message : "Unknown error"}`,
271
+ },
272
+ ],
273
+ isError: true,
274
+ };
275
+ }
276
+ });
167
277
  // Update Virtual Account
168
278
  server.tool("update_virtual_account", "Update virtual account settings (e.g., deposit handling mode)", {
169
279
  customerId: z.string().describe("The customer ID"),
@@ -1 +1 @@
1
- {"version":3,"file":"virtual-accounts.js","sourceRoot":"","sources":["../../src/tools/virtual-accounts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"virtual-accounts.js","sourceRoot":"","sources":["../../src/tools/virtual-accounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const SERVER_VERSION = "2.3.0";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Generated from package.json by scripts/write-version.mjs. Do not edit.
2
+ export const SERVER_VERSION = "2.3.0";
3
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC"}
package/build/worker.d.ts CHANGED
@@ -3,9 +3,24 @@
3
3
  *
4
4
  * Deployed with `npm run deploy:worker` (see wrangler.toml). The Worker owns
5
5
  * no secrets: every request authenticates with the caller's own API key.
6
+ *
7
+ * Requests are rate limited per caller before the handler runs: by API key
8
+ * when one is sent, otherwise by client IP, so unauthenticated probing from
9
+ * one IP cannot crowd out keyed callers.
6
10
  */
11
+ export interface RateLimiter {
12
+ limit(options: {
13
+ key: string;
14
+ }): Promise<{
15
+ success: boolean;
16
+ }>;
17
+ }
18
+ export interface Env {
19
+ RATE_LIMITER: RateLimiter;
20
+ }
21
+ export declare function rateLimitKey(request: Request): string;
7
22
  declare const _default: {
8
- fetch(request: Request): Promise<Response>;
23
+ fetch(request: Request, env: Env): Promise<Response>;
9
24
  };
10
25
  export default _default;
11
26
  //# sourceMappingURL=worker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;mBAKc,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;;AAD5C,wBAIE"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,GAAG;IAClB,YAAY,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAIrD;;mBAgBsB,OAAO,OAAO,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;;AAD5D,wBAME"}
package/build/worker.js CHANGED
@@ -3,10 +3,33 @@
3
3
  *
4
4
  * Deployed with `npm run deploy:worker` (see wrangler.toml). The Worker owns
5
5
  * no secrets: every request authenticates with the caller's own API key.
6
+ *
7
+ * Requests are rate limited per caller before the handler runs: by API key
8
+ * when one is sent, otherwise by client IP, so unauthenticated probing from
9
+ * one IP cannot crowd out keyed callers.
6
10
  */
11
+ import { extractApiKey } from "./http/auth.js";
7
12
  import { handleRequest } from "./http/handler.js";
13
+ export function rateLimitKey(request) {
14
+ const apiKey = extractApiKey(request.headers);
15
+ if (apiKey)
16
+ return `key:${apiKey}`;
17
+ return `ip:${request.headers.get("cf-connecting-ip") ?? "unknown"}`;
18
+ }
19
+ function rateLimited() {
20
+ return new Response(JSON.stringify({
21
+ error: "rate_limited",
22
+ message: "Too many requests. Retry after 60 seconds.",
23
+ }), {
24
+ status: 429,
25
+ headers: { "content-type": "application/json", "retry-after": "60" },
26
+ });
27
+ }
8
28
  export default {
9
- fetch(request) {
29
+ async fetch(request, env) {
30
+ const { success } = await env.RATE_LIMITER.limit({ key: rateLimitKey(request) });
31
+ if (!success)
32
+ return rateLimited();
10
33
  return handleRequest(request);
11
34
  },
12
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,eAAe;IACb,KAAK,CAAC,OAAgB;QACpB,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAUlD,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,MAAM;QAAE,OAAO,OAAO,MAAM,EAAE,CAAC;IACnC,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,SAAS,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;QACb,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,4CAA4C;KACtD,CAAC,EACF;QACE,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,IAAI,EAAE;KACrE,CACF,CAAC;AACJ,CAAC;AAED,eAAe;IACb,KAAK,CAAC,KAAK,CAAC,OAAgB,EAAE,GAAQ;QACpC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,OAAO;YAAE,OAAO,WAAW,EAAE,CAAC;QACnC,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stables-mcp-server",
3
- "version": "2.2.1",
3
+ "version": "2.3.0",
4
4
  "description": "MCP server for the Stables fiat-to-crypto API, hosted at mcp.stables.money or run locally - enables AI agents to manage customers, quotes, transfers and payment routes",
5
5
  "type": "module",
6
6
  "main": "build/index.js",
@@ -14,11 +14,11 @@
14
14
  "LICENSE"
15
15
  ],
16
16
  "scripts": {
17
- "build": "tsc",
17
+ "build": "npm run version:sync && tsc",
18
18
  "start": "node build/index.js",
19
19
  "serve": "node build/serve.js",
20
- "dev:worker": "wrangler dev",
21
- "deploy:worker": "wrangler deploy",
20
+ "dev:worker": "npm run version:sync && wrangler dev",
21
+ "deploy:worker": "npm run version:sync && wrangler deploy",
22
22
  "dev": "tsc --watch",
23
23
  "inspect": "npx @modelcontextprotocol/inspector node build/index.js",
24
24
  "test": "vitest run",
@@ -29,8 +29,11 @@
29
29
  "format": "prettier --write 'src/**/*.ts'",
30
30
  "format:check": "prettier --check 'src/**/*.ts'",
31
31
  "prepublishOnly": "npm run build",
32
- "check:spec": "node scripts/check-spec-drift.mjs",
33
- "docs:reference": "node scripts/generate-tool-reference.mjs > docs/tool-reference.md"
32
+ "check:spec": "node scripts/fetch-reference.mjs && vitest run src/contract.test.ts",
33
+ "check:release": "node scripts/check-release-state.mjs",
34
+ "docs:reference": "node scripts/generate-tool-reference.mjs > docs/tool-reference.md",
35
+ "version:sync": "node scripts/write-version.mjs",
36
+ "version": "npm run version:sync && git add src/version.ts"
34
37
  },
35
38
  "keywords": [
36
39
  "mcp",
@@ -72,6 +75,8 @@
72
75
  "@eslint/js": "^10.0.1",
73
76
  "@types/node": "^20.0.0",
74
77
  "@vitest/coverage-v8": "^4.0.18",
78
+ "ajv": "^8.18.0",
79
+ "ajv-formats": "^3.0.1",
75
80
  "eslint": "^10.0.2",
76
81
  "eslint-config-prettier": "^10.1.8",
77
82
  "prettier": "^3.8.1",