402-mcp 3.1.3 → 3.2.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 (77) hide show
  1. package/README.md +105 -101
  2. package/build/config.d.ts +1 -0
  3. package/build/config.js +9 -1
  4. package/build/config.js.map +1 -1
  5. package/build/index.js +16 -4
  6. package/build/index.js.map +1 -1
  7. package/build/l402/bolt11.d.ts +1 -0
  8. package/build/l402/bolt11.js +1 -0
  9. package/build/l402/bolt11.js.map +1 -1
  10. package/build/l402/challenge-cache.d.ts +1 -0
  11. package/build/l402/challenge-cache.js +1 -0
  12. package/build/l402/challenge-cache.js.map +1 -1
  13. package/build/l402/detect.d.ts +1 -0
  14. package/build/l402/detect.js +1 -0
  15. package/build/l402/detect.js.map +1 -1
  16. package/build/l402/parse.d.ts +1 -0
  17. package/build/l402/parse.js +1 -0
  18. package/build/l402/parse.js.map +1 -1
  19. package/build/store/cashu-tokens.d.ts +3 -0
  20. package/build/store/cashu-tokens.js +3 -0
  21. package/build/store/cashu-tokens.js.map +1 -1
  22. package/build/store/credentials.d.ts +2 -0
  23. package/build/store/credentials.js +2 -0
  24. package/build/store/credentials.js.map +1 -1
  25. package/build/store/encryption.d.ts +3 -0
  26. package/build/store/encryption.js +3 -0
  27. package/build/store/encryption.js.map +1 -1
  28. package/build/tools/balance.d.ts +2 -0
  29. package/build/tools/balance.js +2 -0
  30. package/build/tools/balance.js.map +1 -1
  31. package/build/tools/buy-credits.d.ts +18 -1
  32. package/build/tools/buy-credits.js +30 -2
  33. package/build/tools/buy-credits.js.map +1 -1
  34. package/build/tools/config.d.ts +2 -0
  35. package/build/tools/config.js +2 -0
  36. package/build/tools/config.js.map +1 -1
  37. package/build/tools/credentials.d.ts +2 -0
  38. package/build/tools/credentials.js +2 -0
  39. package/build/tools/credentials.js.map +1 -1
  40. package/build/tools/discover.d.ts +2 -0
  41. package/build/tools/discover.js +2 -0
  42. package/build/tools/discover.js.map +1 -1
  43. package/build/tools/fetch.d.ts +16 -3
  44. package/build/tools/fetch.js +39 -2
  45. package/build/tools/fetch.js.map +1 -1
  46. package/build/tools/nostr-subscribe.d.ts +1 -0
  47. package/build/tools/nostr-subscribe.js +1 -5
  48. package/build/tools/nostr-subscribe.js.map +1 -1
  49. package/build/tools/pay.d.ts +2 -0
  50. package/build/tools/pay.js +4 -5
  51. package/build/tools/pay.js.map +1 -1
  52. package/build/tools/redeem-cashu.d.ts +11 -0
  53. package/build/tools/redeem-cashu.js +60 -0
  54. package/build/tools/redeem-cashu.js.map +1 -1
  55. package/build/tools/safe-error.d.ts +1 -4
  56. package/build/tools/safe-error.js +1 -4
  57. package/build/tools/safe-error.js.map +1 -1
  58. package/build/tools/safe-headers.d.ts +1 -1
  59. package/build/tools/safe-headers.js +1 -1
  60. package/build/tools/safe-headers.js.map +1 -1
  61. package/build/tools/search.d.ts +3 -2
  62. package/build/tools/search.js +3 -2
  63. package/build/tools/search.js.map +1 -1
  64. package/build/wallet/cashu.d.ts +1 -0
  65. package/build/wallet/cashu.js +4 -3
  66. package/build/wallet/cashu.js.map +1 -1
  67. package/build/wallet/human.d.ts +3 -4
  68. package/build/wallet/human.js +7 -10
  69. package/build/wallet/human.js.map +1 -1
  70. package/build/wallet/nwc.d.ts +1 -0
  71. package/build/wallet/nwc.js +9 -6
  72. package/build/wallet/nwc.js.map +1 -1
  73. package/build/wallet/resolve.d.ts +1 -0
  74. package/build/wallet/resolve.js +1 -0
  75. package/build/wallet/resolve.js.map +1 -1
  76. package/build/wallet/types.d.ts +4 -1
  77. package/package.json +1 -1
@@ -1,10 +1,20 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { ResilientFetchOptions } from '../fetch/resilient-fetch.js';
3
+ import type { SpendTracker } from '../spend-tracker.js';
3
4
  export interface RedeemCashuDeps {
4
5
  fetchFn: (url: string | URL, init?: RequestInit, options?: ResilientFetchOptions) => Promise<Response>;
5
6
  storeCredential: (origin: string, macaroon: string, preimage: string, paymentHash: string) => boolean;
6
7
  removeToken: (tokenStr: string) => void;
8
+ decodeToken: (token: string) => {
9
+ proofs: Array<{
10
+ amount: number;
11
+ }>;
12
+ };
13
+ maxAutoPaySats: number;
14
+ maxSpendPerMinuteSats: number;
15
+ spendTracker: SpendTracker;
7
16
  }
17
+ /** Redeems Cashu ecash tokens directly with a toll-booth server, bypassing the Lightning round-trip. */
8
18
  export declare function handleRedeemCashu(args: {
9
19
  url: string;
10
20
  token: string;
@@ -21,4 +31,5 @@ export declare function handleRedeemCashu(args: {
21
31
  }[];
22
32
  isError?: undefined;
23
33
  }>;
34
+ /** Registers the l402_redeem_cashu tool with the MCP server. */
24
35
  export declare function registerRedeemCashuTool(server: McpServer, deps: RedeemCashuDeps): void;
@@ -9,8 +9,54 @@ const RedeemResponseSchema = z.object({
9
9
  token_suffix: z.string().min(1).max(256),
10
10
  credited: z.number().optional(),
11
11
  });
12
+ /** Redeems Cashu ecash tokens directly with a toll-booth server, bypassing the Lightning round-trip. */
12
13
  export async function handleRedeemCashu(args, deps) {
13
14
  const origin = new URL(args.url).origin;
15
+ // Decode token to determine its value and enforce spend limits
16
+ let tokenSats;
17
+ try {
18
+ const decoded = deps.decodeToken(args.token);
19
+ tokenSats = decoded.proofs.reduce((sum, p) => sum + p.amount, 0);
20
+ }
21
+ catch {
22
+ return {
23
+ content: [{
24
+ type: 'text',
25
+ text: JSON.stringify({ error: 'Failed to decode Cashu token' }),
26
+ }],
27
+ isError: true,
28
+ };
29
+ }
30
+ if (tokenSats <= 0) {
31
+ return {
32
+ content: [{
33
+ type: 'text',
34
+ text: JSON.stringify({ error: 'Cashu token has no value' }),
35
+ }],
36
+ isError: true,
37
+ };
38
+ }
39
+ if (tokenSats > deps.maxAutoPaySats) {
40
+ return {
41
+ content: [{
42
+ type: 'text',
43
+ text: JSON.stringify({ error: `Token value (${tokenSats} sats) exceeds MAX_AUTO_PAY_SATS (${deps.maxAutoPaySats}). Increase the limit or use a smaller token.` }),
44
+ }],
45
+ isError: true,
46
+ };
47
+ }
48
+ if (!deps.spendTracker.tryRecord(tokenSats, deps.maxSpendPerMinuteSats)) {
49
+ return {
50
+ content: [{
51
+ type: 'text',
52
+ text: JSON.stringify({ error: 'Per-minute spend limit reached.' }),
53
+ }],
54
+ isError: true,
55
+ };
56
+ }
57
+ // Track whether the server has consumed the token so the catch block
58
+ // knows whether to roll back the spend-tracker reservation.
59
+ let redeemSucceeded = false;
14
60
  try {
15
61
  // Step 1: Create invoice to get paymentHash and statusToken
16
62
  const invoiceResponse = await deps.fetchFn(`${origin}/create-invoice`, {
@@ -19,6 +65,7 @@ export async function handleRedeemCashu(args, deps) {
19
65
  body: JSON.stringify({}),
20
66
  }, { retries: 0 });
21
67
  if (!invoiceResponse.ok) {
68
+ deps.spendTracker.unrecord(tokenSats);
22
69
  return {
23
70
  content: [{
24
71
  type: 'text',
@@ -30,6 +77,7 @@ export async function handleRedeemCashu(args, deps) {
30
77
  const raw = await invoiceResponse.json();
31
78
  const invoiceValidated = InvoiceResponse.safeParse(raw);
32
79
  if (!invoiceValidated.success) {
80
+ deps.spendTracker.unrecord(tokenSats);
33
81
  return {
34
82
  content: [{
35
83
  type: 'text',
@@ -52,6 +100,7 @@ export async function handleRedeemCashu(args, deps) {
52
100
  }),
53
101
  }, { retries: 0 });
54
102
  if (!redeemResponse.ok) {
103
+ deps.spendTracker.unrecord(tokenSats);
55
104
  return {
56
105
  content: [{
57
106
  type: 'text',
@@ -60,6 +109,10 @@ export async function handleRedeemCashu(args, deps) {
60
109
  isError: true,
61
110
  };
62
111
  }
112
+ // Past this point the server has consumed the token — the spend is
113
+ // irreversible. Do NOT unrecord tokenSats from here on, even if
114
+ // local steps (parsing, credential storage) fail.
115
+ redeemSucceeded = true;
63
116
  const redeemRaw = await redeemResponse.json();
64
117
  const redeemValidated = RedeemResponseSchema.safeParse(redeemRaw);
65
118
  if (!redeemValidated.success) {
@@ -91,6 +144,12 @@ export async function handleRedeemCashu(args, deps) {
91
144
  };
92
145
  }
93
146
  catch (err) {
147
+ // Only roll back spend if the error occurred before the redeem POST
148
+ // succeeded — after that, the server has consumed the token and the
149
+ // spend is irreversible.
150
+ if (!redeemSucceeded) {
151
+ deps.spendTracker.unrecord(tokenSats);
152
+ }
94
153
  return {
95
154
  content: [{
96
155
  type: 'text',
@@ -100,6 +159,7 @@ export async function handleRedeemCashu(args, deps) {
100
159
  };
101
160
  }
102
161
  }
162
+ /** Registers the l402_redeem_cashu tool with the MCP server. */
103
163
  export function registerRedeemCashuTool(server, deps) {
104
164
  server.registerTool('l402_redeem_cashu', {
105
165
  description: 'Redeem Cashu ecash tokens directly on a toll-booth server, avoiding the Lightning round-trip. Handles the two-step flow automatically (create invoice then redeem token). Only works with toll-booth servers.',
@@ -1 +1 @@
1
- {"version":3,"file":"redeem-cashu.js","sourceRoot":"","sources":["../../src/tools/redeem-cashu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redeem-cashu.js","sourceRoot":"","sources":["../../src/tools/redeem-cashu.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,2 @@
1
- /**
2
- * Convert an error to a safe, user-facing message that does not leak
3
- * stack traces, file paths, or internal details.
4
- */
1
+ /** Converts an error to a user-facing message without leaking internal details or stack traces. */
5
2
  export declare function safeErrorMessage(err: unknown): string;
@@ -1,8 +1,5 @@
1
1
  import { SsrfError, TimeoutError, RetryExhaustedError, ResponseTooLargeError, DowngradeError } from '../fetch/errors.js';
2
- /**
3
- * Convert an error to a safe, user-facing message that does not leak
4
- * stack traces, file paths, or internal details.
5
- */
2
+ /** Converts an error to a user-facing message without leaking internal details or stack traces. */
6
3
  export function safeErrorMessage(err) {
7
4
  if (err instanceof SsrfError)
8
5
  return 'Request blocked: target address is not allowed.';
@@ -1 +1 @@
1
- {"version":3,"file":"safe-error.js","sourceRoot":"","sources":["../../src/tools/safe-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExH;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,GAAG,YAAY,SAAS;QAAE,OAAO,iDAAiD,CAAA;IACtF,IAAI,GAAG,YAAY,YAAY;QAAE,OAAO,oBAAoB,CAAA;IAC5D,IAAI,GAAG,YAAY,qBAAqB;QAAE,OAAO,8CAA8C,CAAA;IAC/F,IAAI,GAAG,YAAY,cAAc;QAAE,OAAO,kCAAkC,CAAA;IAC5E,IAAI,GAAG,YAAY,mBAAmB;QAAE,OAAO,wCAAwC,CAAA;IAEvF,IAAI,GAAG,YAAY,SAAS,IAAK,GAAW,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACxE,OAAO,cAAc,CAAA;IACvB,CAAC;IAED,kEAAkE;IAClE,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAA;QAChD,IAAI,IAAI;YAAE,OAAO,kBAAkB,IAAI,EAAE,CAAA;QACzC,qCAAqC;QACrC,OAAO,mBAAmB,GAAG,CAAC,IAAI,EAAE,CAAA;IACtC,CAAC;IAED,OAAO,+BAA+B,CAAA;AACxC,CAAC"}
1
+ {"version":3,"file":"safe-error.js","sourceRoot":"","sources":["../../src/tools/safe-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExH,mGAAmG;AACnG,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,GAAG,YAAY,SAAS;QAAE,OAAO,iDAAiD,CAAA;IACtF,IAAI,GAAG,YAAY,YAAY;QAAE,OAAO,oBAAoB,CAAA;IAC5D,IAAI,GAAG,YAAY,qBAAqB;QAAE,OAAO,8CAA8C,CAAA;IAC/F,IAAI,GAAG,YAAY,cAAc;QAAE,OAAO,kCAAkC,CAAA;IAC5E,IAAI,GAAG,YAAY,mBAAmB;QAAE,OAAO,wCAAwC,CAAA;IAEvF,IAAI,GAAG,YAAY,SAAS,IAAK,GAAW,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACxE,OAAO,cAAc,CAAA;IACvB,CAAC;IAED,kEAAkE;IAClE,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAA;QAChD,IAAI,IAAI;YAAE,OAAO,kBAAkB,IAAI,EAAE,CAAA;QACzC,qCAAqC;QACrC,OAAO,mBAAmB,GAAG,CAAC,IAAI,EAAE,CAAA;IACtC,CAAC;IAED,OAAO,+BAA+B,CAAA;AACxC,CAAC"}
@@ -1,2 +1,2 @@
1
- /** Return only whitelisted response headers. */
1
+ /** Returns only whitelisted response headers, stripping security-sensitive values. */
2
2
  export declare function filterResponseHeaders(headers: Headers): Record<string, string>;
@@ -18,7 +18,7 @@ const SAFE_HEADERS = new Set([
18
18
  'access-control-allow-origin',
19
19
  'vary',
20
20
  ]);
21
- /** Return only whitelisted response headers. */
21
+ /** Returns only whitelisted response headers, stripping security-sensitive values. */
22
22
  export function filterResponseHeaders(headers) {
23
23
  const filtered = {};
24
24
  for (const [key, value] of headers.entries()) {
@@ -1 +1 @@
1
- {"version":3,"file":"safe-headers.js","sourceRoot":"","sources":["../../src/tools/safe-headers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,cAAc;IACd,gBAAgB;IAChB,kBAAkB;IAClB,eAAe;IACf,MAAM;IACN,eAAe;IACf,MAAM;IACN,kBAAkB;IAClB,mBAAmB;IACnB,uBAAuB;IACvB,mBAAmB;IACnB,aAAa;IACb,6BAA6B;IAC7B,MAAM;CACP,CAAC,CAAA;AAEF,gDAAgD;AAChD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,QAAQ,GAA2B,EAAE,CAAA;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7C,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACxC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACvB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"safe-headers.js","sourceRoot":"","sources":["../../src/tools/safe-headers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,cAAc;IACd,gBAAgB;IAChB,kBAAkB;IAClB,eAAe;IACf,MAAM;IACN,eAAe;IACf,MAAM;IACN,kBAAkB;IAClB,mBAAmB;IACnB,uBAAuB;IACvB,mBAAmB;IACnB,aAAa;IACb,6BAA6B;IAC7B,MAAM;CACP,CAAC,CAAA;AAEF,sFAAsF;AACtF,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,QAAQ,GAA2B,EAAE,CAAA;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7C,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACxC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACvB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -21,9 +21,9 @@ export interface ParsedService {
21
21
  description: string;
22
22
  }[];
23
23
  }
24
- /** Extract service metadata from a kind 31402 Nostr event. */
24
+ /** Extracts service metadata (name, URL, pricing, capabilities) from a kind 31402 Nostr event. */
25
25
  export declare function parseAnnounceEvent(event: NostrEvent): ParsedService;
26
- /** Search for L402 services by querying Nostr relays for kind 31402 events. */
26
+ /** Searches Nostr relays for L402 service announcements matching a query, topic, or payment method. */
27
27
  export declare function handleSearch(args: {
28
28
  query: string;
29
29
  relays?: string[];
@@ -44,4 +44,5 @@ export declare function handleSearch(args: {
44
44
  }[];
45
45
  isError: true;
46
46
  }>;
47
+ /** Registers the l402_search tool with the MCP server. */
47
48
  export declare function registerSearchTool(server: McpServer, deps: SearchDeps): void;
@@ -6,7 +6,7 @@ const DEFAULT_RELAYS = [
6
6
  'wss://nos.lol',
7
7
  ];
8
8
  const KIND_L402_ANNOUNCE = 31402;
9
- /** Extract service metadata from a kind 31402 Nostr event. */
9
+ /** Extracts service metadata (name, URL, pricing, capabilities) from a kind 31402 Nostr event. */
10
10
  export function parseAnnounceEvent(event) {
11
11
  const getTag = (key) => event.tags.find(t => t[0] === key)?.[1];
12
12
  const getAllTags = (key) => event.tags.filter(t => t[0] === key);
@@ -45,7 +45,7 @@ export function parseAnnounceEvent(event) {
45
45
  capabilities,
46
46
  };
47
47
  }
48
- /** Search for L402 services by querying Nostr relays for kind 31402 events. */
48
+ /** Searches Nostr relays for L402 service announcements matching a query, topic, or payment method. */
49
49
  export async function handleSearch(args, deps) {
50
50
  try {
51
51
  const relays = args.relays ?? DEFAULT_RELAYS;
@@ -88,6 +88,7 @@ export async function handleSearch(args, deps) {
88
88
  };
89
89
  }
90
90
  }
91
+ /** Registers the l402_search tool with the MCP server. */
91
92
  export function registerSearchTool(server, deps) {
92
93
  server.registerTool('l402_search', {
93
94
  description: 'Search for L402 services on Nostr. Discovers paid APIs by querying relay announcements (kind 31402). Returns service names, URLs, pricing, and payment methods. Use the URL with l402_discover or l402_fetch to interact.',
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { WalletProvider } from './types.js';
2
2
  import type { CashuTokenStore } from '../store/cashu-tokens.js';
3
+ /** Creates a Cashu wallet provider that melts ecash tokens to pay Lightning invoices. */
3
4
  export declare function createCashuWallet(tokenStore: CashuTokenStore): WalletProvider;
@@ -1,4 +1,4 @@
1
- async function doPayInvoice(invoice, tokenStore) {
1
+ async function doPayInvoice(invoice, tokenStore, _options) {
2
2
  const token = tokenStore.consumeFirst();
3
3
  if (!token) {
4
4
  return { paid: false, method: 'cashu', reason: 'No Cashu tokens available' };
@@ -66,6 +66,7 @@ async function doPayInvoice(invoice, tokenStore) {
66
66
  return { paid: false, method: 'cashu', reason: 'Cashu payment failed' };
67
67
  }
68
68
  }
69
+ /** Creates a Cashu wallet provider that melts ecash tokens to pay Lightning invoices. */
69
70
  export function createCashuWallet(tokenStore) {
70
71
  // Serialise payment attempts to prevent concurrent token consumption races
71
72
  let paymentLock = Promise.resolve({ paid: false, method: 'cashu' });
@@ -74,10 +75,10 @@ export function createCashuWallet(tokenStore) {
74
75
  get available() {
75
76
  return tokenStore.totalBalance() > 0;
76
77
  },
77
- payInvoice(invoice) {
78
+ payInvoice(invoice, options) {
78
79
  paymentLock = paymentLock
79
80
  .catch(() => { }) // never let a prior rejection block the chain
80
- .then(() => doPayInvoice(invoice, tokenStore));
81
+ .then(() => doPayInvoice(invoice, tokenStore, options));
81
82
  return paymentLock;
82
83
  },
83
84
  };
@@ -1 +1 @@
1
- {"version":3,"file":"cashu.js","sourceRoot":"","sources":["../../src/wallet/cashu.ts"],"names":[],"mappings":"AAGA,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,UAA2B;IACtE,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,EAAE,CAAA;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAA;IAC9E,CAAC;IAED,qEAAqE;IACrE,2DAA2D;IAC3D,IAAI,UAIS,CAAA;IAEb,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;QAEtF,0DAA0D;QAC1D,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,CAAA;QACtE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAA;QAEnC,uEAAuE;QACvE,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;QACvD,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,WAAW,CAAA;QAE7D,0CAA0C;QAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,CAAqB,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAC5F,IAAI,WAAW,GAAG,YAAY,EAAE,CAAC;YAC/B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACrB,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,gBAAgB,WAAW,oCAAoC,SAAS,CAAC,MAAM,WAAW,SAAS,CAAC,WAAW,eAAe;aACvI,CAAA;QACH,CAAC;QAED,mEAAmE;QACnE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE;YACzF,WAAW,EAAE,IAAI;SAClB,CAAC,CAAA;QAEF,kEAAkE;QAClE,oEAAoE;QACpE,kEAAkE;QAClE,6DAA6D;QAC7D,UAAU,GAAG,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAA;QAE9D,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QAErE,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YACxC,qEAAqE;YACrE,6BAA6B;YAC7B,mBAAmB,CACjB,UAAU,EACV,iBAAiB,EACjB,KAAK,CAAC,IAAI,EACV,YAAY,EACZ,YAAY,CAAC,MAAM,CACpB,CAAA;YAED,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,gBAAgB,IAAI,SAAS;gBAC1D,MAAM,EAAE,OAAO;aAChB,CAAA;QACH,CAAC;aAAM,CAAC;YACN,6DAA6D;YAC7D,4EAA4E;YAC5E,mBAAmB,CACjB,UAAU,EACV,iBAAiB,EACjB,KAAK,CAAC,IAAI,EACV,YAAY,EACZ,YAAY,CACb,CAAA;YACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAA;QACtE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,UAAU,EAAE,CAAC;YACf,4EAA4E;YAC5E,sEAAsE;YACtE,OAAO,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAA;YAChG,mBAAmB,CACjB,UAAU,EACV,UAAU,CAAC,iBAAiB,EAC5B,KAAK,CAAC,IAAI,EACV,UAAU,CAAC,YAAY,EACvB,UAAU,CAAC,YAAY,CACxB,CAAA;QACH,CAAC;aAAM,CAAC;YACN,+DAA+D;YAC/D,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAA;IACzE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAA2B;IAC3D,2EAA2E;IAC3E,IAAI,WAAW,GAA2B,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;IAE3F,OAAO;QACL,MAAM,EAAE,OAAO;QACf,IAAI,SAAS;YACX,OAAO,UAAU,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;QACtC,CAAC;QAED,UAAU,CAAC,OAAe;YACxB,WAAW,GAAG,WAAW;iBACtB,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAE,8CAA8C;iBAC/D,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;YAChD,OAAO,WAAW,CAAA;QACpB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAC1B,UAA2B,EAC3B,QAAuH,EACvH,IAAY,EACZ,UAA4E,EAC5E,YAA8E;IAE9E,MAAM,SAAS,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,YAAY,CAAC,CAAA;IAClD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAElC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACjE,IAAI,SAAS,IAAI,CAAC;YAAE,OAAM;QAE1B,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QACrD,UAAU,CAAC,GAAG,CAAC;YACb,KAAK,EAAE,OAAO;YACd,IAAI;YACJ,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAClC,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,gDAAgD;QAChD,2DAA2D;QAC3D,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;IAC1E,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cashu.js","sourceRoot":"","sources":["../../src/wallet/cashu.ts"],"names":[],"mappings":"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"}
@@ -9,14 +9,13 @@ export interface PollOptions {
9
9
  preimage?: string;
10
10
  }>;
11
11
  }
12
+ /** Polls a toll-booth server for invoice settlement, returning once paid or timed out. */
12
13
  export declare function pollForSettlement(paymentHash: string, options: PollOptions): Promise<PaymentResult>;
13
14
  export interface HumanWalletOptions {
14
15
  initialIntervalS: number;
15
16
  maxIntervalS: number;
16
17
  timeoutS: number;
17
- generateQr: (data: string) => Promise<string>;
18
18
  fetchFn: (url: string | URL, init?: RequestInit, options?: ResilientFetchOptions) => Promise<Response>;
19
19
  }
20
- export declare function createHumanWallet(options: HumanWalletOptions): WalletProvider & {
21
- setServerOrigin(origin: string): void;
22
- };
20
+ /** Creates a human-in-the-loop wallet that polls for settlement. */
21
+ export declare function createHumanWallet(options: HumanWalletOptions): WalletProvider;
@@ -1,3 +1,4 @@
1
+ /** Polls a toll-booth server for invoice settlement, returning once paid or timed out. */
1
2
  export async function pollForSettlement(paymentHash, options) {
2
3
  const deadline = Date.now() + options.timeoutS * 1000;
3
4
  let intervalMs = options.initialIntervalS * 1000;
@@ -14,24 +15,20 @@ export async function pollForSettlement(paymentHash, options) {
14
15
  }
15
16
  return { paid: false, method: 'human', reason: `Payment timed out after ${options.timeoutS}s` };
16
17
  }
18
+ /** Creates a human-in-the-loop wallet that polls for settlement. */
17
19
  export function createHumanWallet(options) {
18
- let serverOrigin = '';
19
20
  return {
20
21
  method: 'human',
21
22
  available: true,
22
- setServerOrigin(origin) {
23
- serverOrigin = origin;
24
- },
25
- async payInvoice(invoice) {
26
- const qrDataUri = await options.generateQr(invoice);
27
- console.error(`\nScan to pay: ${qrDataUri}\n`);
23
+ async payInvoice(invoice, payOptions) {
24
+ const origin = payOptions?.serverOrigin;
28
25
  const { decodeBolt11 } = await import('../l402/bolt11.js');
29
26
  const decoded = decodeBolt11(invoice);
30
27
  if (!decoded?.paymentHash) {
31
28
  return { paid: false, method: 'human', reason: 'Could not decode invoice payment hash' };
32
29
  }
33
- if (!serverOrigin) {
34
- return { paid: false, method: 'human', reason: 'No server origin set for settlement polling' };
30
+ if (!origin) {
31
+ return { paid: false, method: 'human', reason: 'No server origin for settlement polling' };
35
32
  }
36
33
  return pollForSettlement(decoded.paymentHash, {
37
34
  initialIntervalS: options.initialIntervalS,
@@ -39,7 +36,7 @@ export function createHumanWallet(options) {
39
36
  timeoutS: options.timeoutS,
40
37
  checkSettlement: async (hash) => {
41
38
  try {
42
- const res = await options.fetchFn(`${serverOrigin}/invoice-status/${hash}`, undefined, { retries: 0 });
39
+ const res = await options.fetchFn(`${origin}/invoice-status/${hash}`, undefined, { retries: 0 });
43
40
  if (!res.ok)
44
41
  return { settled: false };
45
42
  const data = await res.json();
@@ -1 +1 @@
1
- {"version":3,"file":"human.js","sourceRoot":"","sources":["../../src/wallet/human.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"human.js","sourceRoot":"","sources":["../../src/wallet/human.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { WalletProvider } from './types.js';
2
+ /** Creates a Nostr Wallet Connect provider that pays Lightning invoices via the NWC protocol. */
2
3
  export declare function createNwcWallet(nwcUri: string): WalletProvider;
3
4
  export declare function hexToBytes(hex: string): Uint8Array;
@@ -1,8 +1,9 @@
1
+ /** Creates a Nostr Wallet Connect provider that pays Lightning invoices via the NWC protocol. */
1
2
  export function createNwcWallet(nwcUri) {
2
3
  return {
3
4
  method: 'nwc',
4
5
  available: true,
5
- async payInvoice(invoice) {
6
+ async payInvoice(invoice, _options) {
6
7
  // Parse NWC URI: nostr+walletconnect://<pubkey>?relay=<relay>&secret=<secret>
7
8
  const url = new URL(nwcUri.replace('nostr+walletconnect://', 'https://'));
8
9
  const walletPubkey = url.hostname || url.pathname.replace('//', '');
@@ -57,9 +58,10 @@ export function createNwcWallet(nwcUri) {
57
58
  onevent: (responseEvent) => {
58
59
  clearTimeout(timeout);
59
60
  try {
60
- // Verify event signature — relay-side filtering is advisory;
61
- // a compromised relay could forge responses with fake preimages.
62
- if (!verifyEvent(responseEvent)) {
61
+ // Verify the event is from the expected wallet — relay-side
62
+ // filtering is advisory; a compromised relay could inject
63
+ // events from a different pubkey.
64
+ if (responseEvent.pubkey !== walletPubkey || !verifyEvent(responseEvent)) {
63
65
  ck.fill(0);
64
66
  r.close();
65
67
  resolve({ paid: false, method: 'nwc', reason: 'NWC response signature verification failed' });
@@ -67,10 +69,11 @@ export function createNwcWallet(nwcUri) {
67
69
  }
68
70
  const decrypted = decrypt(responseEvent.content, ck);
69
71
  const response = JSON.parse(decrypted);
70
- if (typeof response.result?.preimage === 'string' && response.result.preimage) {
72
+ const preimage = response.result?.preimage;
73
+ if (typeof preimage === 'string' && preimage && /^[0-9a-fA-F]{64}$/.test(preimage)) {
71
74
  ck.fill(0);
72
75
  r.close();
73
- resolve({ paid: true, preimage: response.result.preimage, method: 'nwc' });
76
+ resolve({ paid: true, preimage, method: 'nwc' });
74
77
  }
75
78
  else {
76
79
  ck.fill(0);
@@ -1 +1 @@
1
- {"version":3,"file":"nwc.js","sourceRoot":"","sources":["../../src/wallet/nwc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nwc.js","sourceRoot":"","sources":["../../src/wallet/nwc.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  import type { WalletMethod, WalletProvider } from './types.js';
2
+ /** Selects a wallet provider by preferred method, or returns the first available one. */
2
3
  export declare function resolveWallet(providers: WalletProvider[], preferredMethod?: WalletMethod): WalletProvider | undefined;
@@ -1,3 +1,4 @@
1
+ /** Selects a wallet provider by preferred method, or returns the first available one. */
1
2
  export function resolveWallet(providers, preferredMethod) {
2
3
  if (preferredMethod) {
3
4
  return providers.find(p => p.method === preferredMethod && p.available);
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/wallet/resolve.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAC3B,SAA2B,EAC3B,eAA8B;IAE9B,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,eAAe,IAAI,CAAC,CAAC,SAAS,CAAC,CAAA;IACzE,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AACzC,CAAC"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/wallet/resolve.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,MAAM,UAAU,aAAa,CAC3B,SAA2B,EAC3B,eAA8B;IAE9B,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,eAAe,IAAI,CAAC,CAAC,SAAS,CAAC,CAAA;IACzE,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AACzC,CAAC"}
@@ -1,4 +1,7 @@
1
1
  export type WalletMethod = 'nwc' | 'cashu' | 'human';
2
+ export interface PayInvoiceOptions {
3
+ serverOrigin?: string;
4
+ }
2
5
  export interface PaymentResult {
3
6
  paid: boolean;
4
7
  preimage?: string;
@@ -8,5 +11,5 @@ export interface PaymentResult {
8
11
  export interface WalletProvider {
9
12
  method: WalletMethod;
10
13
  available: boolean;
11
- payInvoice(invoice: string): Promise<PaymentResult>;
14
+ payInvoice(invoice: string, options?: PayInvoiceOptions): Promise<PaymentResult>;
12
15
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "402-mcp",
3
- "version": "3.1.3",
3
+ "version": "3.2.0",
4
4
  "description": "L402 + x402 client MCP - AI agents discover, pay for, and consume any payment-gated API",
5
5
  "type": "module",
6
6
  "bin": {