@openclawcash/mcp-server 0.1.16 → 0.1.20
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/openclawcash-mcp.mjs +156 -20
- package/package.json +2 -2
package/openclawcash-mcp.mjs
CHANGED
|
@@ -7,7 +7,7 @@ import { fileURLToPath } from "node:url";
|
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
|
|
9
9
|
const SERVER_NAME = "openclawcash";
|
|
10
|
-
const SERVER_VERSION = "0.1.
|
|
10
|
+
const SERVER_VERSION = "0.1.20";
|
|
11
11
|
const PROTOCOL_VERSION = "2024-11-05";
|
|
12
12
|
const DEFAULT_BASE_URL = "https://openclawcash.com";
|
|
13
13
|
|
|
@@ -104,6 +104,11 @@ const walletsListArgsSchema = z.object({
|
|
|
104
104
|
});
|
|
105
105
|
const skillLatestArgsSchema = z.object({}).strict();
|
|
106
106
|
|
|
107
|
+
const tokenlistArgsSchema = z.object({
|
|
108
|
+
chainId: z.number().int().positive().optional(),
|
|
109
|
+
extended: z.boolean().optional(),
|
|
110
|
+
}).strict();
|
|
111
|
+
|
|
107
112
|
const balancesArgsSchema = z
|
|
108
113
|
.object({
|
|
109
114
|
walletId: z.union([z.number().int().positive(), z.string().min(1)]).optional(),
|
|
@@ -119,6 +124,7 @@ const balancesArgsSchema = z
|
|
|
119
124
|
const transferArgsSchema = walletSelectorBaseSchema
|
|
120
125
|
.extend({
|
|
121
126
|
to: z.string().min(1),
|
|
127
|
+
network: z.string().min(1).optional(),
|
|
122
128
|
amountDisplay: z.string().min(1).optional(),
|
|
123
129
|
valueBaseUnits: z.string().min(1).optional(),
|
|
124
130
|
amount: z.string().min(1).optional(),
|
|
@@ -165,6 +171,7 @@ const swapExecuteArgsSchema = z
|
|
|
165
171
|
amountIn: z.string().min(1),
|
|
166
172
|
slippage: z.number().positive().optional(),
|
|
167
173
|
chain: z.enum(["evm", "solana"]).optional(),
|
|
174
|
+
network: z.string().min(1).optional(),
|
|
168
175
|
})
|
|
169
176
|
.refine((data) => [data.walletId, data.walletAddress].filter((value) => value !== undefined).length === 1, {
|
|
170
177
|
message: "Provide exactly one of walletId or walletAddress.",
|
|
@@ -178,11 +185,40 @@ const approveArgsSchema = z
|
|
|
178
185
|
spender: z.string().min(1),
|
|
179
186
|
amount: z.string().min(1),
|
|
180
187
|
chain: z.enum(["evm", "solana"]).optional(),
|
|
188
|
+
network: z.string().min(1).optional(),
|
|
189
|
+
})
|
|
190
|
+
.refine((data) => [data.walletId, data.walletAddress].filter((value) => value !== undefined).length === 1, {
|
|
191
|
+
message: "Provide exactly one of walletId or walletAddress.",
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
const bridgeQuoteArgsSchema = z
|
|
195
|
+
.object({
|
|
196
|
+
walletId: z.union([z.number().int().positive(), z.string().min(1)]).optional(),
|
|
197
|
+
walletAddress: z.string().min(1).optional(),
|
|
198
|
+
fromNetwork: z.string().min(1),
|
|
199
|
+
fromToken: z.string().min(1),
|
|
200
|
+
toNetwork: z.string().min(1),
|
|
201
|
+
toToken: z.string().min(1),
|
|
202
|
+
toAddress: z.string().min(1).optional(),
|
|
203
|
+
amountIn: z.string().min(1),
|
|
204
|
+
slippagePercent: z.number().min(0).max(50).optional(),
|
|
205
|
+
})
|
|
206
|
+
.refine((data) => [data.walletId, data.walletAddress].filter((value) => value !== undefined).length === 1, {
|
|
207
|
+
message: "Provide exactly one of walletId or walletAddress.",
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
const bridgeExecuteArgsSchema = z
|
|
211
|
+
.object({
|
|
212
|
+
walletId: z.union([z.number().int().positive(), z.string().min(1)]).optional(),
|
|
213
|
+
walletAddress: z.string().min(1).optional(),
|
|
214
|
+
quoteId: z.string().min(1),
|
|
181
215
|
})
|
|
182
216
|
.refine((data) => [data.walletId, data.walletAddress].filter((value) => value !== undefined).length === 1, {
|
|
183
217
|
message: "Provide exactly one of walletId or walletAddress.",
|
|
184
218
|
});
|
|
185
219
|
|
|
220
|
+
const bridgeStatusArgsSchema = z.object({ bridgeTxId: z.string().min(1) });
|
|
221
|
+
|
|
186
222
|
const supportedTokensArgsSchema = walletSelectorBaseSchema
|
|
187
223
|
.extend({
|
|
188
224
|
network: z.string().min(1).optional(),
|
|
@@ -193,7 +229,7 @@ const supportedTokensArgsSchema = walletSelectorBaseSchema
|
|
|
193
229
|
|
|
194
230
|
const createWalletArgsSchema = z.object({
|
|
195
231
|
label: z.string().min(1),
|
|
196
|
-
network: z.enum(["sepolia", "mainnet", "polygon-mainnet", "solana-devnet", "solana-testnet", "solana-mainnet"]).optional(),
|
|
232
|
+
network: z.enum(["sepolia", "mainnet", "polygon-mainnet", "base-mainnet", "solana-devnet", "solana-testnet", "solana-mainnet"]).optional(),
|
|
197
233
|
exportPassphrase: z.string().trim().min(12),
|
|
198
234
|
exportPassphraseStorageType: z.enum(["env", "secret_manager", "vault", "other"]),
|
|
199
235
|
exportPassphraseStorageRef: z.string().trim().min(3),
|
|
@@ -202,7 +238,7 @@ const createWalletArgsSchema = z.object({
|
|
|
202
238
|
|
|
203
239
|
const importWalletArgsSchema = z.object({
|
|
204
240
|
label: z.string().min(1),
|
|
205
|
-
network: z.enum(["mainnet", "polygon-mainnet", "solana-mainnet"]),
|
|
241
|
+
network: z.enum(["mainnet", "polygon-mainnet", "base-mainnet", "solana-mainnet"]),
|
|
206
242
|
privateKey: z.string().min(1),
|
|
207
243
|
});
|
|
208
244
|
|
|
@@ -507,6 +543,31 @@ const tools = [
|
|
|
507
543
|
requireAuth: false,
|
|
508
544
|
}),
|
|
509
545
|
},
|
|
546
|
+
{
|
|
547
|
+
name: "tokenlist_get",
|
|
548
|
+
description:
|
|
549
|
+
"Fetch the public OpenClawCash Token Lists v1 document covering every supported chain (Mainnet, Polygon, Base, Sepolia, Solana mainnet). Default merges curated + Uniswap (EVM) + Jupiter (Solana). Pass extended=false for curated-only, or chainId=<num> to scope to one chain (1=Mainnet, 137=Polygon, 8453=Base, 11155111=Sepolia, 101=Solana). No API key required.",
|
|
550
|
+
inputSchema: {
|
|
551
|
+
type: "object",
|
|
552
|
+
properties: {
|
|
553
|
+
chainId: { type: "integer", description: "EIP-155 chain id (EVM) or Solana Labs convention (101=mainnet, 102=testnet, 103=devnet). Omit for all chains." },
|
|
554
|
+
extended: { type: "boolean", description: "Default true: merge Uniswap + Jupiter community lists. Set false for curated-only.", default: true },
|
|
555
|
+
},
|
|
556
|
+
additionalProperties: false,
|
|
557
|
+
},
|
|
558
|
+
parse: (args) => tokenlistArgsSchema.parse(args ?? {}),
|
|
559
|
+
execute: async (args) => {
|
|
560
|
+
const query = {};
|
|
561
|
+
if (typeof args.chainId === "number") query.chainId = String(args.chainId);
|
|
562
|
+
if (args.extended === false) query.extended = "false";
|
|
563
|
+
return callAgentApi({
|
|
564
|
+
method: "GET",
|
|
565
|
+
pathName: "/api/public/tokenlist",
|
|
566
|
+
query: Object.keys(query).length > 0 ? query : undefined,
|
|
567
|
+
requireAuth: false,
|
|
568
|
+
});
|
|
569
|
+
},
|
|
570
|
+
},
|
|
510
571
|
{
|
|
511
572
|
name: "wallets_list",
|
|
512
573
|
description: "List managed wallets accessible to the configured OpenClawCash agent key.",
|
|
@@ -548,7 +609,7 @@ const tools = [
|
|
|
548
609
|
},
|
|
549
610
|
{
|
|
550
611
|
name: "transactions_list",
|
|
551
|
-
description: "List merged transaction history for one managed wallet.",
|
|
612
|
+
description: "List merged transaction history for one managed wallet. EVM wallets accept optional `network` to scope to a single EVM chain (e.g. \"base-mainnet\") or `\"all\"` to merge activity across every supported EVM chain into one history. Solana wallets stay scoped to their cluster.",
|
|
552
613
|
inputSchema: {
|
|
553
614
|
type: "object",
|
|
554
615
|
properties: {
|
|
@@ -556,6 +617,7 @@ const tools = [
|
|
|
556
617
|
walletLabel: { type: "string", description: selectorDescription() },
|
|
557
618
|
walletAddress: { type: "string", description: selectorDescription() },
|
|
558
619
|
chain: { type: "string", enum: ["evm", "solana"] },
|
|
620
|
+
network: { type: "string", description: "Optional EVM network override: a known EVM network id (mainnet, polygon-mainnet, base-mainnet, sepolia) or the literal \"all\" to merge across the bucket. Omit to use the wallet's default chain." },
|
|
559
621
|
},
|
|
560
622
|
additionalProperties: false,
|
|
561
623
|
},
|
|
@@ -614,7 +676,7 @@ const tools = [
|
|
|
614
676
|
{
|
|
615
677
|
name: "transfer_send",
|
|
616
678
|
description: withWriteSafety(
|
|
617
|
-
"Send a native asset or token transfer from a managed wallet. Do not use for checkout escrow funding; use checkout_quick_pay or checkout_swap_and_pay.",
|
|
679
|
+
"Send a native asset or token transfer from a managed wallet. EVM wallets accept optional `network` (e.g. \"base-mainnet\") to operate on a non-default EVM chain. Do not use for checkout escrow funding; use checkout_quick_pay or checkout_swap_and_pay.",
|
|
618
680
|
),
|
|
619
681
|
inputSchema: {
|
|
620
682
|
type: "object",
|
|
@@ -623,6 +685,7 @@ const tools = [
|
|
|
623
685
|
walletLabel: { type: "string" },
|
|
624
686
|
walletAddress: { type: "string" },
|
|
625
687
|
chain: { type: "string", enum: ["evm", "solana"] },
|
|
688
|
+
network: { type: "string", description: "Optional EVM network override (mainnet, polygon-mainnet, base-mainnet, sepolia). Omit to use the wallet's default chain." },
|
|
626
689
|
to: { type: "string" },
|
|
627
690
|
amountDisplay: { type: "string", description: "Human-readable decimal amount (preferred)." },
|
|
628
691
|
valueBaseUnits: { type: "string", description: "Base-units integer amount (preferred)." },
|
|
@@ -698,7 +761,7 @@ const tools = [
|
|
|
698
761
|
},
|
|
699
762
|
{
|
|
700
763
|
name: "swap_execute",
|
|
701
|
-
description: withWriteSafety("Execute a swap through OpenClawCash."),
|
|
764
|
+
description: withWriteSafety("Execute a swap through OpenClawCash. EVM wallets accept optional `network` to operate on a non-default EVM chain (mainnet, polygon-mainnet, base-mainnet, sepolia)."),
|
|
702
765
|
inputSchema: {
|
|
703
766
|
type: "object",
|
|
704
767
|
properties: {
|
|
@@ -709,6 +772,7 @@ const tools = [
|
|
|
709
772
|
amountIn: { type: "string" },
|
|
710
773
|
slippage: { type: "number" },
|
|
711
774
|
chain: { type: "string", enum: ["evm", "solana"] },
|
|
775
|
+
network: { type: "string", description: "Optional EVM network override; omit to use the wallet's default chain." },
|
|
712
776
|
},
|
|
713
777
|
required: ["tokenIn", "tokenOut", "amountIn"],
|
|
714
778
|
additionalProperties: false,
|
|
@@ -723,7 +787,7 @@ const tools = [
|
|
|
723
787
|
},
|
|
724
788
|
{
|
|
725
789
|
name: "approve_token",
|
|
726
|
-
description: withWriteSafety("Approve ERC-20 token spending for a managed wallet."),
|
|
790
|
+
description: withWriteSafety("Approve ERC-20 token spending for a managed wallet. Optional `network` lets EVM wallets approve on a non-default EVM chain (mainnet, polygon-mainnet, base-mainnet, sepolia)."),
|
|
727
791
|
inputSchema: {
|
|
728
792
|
type: "object",
|
|
729
793
|
properties: {
|
|
@@ -733,6 +797,7 @@ const tools = [
|
|
|
733
797
|
spender: { type: "string" },
|
|
734
798
|
amount: { type: "string" },
|
|
735
799
|
chain: { type: "string", enum: ["evm", "solana"] },
|
|
800
|
+
network: { type: "string", description: "Optional EVM network override; omit to use the wallet's default chain." },
|
|
736
801
|
},
|
|
737
802
|
required: ["tokenAddress", "spender", "amount"],
|
|
738
803
|
additionalProperties: false,
|
|
@@ -745,6 +810,77 @@ const tools = [
|
|
|
745
810
|
body: args,
|
|
746
811
|
}),
|
|
747
812
|
},
|
|
813
|
+
{
|
|
814
|
+
name: "bridge_quote",
|
|
815
|
+
description:
|
|
816
|
+
"Quote a cross-chain bridge transfer. The aggregator (LiFi) picks the underlying bridge automatically and returns provider+bridgeName so you know which bridge was selected. EVM-EVM is fully supported; Solana source-side execute is gated to a follow-up. Quote TTL ~60s; pass the returned quoteId to bridge_execute.",
|
|
817
|
+
inputSchema: {
|
|
818
|
+
type: "object",
|
|
819
|
+
properties: {
|
|
820
|
+
walletId: { oneOf: [{ type: "integer" }, { type: "string" }] },
|
|
821
|
+
walletAddress: { type: "string" },
|
|
822
|
+
fromNetwork: { type: "string", description: "Source network. EVM-home wallets bucket-route across mainnet, polygon-mainnet, base-mainnet, sepolia." },
|
|
823
|
+
fromToken: { type: "string", description: "Source token symbol or contract address. Use 'native' for the chain's native gas token." },
|
|
824
|
+
toNetwork: { type: "string" },
|
|
825
|
+
toToken: { type: "string" },
|
|
826
|
+
toAddress: { type: "string", description: "Optional destination address. Defaults to the source wallet address." },
|
|
827
|
+
amountIn: { type: "string", description: "Source amount in base units (digits only)." },
|
|
828
|
+
slippagePercent: { type: "number", minimum: 0, maximum: 50 },
|
|
829
|
+
},
|
|
830
|
+
required: ["fromNetwork", "fromToken", "toNetwork", "toToken", "amountIn"],
|
|
831
|
+
additionalProperties: false,
|
|
832
|
+
},
|
|
833
|
+
parse: (args) => bridgeQuoteArgsSchema.parse(args ?? {}),
|
|
834
|
+
execute: async (args) =>
|
|
835
|
+
callAgentApi({
|
|
836
|
+
method: "POST",
|
|
837
|
+
pathName: "/api/agent/bridge/quote",
|
|
838
|
+
body: args,
|
|
839
|
+
}),
|
|
840
|
+
},
|
|
841
|
+
{
|
|
842
|
+
name: "bridge_execute",
|
|
843
|
+
description: withWriteSafety(
|
|
844
|
+
"Execute a previously quoted cross-chain bridge. Server signs the source-side transaction with the wallet's key, submits to chain, and collects the platform fee. Idempotency is automatic. Returns sourceTxHash; use bridge_status to track destination delivery.",
|
|
845
|
+
),
|
|
846
|
+
inputSchema: {
|
|
847
|
+
type: "object",
|
|
848
|
+
properties: {
|
|
849
|
+
walletId: { oneOf: [{ type: "integer" }, { type: "string" }] },
|
|
850
|
+
walletAddress: { type: "string" },
|
|
851
|
+
quoteId: { type: "string", description: "Quote identifier returned from bridge_quote." },
|
|
852
|
+
},
|
|
853
|
+
required: ["quoteId"],
|
|
854
|
+
additionalProperties: false,
|
|
855
|
+
},
|
|
856
|
+
parse: (args) => bridgeExecuteArgsSchema.parse(args ?? {}),
|
|
857
|
+
execute: async (args) =>
|
|
858
|
+
callAgentApi({
|
|
859
|
+
method: "POST",
|
|
860
|
+
pathName: "/api/agent/bridge/execute",
|
|
861
|
+
body: args,
|
|
862
|
+
}),
|
|
863
|
+
},
|
|
864
|
+
{
|
|
865
|
+
name: "bridge_status",
|
|
866
|
+
description:
|
|
867
|
+
"Look up the status of a bridge transfer. Returns the current state (submitted | source_confirmed | destination_confirmed | completed | failed) and, when available, the destination chain tx hash and amount received.",
|
|
868
|
+
inputSchema: {
|
|
869
|
+
type: "object",
|
|
870
|
+
properties: {
|
|
871
|
+
bridgeTxId: { type: "string", description: "The bridgeTxId returned from bridge_execute (typically the source chain tx hash)." },
|
|
872
|
+
},
|
|
873
|
+
required: ["bridgeTxId"],
|
|
874
|
+
additionalProperties: false,
|
|
875
|
+
},
|
|
876
|
+
parse: (args) => bridgeStatusArgsSchema.parse(args ?? {}),
|
|
877
|
+
execute: async (args) =>
|
|
878
|
+
callAgentApi({
|
|
879
|
+
method: "GET",
|
|
880
|
+
pathName: "/api/agent/bridge/status",
|
|
881
|
+
query: { bridgeTxId: args.bridgeTxId },
|
|
882
|
+
}),
|
|
883
|
+
},
|
|
748
884
|
{
|
|
749
885
|
name: "wallet_create",
|
|
750
886
|
description: withWriteSafety("Create a new managed wallet under the configured agent key."),
|
|
@@ -754,7 +890,7 @@ const tools = [
|
|
|
754
890
|
label: { type: "string" },
|
|
755
891
|
network: {
|
|
756
892
|
type: "string",
|
|
757
|
-
enum: ["sepolia", "mainnet", "polygon-mainnet", "solana-devnet", "solana-testnet", "solana-mainnet"],
|
|
893
|
+
enum: ["sepolia", "mainnet", "polygon-mainnet", "base-mainnet", "solana-devnet", "solana-testnet", "solana-mainnet"],
|
|
758
894
|
},
|
|
759
895
|
exportPassphrase: { type: "string", minLength: 12 },
|
|
760
896
|
exportPassphraseStorageType: { type: "string", enum: ["env", "secret_manager", "vault", "other"] },
|
|
@@ -790,12 +926,12 @@ const tools = [
|
|
|
790
926
|
},
|
|
791
927
|
{
|
|
792
928
|
name: "wallet_import",
|
|
793
|
-
description: withWriteSafety("Import a mainnet, polygon-mainnet, or Solana mainnet wallet under the configured agent key."),
|
|
929
|
+
description: withWriteSafety("Import a mainnet, polygon-mainnet, base-mainnet, or Solana mainnet wallet under the configured agent key. EVM wallets work across all EVM chains regardless of which one is chosen here as the home network."),
|
|
794
930
|
inputSchema: {
|
|
795
931
|
type: "object",
|
|
796
932
|
properties: {
|
|
797
933
|
label: { type: "string" },
|
|
798
|
-
network: { type: "string", enum: ["mainnet", "polygon-mainnet", "solana-mainnet"] },
|
|
934
|
+
network: { type: "string", enum: ["mainnet", "polygon-mainnet", "base-mainnet", "solana-mainnet"] },
|
|
799
935
|
privateKey: { type: "string" },
|
|
800
936
|
},
|
|
801
937
|
required: ["label", "network", "privateKey"],
|
|
@@ -1290,7 +1426,7 @@ const tools = [
|
|
|
1290
1426
|
},
|
|
1291
1427
|
{
|
|
1292
1428
|
name: "polymarket_order_limit",
|
|
1293
|
-
description: withWriteSafety("Place a Polymarket limit order from a configured
|
|
1429
|
+
description: withWriteSafety("Place a Polymarket limit order from a configured Polymarket-linked EVM wallet. Use this for explicit target-price orders; for close-position intent, prefer market SELL unless a limit price is explicitly requested."),
|
|
1294
1430
|
inputSchema: {
|
|
1295
1431
|
type: "object",
|
|
1296
1432
|
properties: {
|
|
@@ -1314,7 +1450,7 @@ const tools = [
|
|
|
1314
1450
|
},
|
|
1315
1451
|
{
|
|
1316
1452
|
name: "polymarket_order_market",
|
|
1317
|
-
description: withWriteSafety("Place a Polymarket market order from a configured
|
|
1453
|
+
description: withWriteSafety("Place a Polymarket market order from a configured Polymarket-linked EVM wallet. For close-position intent on open markets, default to side=SELL (SELL amount is shares); use limit SELL only for explicit target-price requests."),
|
|
1318
1454
|
inputSchema: {
|
|
1319
1455
|
type: "object",
|
|
1320
1456
|
properties: {
|
|
@@ -1339,7 +1475,7 @@ const tools = [
|
|
|
1339
1475
|
},
|
|
1340
1476
|
{
|
|
1341
1477
|
name: "polymarket_account",
|
|
1342
|
-
description: "Read Polymarket account summary for a configured
|
|
1478
|
+
description: "Read Polymarket account summary for a configured Polymarket-linked EVM wallet.",
|
|
1343
1479
|
inputSchema: {
|
|
1344
1480
|
type: "object",
|
|
1345
1481
|
properties: {
|
|
@@ -1358,7 +1494,7 @@ const tools = [
|
|
|
1358
1494
|
},
|
|
1359
1495
|
{
|
|
1360
1496
|
name: "polymarket_orders",
|
|
1361
|
-
description: "List Polymarket open orders for a configured
|
|
1497
|
+
description: "List Polymarket open orders for a configured Polymarket-linked EVM wallet.",
|
|
1362
1498
|
inputSchema: {
|
|
1363
1499
|
type: "object",
|
|
1364
1500
|
properties: {
|
|
@@ -1380,7 +1516,7 @@ const tools = [
|
|
|
1380
1516
|
},
|
|
1381
1517
|
{
|
|
1382
1518
|
name: "polymarket_cancel_order",
|
|
1383
|
-
description: withWriteSafety("Cancel a Polymarket order for a configured
|
|
1519
|
+
description: withWriteSafety("Cancel a Polymarket order for a configured Polymarket-linked EVM wallet."),
|
|
1384
1520
|
inputSchema: {
|
|
1385
1521
|
type: "object",
|
|
1386
1522
|
properties: {
|
|
@@ -1401,7 +1537,7 @@ const tools = [
|
|
|
1401
1537
|
},
|
|
1402
1538
|
{
|
|
1403
1539
|
name: "polymarket_clear_integration",
|
|
1404
|
-
description: withWriteSafety("Clear Polymarket integration for a configured
|
|
1540
|
+
description: withWriteSafety("Clear Polymarket integration for a configured Polymarket-linked EVM wallet."),
|
|
1405
1541
|
inputSchema: {
|
|
1406
1542
|
type: "object",
|
|
1407
1543
|
properties: {
|
|
@@ -1420,7 +1556,7 @@ const tools = [
|
|
|
1420
1556
|
},
|
|
1421
1557
|
{
|
|
1422
1558
|
name: "polymarket_activity",
|
|
1423
|
-
description: "List Polymarket trade activity for a configured
|
|
1559
|
+
description: "List Polymarket trade activity for a configured Polymarket-linked EVM wallet.",
|
|
1424
1560
|
inputSchema: {
|
|
1425
1561
|
type: "object",
|
|
1426
1562
|
properties: {
|
|
@@ -1441,7 +1577,7 @@ const tools = [
|
|
|
1441
1577
|
},
|
|
1442
1578
|
{
|
|
1443
1579
|
name: "polymarket_positions",
|
|
1444
|
-
description: "List Polymarket open positions (open-market filtered) for a configured
|
|
1580
|
+
description: "List Polymarket open positions (open-market filtered) for a configured Polymarket-linked EVM wallet, including position PnL fields.",
|
|
1445
1581
|
inputSchema: {
|
|
1446
1582
|
type: "object",
|
|
1447
1583
|
properties: {
|
|
@@ -1461,7 +1597,7 @@ const tools = [
|
|
|
1461
1597
|
},
|
|
1462
1598
|
{
|
|
1463
1599
|
name: "polymarket_redeemable",
|
|
1464
|
-
description: "List currently redeemable Polymarket positions and tokenIds for a configured
|
|
1600
|
+
description: "List currently redeemable Polymarket positions and tokenIds for a configured Polymarket-linked EVM wallet.",
|
|
1465
1601
|
inputSchema: {
|
|
1466
1602
|
type: "object",
|
|
1467
1603
|
properties: {
|
|
@@ -1481,7 +1617,7 @@ const tools = [
|
|
|
1481
1617
|
},
|
|
1482
1618
|
{
|
|
1483
1619
|
name: "polymarket_redeem",
|
|
1484
|
-
description: withWriteSafety("Redeem Polymarket position(s) for a configured
|
|
1620
|
+
description: withWriteSafety("Redeem Polymarket position(s) for a configured Polymarket-linked EVM wallet. The server picks the signing path from the wallet config: signatureType 0 redeems directly on-chain (small POL gas required); 1 / 2 redeems through Polymarket's gasless relayer. Run polymarket_redeemable first to pick a tokenId for single redeem. Omit tokenId to redeem all currently redeemable positions. All-mode is chunked; loop while hasMoreRedeemable=true. Response includes signingPath ('direct' | 'gasless') and signatureType."),
|
|
1485
1621
|
inputSchema: {
|
|
1486
1622
|
type: "object",
|
|
1487
1623
|
properties: {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclawcash/mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "OpenClawCash MCP server for managed agent wallets, balances, transfers, swaps, approvals, Get Paid checkout escrow flows, and Polymarket market resolution/order tools.",
|
|
3
|
+
"version": "0.1.20",
|
|
4
|
+
"description": "OpenClawCash MCP server for managed agent wallets, balances, transfers, swaps, approvals, cross-chain bridges, Get Paid checkout escrow flows, and Polymarket market resolution/order tools.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Proprietary",
|
|
7
7
|
"homepage": "https://openclawcash.com/mcp",
|