@shroud-fi/mcp-server 0.1.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.
- package/LICENSE +21 -0
- package/README.md +130 -0
- package/dist/cjs/auth.d.ts +41 -0
- package/dist/cjs/auth.d.ts.map +1 -0
- package/dist/cjs/auth.js +103 -0
- package/dist/cjs/auth.js.map +1 -0
- package/dist/cjs/bin/http.d.ts +7 -0
- package/dist/cjs/bin/http.d.ts.map +1 -0
- package/dist/cjs/bin/http.js +24 -0
- package/dist/cjs/bin/http.js.map +1 -0
- package/dist/cjs/bin/stdio.d.ts +9 -0
- package/dist/cjs/bin/stdio.d.ts.map +1 -0
- package/dist/cjs/bin/stdio.js +15 -0
- package/dist/cjs/bin/stdio.js.map +1 -0
- package/dist/cjs/config.d.ts +22 -0
- package/dist/cjs/config.d.ts.map +1 -0
- package/dist/cjs/config.js +180 -0
- package/dist/cjs/config.js.map +1 -0
- package/dist/cjs/constants.d.ts +29 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +35 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/errors.d.ts +43 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +72 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/http.d.ts +32 -0
- package/dist/cjs/http.d.ts.map +1 -0
- package/dist/cjs/http.js +180 -0
- package/dist/cjs/http.js.map +1 -0
- package/dist/cjs/index.d.ts +19 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +40 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/server.d.ts +14 -0
- package/dist/cjs/server.d.ts.map +1 -0
- package/dist/cjs/server.js +92 -0
- package/dist/cjs/server.js.map +1 -0
- package/dist/cjs/stdio.d.ts +9 -0
- package/dist/cjs/stdio.d.ts.map +1 -0
- package/dist/cjs/stdio.js +21 -0
- package/dist/cjs/stdio.js.map +1 -0
- package/dist/cjs/tools/balance.d.ts +9 -0
- package/dist/cjs/tools/balance.d.ts.map +1 -0
- package/dist/cjs/tools/balance.js +61 -0
- package/dist/cjs/tools/balance.js.map +1 -0
- package/dist/cjs/tools/index.d.ts +17 -0
- package/dist/cjs/tools/index.d.ts.map +1 -0
- package/dist/cjs/tools/index.js +40 -0
- package/dist/cjs/tools/index.js.map +1 -0
- package/dist/cjs/tools/receive.d.ts +13 -0
- package/dist/cjs/tools/receive.d.ts.map +1 -0
- package/dist/cjs/tools/receive.js +100 -0
- package/dist/cjs/tools/receive.js.map +1 -0
- package/dist/cjs/tools/register.d.ts +9 -0
- package/dist/cjs/tools/register.d.ts.map +1 -0
- package/dist/cjs/tools/register.js +36 -0
- package/dist/cjs/tools/register.js.map +1 -0
- package/dist/cjs/tools/schema.d.ts +18 -0
- package/dist/cjs/tools/schema.d.ts.map +1 -0
- package/dist/cjs/tools/schema.js +25 -0
- package/dist/cjs/tools/schema.js.map +1 -0
- package/dist/cjs/tools/send-to-wallet.d.ts +9 -0
- package/dist/cjs/tools/send-to-wallet.d.ts.map +1 -0
- package/dist/cjs/tools/send-to-wallet.js +60 -0
- package/dist/cjs/tools/send-to-wallet.js.map +1 -0
- package/dist/cjs/tools/send.d.ts +9 -0
- package/dist/cjs/tools/send.d.ts.map +1 -0
- package/dist/cjs/tools/send.js +68 -0
- package/dist/cjs/tools/send.js.map +1 -0
- package/dist/cjs/tools/status.d.ts +6 -0
- package/dist/cjs/tools/status.d.ts.map +1 -0
- package/dist/cjs/tools/status.js +39 -0
- package/dist/cjs/tools/status.js.map +1 -0
- package/dist/cjs/tools/sweep.d.ts +14 -0
- package/dist/cjs/tools/sweep.d.ts.map +1 -0
- package/dist/cjs/tools/sweep.js +119 -0
- package/dist/cjs/tools/sweep.js.map +1 -0
- package/dist/cjs/tools/x402-pay.d.ts +14 -0
- package/dist/cjs/tools/x402-pay.d.ts.map +1 -0
- package/dist/cjs/tools/x402-pay.js +78 -0
- package/dist/cjs/tools/x402-pay.js.map +1 -0
- package/dist/cjs/tools/x402-serve.d.ts +17 -0
- package/dist/cjs/tools/x402-serve.d.ts.map +1 -0
- package/dist/cjs/tools/x402-serve.js +133 -0
- package/dist/cjs/tools/x402-serve.js.map +1 -0
- package/dist/cjs/types.d.ts +66 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +6 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/auth.d.ts +41 -0
- package/dist/esm/auth.d.ts.map +1 -0
- package/dist/esm/auth.js +99 -0
- package/dist/esm/auth.js.map +1 -0
- package/dist/esm/bin/http.d.ts +7 -0
- package/dist/esm/bin/http.d.ts.map +1 -0
- package/dist/esm/bin/http.js +22 -0
- package/dist/esm/bin/http.js.map +1 -0
- package/dist/esm/bin/stdio.d.ts +9 -0
- package/dist/esm/bin/stdio.d.ts.map +1 -0
- package/dist/esm/bin/stdio.js +13 -0
- package/dist/esm/bin/stdio.js.map +1 -0
- package/dist/esm/config.d.ts +22 -0
- package/dist/esm/config.d.ts.map +1 -0
- package/dist/esm/config.js +175 -0
- package/dist/esm/config.js.map +1 -0
- package/dist/esm/constants.d.ts +29 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +32 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/errors.d.ts +43 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +61 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/http.d.ts +32 -0
- package/dist/esm/http.d.ts.map +1 -0
- package/dist/esm/http.js +177 -0
- package/dist/esm/http.js.map +1 -0
- package/dist/esm/index.d.ts +19 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +18 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/server.d.ts +14 -0
- package/dist/esm/server.d.ts.map +1 -0
- package/dist/esm/server.js +89 -0
- package/dist/esm/server.js.map +1 -0
- package/dist/esm/stdio.d.ts +9 -0
- package/dist/esm/stdio.d.ts.map +1 -0
- package/dist/esm/stdio.js +18 -0
- package/dist/esm/stdio.js.map +1 -0
- package/dist/esm/tools/balance.d.ts +9 -0
- package/dist/esm/tools/balance.d.ts.map +1 -0
- package/dist/esm/tools/balance.js +58 -0
- package/dist/esm/tools/balance.js.map +1 -0
- package/dist/esm/tools/index.d.ts +17 -0
- package/dist/esm/tools/index.d.ts.map +1 -0
- package/dist/esm/tools/index.js +28 -0
- package/dist/esm/tools/index.js.map +1 -0
- package/dist/esm/tools/receive.d.ts +13 -0
- package/dist/esm/tools/receive.d.ts.map +1 -0
- package/dist/esm/tools/receive.js +97 -0
- package/dist/esm/tools/receive.js.map +1 -0
- package/dist/esm/tools/register.d.ts +9 -0
- package/dist/esm/tools/register.d.ts.map +1 -0
- package/dist/esm/tools/register.js +33 -0
- package/dist/esm/tools/register.js.map +1 -0
- package/dist/esm/tools/schema.d.ts +18 -0
- package/dist/esm/tools/schema.d.ts.map +1 -0
- package/dist/esm/tools/schema.js +21 -0
- package/dist/esm/tools/schema.js.map +1 -0
- package/dist/esm/tools/send-to-wallet.d.ts +9 -0
- package/dist/esm/tools/send-to-wallet.d.ts.map +1 -0
- package/dist/esm/tools/send-to-wallet.js +57 -0
- package/dist/esm/tools/send-to-wallet.js.map +1 -0
- package/dist/esm/tools/send.d.ts +9 -0
- package/dist/esm/tools/send.d.ts.map +1 -0
- package/dist/esm/tools/send.js +65 -0
- package/dist/esm/tools/send.js.map +1 -0
- package/dist/esm/tools/status.d.ts +6 -0
- package/dist/esm/tools/status.d.ts.map +1 -0
- package/dist/esm/tools/status.js +36 -0
- package/dist/esm/tools/status.js.map +1 -0
- package/dist/esm/tools/sweep.d.ts +14 -0
- package/dist/esm/tools/sweep.d.ts.map +1 -0
- package/dist/esm/tools/sweep.js +116 -0
- package/dist/esm/tools/sweep.js.map +1 -0
- package/dist/esm/tools/x402-pay.d.ts +14 -0
- package/dist/esm/tools/x402-pay.d.ts.map +1 -0
- package/dist/esm/tools/x402-pay.js +75 -0
- package/dist/esm/tools/x402-pay.js.map +1 -0
- package/dist/esm/tools/x402-serve.d.ts +17 -0
- package/dist/esm/tools/x402-serve.d.ts.map +1 -0
- package/dist/esm/tools/x402-serve.js +130 -0
- package/dist/esm/tools/x402-serve.js.map +1 -0
- package/dist/esm/types.d.ts +66 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +5 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"receive.js","sourceRoot":"","sources":["../../../src/tools/receive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* shroud_register — publish the agent's stealth meta-address into ERC-6538.
|
|
3
|
+
*
|
|
4
|
+
* Idempotent. Returns `{ registered: false }` if the wallet already has an
|
|
5
|
+
* on-chain entry.
|
|
6
|
+
*/
|
|
7
|
+
import type { McpTool } from '../types.js';
|
|
8
|
+
export declare const shroudRegisterTool: McpTool;
|
|
9
|
+
//# sourceMappingURL=register.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/tools/register.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AAK1D,eAAO,MAAM,kBAAkB,EAAE,OAuBhC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* shroud_register — publish the agent's stealth meta-address into ERC-6538.
|
|
3
|
+
*
|
|
4
|
+
* Idempotent. Returns `{ registered: false }` if the wallet already has an
|
|
5
|
+
* on-chain entry.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { McpInvalidArgsError } from '../errors.js';
|
|
9
|
+
const ArgsSchema = z.object({}).strict();
|
|
10
|
+
export const shroudRegisterTool = {
|
|
11
|
+
name: 'shroud_register',
|
|
12
|
+
description: 'Publish the agent stealth meta-address into ERC-6538. Idempotent — no-op when already registered. Returns the registration tx hash on first call.',
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
additionalProperties: false,
|
|
16
|
+
properties: {},
|
|
17
|
+
required: [],
|
|
18
|
+
},
|
|
19
|
+
async handler(ctx, raw) {
|
|
20
|
+
const parsed = ArgsSchema.safeParse(raw ?? {});
|
|
21
|
+
if (!parsed.success) {
|
|
22
|
+
throw new McpInvalidArgsError();
|
|
23
|
+
}
|
|
24
|
+
const result = await ctx.agent.ensureRegistered();
|
|
25
|
+
return {
|
|
26
|
+
ok: true,
|
|
27
|
+
registered: result.registered,
|
|
28
|
+
...(result.txHash !== undefined ? { txHash: result.txHash } : {}),
|
|
29
|
+
metaAddress: ctx.agent.metaAddressEncoded,
|
|
30
|
+
};
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/tools/register.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAEzC,MAAM,CAAC,MAAM,kBAAkB,GAAY;IACzC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,mJAAmJ;IACrJ,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;KACb;IACD,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG;QACpB,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,mBAAmB,EAAE,CAAC;QAClC,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAClD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,kBAAkB;SAC1C,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared zod schemas + helpers for tool argument validation.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
/** 0x-prefixed lowercase EVM address (case preserved by viem checks). */
|
|
6
|
+
export declare const AddressSchema: z.ZodString;
|
|
7
|
+
/** Asset descriptor used by send tools: 'ETH' or token address. */
|
|
8
|
+
export declare const AssetSchema: z.ZodUnion<[z.ZodLiteral<"ETH">, z.ZodObject<{
|
|
9
|
+
token: z.ZodString;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
token: string;
|
|
12
|
+
}, {
|
|
13
|
+
token: string;
|
|
14
|
+
}>]>;
|
|
15
|
+
/** Positive integer string that parses to bigint. */
|
|
16
|
+
export declare const Uint256StringSchema: z.ZodString;
|
|
17
|
+
export declare function toBigInt(v: string): bigint;
|
|
18
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/tools/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,yEAAyE;AACzE,eAAO,MAAM,aAAa,aAEyC,CAAC;AAEpE,mEAAmE;AACnE,eAAO,MAAM,WAAW;;;;;;IAGtB,CAAC;AAEH,qDAAqD;AACrD,eAAO,MAAM,mBAAmB,aAEc,CAAC;AAE/C,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1C"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared zod schemas + helpers for tool argument validation.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
/** 0x-prefixed lowercase EVM address (case preserved by viem checks). */
|
|
6
|
+
export const AddressSchema = z
|
|
7
|
+
.string()
|
|
8
|
+
.regex(/^0x[0-9a-fA-F]{40}$/, '0x-prefixed 20-byte hex required');
|
|
9
|
+
/** Asset descriptor used by send tools: 'ETH' or token address. */
|
|
10
|
+
export const AssetSchema = z.union([
|
|
11
|
+
z.literal('ETH'),
|
|
12
|
+
z.object({ token: AddressSchema }),
|
|
13
|
+
]);
|
|
14
|
+
/** Positive integer string that parses to bigint. */
|
|
15
|
+
export const Uint256StringSchema = z
|
|
16
|
+
.string()
|
|
17
|
+
.regex(/^\d+$/, 'positive integer required');
|
|
18
|
+
export function toBigInt(v) {
|
|
19
|
+
return BigInt(v);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/tools/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,EAAE;KACR,KAAK,CAAC,qBAAqB,EAAE,kCAAkC,CAAC,CAAC;AAEpE,mEAAmE;AACnE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC;IACjC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAChB,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;CACnC,CAAC,CAAC;AAEH,qDAAqD;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,EAAE;KACR,KAAK,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;AAE/C,MAAM,UAAU,QAAQ,CAAC,CAAS;IAChC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* shroud_send_to_wallet — pay a recipient by their plain EVM wallet address.
|
|
3
|
+
*
|
|
4
|
+
* The SDK does the ERC-6538 lookup + meta-address decode + stealth derivation.
|
|
5
|
+
* Caller never sees a meta-address.
|
|
6
|
+
*/
|
|
7
|
+
import type { McpTool } from '../types.js';
|
|
8
|
+
export declare const shroudSendToWalletTool: McpTool;
|
|
9
|
+
//# sourceMappingURL=send-to-wallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-to-wallet.d.ts","sourceRoot":"","sources":["../../../src/tools/send-to-wallet.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AAiB1D,eAAO,MAAM,sBAAsB,EAAE,OA4CpC,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* shroud_send_to_wallet — pay a recipient by their plain EVM wallet address.
|
|
3
|
+
*
|
|
4
|
+
* The SDK does the ERC-6538 lookup + meta-address decode + stealth derivation.
|
|
5
|
+
* Caller never sees a meta-address.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { McpInvalidArgsError } from '../errors.js';
|
|
9
|
+
import { AddressSchema, AssetSchema, Uint256StringSchema, toBigInt, } from './schema.js';
|
|
10
|
+
const ArgsSchema = z
|
|
11
|
+
.object({
|
|
12
|
+
recipient: AddressSchema,
|
|
13
|
+
asset: AssetSchema,
|
|
14
|
+
amount: Uint256StringSchema,
|
|
15
|
+
})
|
|
16
|
+
.strict();
|
|
17
|
+
export const shroudSendToWalletTool = {
|
|
18
|
+
name: 'shroud_send_to_wallet',
|
|
19
|
+
description: 'Send ETH or an ERC-20 token to a recipient identified by their plain wallet address. The SDK looks up their ERC-6538 stealth meta-address and derives a one-time stealth address automatically. Throws RecipientNotOnboardedError if the wallet has not registered.',
|
|
20
|
+
inputSchema: {
|
|
21
|
+
type: 'object',
|
|
22
|
+
additionalProperties: false,
|
|
23
|
+
properties: {
|
|
24
|
+
recipient: { type: 'string', pattern: '^0x[0-9a-fA-F]{40}$' },
|
|
25
|
+
asset: {
|
|
26
|
+
oneOf: [
|
|
27
|
+
{ type: 'string', enum: ['ETH'] },
|
|
28
|
+
{
|
|
29
|
+
type: 'object',
|
|
30
|
+
properties: { token: { type: 'string', pattern: '^0x[0-9a-fA-F]{40}$' } },
|
|
31
|
+
required: ['token'],
|
|
32
|
+
additionalProperties: false,
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
amount: { type: 'string', pattern: '^\\d+$' },
|
|
37
|
+
},
|
|
38
|
+
required: ['recipient', 'asset', 'amount'],
|
|
39
|
+
},
|
|
40
|
+
async handler(ctx, raw) {
|
|
41
|
+
const parsed = ArgsSchema.safeParse(raw);
|
|
42
|
+
if (!parsed.success) {
|
|
43
|
+
throw new McpInvalidArgsError();
|
|
44
|
+
}
|
|
45
|
+
const { recipient, asset, amount } = parsed.data;
|
|
46
|
+
const assetArg = asset === 'ETH' ? 'ETH' : { token: asset.token };
|
|
47
|
+
const receipt = await ctx.agent.sendToWallet(recipient, assetArg, toBigInt(amount));
|
|
48
|
+
return {
|
|
49
|
+
ok: true,
|
|
50
|
+
txHash: receipt.txHash,
|
|
51
|
+
stealthAddress: receipt.stealthAddress,
|
|
52
|
+
ephemeralPubKey: receipt.ephemeralPubKey,
|
|
53
|
+
viewTag: receipt.viewTag,
|
|
54
|
+
};
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=send-to-wallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-to-wallet.js","sourceRoot":"","sources":["../../../src/tools/send-to-wallet.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EACL,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,QAAQ,GACT,MAAM,aAAa,CAAC;AAErB,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,SAAS,EAAE,aAAa;IACxB,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,mBAAmB;CAC5B,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,sBAAsB,GAAY;IAC7C,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EACT,qQAAqQ;IACvQ,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,UAAU,EAAE;YACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE;YAC7D,KAAK,EAAE;gBACL,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE;oBACjC;wBACE,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE;wBACzE,QAAQ,EAAE,CAAC,OAAO,CAAC;wBACnB,oBAAoB,EAAE,KAAK;qBAC5B;iBACF;aACF;YACD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;SAC9C;QACD,QAAQ,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC;KAC3C;IACD,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG;QACpB,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,mBAAmB,EAAE,CAAC;QAClC,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;QACjD,MAAM,QAAQ,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAsB,EAAE,CAAC;QACnF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAC1C,SAA0B,EAC1B,QAAQ,EACR,QAAQ,CAAC,MAAM,CAAC,CACjB,CAAC;QACF,OAAO;YACL,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* shroud_send — send to a stealth meta-address (the privacy-native form).
|
|
3
|
+
*
|
|
4
|
+
* Uses agent.send (ETH) or agent.sendERC20 (token). Recipient is the encoded
|
|
5
|
+
* meta-address string `st:base:0x…`.
|
|
6
|
+
*/
|
|
7
|
+
import type { McpTool } from '../types.js';
|
|
8
|
+
export declare const shroudSendTool: McpTool;
|
|
9
|
+
//# sourceMappingURL=send.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/tools/send.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AAY1D,eAAO,MAAM,cAAc,EAAE,OAoD5B,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* shroud_send — send to a stealth meta-address (the privacy-native form).
|
|
3
|
+
*
|
|
4
|
+
* Uses agent.send (ETH) or agent.sendERC20 (token). Recipient is the encoded
|
|
5
|
+
* meta-address string `st:base:0x…`.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { McpInvalidArgsError } from '../errors.js';
|
|
9
|
+
import { AddressSchema, AssetSchema, Uint256StringSchema, toBigInt } from './schema.js';
|
|
10
|
+
const ArgsSchema = z
|
|
11
|
+
.object({
|
|
12
|
+
to: z.string().min(1),
|
|
13
|
+
asset: AssetSchema,
|
|
14
|
+
amount: Uint256StringSchema,
|
|
15
|
+
})
|
|
16
|
+
.strict();
|
|
17
|
+
export const shroudSendTool = {
|
|
18
|
+
name: 'shroud_send',
|
|
19
|
+
description: 'Send ETH or an ERC-20 token to a stealth meta-address. `to` is the encoded `st:base:0x…` string. `asset` is "ETH" or { token: 0x… }. `amount` is a base-units string.',
|
|
20
|
+
inputSchema: {
|
|
21
|
+
type: 'object',
|
|
22
|
+
additionalProperties: false,
|
|
23
|
+
properties: {
|
|
24
|
+
to: { type: 'string', description: 'Encoded stealth meta-address' },
|
|
25
|
+
asset: {
|
|
26
|
+
oneOf: [
|
|
27
|
+
{ type: 'string', enum: ['ETH'] },
|
|
28
|
+
{
|
|
29
|
+
type: 'object',
|
|
30
|
+
properties: { token: { type: 'string', pattern: '^0x[0-9a-fA-F]{40}$' } },
|
|
31
|
+
required: ['token'],
|
|
32
|
+
additionalProperties: false,
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
amount: { type: 'string', pattern: '^\\d+$', description: 'Base-units integer' },
|
|
37
|
+
},
|
|
38
|
+
required: ['to', 'asset', 'amount'],
|
|
39
|
+
},
|
|
40
|
+
async handler(ctx, raw) {
|
|
41
|
+
const parsed = ArgsSchema.safeParse(raw);
|
|
42
|
+
if (!parsed.success) {
|
|
43
|
+
throw new McpInvalidArgsError();
|
|
44
|
+
}
|
|
45
|
+
const { to, asset, amount } = parsed.data;
|
|
46
|
+
const amountWei = toBigInt(amount);
|
|
47
|
+
let receipt;
|
|
48
|
+
if (asset === 'ETH') {
|
|
49
|
+
receipt = await ctx.agent.send(to, amountWei);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// Validate the token address shape before dispatch.
|
|
53
|
+
AddressSchema.parse(asset.token);
|
|
54
|
+
receipt = await ctx.agent.sendERC20(to, asset.token, amountWei);
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
ok: true,
|
|
58
|
+
txHash: receipt.txHash,
|
|
59
|
+
stealthAddress: receipt.stealthAddress,
|
|
60
|
+
ephemeralPubKey: receipt.ephemeralPubKey,
|
|
61
|
+
viewTag: receipt.viewTag,
|
|
62
|
+
};
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=send.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/tools/send.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAExF,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,mBAAmB;CAC5B,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,cAAc,GAAY;IACrC,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,uKAAuK;IACzK,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,UAAU,EAAE;YACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;YACnE,KAAK,EAAE;gBACL,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE;oBACjC;wBACE,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE;wBACzE,QAAQ,EAAE,CAAC,OAAO,CAAC;wBACnB,oBAAoB,EAAE,KAAK;qBAC5B;iBACF;aACF;YACD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;SACjF;QACD,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC;KACpC;IACD,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG;QACpB,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,mBAAmB,EAAE,CAAC;QAClC,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;QAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEnC,IAAI,OAAO,CAAC;QACZ,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACpB,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,oDAAoD;YACpD,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,CACjC,EAAE,EACF,KAAK,CAAC,KAAsB,EAC5B,SAAS,CACV,CAAC;QACJ,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/tools/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AAK1D,eAAO,MAAM,gBAAgB,EAAE,OA6B9B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* shroud_status — read-only snapshot of agent + chain + on-chain registration.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { McpInvalidArgsError } from '../errors.js';
|
|
6
|
+
const ArgsSchema = z.object({}).strict();
|
|
7
|
+
export const shroudStatusTool = {
|
|
8
|
+
name: 'shroud_status',
|
|
9
|
+
description: 'Snapshot of the running agent: operator wallet, meta-address, chain id, current block, on-chain registration state, and stealth contract address.',
|
|
10
|
+
inputSchema: {
|
|
11
|
+
type: 'object',
|
|
12
|
+
additionalProperties: false,
|
|
13
|
+
properties: {},
|
|
14
|
+
required: [],
|
|
15
|
+
},
|
|
16
|
+
async handler(ctx, raw) {
|
|
17
|
+
const parsed = ArgsSchema.safeParse(raw ?? {});
|
|
18
|
+
if (!parsed.success) {
|
|
19
|
+
throw new McpInvalidArgsError();
|
|
20
|
+
}
|
|
21
|
+
const latest = await ctx.transport.publicClient.getBlock({
|
|
22
|
+
blockTag: 'latest',
|
|
23
|
+
});
|
|
24
|
+
const registered = await ctx.agent.isRegistered();
|
|
25
|
+
return {
|
|
26
|
+
ok: true,
|
|
27
|
+
chainId: ctx.chainId,
|
|
28
|
+
walletAddress: ctx.walletAddress ?? null,
|
|
29
|
+
metaAddress: ctx.agent.metaAddressEncoded,
|
|
30
|
+
stealthContract: ctx.agent.stealthContract,
|
|
31
|
+
latestBlock: (latest.number ?? 0n).toString(),
|
|
32
|
+
registered,
|
|
33
|
+
};
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/tools/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAEzC,MAAM,CAAC,MAAM,gBAAgB,GAAY;IACvC,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,mJAAmJ;IACrJ,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;KACb;IACD,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG;QACpB,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,mBAAmB,EAAE,CAAC;QAClC,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC;YACvD,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAClD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,IAAI;YACxC,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,kBAAkB;YACzC,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,eAAe;YAC1C,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;YAC7C,UAAU;SACX,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* shroud_sweep — sweep a previously-detected stealth address to a destination.
|
|
3
|
+
*
|
|
4
|
+
* Caller passes the detection bundle returned by shroud_receive (stealth
|
|
5
|
+
* address + stealth private key + ephemeral pub key + tx coords). We
|
|
6
|
+
* reconstruct a minimal DetectedPayment and dispatch to agent.sweep.
|
|
7
|
+
*
|
|
8
|
+
* Optional flags:
|
|
9
|
+
* - viaRelayer + token → Gelato ERC-20 gasless sweep
|
|
10
|
+
* - viaRelayer (ETH) → EIP-7702 ETH gasless sweep (requires selfHostEndpoint)
|
|
11
|
+
*/
|
|
12
|
+
import type { McpTool } from '../types.js';
|
|
13
|
+
export declare const shroudSweepTool: McpTool;
|
|
14
|
+
//# sourceMappingURL=sweep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sweep.d.ts","sourceRoot":"","sources":["../../../src/tools/sweep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AA0B1D,eAAO,MAAM,eAAe,EAAE,OAoF7B,CAAC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* shroud_sweep — sweep a previously-detected stealth address to a destination.
|
|
3
|
+
*
|
|
4
|
+
* Caller passes the detection bundle returned by shroud_receive (stealth
|
|
5
|
+
* address + stealth private key + ephemeral pub key + tx coords). We
|
|
6
|
+
* reconstruct a minimal DetectedPayment and dispatch to agent.sweep.
|
|
7
|
+
*
|
|
8
|
+
* Optional flags:
|
|
9
|
+
* - viaRelayer + token → Gelato ERC-20 gasless sweep
|
|
10
|
+
* - viaRelayer (ETH) → EIP-7702 ETH gasless sweep (requires selfHostEndpoint)
|
|
11
|
+
*/
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { McpInvalidArgsError } from '../errors.js';
|
|
14
|
+
import { AddressSchema, Uint256StringSchema, toBigInt } from './schema.js';
|
|
15
|
+
const HexSchema = z.string().regex(/^0x[0-9a-fA-F]+$/);
|
|
16
|
+
const Hex32Schema = z.string().regex(/^0x[0-9a-fA-F]{64}$/);
|
|
17
|
+
const ArgsSchema = z
|
|
18
|
+
.object({
|
|
19
|
+
detection: z.object({
|
|
20
|
+
stealthAddress: AddressSchema,
|
|
21
|
+
ephemeralPubKey: HexSchema,
|
|
22
|
+
stealthPrivateKey: Hex32Schema,
|
|
23
|
+
txHash: Hex32Schema,
|
|
24
|
+
blockNumber: Uint256StringSchema,
|
|
25
|
+
blockHash: Hex32Schema,
|
|
26
|
+
logIndex: z.number().int().nonnegative(),
|
|
27
|
+
finality: z.enum(['safe', 'finalized']).optional(),
|
|
28
|
+
}),
|
|
29
|
+
destination: AddressSchema,
|
|
30
|
+
token: AddressSchema.optional(),
|
|
31
|
+
viaRelayer: z.boolean().optional(),
|
|
32
|
+
ethRelayerEndpoint: z.string().url().optional(),
|
|
33
|
+
})
|
|
34
|
+
.strict();
|
|
35
|
+
export const shroudSweepTool = {
|
|
36
|
+
name: 'shroud_sweep',
|
|
37
|
+
description: 'Sweep a detected stealth address to a destination wallet. Pass the detection object returned by shroud_receive. Omit `token` for ETH; pass `token` for an ERC-20. Set `viaRelayer: true` for gasless sweep (ERC-20 → Gelato; ETH → requires `ethRelayerEndpoint` to a self-host relayer).',
|
|
38
|
+
inputSchema: {
|
|
39
|
+
type: 'object',
|
|
40
|
+
additionalProperties: false,
|
|
41
|
+
properties: {
|
|
42
|
+
detection: {
|
|
43
|
+
type: 'object',
|
|
44
|
+
additionalProperties: false,
|
|
45
|
+
properties: {
|
|
46
|
+
stealthAddress: { type: 'string', pattern: '^0x[0-9a-fA-F]{40}$' },
|
|
47
|
+
ephemeralPubKey: { type: 'string', pattern: '^0x[0-9a-fA-F]+$' },
|
|
48
|
+
stealthPrivateKey: { type: 'string', pattern: '^0x[0-9a-fA-F]{64}$' },
|
|
49
|
+
txHash: { type: 'string', pattern: '^0x[0-9a-fA-F]{64}$' },
|
|
50
|
+
blockNumber: { type: 'string', pattern: '^\\d+$' },
|
|
51
|
+
blockHash: { type: 'string', pattern: '^0x[0-9a-fA-F]{64}$' },
|
|
52
|
+
logIndex: { type: 'integer', minimum: 0 },
|
|
53
|
+
finality: { type: 'string', enum: ['safe', 'finalized'] },
|
|
54
|
+
},
|
|
55
|
+
required: [
|
|
56
|
+
'stealthAddress',
|
|
57
|
+
'ephemeralPubKey',
|
|
58
|
+
'stealthPrivateKey',
|
|
59
|
+
'txHash',
|
|
60
|
+
'blockNumber',
|
|
61
|
+
'blockHash',
|
|
62
|
+
'logIndex',
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
destination: { type: 'string', pattern: '^0x[0-9a-fA-F]{40}$' },
|
|
66
|
+
token: { type: 'string', pattern: '^0x[0-9a-fA-F]{40}$' },
|
|
67
|
+
viaRelayer: { type: 'boolean' },
|
|
68
|
+
ethRelayerEndpoint: { type: 'string' },
|
|
69
|
+
},
|
|
70
|
+
required: ['detection', 'destination'],
|
|
71
|
+
},
|
|
72
|
+
async handler(ctx, raw) {
|
|
73
|
+
const parsed = ArgsSchema.safeParse(raw);
|
|
74
|
+
if (!parsed.success) {
|
|
75
|
+
throw new McpInvalidArgsError();
|
|
76
|
+
}
|
|
77
|
+
const { detection, destination, token, viaRelayer, ethRelayerEndpoint } = parsed.data;
|
|
78
|
+
const dp = {
|
|
79
|
+
stealthAddress: detection.stealthAddress,
|
|
80
|
+
ephemeralPubKey: detection.ephemeralPubKey,
|
|
81
|
+
stealthPrivateKey: detection.stealthPrivateKey,
|
|
82
|
+
txHash: detection.txHash,
|
|
83
|
+
blockNumber: toBigInt(detection.blockNumber),
|
|
84
|
+
blockHash: detection.blockHash,
|
|
85
|
+
logIndex: detection.logIndex,
|
|
86
|
+
finality: detection.finality ?? 'safe',
|
|
87
|
+
};
|
|
88
|
+
const sweepOpts = {};
|
|
89
|
+
if (token !== undefined)
|
|
90
|
+
sweepOpts.token = token;
|
|
91
|
+
if (viaRelayer === true) {
|
|
92
|
+
sweepOpts.viaRelayer = true;
|
|
93
|
+
if (ethRelayerEndpoint !== undefined) {
|
|
94
|
+
sweepOpts.ethRelayerOptions = { selfHostEndpoint: ethRelayerEndpoint };
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const result = await ctx.agent.sweep(dp, destination, sweepOpts);
|
|
98
|
+
const swept = result.swept;
|
|
99
|
+
const out = {
|
|
100
|
+
ok: true,
|
|
101
|
+
txHash: swept.txHash,
|
|
102
|
+
destination: swept.destination,
|
|
103
|
+
};
|
|
104
|
+
if (swept.token !== undefined)
|
|
105
|
+
out.token = swept.token;
|
|
106
|
+
if (swept.blockNumber !== undefined) {
|
|
107
|
+
out.blockNumber = swept.blockNumber.toString();
|
|
108
|
+
}
|
|
109
|
+
if (swept.taskId !== undefined)
|
|
110
|
+
out.taskId = swept.taskId;
|
|
111
|
+
if (swept.status !== undefined)
|
|
112
|
+
out.status = swept.status;
|
|
113
|
+
return out;
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=sweep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sweep.js","sourceRoot":"","sources":["../../../src/tools/sweep.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* shroud_x402_pay — one-shot HTTP 402 client.
|
|
3
|
+
*
|
|
4
|
+
* Fetches a URL; if the server responds 402, the SDK signs an EIP-3009
|
|
5
|
+
* USDC transferWithAuthorization and retries automatically. Returns the
|
|
6
|
+
* server's final status, the body (if JSON-decodable), and the settled
|
|
7
|
+
* tx hash exposed via X-PAYMENT-RESPONSE when present.
|
|
8
|
+
*
|
|
9
|
+
* `maxPriceUsdcAtomic` is a hard safety cap. If the server demands more,
|
|
10
|
+
* the SDK throws X402AmountMismatchError without signing.
|
|
11
|
+
*/
|
|
12
|
+
import type { McpTool } from '../types.js';
|
|
13
|
+
export declare const shroudX402PayTool: McpTool;
|
|
14
|
+
//# sourceMappingURL=x402-pay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402-pay.d.ts","sourceRoot":"","sources":["../../../src/tools/x402-pay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AAc1D,eAAO,MAAM,iBAAiB,EAAE,OAiD/B,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* shroud_x402_pay — one-shot HTTP 402 client.
|
|
3
|
+
*
|
|
4
|
+
* Fetches a URL; if the server responds 402, the SDK signs an EIP-3009
|
|
5
|
+
* USDC transferWithAuthorization and retries automatically. Returns the
|
|
6
|
+
* server's final status, the body (if JSON-decodable), and the settled
|
|
7
|
+
* tx hash exposed via X-PAYMENT-RESPONSE when present.
|
|
8
|
+
*
|
|
9
|
+
* `maxPriceUsdcAtomic` is a hard safety cap. If the server demands more,
|
|
10
|
+
* the SDK throws X402AmountMismatchError without signing.
|
|
11
|
+
*/
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { createX402Client } from '@shroud-fi/x402';
|
|
14
|
+
import { McpInvalidArgsError } from '../errors.js';
|
|
15
|
+
import { Uint256StringSchema, toBigInt } from './schema.js';
|
|
16
|
+
const ArgsSchema = z
|
|
17
|
+
.object({
|
|
18
|
+
url: z.string().url(),
|
|
19
|
+
method: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']).optional(),
|
|
20
|
+
body: z.string().optional(),
|
|
21
|
+
headers: z.record(z.string()).optional(),
|
|
22
|
+
maxPriceUsdcAtomic: Uint256StringSchema.optional(),
|
|
23
|
+
})
|
|
24
|
+
.strict();
|
|
25
|
+
export const shroudX402PayTool = {
|
|
26
|
+
name: 'shroud_x402_pay',
|
|
27
|
+
description: 'Fetch an HTTP URL. If the server responds 402, the SDK auto-signs EIP-3009 USDC payment using the agent operator wallet and retries. Returns final status, response body (if any), and settled tx hash (if X-PAYMENT-RESPONSE was returned). `maxPriceUsdcAtomic` caps how much the client will pay (base units, 6 decimals).',
|
|
28
|
+
inputSchema: {
|
|
29
|
+
type: 'object',
|
|
30
|
+
additionalProperties: false,
|
|
31
|
+
properties: {
|
|
32
|
+
url: { type: 'string' },
|
|
33
|
+
method: { type: 'string', enum: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'] },
|
|
34
|
+
body: { type: 'string' },
|
|
35
|
+
headers: { type: 'object', additionalProperties: { type: 'string' } },
|
|
36
|
+
maxPriceUsdcAtomic: { type: 'string', pattern: '^\\d+$' },
|
|
37
|
+
},
|
|
38
|
+
required: ['url'],
|
|
39
|
+
},
|
|
40
|
+
async handler(ctx, raw) {
|
|
41
|
+
const parsed = ArgsSchema.safeParse(raw);
|
|
42
|
+
if (!parsed.success) {
|
|
43
|
+
throw new McpInvalidArgsError();
|
|
44
|
+
}
|
|
45
|
+
const { url, method, body, headers, maxPriceUsdcAtomic } = parsed.data;
|
|
46
|
+
const client = createX402Client({ transport: ctx.transport });
|
|
47
|
+
const init = {
|
|
48
|
+
method: method ?? 'GET',
|
|
49
|
+
...(headers !== undefined ? { headers } : {}),
|
|
50
|
+
...(body !== undefined ? { body } : {}),
|
|
51
|
+
...(maxPriceUsdcAtomic !== undefined
|
|
52
|
+
? { maxPriceAtomic: toBigInt(maxPriceUsdcAtomic) }
|
|
53
|
+
: {}),
|
|
54
|
+
};
|
|
55
|
+
const response = await client.fetch(url, init);
|
|
56
|
+
const text = await response.text();
|
|
57
|
+
let json;
|
|
58
|
+
try {
|
|
59
|
+
json = JSON.parse(text);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
json = null;
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
ok: response.ok,
|
|
66
|
+
status: response.status,
|
|
67
|
+
bodyText: text.length > 4096 ? text.slice(0, 4096) : text,
|
|
68
|
+
bodyJson: json,
|
|
69
|
+
...(response.x402Settlement !== undefined
|
|
70
|
+
? { settledTxHash: response.x402Settlement.txHash }
|
|
71
|
+
: {}),
|
|
72
|
+
};
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=x402-pay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402-pay.js","sourceRoot":"","sources":["../../../src/tools/x402-pay.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* shroud_x402_serve — server-side x402 primitives.
|
|
3
|
+
*
|
|
4
|
+
* One tool, two ops:
|
|
5
|
+
* - op: 'challenge' → mint a 402 challenge bundle (headers + body) the
|
|
6
|
+
* caller serves from their own HTTP framework. Each challenge derives a
|
|
7
|
+
* FRESH stealth payTo address.
|
|
8
|
+
* - op: 'verify' → verify a client's signed X-PAYMENT payload against a
|
|
9
|
+
* prior challenge. Skip-facilitator mode by default — caller settles
|
|
10
|
+
* the EIP-3009 authorization on-chain themselves.
|
|
11
|
+
*
|
|
12
|
+
* Caller is responsible for transport (Express/Fastify/Next/etc) — this
|
|
13
|
+
* stays framework-agnostic.
|
|
14
|
+
*/
|
|
15
|
+
import type { McpTool } from '../types.js';
|
|
16
|
+
export declare const shroudX402ServeTool: McpTool;
|
|
17
|
+
//# sourceMappingURL=x402-serve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402-serve.d.ts","sourceRoot":"","sources":["../../../src/tools/x402-serve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AA+B1D,eAAO,MAAM,mBAAmB,EAAE,OA4FjC,CAAC"}
|