@dominusnode/mcp-server 1.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.
- package/LICENSE +21 -0
- package/README.md +303 -0
- package/dist/src/config.d.ts +15 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +111 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/http-client.d.ts +23 -0
- package/dist/src/http-client.d.ts.map +1 -0
- package/dist/src/http-client.js +241 -0
- package/dist/src/http-client.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +160 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/proxy-fetch.d.ts +23 -0
- package/dist/src/proxy-fetch.d.ts.map +1 -0
- package/dist/src/proxy-fetch.js +549 -0
- package/dist/src/proxy-fetch.js.map +1 -0
- package/dist/src/token-manager.d.ts +18 -0
- package/dist/src/token-manager.d.ts.map +1 -0
- package/dist/src/token-manager.js +192 -0
- package/dist/src/token-manager.js.map +1 -0
- package/dist/src/tools/account.d.ts +6 -0
- package/dist/src/tools/account.d.ts.map +1 -0
- package/dist/src/tools/account.js +329 -0
- package/dist/src/tools/account.js.map +1 -0
- package/dist/src/tools/agent-wallet.d.ts +5 -0
- package/dist/src/tools/agent-wallet.d.ts.map +1 -0
- package/dist/src/tools/agent-wallet.js +355 -0
- package/dist/src/tools/agent-wallet.js.map +1 -0
- package/dist/src/tools/crypto.d.ts +4 -0
- package/dist/src/tools/crypto.d.ts.map +1 -0
- package/dist/src/tools/crypto.js +102 -0
- package/dist/src/tools/crypto.js.map +1 -0
- package/dist/src/tools/fetch.d.ts +4 -0
- package/dist/src/tools/fetch.d.ts.map +1 -0
- package/dist/src/tools/fetch.js +73 -0
- package/dist/src/tools/fetch.js.map +1 -0
- package/dist/src/tools/keys.d.ts +4 -0
- package/dist/src/tools/keys.d.ts.map +1 -0
- package/dist/src/tools/keys.js +88 -0
- package/dist/src/tools/keys.js.map +1 -0
- package/dist/src/tools/paypal.d.ts +4 -0
- package/dist/src/tools/paypal.d.ts.map +1 -0
- package/dist/src/tools/paypal.js +50 -0
- package/dist/src/tools/paypal.js.map +1 -0
- package/dist/src/tools/plans.d.ts +4 -0
- package/dist/src/tools/plans.d.ts.map +1 -0
- package/dist/src/tools/plans.js +48 -0
- package/dist/src/tools/plans.js.map +1 -0
- package/dist/src/tools/proxy.d.ts +4 -0
- package/dist/src/tools/proxy.d.ts.map +1 -0
- package/dist/src/tools/proxy.js +51 -0
- package/dist/src/tools/proxy.js.map +1 -0
- package/dist/src/tools/sessions.d.ts +4 -0
- package/dist/src/tools/sessions.d.ts.map +1 -0
- package/dist/src/tools/sessions.js +21 -0
- package/dist/src/tools/sessions.js.map +1 -0
- package/dist/src/tools/slots.d.ts +4 -0
- package/dist/src/tools/slots.d.ts.map +1 -0
- package/dist/src/tools/slots.js +61 -0
- package/dist/src/tools/slots.js.map +1 -0
- package/dist/src/tools/teams.d.ts +4 -0
- package/dist/src/tools/teams.d.ts.map +1 -0
- package/dist/src/tools/teams.js +520 -0
- package/dist/src/tools/teams.js.map +1 -0
- package/dist/src/tools/usage.d.ts +4 -0
- package/dist/src/tools/usage.d.ts.map +1 -0
- package/dist/src/tools/usage.js +79 -0
- package/dist/src/tools/usage.js.map +1 -0
- package/dist/src/tools/wallet-auth.d.ts +6 -0
- package/dist/src/tools/wallet-auth.d.ts.map +1 -0
- package/dist/src/tools/wallet-auth.js +158 -0
- package/dist/src/tools/wallet-auth.js.map +1 -0
- package/dist/src/tools/wallet.d.ts +4 -0
- package/dist/src/tools/wallet.d.ts.map +1 -0
- package/dist/src/tools/wallet.js +57 -0
- package/dist/src/tools/wallet.js.map +1 -0
- package/dist/src/types.d.ts +142 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +33 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/tools/usage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClF,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,UAAsB;IAC1E,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,4FAA4F,EAC5F;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KACrF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YACnF,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,CAA4B,oBAAoB,kBAAkB,CAAC,KAAK,CAAC,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjJ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;YAC3B,MAAM,IAAI,GAAG;gBACX,uBAAuB,IAAI,CAAC,IAAI,SAAS;gBACzC,oBAAoB,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;gBACnD,gBAAgB,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC/C,mBAAmB,KAAK,CAAC,YAAY,EAAE;aACxC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;aAChG,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,6BAA6B,EAC7B,0EAA0E,EAC1E;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;KACtE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YACnF,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,CAAyB,0BAA0B,kBAAkB,CAAC,KAAK,CAAC,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpJ,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC,EAAE,CAAC;YACjF,CAAC;YACD,MAAM,MAAM,GAAG,kDAAkD,CAAC;YAClE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAC7H,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;aAChG,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,sGAAsG,EACtG;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QACtF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;KACxE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YACnF,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,CAC/B,8BAA8B,IAAI,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAK,CAAC,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,CACjH,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,EAAE,CAAC;YAChF,CAAC;YACD,MAAM,MAAM,GAAG,0DAA0D,CAAC;YAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAClG,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;aAChG,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { HttpClient } from "../http-client.js";
|
|
3
|
+
/** @internal Exported for testing only — clears rate limit state */
|
|
4
|
+
export declare function _resetWalletAuthLimits(): void;
|
|
5
|
+
export declare function registerWalletAuthTools(server: McpServer, httpClient: HttpClient): void;
|
|
6
|
+
//# sourceMappingURL=wallet-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-auth.d.ts","sourceRoot":"","sources":["../../../src/tools/wallet-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAOpD,oEAAoE;AACpE,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAcD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAoLvF"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
// Bootstrap rate limiting for wallet auth (prevents mass wallet account creation)
|
|
3
|
+
const BOOTSTRAP_WALLET_MAX = 5;
|
|
4
|
+
const BOOTSTRAP_WALLET_WINDOW_MS = 3600_000; // 1 hour
|
|
5
|
+
const walletAuthTimestamps = [];
|
|
6
|
+
/** @internal Exported for testing only — clears rate limit state */
|
|
7
|
+
export function _resetWalletAuthLimits() {
|
|
8
|
+
walletAuthTimestamps.length = 0;
|
|
9
|
+
}
|
|
10
|
+
function checkWalletAuthLimit() {
|
|
11
|
+
const now = Date.now();
|
|
12
|
+
while (walletAuthTimestamps.length > 0 && now - walletAuthTimestamps[0] > BOOTSTRAP_WALLET_WINDOW_MS) {
|
|
13
|
+
walletAuthTimestamps.shift();
|
|
14
|
+
}
|
|
15
|
+
// Hard cap prevents unbounded growth under pathological clock skew
|
|
16
|
+
if (walletAuthTimestamps.length > 100)
|
|
17
|
+
walletAuthTimestamps.length = 100;
|
|
18
|
+
if (walletAuthTimestamps.length >= BOOTSTRAP_WALLET_MAX)
|
|
19
|
+
return false;
|
|
20
|
+
walletAuthTimestamps.push(now);
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
export function registerWalletAuthTools(server, httpClient) {
|
|
24
|
+
server.tool("dominusnode_wallet_challenge", "Request a signature challenge for wallet-based authentication. Send your Ethereum address to get a message to sign with your wallet. Works with MetaMask, Coinbase Agentic Wallets, ethers.Wallet, viem, etc.", {
|
|
25
|
+
address: z.string().regex(/^0x[0-9a-fA-F]{40}$/).describe("Your Ethereum wallet address (0x...)"),
|
|
26
|
+
}, async (args) => {
|
|
27
|
+
try {
|
|
28
|
+
if (!checkWalletAuthLimit()) {
|
|
29
|
+
return { isError: true, content: [{ type: "text", text: "Wallet authentication rate limit exceeded (max 5 per hour). Please try again later." }] };
|
|
30
|
+
}
|
|
31
|
+
const data = await httpClient.post("/api/auth/wallet/challenge", { address: args.address }, false);
|
|
32
|
+
const text = [
|
|
33
|
+
`Wallet Challenge Issued`,
|
|
34
|
+
``,
|
|
35
|
+
`Sign this message with your wallet:`,
|
|
36
|
+
`---`,
|
|
37
|
+
data.message,
|
|
38
|
+
`---`,
|
|
39
|
+
``,
|
|
40
|
+
`Nonce: ${data.nonce}`,
|
|
41
|
+
``,
|
|
42
|
+
`After signing, use dominusnode_register_wallet with:`,
|
|
43
|
+
` - address: ${args.address}`,
|
|
44
|
+
` - signature: <your signature>`,
|
|
45
|
+
``,
|
|
46
|
+
`Challenge expires in 5 minutes.`,
|
|
47
|
+
].join("\n");
|
|
48
|
+
return { content: [{ type: "text", text }] };
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
return {
|
|
52
|
+
isError: true,
|
|
53
|
+
content: [{ type: "text", text: `Challenge error: ${err instanceof Error ? err.message : String(err)}` }],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
server.tool("dominusnode_register_wallet", "Submit a signed challenge to authenticate with your wallet. Creates a new account if this wallet hasn't been seen before, or logs in to the existing account. No email or password needed.", {
|
|
58
|
+
address: z.string().regex(/^0x[0-9a-fA-F]{40}$/).describe("Your Ethereum wallet address (0x...)"),
|
|
59
|
+
signature: z.string().min(130).max(200).describe("The EIP-191 signature of the challenge message"),
|
|
60
|
+
}, async (args) => {
|
|
61
|
+
try {
|
|
62
|
+
// Rate limit register_wallet (parity with challenge and setup)
|
|
63
|
+
if (!checkWalletAuthLimit()) {
|
|
64
|
+
return { isError: true, content: [{ type: "text", text: "Wallet authentication rate limit exceeded. Try again later." }] };
|
|
65
|
+
}
|
|
66
|
+
const data = await httpClient.post("/api/auth/wallet/verify", { address: args.address, signature: args.signature }, false);
|
|
67
|
+
// Store tokens so subsequent authenticated calls work (bootstrap mode)
|
|
68
|
+
if (data.token && data.refreshToken) {
|
|
69
|
+
httpClient.storeTokens(data.token, data.refreshToken);
|
|
70
|
+
}
|
|
71
|
+
const action = data.user.isNewUser ? "Account created" : "Logged in";
|
|
72
|
+
const text = [
|
|
73
|
+
`Wallet Authentication Successful!`,
|
|
74
|
+
``,
|
|
75
|
+
`${action}:`,
|
|
76
|
+
` User ID: ${data.user.id}`,
|
|
77
|
+
` Wallet: ${data.user.wallet_address}`,
|
|
78
|
+
``,
|
|
79
|
+
`You are now authenticated. Next steps:`,
|
|
80
|
+
`1. Use dominusnode_wallet_setup to create an account + API key in one step`,
|
|
81
|
+
` Or set DOMINUSNODE_API_KEY and restart to unlock dominusnode_create_key`,
|
|
82
|
+
`2. Free tier: 10 connections, 1GB bandwidth — no payment needed`,
|
|
83
|
+
].join("\n");
|
|
84
|
+
return { content: [{ type: "text", text }] };
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
return {
|
|
88
|
+
isError: true,
|
|
89
|
+
content: [{ type: "text", text: `Verification error: ${err instanceof Error ? err.message : String(err)}` }],
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
server.tool("dominusnode_wallet_setup", "Submit a pre-signed wallet challenge and create an API key in one call. First call dominusnode_wallet_challenge to get the message to sign, then call this tool with the signature. Returns proxy configuration ready to use.", {
|
|
94
|
+
address: z.string().regex(/^0x[0-9a-fA-F]{40}$/).describe("Your Ethereum wallet address (0x...)"),
|
|
95
|
+
signature: z.string().min(130).max(200).describe("The EIP-191 signature of the challenge message (get challenge first via dominusnode_wallet_challenge)"),
|
|
96
|
+
key_label: z.string().min(1).max(100).default("ai-agent-wallet").describe("Label for the API key"),
|
|
97
|
+
}, async (args) => {
|
|
98
|
+
try {
|
|
99
|
+
if (!checkWalletAuthLimit()) {
|
|
100
|
+
return { isError: true, content: [{ type: "text", text: "Wallet setup rate limit exceeded (max 5 per hour). Please try again later." }] };
|
|
101
|
+
}
|
|
102
|
+
// Step 1: Verify wallet signature (creates or logs into account)
|
|
103
|
+
const verifyData = await httpClient.post("/api/auth/wallet/verify", { address: args.address, signature: args.signature }, false);
|
|
104
|
+
// Store tokens so the subsequent API key creation call works
|
|
105
|
+
if (verifyData.token && verifyData.refreshToken) {
|
|
106
|
+
httpClient.storeTokens(verifyData.token, verifyData.refreshToken);
|
|
107
|
+
}
|
|
108
|
+
// Step 2: Create API key (using newly acquired auth)
|
|
109
|
+
const action = verifyData.user.isNewUser ? "created" : "logged into";
|
|
110
|
+
let keyData;
|
|
111
|
+
try {
|
|
112
|
+
keyData = await httpClient.post("/api/keys", { label: args.key_label });
|
|
113
|
+
}
|
|
114
|
+
catch (keyErr) {
|
|
115
|
+
// Account was authenticated but key creation failed — tell the agent clearly
|
|
116
|
+
const text = [
|
|
117
|
+
`Wallet authenticated but API key creation failed.`,
|
|
118
|
+
``,
|
|
119
|
+
`Account ${action}:`,
|
|
120
|
+
` User ID: ${verifyData.user.id}`,
|
|
121
|
+
` Wallet: ${verifyData.user.wallet_address}`,
|
|
122
|
+
``,
|
|
123
|
+
`You are authenticated. To create an API key:`,
|
|
124
|
+
` 1. Set DOMINUSNODE_API_KEY env var and restart to unlock dominusnode_create_key`,
|
|
125
|
+
` 2. Or use dominusnode_wallet_challenge + dominusnode_register_wallet to re-authenticate`,
|
|
126
|
+
``,
|
|
127
|
+
`Error: ${keyErr instanceof Error ? keyErr.message : String(keyErr)}`,
|
|
128
|
+
].join("\n");
|
|
129
|
+
return { isError: true, content: [{ type: "text", text }] };
|
|
130
|
+
}
|
|
131
|
+
const text = [
|
|
132
|
+
`Dominus Node Wallet Setup Complete!`,
|
|
133
|
+
``,
|
|
134
|
+
`Account ${action}:`,
|
|
135
|
+
` User ID: ${verifyData.user.id}`,
|
|
136
|
+
` Wallet: ${verifyData.user.wallet_address}`,
|
|
137
|
+
``,
|
|
138
|
+
`API Key (save now — shown only once):`,
|
|
139
|
+
` Key: ${keyData.key}`,
|
|
140
|
+
` Label: ${keyData.label}`,
|
|
141
|
+
``,
|
|
142
|
+
`Proxy Usage:`,
|
|
143
|
+
` curl -x http://auto:<YOUR_API_KEY>@proxy.dominusnode.com:8080 https://httpbin.org/ip`,
|
|
144
|
+
``,
|
|
145
|
+
`Free tier: 10 connections, 1GB bandwidth.`,
|
|
146
|
+
`Set DOMINUSNODE_API_KEY=<your key above> and restart to unlock all 56 tools.`,
|
|
147
|
+
].join("\n");
|
|
148
|
+
return { content: [{ type: "text", text }] };
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
return {
|
|
152
|
+
isError: true,
|
|
153
|
+
content: [{ type: "text", text: `Wallet setup error: ${err instanceof Error ? err.message : String(err)}` }],
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=wallet-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-auth.js","sourceRoot":"","sources":["../../../src/tools/wallet-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../src/tools/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAwEnF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerWalletTools(server, httpClient) {
|
|
3
|
+
server.tool("dominusnode_get_balance", "Get current wallet balance in USD. Check this before making requests to ensure sufficient funds.", {}, async () => {
|
|
4
|
+
try {
|
|
5
|
+
const wallet = await httpClient.get("/api/wallet");
|
|
6
|
+
const balanceUsd = typeof wallet.balanceUsd === "number" ? wallet.balanceUsd : 0;
|
|
7
|
+
const balanceCents = typeof wallet.balanceCents === "number" ? wallet.balanceCents : 0;
|
|
8
|
+
const text = `Balance: $${balanceUsd.toFixed(2)} (${balanceCents} cents)`;
|
|
9
|
+
return { content: [{ type: "text", text }] };
|
|
10
|
+
}
|
|
11
|
+
catch (err) {
|
|
12
|
+
return {
|
|
13
|
+
isError: true,
|
|
14
|
+
content: [{ type: "text", text: `Error: ${err instanceof Error ? err.message : String(err)}` }],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
server.tool("dominusnode_get_forecast", "Get spending forecast: daily average spend, estimated days remaining, and spending trend.", {}, async () => {
|
|
19
|
+
try {
|
|
20
|
+
const forecast = await httpClient.get("/api/wallet/forecast");
|
|
21
|
+
const lines = [
|
|
22
|
+
`Daily Average: $${(forecast.dailyAvgCents / 100).toFixed(2)} USD`,
|
|
23
|
+
`Days Remaining: ${forecast.daysRemaining ?? "unlimited"}`,
|
|
24
|
+
`Trend: ${forecast.trend} (${forecast.trendPct}%)`,
|
|
25
|
+
];
|
|
26
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
return {
|
|
30
|
+
isError: true,
|
|
31
|
+
content: [{ type: "text", text: `Error: ${err instanceof Error ? err.message : String(err)}` }],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
server.tool("dominusnode_get_transactions", "Get wallet transaction history. Shows top-ups, usage charges, and refunds.", {
|
|
36
|
+
page: z.number().min(1).default(1).describe("Page number"),
|
|
37
|
+
limit: z.number().min(1).max(100).default(20).describe("Items per page"),
|
|
38
|
+
}, async (args) => {
|
|
39
|
+
try {
|
|
40
|
+
const offset = (args.page - 1) * args.limit;
|
|
41
|
+
const data = await httpClient.get(`/api/wallet/transactions?offset=${offset}&limit=${args.limit}`);
|
|
42
|
+
if (data.transactions.length === 0) {
|
|
43
|
+
return { content: [{ type: "text", text: "No transactions found." }] };
|
|
44
|
+
}
|
|
45
|
+
const lines = data.transactions.map((t) => `${t.createdAt ?? "unknown"} | ${(t.type ?? "unknown").padEnd(10)} | $${((t.amountCents ?? 0) / 100).toFixed(2)} | ${t.description ?? ""}`);
|
|
46
|
+
lines.unshift(`Transactions (page ${args.page}):`);
|
|
47
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
return {
|
|
51
|
+
isError: true,
|
|
52
|
+
content: [{ type: "text", text: `Error: ${err instanceof Error ? err.message : String(err)}` }],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=wallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../src/tools/wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
export interface WalletBalance {
|
|
2
|
+
balanceCents: number;
|
|
3
|
+
balanceUsd: number;
|
|
4
|
+
currency: string;
|
|
5
|
+
lastToppedUp: string | null;
|
|
6
|
+
}
|
|
7
|
+
export interface WalletForecast {
|
|
8
|
+
dailyAvgCents: number;
|
|
9
|
+
daysRemaining: number | null;
|
|
10
|
+
trend: "up" | "down" | "stable";
|
|
11
|
+
trendPct: number;
|
|
12
|
+
}
|
|
13
|
+
export interface Transaction {
|
|
14
|
+
id: string;
|
|
15
|
+
type: string;
|
|
16
|
+
amountCents: number;
|
|
17
|
+
amountUsd: number;
|
|
18
|
+
description: string;
|
|
19
|
+
paymentProvider: string | null;
|
|
20
|
+
createdAt: string;
|
|
21
|
+
}
|
|
22
|
+
export interface TransactionList {
|
|
23
|
+
transactions: Transaction[];
|
|
24
|
+
}
|
|
25
|
+
export interface UsageSummary {
|
|
26
|
+
totalBytes: number;
|
|
27
|
+
totalCostCents: number;
|
|
28
|
+
requestCount: number;
|
|
29
|
+
totalGB: number;
|
|
30
|
+
totalCostUsd: number;
|
|
31
|
+
}
|
|
32
|
+
export interface UsageRecord {
|
|
33
|
+
id: string;
|
|
34
|
+
sessionId: string;
|
|
35
|
+
bytesIn: number;
|
|
36
|
+
bytesOut: number;
|
|
37
|
+
totalBytes: number;
|
|
38
|
+
costCents: number;
|
|
39
|
+
proxyType: string;
|
|
40
|
+
targetHost: string;
|
|
41
|
+
createdAt: string;
|
|
42
|
+
}
|
|
43
|
+
export interface DailyUsage {
|
|
44
|
+
date: string;
|
|
45
|
+
totalBytes: number;
|
|
46
|
+
totalGB: number;
|
|
47
|
+
totalCostCents: number;
|
|
48
|
+
totalCostUsd: number;
|
|
49
|
+
requestCount: number;
|
|
50
|
+
}
|
|
51
|
+
export interface TopHost {
|
|
52
|
+
targetHost: string;
|
|
53
|
+
totalBytes: number;
|
|
54
|
+
totalGB: number;
|
|
55
|
+
requestCount: number;
|
|
56
|
+
}
|
|
57
|
+
export interface ApiKey {
|
|
58
|
+
id: string;
|
|
59
|
+
prefix: string;
|
|
60
|
+
label: string;
|
|
61
|
+
createdAt: string;
|
|
62
|
+
revokedAt: string | null;
|
|
63
|
+
}
|
|
64
|
+
export interface ApiKeyCreated {
|
|
65
|
+
id: string;
|
|
66
|
+
key: string;
|
|
67
|
+
prefix: string;
|
|
68
|
+
label: string;
|
|
69
|
+
}
|
|
70
|
+
export interface ProxyConfig {
|
|
71
|
+
httpProxy: {
|
|
72
|
+
host: string;
|
|
73
|
+
port: number;
|
|
74
|
+
};
|
|
75
|
+
socks5Proxy: {
|
|
76
|
+
host: string;
|
|
77
|
+
port: number;
|
|
78
|
+
};
|
|
79
|
+
supportedCountries: string[];
|
|
80
|
+
blockedCountries: string[];
|
|
81
|
+
geoTargeting: {
|
|
82
|
+
stateSupport: boolean;
|
|
83
|
+
citySupport: boolean;
|
|
84
|
+
asnSupport: boolean;
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
export interface ProxyStatus {
|
|
88
|
+
status: string;
|
|
89
|
+
avgLatencyMs: number;
|
|
90
|
+
activeSessions: number;
|
|
91
|
+
uptimeSeconds: number;
|
|
92
|
+
endpoints: {
|
|
93
|
+
http: string;
|
|
94
|
+
socks5: string;
|
|
95
|
+
};
|
|
96
|
+
supportedCountries: string[];
|
|
97
|
+
}
|
|
98
|
+
export interface AccountInfo {
|
|
99
|
+
user: {
|
|
100
|
+
id: string;
|
|
101
|
+
email: string;
|
|
102
|
+
is_admin: boolean;
|
|
103
|
+
email_verified: boolean;
|
|
104
|
+
wallet_address: string | null;
|
|
105
|
+
log_target_hosts: boolean;
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
export interface Plan {
|
|
109
|
+
id: string;
|
|
110
|
+
name: string;
|
|
111
|
+
pricePerGbCents: number;
|
|
112
|
+
pricePerGbUsd: number;
|
|
113
|
+
monthlyBandwidthBytes: number;
|
|
114
|
+
monthlyBandwidthGB: number | null;
|
|
115
|
+
isDefault: boolean;
|
|
116
|
+
maxConnections: number;
|
|
117
|
+
allowedProxyTypes: string | string[] | null;
|
|
118
|
+
}
|
|
119
|
+
export interface UserPlan {
|
|
120
|
+
plan: Plan;
|
|
121
|
+
usage: {
|
|
122
|
+
monthlyUsageBytes: number;
|
|
123
|
+
monthlyUsageGB: number;
|
|
124
|
+
limitBytes: number;
|
|
125
|
+
limitGB: number | null;
|
|
126
|
+
percentUsed: number | null;
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
export interface ActiveSession {
|
|
130
|
+
id: string;
|
|
131
|
+
startedAt: string;
|
|
132
|
+
status: string;
|
|
133
|
+
}
|
|
134
|
+
export interface AuthVerifyKeyResponse {
|
|
135
|
+
accessToken: string;
|
|
136
|
+
refreshToken: string;
|
|
137
|
+
}
|
|
138
|
+
export interface AuthRefreshResponse {
|
|
139
|
+
accessToken: string;
|
|
140
|
+
refreshToken?: string;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dominusnode/mcp-server",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Dominus Node MCP server — proxy tools for AI agents (Claude, Gemini, Codex, etc.)",
|
|
5
|
+
"author": "Dominus Node",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "./dist/src/index.js",
|
|
9
|
+
"types": "./dist/src/index.d.ts",
|
|
10
|
+
"bin": {
|
|
11
|
+
"dominusnode-mcp": "./dist/src/index.js"
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist/src"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"test": "vitest run",
|
|
19
|
+
"clean": "rm -rf dist"
|
|
20
|
+
},
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=18.0.0"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
26
|
+
"zod": "^3.23.0"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/node": "^22.0.0",
|
|
30
|
+
"typescript": "^5.4.0",
|
|
31
|
+
"vitest": "^4.0.0"
|
|
32
|
+
}
|
|
33
|
+
}
|