agentpay-mcp 1.2.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/.env.example +37 -0
  2. package/LICENSE +21 -0
  3. package/README.md +732 -33
  4. package/claude_desktop_config.json +17 -0
  5. package/dist/index.d.ts +3 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +248 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/session/manager.d.ts +90 -0
  10. package/dist/session/manager.d.ts.map +1 -0
  11. package/dist/session/manager.js +262 -0
  12. package/dist/session/manager.js.map +1 -0
  13. package/dist/session/types.d.ts +113 -0
  14. package/dist/session/types.d.ts.map +1 -0
  15. package/dist/session/types.js +16 -0
  16. package/dist/session/types.js.map +1 -0
  17. package/dist/tools/bridge.d.ts +52 -0
  18. package/dist/tools/bridge.d.ts.map +1 -0
  19. package/dist/tools/bridge.js +97 -0
  20. package/dist/tools/bridge.js.map +1 -0
  21. package/dist/tools/budget.d.ts +84 -0
  22. package/dist/tools/budget.d.ts.map +1 -0
  23. package/dist/tools/budget.js +163 -0
  24. package/dist/tools/budget.js.map +1 -0
  25. package/dist/tools/deploy.d.ts +49 -0
  26. package/dist/tools/deploy.d.ts.map +1 -0
  27. package/dist/tools/deploy.js +123 -0
  28. package/dist/tools/deploy.js.map +1 -0
  29. package/dist/tools/escrow.d.ts +73 -0
  30. package/dist/tools/escrow.d.ts.map +1 -0
  31. package/dist/tools/escrow.js +146 -0
  32. package/dist/tools/escrow.js.map +1 -0
  33. package/dist/tools/history.d.ts +59 -0
  34. package/dist/tools/history.d.ts.map +1 -0
  35. package/dist/tools/history.js +202 -0
  36. package/dist/tools/history.js.map +1 -0
  37. package/dist/tools/identity.d.ts +65 -0
  38. package/dist/tools/identity.d.ts.map +1 -0
  39. package/dist/tools/identity.js +158 -0
  40. package/dist/tools/identity.js.map +1 -0
  41. package/dist/tools/payments.d.ts +71 -0
  42. package/dist/tools/payments.d.ts.map +1 -0
  43. package/dist/tools/payments.js +158 -0
  44. package/dist/tools/payments.js.map +1 -0
  45. package/dist/tools/session.d.ts +240 -0
  46. package/dist/tools/session.d.ts.map +1 -0
  47. package/dist/tools/session.js +678 -0
  48. package/dist/tools/session.js.map +1 -0
  49. package/dist/tools/swap.d.ts +65 -0
  50. package/dist/tools/swap.d.ts.map +1 -0
  51. package/dist/tools/swap.js +101 -0
  52. package/dist/tools/swap.js.map +1 -0
  53. package/dist/tools/tokens.d.ts +129 -0
  54. package/dist/tools/tokens.d.ts.map +1 -0
  55. package/dist/tools/tokens.js +138 -0
  56. package/dist/tools/tokens.js.map +1 -0
  57. package/dist/tools/transfers.d.ts +86 -0
  58. package/dist/tools/transfers.d.ts.map +1 -0
  59. package/dist/tools/transfers.js +136 -0
  60. package/dist/tools/transfers.js.map +1 -0
  61. package/dist/tools/wallet.d.ts +107 -0
  62. package/dist/tools/wallet.d.ts.map +1 -0
  63. package/dist/tools/wallet.js +271 -0
  64. package/dist/tools/wallet.js.map +1 -0
  65. package/dist/tools/x402.d.ts +90 -0
  66. package/dist/tools/x402.d.ts.map +1 -0
  67. package/dist/tools/x402.js +268 -0
  68. package/dist/tools/x402.js.map +1 -0
  69. package/dist/utils/client.d.ts +46 -0
  70. package/dist/utils/client.d.ts.map +1 -0
  71. package/dist/utils/client.js +123 -0
  72. package/dist/utils/client.js.map +1 -0
  73. package/dist/utils/format.d.ts +59 -0
  74. package/dist/utils/format.d.ts.map +1 -0
  75. package/dist/utils/format.js +161 -0
  76. package/dist/utils/format.js.map +1 -0
  77. package/package.json +62 -12
  78. package/index.d.ts +0 -1
  79. package/index.js +0 -13
@@ -0,0 +1,113 @@
1
+ /**
2
+ * session/types.ts — Type definitions for x402 V2 session management.
3
+ *
4
+ * x402 V2 introduced the concept of "wallet-based access & reusable sessions":
5
+ * agents pay once to establish a session, then skip on-chain payment on every
6
+ * subsequent call within that session. This module defines the data structures
7
+ * that AgentPay MCP uses to implement this pattern non-custodially.
8
+ *
9
+ * Reference: https://www.x402.org/writing/x402-v2-launch
10
+ * "V2 protocol now includes the logic to support wallet-controlled sessions,
11
+ * allowing clients to skip the full payment flow for repeated access if the
12
+ * resource was previously purchased."
13
+ */
14
+ export interface SessionRecord {
15
+ /** Unique session identifier (UUIDv4) */
16
+ readonly sessionId: string;
17
+ /**
18
+ * Base URL this session covers.
19
+ * All requests to URLs matching this prefix (or exact URL) are included.
20
+ */
21
+ readonly endpoint: string;
22
+ /**
23
+ * Scope of the session:
24
+ * - "prefix": covers all paths under the endpoint (e.g., all of api.example.com/v1/*)
25
+ * - "exact": covers only the single URL that was paid for
26
+ */
27
+ readonly scope: 'prefix' | 'exact';
28
+ /** Wallet address that owns this session (from AGENT_WALLET_ADDRESS) */
29
+ readonly walletAddress: string;
30
+ /** Unix timestamp (seconds) when the session was created */
31
+ readonly createdAt: number;
32
+ /** Unix timestamp (seconds) when the session expires */
33
+ readonly expiresAt: number;
34
+ /** On-chain transaction hash of the initial session payment */
35
+ readonly paymentTxHash: string;
36
+ /** Amount paid (in base units / wei) as a string-encoded bigint */
37
+ readonly paymentAmount: string;
38
+ /** Token address that was paid (zero address = native ETH) */
39
+ readonly paymentToken: string;
40
+ /** Recipient address of the initial payment */
41
+ readonly paymentRecipient: string;
42
+ /**
43
+ * Cryptographic session token.
44
+ * Base64url-encoded JSON payload signed by the agent's private key using
45
+ * secp256k1 ECDSA (viem signMessage). Presented to servers as the
46
+ * X-Session-Token header — compatible with x402 V2's SIGN-IN-WITH-X pattern.
47
+ */
48
+ readonly sessionToken: string;
49
+ /**
50
+ * ECDSA signature over the token payload.
51
+ * Servers can verify ownership of walletAddress without any custody.
52
+ */
53
+ readonly signature: string;
54
+ /**
55
+ * Human-readable label for this session (optional, set by caller).
56
+ */
57
+ readonly label?: string;
58
+ /** Number of requests made within this session */
59
+ callCount: number;
60
+ /** Last request timestamp (Unix seconds) */
61
+ lastUsedAt: number;
62
+ }
63
+ /**
64
+ * Canonical payload signed by the agent wallet.
65
+ * This is serialised to a deterministic JSON string before signing.
66
+ * Servers that implement x402 V2 session verification can reconstruct this
67
+ * and call `ecrecover` / viem's `verifyMessage` to confirm wallet identity.
68
+ */
69
+ export interface SessionTokenPayload {
70
+ /** Protocol version marker */
71
+ version: 'clawpay/1.1';
72
+ sessionId: string;
73
+ walletAddress: string;
74
+ endpoint: string;
75
+ scope: 'prefix' | 'exact';
76
+ createdAt: number;
77
+ expiresAt: number;
78
+ paymentTxHash: string;
79
+ paymentAmount: string;
80
+ }
81
+ export interface CreateSessionOptions {
82
+ endpoint: string;
83
+ scope?: 'prefix' | 'exact';
84
+ ttlSeconds?: number;
85
+ label?: string;
86
+ paymentTxHash: string;
87
+ paymentAmount: bigint;
88
+ paymentToken: string;
89
+ paymentRecipient: string;
90
+ walletAddress: string;
91
+ /** viem signMessage function — must match walletAddress */
92
+ signMessage: (message: string) => Promise<string>;
93
+ }
94
+ export type SessionLookupResult = {
95
+ found: true;
96
+ session: SessionRecord;
97
+ expired: false;
98
+ } | {
99
+ found: true;
100
+ session: SessionRecord;
101
+ expired: true;
102
+ } | {
103
+ found: false;
104
+ };
105
+ export interface SessionFetchOptions {
106
+ sessionId: string;
107
+ url: string;
108
+ method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
109
+ headers?: Record<string, string>;
110
+ body?: string;
111
+ timeoutMs?: number;
112
+ }
113
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IAEnC,wEAAwE;IACxE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,wDAAwD;IACxD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,+DAA+D;IAC/D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,mEAAmE;IACnE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,+CAA+C;IAC/C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAElC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAElB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;CACpB;AAID;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,OAAO,EAAE,aAAa,CAAC;IAEvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAID,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACnD;AAID,MAAM,MAAM,mBAAmB,GAC3B;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,GACvD;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,GACtD;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAIrB,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ /**
3
+ * session/types.ts — Type definitions for x402 V2 session management.
4
+ *
5
+ * x402 V2 introduced the concept of "wallet-based access & reusable sessions":
6
+ * agents pay once to establish a session, then skip on-chain payment on every
7
+ * subsequent call within that session. This module defines the data structures
8
+ * that AgentPay MCP uses to implement this pattern non-custodially.
9
+ *
10
+ * Reference: https://www.x402.org/writing/x402-v2-launch
11
+ * "V2 protocol now includes the logic to support wallet-controlled sessions,
12
+ * allowing clients to skip the full payment flow for repeated access if the
13
+ * resource was previously purchased."
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * bridge.ts — bridge_usdc tool.
3
+ *
4
+ * Wraps agentwallet-sdk v6 BridgeModule (CCTP V2 cross-chain USDC bridge).
5
+ */
6
+ import { z } from 'zod';
7
+ export declare const BridgeUsdcSchema: z.ZodObject<{
8
+ fromChain: z.ZodEnum<["base", "ethereum", "optimism", "arbitrum", "polygon", "avalanche", "linea", "unichain", "sonic", "worldchain"]>;
9
+ toChain: z.ZodEnum<["base", "ethereum", "optimism", "arbitrum", "polygon", "avalanche", "linea", "unichain", "sonic", "worldchain"]>;
10
+ amount: z.ZodString;
11
+ }, "strip", z.ZodTypeAny, {
12
+ amount: string;
13
+ fromChain: "base" | "ethereum" | "arbitrum" | "polygon" | "optimism" | "avalanche" | "unichain" | "linea" | "sonic" | "worldchain";
14
+ toChain: "base" | "ethereum" | "arbitrum" | "polygon" | "optimism" | "avalanche" | "unichain" | "linea" | "sonic" | "worldchain";
15
+ }, {
16
+ amount: string;
17
+ fromChain: "base" | "ethereum" | "arbitrum" | "polygon" | "optimism" | "avalanche" | "unichain" | "linea" | "sonic" | "worldchain";
18
+ toChain: "base" | "ethereum" | "arbitrum" | "polygon" | "optimism" | "avalanche" | "unichain" | "linea" | "sonic" | "worldchain";
19
+ }>;
20
+ export type BridgeUsdcInput = z.infer<typeof BridgeUsdcSchema>;
21
+ export declare const bridgeUsdcTool: {
22
+ name: string;
23
+ description: string;
24
+ inputSchema: {
25
+ type: "object";
26
+ properties: {
27
+ fromChain: {
28
+ type: string;
29
+ enum: ("base" | "ethereum" | "arbitrum" | "polygon" | "optimism" | "avalanche" | "unichain" | "linea" | "sonic" | "worldchain")[];
30
+ description: string;
31
+ };
32
+ toChain: {
33
+ type: string;
34
+ enum: ("base" | "ethereum" | "arbitrum" | "polygon" | "optimism" | "avalanche" | "unichain" | "linea" | "sonic" | "worldchain")[];
35
+ description: string;
36
+ };
37
+ amount: {
38
+ type: string;
39
+ description: string;
40
+ };
41
+ };
42
+ required: string[];
43
+ };
44
+ };
45
+ export declare function handleBridgeUsdc(input: BridgeUsdcInput): Promise<{
46
+ content: Array<{
47
+ type: 'text';
48
+ text: string;
49
+ }>;
50
+ isError?: boolean;
51
+ }>;
52
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/tools/bridge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiBvB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAU3B,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAI9D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;CA0B1B,CAAA;AAID,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA2ChF"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bridgeUsdcTool = exports.BridgeUsdcSchema = void 0;
4
+ exports.handleBridgeUsdc = handleBridgeUsdc;
5
+ /**
6
+ * bridge.ts — bridge_usdc tool.
7
+ *
8
+ * Wraps agentwallet-sdk v6 BridgeModule (CCTP V2 cross-chain USDC bridge).
9
+ */
10
+ const zod_1 = require("zod");
11
+ const agentwallet_sdk_1 = require("agentwallet-sdk");
12
+ const client_js_1 = require("../utils/client.js");
13
+ const format_js_1 = require("../utils/format.js");
14
+ // Supported CCTP V2 chain names
15
+ const SUPPORTED_CHAINS = [
16
+ 'base', 'ethereum', 'optimism', 'arbitrum', 'polygon',
17
+ 'avalanche', 'linea', 'unichain', 'sonic', 'worldchain',
18
+ ];
19
+ // ─── Schema ────────────────────────────────────────────────────────────────
20
+ exports.BridgeUsdcSchema = zod_1.z.object({
21
+ fromChain: zod_1.z
22
+ .enum(SUPPORTED_CHAINS)
23
+ .describe('Source chain name (e.g. "base", "ethereum", "arbitrum")'),
24
+ toChain: zod_1.z
25
+ .enum(SUPPORTED_CHAINS)
26
+ .describe('Destination chain name (e.g. "polygon", "optimism")'),
27
+ amount: zod_1.z
28
+ .string()
29
+ .describe('Amount of USDC to bridge in human-readable units, e.g. "100" for 100 USDC'),
30
+ });
31
+ // ─── Tool definition ───────────────────────────────────────────────────────
32
+ exports.bridgeUsdcTool = {
33
+ name: 'bridge_usdc',
34
+ description: 'Bridge USDC across chains using Circle\'s CCTP V2 protocol. ' +
35
+ 'Supported chains: base, ethereum, optimism, arbitrum, polygon, avalanche, linea, unichain, sonic, worldchain. ' +
36
+ 'The bridge approves USDC, burns on source, polls Circle IRIS for attestation, then mints on destination.',
37
+ inputSchema: {
38
+ type: 'object',
39
+ properties: {
40
+ fromChain: {
41
+ type: 'string',
42
+ enum: [...SUPPORTED_CHAINS],
43
+ description: 'Source chain name',
44
+ },
45
+ toChain: {
46
+ type: 'string',
47
+ enum: [...SUPPORTED_CHAINS],
48
+ description: 'Destination chain name',
49
+ },
50
+ amount: {
51
+ type: 'string',
52
+ description: 'Amount of USDC to bridge (human-readable, e.g. "100")',
53
+ },
54
+ },
55
+ required: ['fromChain', 'toChain', 'amount'],
56
+ },
57
+ };
58
+ // ─── Handler ───────────────────────────────────────────────────────────────
59
+ async function handleBridgeUsdc(input) {
60
+ try {
61
+ const wallet = (0, client_js_1.getWallet)();
62
+ if (input.fromChain === input.toChain) {
63
+ throw new Error('fromChain and toChain must be different');
64
+ }
65
+ // Parse USDC amount (6 decimals)
66
+ const USDC_DECIMALS = 6;
67
+ const amountFloat = parseFloat(input.amount);
68
+ if (isNaN(amountFloat) || amountFloat <= 0) {
69
+ throw new Error(`Invalid amount: "${input.amount}". Must be a positive number.`);
70
+ }
71
+ const rawAmount = BigInt(Math.round(amountFloat * 10 ** USDC_DECIMALS));
72
+ const bridge = (0, agentwallet_sdk_1.createBridge)(wallet.walletClient, input.fromChain);
73
+ const result = await bridge.bridge(rawAmount, input.toChain);
74
+ return {
75
+ content: [
76
+ (0, format_js_1.textContent)(JSON.stringify({
77
+ success: true,
78
+ burnTxHash: result.burnTxHash,
79
+ mintTxHash: result.mintTxHash,
80
+ fromChain: result.fromChain,
81
+ toChain: result.toChain,
82
+ recipient: result.recipient,
83
+ amount: input.amount,
84
+ rawAmount: rawAmount.toString(),
85
+ elapsedMs: result.elapsedMs,
86
+ })),
87
+ ],
88
+ };
89
+ }
90
+ catch (error) {
91
+ return {
92
+ content: [(0, format_js_1.textContent)((0, format_js_1.formatError)(error, 'bridge_usdc'))],
93
+ isError: true,
94
+ };
95
+ }
96
+ }
97
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/tools/bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * budget.ts — set_spend_policy, check_budget tools.
3
+ *
4
+ * set_spend_policy: configure a SpendingPolicy (in-process, persists for server lifetime).
5
+ * check_budget: query on-chain remaining budget via checkBudget().
6
+ */
7
+ import { z } from 'zod';
8
+ export declare function _resetPolicyStore(): void;
9
+ export declare const SetSpendPolicySchema: z.ZodObject<{
10
+ dailyLimitEth: z.ZodOptional<z.ZodString>;
11
+ perTxCapEth: z.ZodOptional<z.ZodString>;
12
+ allowedRecipients: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ dailyLimitEth?: string | undefined;
15
+ perTxCapEth?: string | undefined;
16
+ allowedRecipients?: string[] | undefined;
17
+ }, {
18
+ dailyLimitEth?: string | undefined;
19
+ perTxCapEth?: string | undefined;
20
+ allowedRecipients?: string[] | undefined;
21
+ }>;
22
+ export type SetSpendPolicyInput = z.infer<typeof SetSpendPolicySchema>;
23
+ export declare const setSpendPolicyTool: {
24
+ name: string;
25
+ description: string;
26
+ inputSchema: {
27
+ type: "object";
28
+ properties: {
29
+ dailyLimitEth: {
30
+ type: string;
31
+ description: string;
32
+ };
33
+ perTxCapEth: {
34
+ type: string;
35
+ description: string;
36
+ };
37
+ allowedRecipients: {
38
+ type: string;
39
+ items: {
40
+ type: string;
41
+ };
42
+ description: string;
43
+ };
44
+ };
45
+ required: never[];
46
+ };
47
+ };
48
+ export declare function handleSetSpendPolicy(input: SetSpendPolicyInput): Promise<{
49
+ content: Array<{
50
+ type: 'text';
51
+ text: string;
52
+ }>;
53
+ isError?: boolean;
54
+ }>;
55
+ export declare const CheckBudgetSchema: z.ZodObject<{
56
+ token: z.ZodOptional<z.ZodString>;
57
+ }, "strip", z.ZodTypeAny, {
58
+ token?: string | undefined;
59
+ }, {
60
+ token?: string | undefined;
61
+ }>;
62
+ export type CheckBudgetInput = z.infer<typeof CheckBudgetSchema>;
63
+ export declare const checkBudgetTool: {
64
+ name: string;
65
+ description: string;
66
+ inputSchema: {
67
+ type: "object";
68
+ properties: {
69
+ token: {
70
+ type: string;
71
+ description: string;
72
+ };
73
+ };
74
+ required: never[];
75
+ };
76
+ };
77
+ export declare function handleCheckBudget(input: CheckBudgetInput): Promise<{
78
+ content: Array<{
79
+ type: 'text';
80
+ text: string;
81
+ }>;
82
+ isError?: boolean;
83
+ }>;
84
+ //# sourceMappingURL=budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../../src/tools/budget.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiBvB,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAID,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAa/B,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEtE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;CAyB9B,CAAA;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAwDhF;AAID,eAAO,MAAM,iBAAiB;;;;;;EAS5B,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEhE,eAAO,MAAM,eAAe;;;;;;;;;;;;;CAgB3B,CAAA;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAyBhF"}
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkBudgetTool = exports.CheckBudgetSchema = exports.setSpendPolicyTool = exports.SetSpendPolicySchema = void 0;
4
+ exports._resetPolicyStore = _resetPolicyStore;
5
+ exports.handleSetSpendPolicy = handleSetSpendPolicy;
6
+ exports.handleCheckBudget = handleCheckBudget;
7
+ /**
8
+ * budget.ts — set_spend_policy, check_budget tools.
9
+ *
10
+ * set_spend_policy: configure a SpendingPolicy (in-process, persists for server lifetime).
11
+ * check_budget: query on-chain remaining budget via checkBudget().
12
+ */
13
+ const zod_1 = require("zod");
14
+ const agentwallet_sdk_1 = require("agentwallet-sdk");
15
+ const viem_1 = require("viem");
16
+ const client_js_1 = require("../utils/client.js");
17
+ const format_js_1 = require("../utils/format.js");
18
+ let _policyConfig = null;
19
+ let _spendingPolicy = null;
20
+ function _resetPolicyStore() {
21
+ _policyConfig = null;
22
+ _spendingPolicy = null;
23
+ }
24
+ // ─── set_spend_policy ──────────────────────────────────────────────────────
25
+ exports.SetSpendPolicySchema = zod_1.z.object({
26
+ dailyLimitEth: zod_1.z
27
+ .string()
28
+ .optional()
29
+ .describe('Daily spend limit in ETH-equivalent, e.g. "0.1"'),
30
+ perTxCapEth: zod_1.z
31
+ .string()
32
+ .optional()
33
+ .describe('Per-transaction cap in ETH-equivalent, e.g. "0.01"'),
34
+ allowedRecipients: zod_1.z
35
+ .array(zod_1.z.string())
36
+ .optional()
37
+ .describe('Allowlist of recipient addresses (0x-prefixed). Empty = all allowed.'),
38
+ });
39
+ exports.setSpendPolicyTool = {
40
+ name: 'set_spend_policy',
41
+ description: 'Configure the Agent Wallet spend policy. ' +
42
+ 'Sets a daily limit, per-transaction cap, and optional recipient allowlist. ' +
43
+ 'The policy is enforced in-process for the lifetime of the MCP server.',
44
+ inputSchema: {
45
+ type: 'object',
46
+ properties: {
47
+ dailyLimitEth: {
48
+ type: 'string',
49
+ description: 'Daily spend limit in ETH-equivalent (e.g. "0.1")',
50
+ },
51
+ perTxCapEth: {
52
+ type: 'string',
53
+ description: 'Per-tx cap in ETH-equivalent (e.g. "0.01")',
54
+ },
55
+ allowedRecipients: {
56
+ type: 'array',
57
+ items: { type: 'string' },
58
+ description: 'Allowlisted recipient addresses',
59
+ },
60
+ },
61
+ required: [],
62
+ },
63
+ };
64
+ async function handleSetSpendPolicy(input) {
65
+ try {
66
+ const ethToWei = (eth) => {
67
+ const val = parseFloat(eth);
68
+ if (isNaN(val) || val < 0)
69
+ throw new Error(`Invalid ETH amount: "${eth}"`);
70
+ return BigInt(Math.round(val * 1e18));
71
+ };
72
+ const merchantAllowlist = input.allowedRecipients ?? [];
73
+ // Build SpendingPolicyConfig from inputs
74
+ // rollingCap uses a 24-hour window for dailyLimitEth
75
+ const rollingCap = input.dailyLimitEth
76
+ ? {
77
+ maxAmount: Number(ethToWei(input.dailyLimitEth)),
78
+ windowMs: 86_400_000, // 24 hours
79
+ }
80
+ : undefined;
81
+ // draftThreshold maps to perTxCap — payments above this go to draft
82
+ const draftThreshold = input.perTxCapEth
83
+ ? Number(ethToWei(input.perTxCapEth))
84
+ : undefined;
85
+ _spendingPolicy = new agentwallet_sdk_1.SpendingPolicy({
86
+ merchantAllowlist,
87
+ rollingCap,
88
+ draftThreshold,
89
+ });
90
+ _policyConfig = {
91
+ dailyLimitEth: input.dailyLimitEth,
92
+ perTxCapEth: input.perTxCapEth,
93
+ allowedRecipients: merchantAllowlist,
94
+ };
95
+ return {
96
+ content: [
97
+ (0, format_js_1.textContent)(JSON.stringify({
98
+ success: true,
99
+ policy: {
100
+ dailyLimitEth: input.dailyLimitEth ?? null,
101
+ perTxCapEth: input.perTxCapEth ?? null,
102
+ allowedRecipients: merchantAllowlist,
103
+ },
104
+ })),
105
+ ],
106
+ };
107
+ }
108
+ catch (error) {
109
+ return {
110
+ content: [(0, format_js_1.textContent)((0, format_js_1.formatError)(error, 'set_spend_policy'))],
111
+ isError: true,
112
+ };
113
+ }
114
+ }
115
+ // ─── check_budget ──────────────────────────────────────────────────────────
116
+ exports.CheckBudgetSchema = zod_1.z.object({
117
+ token: zod_1.z
118
+ .string()
119
+ .optional()
120
+ .describe('Token address to check budget for. ' +
121
+ 'Use "0x0000000000000000000000000000000000000000" for ETH (default). ' +
122
+ 'Or a USDC/ERC20 contract address.'),
123
+ });
124
+ exports.checkBudgetTool = {
125
+ name: 'check_budget',
126
+ description: 'Check the remaining on-chain budget for the Agent Wallet. ' +
127
+ 'Returns per-transaction limit and period remaining. ' +
128
+ 'Optionally include any configured spend policy details.',
129
+ inputSchema: {
130
+ type: 'object',
131
+ properties: {
132
+ token: {
133
+ type: 'string',
134
+ description: 'Token address (default: ETH / zero address)',
135
+ },
136
+ },
137
+ required: [],
138
+ },
139
+ };
140
+ async function handleCheckBudget(input) {
141
+ try {
142
+ const wallet = (0, client_js_1.getWallet)();
143
+ const token = input.token ?? viem_1.zeroAddress;
144
+ const budget = await (0, agentwallet_sdk_1.checkBudget)(wallet, token);
145
+ return {
146
+ content: [
147
+ (0, format_js_1.textContent)(JSON.stringify({
148
+ token,
149
+ perTxLimit: budget.perTxLimit.toString(),
150
+ remainingInPeriod: budget.remainingInPeriod.toString(),
151
+ policy: _policyConfig ?? null,
152
+ })),
153
+ ],
154
+ };
155
+ }
156
+ catch (error) {
157
+ return {
158
+ content: [(0, format_js_1.textContent)((0, format_js_1.formatError)(error, 'check_budget'))],
159
+ isError: true,
160
+ };
161
+ }
162
+ }
163
+ //# sourceMappingURL=budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget.js","sourceRoot":"","sources":["../../src/tools/budget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * deploy_wallet tool — Deploy a new AgentAccountV2 wallet via the factory.
3
+ * Requires FACTORY_ADDRESS and NFT_CONTRACT_ADDRESS env vars.
4
+ */
5
+ import { z } from 'zod';
6
+ export declare const DeployWalletSchema: z.ZodObject<{
7
+ token_id: z.ZodString;
8
+ nft_contract_address: z.ZodOptional<z.ZodString>;
9
+ factory_address: z.ZodOptional<z.ZodString>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ token_id: string;
12
+ nft_contract_address?: string | undefined;
13
+ factory_address?: string | undefined;
14
+ }, {
15
+ token_id: string;
16
+ nft_contract_address?: string | undefined;
17
+ factory_address?: string | undefined;
18
+ }>;
19
+ export type DeployWalletInput = z.infer<typeof DeployWalletSchema>;
20
+ export declare const deployWalletTool: {
21
+ name: string;
22
+ description: string;
23
+ inputSchema: {
24
+ type: "object";
25
+ properties: {
26
+ token_id: {
27
+ type: string;
28
+ description: string;
29
+ };
30
+ nft_contract_address: {
31
+ type: string;
32
+ description: string;
33
+ };
34
+ factory_address: {
35
+ type: string;
36
+ description: string;
37
+ };
38
+ };
39
+ required: string[];
40
+ };
41
+ };
42
+ export declare function handleDeployWallet(input: DeployWalletInput): Promise<{
43
+ content: Array<{
44
+ type: 'text';
45
+ text: string;
46
+ }>;
47
+ isError?: boolean;
48
+ }>;
49
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/tools/deploy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAkB7B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAInE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;CAyB5B,CAAC;AAIF,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA6EhF"}