@apify/mcpc 0.3.0 → 0.3.1

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 (111) hide show
  1. package/CHANGELOG.md +37 -2
  2. package/README.md +171 -48
  3. package/dist/bridge/index.js +32 -40
  4. package/dist/bridge/index.js.map +1 -1
  5. package/dist/cli/commands/clean.d.ts.map +1 -1
  6. package/dist/cli/commands/clean.js +3 -2
  7. package/dist/cli/commands/clean.js.map +1 -1
  8. package/dist/cli/commands/connect.d.ts +63 -0
  9. package/dist/cli/commands/connect.d.ts.map +1 -0
  10. package/dist/cli/commands/connect.js +655 -0
  11. package/dist/cli/commands/connect.js.map +1 -0
  12. package/dist/cli/commands/logs.d.ts +8 -0
  13. package/dist/cli/commands/logs.d.ts.map +1 -0
  14. package/dist/cli/commands/logs.js +143 -0
  15. package/dist/cli/commands/logs.js.map +1 -0
  16. package/dist/cli/commands/sessions.d.ts +6 -59
  17. package/dist/cli/commands/sessions.d.ts.map +1 -1
  18. package/dist/cli/commands/sessions.js +37 -690
  19. package/dist/cli/commands/sessions.js.map +1 -1
  20. package/dist/cli/commands/skills.d.ts +20 -0
  21. package/dist/cli/commands/skills.d.ts.map +1 -0
  22. package/dist/cli/commands/skills.js +160 -0
  23. package/dist/cli/commands/skills.js.map +1 -0
  24. package/dist/cli/commands/x402.d.ts.map +1 -1
  25. package/dist/cli/commands/x402.js +14 -4
  26. package/dist/cli/commands/x402.js.map +1 -1
  27. package/dist/cli/index.js +117 -31
  28. package/dist/cli/index.js.map +1 -1
  29. package/dist/cli/output.d.ts +13 -0
  30. package/dist/cli/output.d.ts.map +1 -1
  31. package/dist/cli/output.js +113 -20
  32. package/dist/cli/output.js.map +1 -1
  33. package/dist/cli/parser.d.ts +1 -1
  34. package/dist/cli/parser.d.ts.map +1 -1
  35. package/dist/cli/parser.js +25 -2
  36. package/dist/cli/parser.js.map +1 -1
  37. package/dist/cli/shell.js.map +1 -1
  38. package/dist/core/capabilities.d.ts +3 -0
  39. package/dist/core/capabilities.d.ts.map +1 -0
  40. package/dist/core/capabilities.js +14 -0
  41. package/dist/core/capabilities.js.map +1 -0
  42. package/dist/core/index.d.ts +1 -0
  43. package/dist/core/index.d.ts.map +1 -1
  44. package/dist/core/index.js +1 -0
  45. package/dist/core/index.js.map +1 -1
  46. package/dist/core/mcp-client.d.ts +4 -0
  47. package/dist/core/mcp-client.d.ts.map +1 -1
  48. package/dist/core/mcp-client.js +36 -12
  49. package/dist/core/mcp-client.js.map +1 -1
  50. package/dist/lib/bridge-client.d.ts +4 -1
  51. package/dist/lib/bridge-client.d.ts.map +1 -1
  52. package/dist/lib/bridge-client.js +29 -3
  53. package/dist/lib/bridge-client.js.map +1 -1
  54. package/dist/lib/bridge-manager.d.ts +3 -3
  55. package/dist/lib/bridge-manager.d.ts.map +1 -1
  56. package/dist/lib/bridge-manager.js +36 -20
  57. package/dist/lib/bridge-manager.js.map +1 -1
  58. package/dist/lib/cleanup.d.ts.map +1 -1
  59. package/dist/lib/cleanup.js +20 -19
  60. package/dist/lib/cleanup.js.map +1 -1
  61. package/dist/lib/config.d.ts +14 -0
  62. package/dist/lib/config.d.ts.map +1 -1
  63. package/dist/lib/config.js +41 -27
  64. package/dist/lib/config.js.map +1 -1
  65. package/dist/lib/errors.d.ts +0 -1
  66. package/dist/lib/errors.d.ts.map +1 -1
  67. package/dist/lib/errors.js +2 -4
  68. package/dist/lib/errors.js.map +1 -1
  69. package/dist/lib/index.d.ts +1 -0
  70. package/dist/lib/index.d.ts.map +1 -1
  71. package/dist/lib/index.js +1 -0
  72. package/dist/lib/index.js.map +1 -1
  73. package/dist/lib/log-reader.d.ts +28 -0
  74. package/dist/lib/log-reader.d.ts.map +1 -0
  75. package/dist/lib/log-reader.js +278 -0
  76. package/dist/lib/log-reader.js.map +1 -0
  77. package/dist/lib/session-client.d.ts +1 -1
  78. package/dist/lib/session-client.d.ts.map +1 -1
  79. package/dist/lib/session-client.js +6 -8
  80. package/dist/lib/session-client.js.map +1 -1
  81. package/dist/lib/stderr-tail.d.ts +10 -0
  82. package/dist/lib/stderr-tail.d.ts.map +1 -0
  83. package/dist/lib/stderr-tail.js +28 -0
  84. package/dist/lib/stderr-tail.js.map +1 -0
  85. package/dist/lib/types.d.ts +6 -1
  86. package/dist/lib/types.d.ts.map +1 -1
  87. package/dist/lib/types.js +1 -0
  88. package/dist/lib/types.js.map +1 -1
  89. package/dist/lib/utils.d.ts +1 -0
  90. package/dist/lib/utils.d.ts.map +1 -1
  91. package/dist/lib/utils.js +12 -2
  92. package/dist/lib/utils.js.map +1 -1
  93. package/dist/lib/x402/fetch-middleware.d.ts +3 -2
  94. package/dist/lib/x402/fetch-middleware.d.ts.map +1 -1
  95. package/dist/lib/x402/fetch-middleware.js +37 -24
  96. package/dist/lib/x402/fetch-middleware.js.map +1 -1
  97. package/dist/lib/x402/signer.d.ts +7 -1
  98. package/dist/lib/x402/signer.d.ts.map +1 -1
  99. package/dist/lib/x402/signer.js +249 -5
  100. package/dist/lib/x402/signer.js.map +1 -1
  101. package/docs/README.md +1 -0
  102. package/docs/claude-skill/SKILL.md +150 -117
  103. package/docs/examples/company-lookup.sh +6 -6
  104. package/docs/vhs/README.md +79 -0
  105. package/docs/vhs/grep.tape +56 -0
  106. package/docs/vhs/mcpc-demo.tape +179 -0
  107. package/docs/vhs/proxy.tape +69 -0
  108. package/docs/vhs/quickstart.tape +59 -0
  109. package/docs/vhs/scripting.tape +69 -0
  110. package/docs/vhs/tools.tape +66 -0
  111. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { FetchLike } from '@modelcontextprotocol/sdk/shared/transport.js';
2
2
  import type { Tool } from '@modelcontextprotocol/sdk/types.js';
3
- import { type SignerWallet, type PaymentRequiredAccept } from './signer.js';
3
+ import { type SignerWallet, type PaymentRequiredAccept, type SchemePreference } from './signer.js';
4
4
  export interface X402PaymentCache {
5
5
  signature: string | null;
6
6
  }
@@ -8,9 +8,10 @@ export interface X402FetchMiddlewareOptions {
8
8
  wallet: SignerWallet;
9
9
  getToolByName?: (name: string) => Tool | undefined;
10
10
  paymentCache: X402PaymentCache;
11
+ schemePreference?: SchemePreference;
11
12
  }
12
13
  export declare function createX402FetchMiddleware(baseFetch: FetchLike, options: X402FetchMiddlewareOptions): FetchLike;
13
- export declare function extractAcceptFromPaymentRequired(data: unknown): {
14
+ export declare function extractAcceptFromPaymentRequired(data: unknown, schemePreference?: SchemePreference): {
14
15
  accept: PaymentRequiredAccept;
15
16
  resource?: {
16
17
  url?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-middleware.d.ts","sourceRoot":"","sources":["../../../src/lib/x402/fetch-middleware.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC/E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAE3B,MAAM,aAAa,CAAC;AAkCrB,MAAM,WAAW,gBAAgB;IAE/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAKD,MAAM,WAAW,0BAA0B;IAEzC,MAAM,EAAE,YAAY,CAAC;IAOrB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;IAGnD,YAAY,EAAE,gBAAgB,CAAC;CAChC;AAUD,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,0BAA0B,GAClC,SAAS,CA+BX;AAgLD,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,OAAO,GAC1D;IACE,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACtE,GACD,SAAS,CAkBZ;AA0BD,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,OAAO,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAgCrC"}
1
+ {"version":3,"file":"fetch-middleware.d.ts","sourceRoot":"","sources":["../../../src/lib/x402/fetch-middleware.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC/E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAE1B,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AA4CrB,MAAM,WAAW,gBAAgB;IAE/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAKD,MAAM,WAAW,0BAA0B;IAEzC,MAAM,EAAE,YAAY,CAAC;IAOrB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;IAGnD,YAAY,EAAE,gBAAgB,CAAC;IAG/B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAUD,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,0BAA0B,GAClC,SAAS,CAqDX;AA2MD,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,OAAO,EACb,gBAAgB,CAAC,EAAE,gBAAgB,GAEjC;IACE,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACtE,GACD,SAAS,CAqBZ;AA0BD,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,OAAO,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAgCrC"}
@@ -1,11 +1,11 @@
1
- import { signPayment, parsePaymentRequired, } from './signer.js';
1
+ import { signPayment, parsePaymentRequired, selectAcceptEntry, DEFAULT_PAYMENT_EXPIRY_SECONDS, } from './signer.js';
2
2
  import { createLogger } from '../logger.js';
3
3
  const logger = createLogger('x402-middleware');
4
4
  const MCP_PAYMENT_META_KEY = 'x402/payment';
5
5
  export function createX402FetchMiddleware(baseFetch, options) {
6
- const { wallet, getToolByName, paymentCache } = options;
6
+ const { wallet, getToolByName, paymentCache, schemePreference } = options;
7
7
  return async (url, init) => {
8
- const paymentSignature = await getOrSignPayment(init, wallet, getToolByName, paymentCache);
8
+ const paymentSignature = await getOrSignPayment(init, wallet, getToolByName, paymentCache, schemePreference);
9
9
  if (paymentSignature) {
10
10
  const enhancedInit = injectPayment(init, paymentSignature);
11
11
  const response = await baseFetch(url, enhancedInit);
@@ -14,16 +14,16 @@ export function createX402FetchMiddleware(baseFetch, options) {
14
14
  }
15
15
  logger.debug('Payment rejected (HTTP 402), invalidating cache');
16
16
  paymentCache.signature = null;
17
- return handle402Fallback(url, init, response, baseFetch, wallet, paymentCache);
17
+ return handle402Fallback(url, init, response, baseFetch, wallet, paymentCache, schemePreference);
18
18
  }
19
19
  const response = await baseFetch(url, init);
20
20
  if (response.status === 402) {
21
- return handle402Fallback(url, init, response, baseFetch, wallet, paymentCache);
21
+ return handle402Fallback(url, init, response, baseFetch, wallet, paymentCache, schemePreference);
22
22
  }
23
23
  return response;
24
24
  };
25
25
  }
26
- async function getOrSignPayment(init, wallet, getToolByName, paymentCache) {
26
+ async function getOrSignPayment(init, wallet, getToolByName, paymentCache, schemePreference) {
27
27
  if (!getToolByName || !init?.body) {
28
28
  return undefined;
29
29
  }
@@ -48,22 +48,14 @@ async function getOrSignPayment(init, wallet, getToolByName, paymentCache) {
48
48
  logger.debug(`Using cached payment signature for tool "${toolName}"`);
49
49
  return paymentCache.signature;
50
50
  }
51
- if (!x402.scheme || !x402.network || !x402.amount || !x402.asset || !x402.payTo) {
52
- logger.debug(`Tool "${toolName}" has x402 metadata but missing fields, skipping payment signing`);
51
+ const accept = selectAcceptFromToolMeta(x402, schemePreference);
52
+ if (!accept) {
53
+ logger.debug(`Tool "${toolName}" _meta.x402 does not advertise a usable accept for schemePreference=${schemePreference ?? 'auto'}, deferring to 402 fallback`);
53
54
  return undefined;
54
55
  }
55
- const accept = {
56
- scheme: x402.scheme,
57
- network: x402.network,
58
- amount: x402.amount,
59
- asset: x402.asset,
60
- payTo: x402.payTo,
61
- maxTimeoutSeconds: x402.maxTimeoutSeconds || 3600,
62
- ...(x402.extra && { extra: x402.extra }),
63
- };
64
56
  try {
65
57
  const result = await signPayment({ wallet, accept });
66
- logger.debug(`Fresh payment signed: $${result.amountUsd.toFixed(4)} to ${result.to} on ${result.networkLabel}`);
58
+ logger.debug(`Fresh payment signed: scheme=${accept.scheme} amount=$${result.amountUsd.toFixed(6)} to=${result.to} network=${result.networkLabel}`);
67
59
  paymentCache.signature = result.paymentSignatureBase64;
68
60
  return result.paymentSignatureBase64;
69
61
  }
@@ -72,7 +64,7 @@ async function getOrSignPayment(init, wallet, getToolByName, paymentCache) {
72
64
  return undefined;
73
65
  }
74
66
  }
75
- async function handle402Fallback(url, originalInit, response402, baseFetch, wallet, paymentCache) {
67
+ async function handle402Fallback(url, originalInit, response402, baseFetch, wallet, paymentCache, schemePreference) {
76
68
  const paymentRequiredBase64 = response402.headers.get('PAYMENT-REQUIRED') || response402.headers.get('payment-required');
77
69
  if (!paymentRequiredBase64) {
78
70
  logger.debug('402 response has no PAYMENT-REQUIRED header, passing through');
@@ -82,7 +74,7 @@ async function handle402Fallback(url, originalInit, response402, baseFetch, wall
82
74
  let header;
83
75
  let accept;
84
76
  try {
85
- ({ header, accept } = parsePaymentRequired(paymentRequiredBase64));
77
+ ({ header, accept } = parsePaymentRequired(paymentRequiredBase64, schemePreference));
86
78
  }
87
79
  catch (error) {
88
80
  logger.warn('Failed to parse PAYMENT-REQUIRED header:', error);
@@ -94,7 +86,7 @@ async function handle402Fallback(url, originalInit, response402, baseFetch, wall
94
86
  accept,
95
87
  resource: header.resource,
96
88
  });
97
- logger.debug(`402 fallback payment signed: $${result.amountUsd.toFixed(4)} to ${result.to} on ${result.networkLabel}`);
89
+ logger.debug(`402 fallback payment signed: scheme=${accept.scheme} amount=$${result.amountUsd.toFixed(6)} to=${result.to} network=${result.networkLabel}`);
98
90
  paymentCache.signature = result.paymentSignatureBase64;
99
91
  const retryInit = injectPayment(originalInit, result.paymentSignatureBase64);
100
92
  return await baseFetch(url, retryInit);
@@ -129,14 +121,35 @@ function extractToolCallName(body) {
129
121
  return undefined;
130
122
  }
131
123
  }
132
- export function extractAcceptFromPaymentRequired(data) {
124
+ function selectAcceptFromToolMeta(x402, schemePreference) {
125
+ const preference = schemePreference ?? 'auto';
126
+ if (Array.isArray(x402.accepts) && x402.accepts.length > 0) {
127
+ return selectAcceptEntry(x402.accepts, preference);
128
+ }
129
+ if (!x402.scheme || !x402.network || !x402.amount || !x402.asset || !x402.payTo) {
130
+ return undefined;
131
+ }
132
+ if (preference !== 'auto' && preference !== x402.scheme) {
133
+ return undefined;
134
+ }
135
+ return {
136
+ scheme: x402.scheme,
137
+ network: x402.network,
138
+ amount: x402.amount,
139
+ asset: x402.asset,
140
+ payTo: x402.payTo,
141
+ maxTimeoutSeconds: x402.maxTimeoutSeconds || DEFAULT_PAYMENT_EXPIRY_SECONDS,
142
+ ...(x402.extra && { extra: x402.extra }),
143
+ };
144
+ }
145
+ export function extractAcceptFromPaymentRequired(data, schemePreference) {
133
146
  if (!data || typeof data !== 'object')
134
147
  return undefined;
135
148
  const obj = data;
136
149
  if (!Array.isArray(obj.accepts) || obj.accepts.length === 0)
137
150
  return undefined;
138
- const accept = obj.accepts.find((a) => a.scheme === 'exact');
139
- if (!accept || !accept.payTo || !accept.amount || !accept.network || !accept.asset) {
151
+ const accept = selectAcceptEntry(obj.accepts, schemePreference ?? 'auto');
152
+ if (!accept) {
140
153
  return undefined;
141
154
  }
142
155
  const resource = obj.resource;
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-middleware.js","sourceRoot":"","sources":["../../../src/lib/x402/fetch-middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-middleware.js","sourceRoot":"","sources":["../../../src/lib/x402/fetch-middleware.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
+ import type { X402SchemePreference } from '../types.js';
1
2
  export declare const X402_VERSION = 2;
3
+ export declare const DEFAULT_PAYMENT_EXPIRY_SECONDS = 3600;
2
4
  export interface PaymentRequiredAccept {
3
5
  scheme: string;
4
6
  network: string;
@@ -9,6 +11,7 @@ export interface PaymentRequiredAccept {
9
11
  extra?: {
10
12
  name?: string;
11
13
  version?: string;
14
+ facilitatorAddress?: string;
12
15
  };
13
16
  }
14
17
  export interface PaymentRequiredHeader {
@@ -20,6 +23,7 @@ export interface PaymentRequiredHeader {
20
23
  };
21
24
  accepts: PaymentRequiredAccept[];
22
25
  }
26
+ export type SchemePreference = X402SchemePreference;
23
27
  export interface SignerWallet {
24
28
  privateKey: string;
25
29
  address: string;
@@ -30,6 +34,7 @@ export interface SignPaymentInput {
30
34
  resource?: PaymentRequiredHeader['resource'];
31
35
  amountOverride?: bigint;
32
36
  expiryOverride?: number;
37
+ skipPermit2Approval?: boolean;
33
38
  }
34
39
  export interface SignPaymentResult {
35
40
  paymentSignatureBase64: string;
@@ -40,7 +45,8 @@ export interface SignPaymentResult {
40
45
  networkLabel: string;
41
46
  expiresAt: Date;
42
47
  }
43
- export declare function parsePaymentRequired(base64Value: string): {
48
+ export declare function selectAcceptEntry(accepts: PaymentRequiredAccept[], preference?: SchemePreference): PaymentRequiredAccept | undefined;
49
+ export declare function parsePaymentRequired(base64Value: string, schemePreference?: SchemePreference): {
44
50
  header: PaymentRequiredHeader;
45
51
  accept: PaymentRequiredAccept;
46
52
  };
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../src/lib/x402/signer.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,YAAY,IAAI,CAAC;AA4C9B,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,OAAO,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAGD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,CAAC,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAE7C,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAEhC,sBAAsB,EAAE,MAAM,CAAC;IAE/B,IAAI,EAAE,MAAM,CAAC;IAEb,EAAE,EAAE,MAAM,CAAC;IAEX,SAAS,EAAE,MAAM,CAAC;IAElB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,YAAY,EAAE,MAAM,CAAC;IAErB,SAAS,EAAE,IAAI,CAAC;CACjB;AAoBD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG;IACzD,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,qBAAqB,CAAC;CAC/B,CAiCA;AASD,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6FrF"}
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../src/lib/x402/signer.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAQxD,eAAO,MAAM,YAAY,IAAI,CAAC;AAI9B,eAAO,MAAM,8BAA8B,OAAO,CAAC;AAqGnD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1E;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,OAAO,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAED,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAGpD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,CAAC,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAE7C,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,cAAc,CAAC,EAAE,MAAM,CAAC;IAQxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAEhC,sBAAsB,EAAE,MAAM,CAAC;IAE/B,IAAI,EAAE,MAAM,CAAC;IAEb,EAAE,EAAE,MAAM,CAAC;IAEX,SAAS,EAAE,MAAM,CAAC;IAElB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,YAAY,EAAE,MAAM,CAAC;IAErB,SAAS,EAAE,IAAI,CAAC;CACjB;AAmDD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,qBAAqB,EAAE,EAChC,UAAU,GAAE,gBAAyB,GACpC,qBAAqB,GAAG,SAAS,CAWnC;AAUD,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,gBAAgB,GAAE,gBAAyB,GAC1C;IACD,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,qBAAqB,CAAC;CAC/B,CAmCA;AAUD,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAYrF"}
@@ -1,9 +1,40 @@
1
1
  import { privateKeyToAccount } from 'viem/accounts';
2
- import { createWalletClient, http } from 'viem';
2
+ import { createPublicClient, createWalletClient, encodeFunctionData, getAddress, http, } from 'viem';
3
3
  import { base, baseSepolia } from 'viem/chains';
4
4
  import { ClientError } from '../errors.js';
5
+ import { createLogger } from '../logger.js';
6
+ const logger = createLogger('x402-signer');
5
7
  export const X402_VERSION = 2;
6
8
  const USDC_DECIMALS = 6;
9
+ export const DEFAULT_PAYMENT_EXPIRY_SECONDS = 3600;
10
+ const PERMIT2_ADDRESS = '0x000000000022D473030F116dDEE9F6B43aC78BA3';
11
+ const X402_UPTO_PERMIT2_PROXY = '0x4020A4f3b7b90ccA423B9fabCc0CE57C6C240002';
12
+ const VALID_AFTER_CLOCK_SKEW_SECONDS = 600;
13
+ const MAX_UINT256 = BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');
14
+ const ERC20_ALLOWANCE_ABI = [
15
+ {
16
+ type: 'function',
17
+ name: 'allowance',
18
+ stateMutability: 'view',
19
+ inputs: [
20
+ { name: 'owner', type: 'address' },
21
+ { name: 'spender', type: 'address' },
22
+ ],
23
+ outputs: [{ name: '', type: 'uint256' }],
24
+ },
25
+ ];
26
+ const ERC20_APPROVE_ABI = [
27
+ {
28
+ type: 'function',
29
+ name: 'approve',
30
+ stateMutability: 'nonpayable',
31
+ inputs: [
32
+ { name: 'spender', type: 'address' },
33
+ { name: 'amount', type: 'uint256' },
34
+ ],
35
+ outputs: [{ type: 'bool' }],
36
+ },
37
+ ];
7
38
  const TRANSFER_WITH_AUTHORIZATION_TYPES = {
8
39
  TransferWithAuthorization: [
9
40
  { name: 'from', type: 'address' },
@@ -14,6 +45,24 @@ const TRANSFER_WITH_AUTHORIZATION_TYPES = {
14
45
  { name: 'nonce', type: 'bytes32' },
15
46
  ],
16
47
  };
48
+ const UPTO_PERMIT2_WITNESS_TYPES = {
49
+ PermitWitnessTransferFrom: [
50
+ { name: 'permitted', type: 'TokenPermissions' },
51
+ { name: 'spender', type: 'address' },
52
+ { name: 'nonce', type: 'uint256' },
53
+ { name: 'deadline', type: 'uint256' },
54
+ { name: 'witness', type: 'Witness' },
55
+ ],
56
+ TokenPermissions: [
57
+ { name: 'token', type: 'address' },
58
+ { name: 'amount', type: 'uint256' },
59
+ ],
60
+ Witness: [
61
+ { name: 'to', type: 'address' },
62
+ { name: 'facilitator', type: 'address' },
63
+ { name: 'validAfter', type: 'uint256' },
64
+ ],
65
+ };
17
66
  const NETWORKS = {
18
67
  [`eip155:${base.id}`]: {
19
68
  chain: base,
@@ -33,7 +82,33 @@ function randomBytes32() {
33
82
  crypto.getRandomValues(bytes);
34
83
  return ('0x' + [...bytes].map((b) => b.toString(16).padStart(2, '0')).join(''));
35
84
  }
36
- export function parsePaymentRequired(base64Value) {
85
+ function randomPermit2Nonce() {
86
+ const bytes = new Uint8Array(32);
87
+ crypto.getRandomValues(bytes);
88
+ const hex = '0x' + [...bytes].map((b) => b.toString(16).padStart(2, '0')).join('');
89
+ return BigInt(hex).toString();
90
+ }
91
+ function isValidExactAccept(a) {
92
+ return a.scheme === 'exact' && Boolean(a.payTo && a.amount && a.network && a.asset);
93
+ }
94
+ function isValidUptoAccept(a) {
95
+ return (a.scheme === 'upto' &&
96
+ Boolean(a.payTo && a.amount && a.network && a.asset) &&
97
+ Boolean(a.extra?.facilitatorAddress));
98
+ }
99
+ export function selectAcceptEntry(accepts, preference = 'auto') {
100
+ if (preference === 'upto') {
101
+ return accepts.find(isValidUptoAccept);
102
+ }
103
+ if (preference === 'exact') {
104
+ return accepts.find(isValidExactAccept);
105
+ }
106
+ const upto = accepts.find(isValidUptoAccept);
107
+ if (upto)
108
+ return upto;
109
+ return accepts.find(isValidExactAccept);
110
+ }
111
+ export function parsePaymentRequired(base64Value, schemePreference = 'auto') {
37
112
  let decoded;
38
113
  try {
39
114
  decoded = Buffer.from(base64Value, 'base64').toString('utf-8');
@@ -51,9 +126,11 @@ export function parsePaymentRequired(base64Value) {
51
126
  if (!header.accepts || !Array.isArray(header.accepts) || header.accepts.length === 0) {
52
127
  throw new ClientError('PAYMENT-REQUIRED header has no "accepts" entries.');
53
128
  }
54
- const accept = header.accepts.find((a) => a.scheme === 'exact');
129
+ const accept = selectAcceptEntry(header.accepts, schemePreference);
55
130
  if (!accept) {
56
- throw new ClientError(`No "exact" scheme found in PAYMENT-REQUIRED accepts. Available: ${header.accepts.map((a) => a.scheme).join(', ')}`);
131
+ const requested = schemePreference === 'auto' ? 'exact or upto' : schemePreference;
132
+ const available = header.accepts.map((a) => a.scheme).join(', ');
133
+ throw new ClientError(`No valid "${requested}" scheme found in PAYMENT-REQUIRED accepts. Available: ${available}`);
57
134
  }
58
135
  if (!accept.payTo || !accept.amount || !accept.network || !accept.asset) {
59
136
  throw new ClientError('PAYMENT-REQUIRED accept entry is missing required fields (payTo, amount, network, asset).');
@@ -61,6 +138,17 @@ export function parsePaymentRequired(base64Value) {
61
138
  return { header, accept };
62
139
  }
63
140
  export async function signPayment(input) {
141
+ const { accept } = input;
142
+ logger.debug(`Signing x402 payment: scheme=${accept.scheme} network=${accept.network} amount=${accept.amount} asset=${accept.asset} payTo=${accept.payTo} facilitator=${accept.extra?.facilitatorAddress ?? '<n/a>'}`);
143
+ if (accept.scheme === 'upto') {
144
+ return signUptoPayment(input);
145
+ }
146
+ if (accept.scheme === 'exact') {
147
+ return signExactPayment(input);
148
+ }
149
+ throw new ClientError(`Unsupported x402 scheme: ${accept.scheme}`);
150
+ }
151
+ async function signExactPayment(input) {
64
152
  const { wallet, accept, resource } = input;
65
153
  const networkConfig = NETWORKS[accept.network];
66
154
  if (!networkConfig) {
@@ -68,7 +156,7 @@ export async function signPayment(input) {
68
156
  }
69
157
  const amountAtomicUnits = input.amountOverride ?? BigInt(accept.amount);
70
158
  const amountUsd = Number(amountAtomicUnits) / 10 ** USDC_DECIMALS;
71
- const expirySeconds = (input.expiryOverride ?? accept.maxTimeoutSeconds) || 3600;
159
+ const expirySeconds = (input.expiryOverride ?? accept.maxTimeoutSeconds) || DEFAULT_PAYMENT_EXPIRY_SECONDS;
72
160
  const eip3009Name = accept.extra?.name ?? 'USDC';
73
161
  const eip3009Version = accept.extra?.version ?? '2';
74
162
  const account = privateKeyToAccount(wallet.privateKey);
@@ -136,4 +224,160 @@ export async function signPayment(input) {
136
224
  expiresAt: new Date(Number(validBefore) * 1000),
137
225
  };
138
226
  }
227
+ async function ensurePermit2Allowance(params) {
228
+ const { wallet, tokenAddress, requiredAmount, networkConfig } = params;
229
+ const walletAddress = getAddress(wallet.address);
230
+ const permit2 = getAddress(PERMIT2_ADDRESS);
231
+ const publicClient = createPublicClient({
232
+ chain: networkConfig.chain,
233
+ transport: http(networkConfig.rpcUrl),
234
+ });
235
+ const currentAllowance = (await publicClient.readContract({
236
+ address: tokenAddress,
237
+ abi: ERC20_ALLOWANCE_ABI,
238
+ functionName: 'allowance',
239
+ args: [walletAddress, permit2],
240
+ }));
241
+ if (currentAllowance >= requiredAmount) {
242
+ logger.debug(`Permit2 allowance sufficient (${currentAllowance.toString()} >= ${requiredAmount.toString()})`);
243
+ return { previousAllowance: currentAllowance, newAllowance: currentAllowance };
244
+ }
245
+ logger.info(`Permit2 allowance is ${currentAllowance.toString()} < ${requiredAmount.toString()} required. Submitting one-time approve(MAX_UINT256) transaction…`);
246
+ const account = privateKeyToAccount(wallet.privateKey);
247
+ const walletClient = createWalletClient({
248
+ account,
249
+ chain: networkConfig.chain,
250
+ transport: http(networkConfig.rpcUrl),
251
+ });
252
+ const approveData = encodeFunctionData({
253
+ abi: ERC20_APPROVE_ABI,
254
+ functionName: 'approve',
255
+ args: [permit2, MAX_UINT256],
256
+ });
257
+ const approveTxHash = await walletClient.sendTransaction({
258
+ to: tokenAddress,
259
+ data: approveData,
260
+ });
261
+ logger.info(`Permit2 approve tx submitted: ${approveTxHash}. Waiting for confirmation…`);
262
+ const receipt = await publicClient.waitForTransactionReceipt({ hash: approveTxHash });
263
+ if (receipt.status !== 'success') {
264
+ throw new ClientError(`Permit2 approve transaction reverted on-chain: ${approveTxHash}. Inspect at ${networkConfig.label} explorer.`);
265
+ }
266
+ const newAllowance = (await publicClient.readContract({
267
+ address: tokenAddress,
268
+ abi: ERC20_ALLOWANCE_ABI,
269
+ functionName: 'allowance',
270
+ args: [walletAddress, permit2],
271
+ }));
272
+ logger.info(`Permit2 approve confirmed in block ${receipt.blockNumber}. New allowance: ${newAllowance.toString()}`);
273
+ return { approveTxHash, previousAllowance: currentAllowance, newAllowance };
274
+ }
275
+ async function signUptoPayment(input) {
276
+ const { wallet, accept, resource } = input;
277
+ const networkConfig = NETWORKS[accept.network];
278
+ if (!networkConfig) {
279
+ throw new ClientError(`Unknown network "${accept.network}" in payment requirements. Supported: ${Object.keys(NETWORKS).join(', ')}`);
280
+ }
281
+ const amountAtomicUnits = input.amountOverride ?? BigInt(accept.amount);
282
+ const amountUsd = Number(amountAtomicUnits) / 10 ** USDC_DECIMALS;
283
+ const expirySeconds = (input.expiryOverride ?? accept.maxTimeoutSeconds) || DEFAULT_PAYMENT_EXPIRY_SECONDS;
284
+ const facilitatorAddress = accept.extra?.facilitatorAddress;
285
+ if (!facilitatorAddress) {
286
+ throw new ClientError('upto scheme requires facilitatorAddress in paymentRequirements.extra. ' +
287
+ 'Ensure the server is configured with an upto facilitator.');
288
+ }
289
+ const tokenName = accept.extra?.name ?? 'USDC';
290
+ const tokenVersion = accept.extra?.version ?? '2';
291
+ if (!input.skipPermit2Approval) {
292
+ await ensurePermit2Allowance({
293
+ wallet,
294
+ tokenAddress: getAddress(accept.asset),
295
+ requiredAmount: amountAtomicUnits,
296
+ networkConfig,
297
+ });
298
+ }
299
+ const account = privateKeyToAccount(wallet.privateKey);
300
+ const walletClient = createWalletClient({
301
+ account,
302
+ chain: networkConfig.chain,
303
+ transport: http(networkConfig.rpcUrl),
304
+ });
305
+ const nonce = randomPermit2Nonce();
306
+ const now = Math.floor(Date.now() / 1000);
307
+ const validAfter = (now - VALID_AFTER_CLOCK_SKEW_SECONDS).toString();
308
+ const deadline = (now + expirySeconds).toString();
309
+ if (BigInt(deadline) <= BigInt(validAfter)) {
310
+ throw new ClientError(`Invalid time window: deadline (${deadline}) must be after validAfter (${validAfter}). ` +
311
+ `Check that maxTimeoutSeconds (${accept.maxTimeoutSeconds}) is positive.`);
312
+ }
313
+ const chainId = networkConfig.chain.id;
314
+ const signature = await walletClient.signTypedData({
315
+ domain: {
316
+ name: 'Permit2',
317
+ chainId,
318
+ verifyingContract: PERMIT2_ADDRESS,
319
+ },
320
+ types: UPTO_PERMIT2_WITNESS_TYPES,
321
+ primaryType: 'PermitWitnessTransferFrom',
322
+ message: {
323
+ permitted: {
324
+ token: getAddress(accept.asset),
325
+ amount: amountAtomicUnits,
326
+ },
327
+ spender: getAddress(X402_UPTO_PERMIT2_PROXY),
328
+ nonce: BigInt(nonce),
329
+ deadline: BigInt(deadline),
330
+ witness: {
331
+ to: getAddress(accept.payTo),
332
+ facilitator: getAddress(facilitatorAddress),
333
+ validAfter: BigInt(validAfter),
334
+ },
335
+ },
336
+ });
337
+ const paymentPayload = {
338
+ x402Version: X402_VERSION,
339
+ resource: resource ?? {
340
+ url: 'https://mcp.apify.com/mcp',
341
+ description: 'MCP Server',
342
+ mimeType: 'application/json',
343
+ },
344
+ payload: {
345
+ signature,
346
+ permit2Authorization: {
347
+ permitted: {
348
+ token: getAddress(accept.asset),
349
+ amount: amountAtomicUnits.toString(),
350
+ },
351
+ from: account.address,
352
+ spender: X402_UPTO_PERMIT2_PROXY,
353
+ nonce,
354
+ deadline,
355
+ witness: {
356
+ to: getAddress(accept.payTo),
357
+ facilitator: getAddress(facilitatorAddress),
358
+ validAfter,
359
+ },
360
+ },
361
+ },
362
+ accepted: {
363
+ scheme: 'upto',
364
+ network: networkConfig.networkId,
365
+ asset: accept.asset,
366
+ amount: amountAtomicUnits.toString(),
367
+ payTo: accept.payTo,
368
+ maxTimeoutSeconds: expirySeconds,
369
+ extra: { name: tokenName, version: tokenVersion, facilitatorAddress },
370
+ },
371
+ };
372
+ const paymentSignatureBase64 = Buffer.from(JSON.stringify(paymentPayload)).toString('base64');
373
+ return {
374
+ paymentSignatureBase64,
375
+ from: account.address,
376
+ to: accept.payTo,
377
+ amountUsd,
378
+ amountAtomicUnits,
379
+ networkLabel: networkConfig.label,
380
+ expiresAt: new Date(Number(deadline) * 1000),
381
+ };
382
+ }
139
383
  //# sourceMappingURL=signer.js.map