@dominusnode/mcp-server 1.1.0 → 1.4.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/README.md +68 -62
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +16 -6
- package/dist/src/config.js.map +1 -1
- package/dist/src/http-client.d.ts.map +1 -1
- package/dist/src/http-client.js +25 -5
- package/dist/src/http-client.js.map +1 -1
- package/dist/src/index.js +15 -6
- package/dist/src/index.js.map +1 -1
- package/dist/src/proxy-fetch.d.ts.map +1 -1
- package/dist/src/proxy-fetch.js +51 -13
- package/dist/src/proxy-fetch.js.map +1 -1
- package/dist/src/token-manager.d.ts.map +1 -1
- package/dist/src/token-manager.js.map +1 -1
- package/dist/src/tools/account.d.ts.map +1 -1
- package/dist/src/tools/account.js +266 -34
- package/dist/src/tools/account.js.map +1 -1
- package/dist/src/tools/agent-wallet.d.ts.map +1 -1
- package/dist/src/tools/agent-wallet.js +164 -36
- package/dist/src/tools/agent-wallet.js.map +1 -1
- package/dist/src/tools/crypto.d.ts.map +1 -1
- package/dist/src/tools/crypto.js +57 -11
- package/dist/src/tools/crypto.js.map +1 -1
- package/dist/src/tools/fetch.d.ts.map +1 -1
- package/dist/src/tools/fetch.js +32 -10
- package/dist/src/tools/fetch.js.map +1 -1
- package/dist/src/tools/keys.d.ts.map +1 -1
- package/dist/src/tools/keys.js +49 -10
- package/dist/src/tools/keys.js.map +1 -1
- package/dist/src/tools/mpp.d.ts +4 -0
- package/dist/src/tools/mpp.d.ts.map +1 -0
- package/dist/src/tools/mpp.js +235 -0
- package/dist/src/tools/mpp.js.map +1 -0
- package/dist/src/tools/paypal.d.ts.map +1 -1
- package/dist/src/tools/paypal.js +20 -4
- package/dist/src/tools/paypal.js.map +1 -1
- package/dist/src/tools/plans.d.ts.map +1 -1
- package/dist/src/tools/plans.js +23 -4
- package/dist/src/tools/plans.js.map +1 -1
- package/dist/src/tools/proxy.d.ts.map +1 -1
- package/dist/src/tools/proxy.js +15 -3
- package/dist/src/tools/proxy.js.map +1 -1
- package/dist/src/tools/sessions.d.ts.map +1 -1
- package/dist/src/tools/sessions.js +14 -2
- package/dist/src/tools/sessions.js.map +1 -1
- package/dist/src/tools/slots.d.ts.map +1 -1
- package/dist/src/tools/slots.js +37 -6
- package/dist/src/tools/slots.js.map +1 -1
- package/dist/src/tools/stripe.d.ts.map +1 -1
- package/dist/src/tools/stripe.js +20 -4
- package/dist/src/tools/stripe.js.map +1 -1
- package/dist/src/tools/teams.d.ts.map +1 -1
- package/dist/src/tools/teams.js +266 -66
- package/dist/src/tools/teams.js.map +1 -1
- package/dist/src/tools/usage.d.ts.map +1 -1
- package/dist/src/tools/usage.js +42 -9
- package/dist/src/tools/usage.js.map +1 -1
- package/dist/src/tools/wallet-auth.d.ts.map +1 -1
- package/dist/src/tools/wallet-auth.js +75 -13
- package/dist/src/tools/wallet-auth.js.map +1 -1
- package/dist/src/tools/wallet.d.ts.map +1 -1
- package/dist/src/tools/wallet.js +21 -4
- package/dist/src/tools/wallet.js.map +1 -1
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -6,12 +6,14 @@ MCP (Model Context Protocol) server for Dominus Node — rotating proxy tools fo
|
|
|
6
6
|
|
|
7
7
|
## Features
|
|
8
8
|
|
|
9
|
-
- **
|
|
9
|
+
- **59 tools** for proxy access, account management, billing, crypto payments, teams, agentic wallets, and usage monitoring
|
|
10
10
|
- **dominusnode_fetch** — fetch any URL through rotating residential/datacenter proxies
|
|
11
11
|
- **Geo-targeting** — route requests through specific countries, states, or cities
|
|
12
|
-
- **
|
|
12
|
+
- **Proof-of-Work registration** — agents solve a SHA-256 hash puzzle to register without CAPTCHA or shared secrets
|
|
13
|
+
- **Per-agent secrets** — `das_` prefix tokens with elevated rate limits and CAPTCHA bypass
|
|
14
|
+
- **Bootstrap mode** — start with no API key, let the agent create its own account autonomously
|
|
13
15
|
- **Crypto payments** — pay with BTC, ETH, LTC, XMR, ZEC, USDC, SOL, USDT, DAI, BNB, LINK — or card/PayPal via Stripe
|
|
14
|
-
- **x402 ready** — machine-to-machine USDC micropayments (Coinbase
|
|
16
|
+
- **x402 ready** — machine-to-machine USDC micropayments (Coinbase + PayAI)
|
|
15
17
|
- **Free tier** — 1GB bandwidth, 10 connections, no payment required
|
|
16
18
|
|
|
17
19
|
## Quick Install
|
|
@@ -20,7 +22,7 @@ MCP (Model Context Protocol) server for Dominus Node — rotating proxy tools fo
|
|
|
20
22
|
npx @dominusnode/mcp-server
|
|
21
23
|
```
|
|
22
24
|
|
|
23
|
-
No API key? No problem — the server starts in **bootstrap mode** with tools to create an account and start using proxies immediately.
|
|
25
|
+
No API key? No problem — the server starts in **bootstrap mode** with tools to create an account and start using proxies immediately. Registration uses a built-in Proof-of-Work solver (SHA-256, ~2-5s CPU) — no CAPTCHA, no shared secrets, fully autonomous.
|
|
24
26
|
|
|
25
27
|
## Setup by Platform
|
|
26
28
|
|
|
@@ -161,98 +163,102 @@ Start without any configuration — the agent creates its own account:
|
|
|
161
163
|
```
|
|
162
164
|
|
|
163
165
|
Available bootstrap tools:
|
|
164
|
-
|
|
165
|
-
- `
|
|
166
|
+
|
|
167
|
+
- `dominusnode_setup` — one-shot: solve PoW, register, verify email, create API key
|
|
168
|
+
- `dominusnode_register` / `dominusnode_login` — step-by-step (auto-solves PoW)
|
|
169
|
+
- `dominusnode_create_agent_secret` — create a per-agent secret (`das_*`) for elevated privileges
|
|
166
170
|
- `dominusnode_pay_crypto` — fund with crypto
|
|
167
171
|
- `dominusnode_x402_info` — machine-to-machine payment info
|
|
168
|
-
- `dominusnode_agent_wallet_create` / `dominusnode_agent_wallet_balance` —
|
|
172
|
+
- `dominusnode_agent_wallet_create` / `dominusnode_agent_wallet_balance` — agentic sub-wallets
|
|
169
173
|
|
|
170
|
-
## Tools Reference (
|
|
174
|
+
## Tools Reference (59 authenticated + 16 bootstrap)
|
|
171
175
|
|
|
172
176
|
### Proxy
|
|
173
177
|
|
|
174
|
-
| Tool
|
|
175
|
-
|
|
176
|
-
| `dominusnode_fetch`
|
|
177
|
-
| `dominusnode_get_proxy_config` | Proxy endpoints and geo options
|
|
178
|
-
| `dominusnode_get_proxy_status` | Live status, latency, providers
|
|
178
|
+
| Tool | Description |
|
|
179
|
+
| ------------------------------ | ------------------------------------------------------------ |
|
|
180
|
+
| `dominusnode_fetch` | Fetch URL through rotating proxy (HTTP/HTTPS, geo-targeting) |
|
|
181
|
+
| `dominusnode_get_proxy_config` | Proxy endpoints and geo options |
|
|
182
|
+
| `dominusnode_get_proxy_status` | Live status, latency, providers |
|
|
179
183
|
|
|
180
184
|
### Account (Self-Service)
|
|
181
185
|
|
|
182
|
-
| Tool
|
|
183
|
-
|
|
184
|
-
| `dominusnode_register`
|
|
185
|
-
| `dominusnode_login`
|
|
186
|
-
| `dominusnode_setup`
|
|
187
|
-
| `dominusnode_get_account_info`
|
|
186
|
+
| Tool | Description |
|
|
187
|
+
| --------------------------------- | -------------------------------------------------------------- |
|
|
188
|
+
| `dominusnode_register` | Create a new account (auto-solves PoW, no CAPTCHA needed) |
|
|
189
|
+
| `dominusnode_login` | Login with email/password |
|
|
190
|
+
| `dominusnode_setup` | One-shot: solve PoW + register + verify email + create API key |
|
|
191
|
+
| `dominusnode_get_account_info` | Account email, status, MFA |
|
|
192
|
+
| `dominusnode_create_agent_secret` | Create per-agent secret (`das_*`) for elevated privileges |
|
|
188
193
|
|
|
189
194
|
### Billing
|
|
190
195
|
|
|
191
|
-
| Tool
|
|
192
|
-
|
|
193
|
-
| `dominusnode_get_balance`
|
|
194
|
-
| `dominusnode_get_forecast`
|
|
195
|
-
| `dominusnode_get_transactions` | Transaction history (paginated)
|
|
196
|
+
| Tool | Description |
|
|
197
|
+
| ------------------------------ | --------------------------------- |
|
|
198
|
+
| `dominusnode_get_balance` | Wallet balance in USD |
|
|
199
|
+
| `dominusnode_get_forecast` | Spending forecast, days remaining |
|
|
200
|
+
| `dominusnode_get_transactions` | Transaction history (paginated) |
|
|
196
201
|
|
|
197
202
|
### Crypto Payments
|
|
198
203
|
|
|
199
|
-
| Tool
|
|
200
|
-
|
|
201
|
-
| `dominusnode_pay_crypto`
|
|
202
|
-
| `dominusnode_check_payment` | Check crypto payment status
|
|
204
|
+
| Tool | Description |
|
|
205
|
+
| --------------------------- | ---------------------------------------------------------------------- |
|
|
206
|
+
| `dominusnode_pay_crypto` | Create crypto invoice (BTC/ETH/LTC/XMR/ZEC/USDC/SOL/USDT/DAI/BNB/LINK) |
|
|
207
|
+
| `dominusnode_check_payment` | Check crypto payment status |
|
|
203
208
|
|
|
204
209
|
### x402 & Agentic Wallets
|
|
205
210
|
|
|
206
|
-
| Tool
|
|
207
|
-
|
|
208
|
-
| `dominusnode_x402_info`
|
|
209
|
-
| `dominusnode_agent_wallet_create`
|
|
210
|
-
| `dominusnode_agent_wallet_balance` | Check agentic wallet balance and budget
|
|
211
|
+
| Tool | Description |
|
|
212
|
+
| ---------------------------------- | --------------------------------------------------- |
|
|
213
|
+
| `dominusnode_x402_info` | Get x402 micropayment protocol info |
|
|
214
|
+
| `dominusnode_agent_wallet_create` | Create Coinbase Agentic Wallet with spending limits |
|
|
215
|
+
| `dominusnode_agent_wallet_balance` | Check agentic wallet balance and budget |
|
|
211
216
|
|
|
212
217
|
### Usage
|
|
213
218
|
|
|
214
|
-
| Tool
|
|
215
|
-
|
|
216
|
-
| `dominusnode_get_usage`
|
|
217
|
-
| `dominusnode_get_daily_usage` | Daily bandwidth breakdown
|
|
218
|
-
| `dominusnode_get_top_hosts`
|
|
219
|
+
| Tool | Description |
|
|
220
|
+
| ----------------------------- | ------------------------------------- |
|
|
221
|
+
| `dominusnode_get_usage` | Usage summary (bytes, cost, requests) |
|
|
222
|
+
| `dominusnode_get_daily_usage` | Daily bandwidth breakdown |
|
|
223
|
+
| `dominusnode_get_top_hosts` | Top target hosts by bandwidth |
|
|
219
224
|
|
|
220
225
|
### API Keys
|
|
221
226
|
|
|
222
|
-
| Tool
|
|
223
|
-
|
|
224
|
-
| `dominusnode_list_keys`
|
|
227
|
+
| Tool | Description |
|
|
228
|
+
| ------------------------ | ------------------------------- |
|
|
229
|
+
| `dominusnode_list_keys` | List API keys |
|
|
225
230
|
| `dominusnode_create_key` | Create new API key (shown once) |
|
|
226
|
-
| `dominusnode_revoke_key` | Revoke API key by ID
|
|
231
|
+
| `dominusnode_revoke_key` | Revoke API key by ID |
|
|
227
232
|
|
|
228
233
|
### Plans & Sessions
|
|
229
234
|
|
|
230
|
-
| Tool
|
|
231
|
-
|
|
232
|
-
| `dominusnode_get_plan`
|
|
233
|
-
| `dominusnode_list_plans`
|
|
234
|
-
| `dominusnode_get_active_sessions` | Active proxy sessions
|
|
235
|
+
| Tool | Description |
|
|
236
|
+
| --------------------------------- | ------------------------------ |
|
|
237
|
+
| `dominusnode_get_plan` | Current plan and monthly usage |
|
|
238
|
+
| `dominusnode_list_plans` | Available pricing plans |
|
|
239
|
+
| `dominusnode_get_active_sessions` | Active proxy sessions |
|
|
235
240
|
|
|
236
241
|
## Environment Variables
|
|
237
242
|
|
|
238
|
-
| Variable
|
|
239
|
-
|
|
240
|
-
| `DOMINUSNODE_API_KEY`
|
|
241
|
-
| `DOMINUSNODE_API_URL`
|
|
242
|
-
| `DOMINUSNODE_PROXY_HOST`
|
|
243
|
-
| `DOMINUSNODE_HTTP_PROXY_PORT`
|
|
244
|
-
| `DOMINUSNODE_SOCKS5_PROXY_PORT`
|
|
245
|
-
| `DOMINUSNODE_FETCH_TIMEOUT_MS`
|
|
246
|
-
| `DOMINUSNODE_FETCH_MAX_RESPONSE_BYTES` | No
|
|
243
|
+
| Variable | Required | Default | Description |
|
|
244
|
+
| -------------------------------------- | -------- | ----------------------------- | ---------------------------------------------- |
|
|
245
|
+
| `DOMINUSNODE_API_KEY` | No | — | API key (omit for bootstrap mode) |
|
|
246
|
+
| `DOMINUSNODE_API_URL` | No | `https://api.dominusnode.com` | REST API base URL |
|
|
247
|
+
| `DOMINUSNODE_PROXY_HOST` | No | `proxy.dominusnode.com` | Proxy gateway host |
|
|
248
|
+
| `DOMINUSNODE_HTTP_PROXY_PORT` | No | `8080` | HTTP proxy port |
|
|
249
|
+
| `DOMINUSNODE_SOCKS5_PROXY_PORT` | No | `1080` | SOCKS5 proxy port |
|
|
250
|
+
| `DOMINUSNODE_FETCH_TIMEOUT_MS` | No | `30000` | Proxy fetch timeout (max 120000) |
|
|
251
|
+
| `DOMINUSNODE_FETCH_MAX_RESPONSE_BYTES` | No | `5242880` | Max response body (5MB) |
|
|
252
|
+
| `MCP_AGENT_SECRET` | No | — | Global agent secret for first-party MCP agents |
|
|
247
253
|
|
|
248
254
|
## Pricing
|
|
249
255
|
|
|
250
|
-
| Tier
|
|
251
|
-
|
|
252
|
-
| Free
|
|
253
|
-
| Pay-as-you-go | $5/GB | Unlimited
|
|
254
|
-
| Volume 100GB
|
|
255
|
-
| Volume 1TB
|
|
256
|
+
| Tier | Price | Bandwidth |
|
|
257
|
+
| ------------- | ----- | -------------------------- |
|
|
258
|
+
| Free | $0 | 1 GB/month, 10 connections |
|
|
259
|
+
| Pay-as-you-go | $5/GB | Unlimited |
|
|
260
|
+
| Volume 100GB | $4/GB | 100 GB/month |
|
|
261
|
+
| Volume 1TB | $3/GB | 1 TB/month |
|
|
256
262
|
|
|
257
263
|
Crypto payments: BTC, ETH, LTC, XMR, ZEC, USDC, SOL, USDT, DAI, BNB, LINK
|
|
258
264
|
|
package/dist/src/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,WAAW,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,WAAW,CACzB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,SAAS,CAwJX"}
|
package/dist/src/config.js
CHANGED
|
@@ -14,11 +14,13 @@ export function parseConfig(env = process.env) {
|
|
|
14
14
|
// Validate API URL protocol to prevent credential leakage to non-HTTPS endpoints
|
|
15
15
|
try {
|
|
16
16
|
const parsedApiUrl = new URL(apiUrl);
|
|
17
|
-
if (parsedApiUrl.protocol !== "https:" &&
|
|
17
|
+
if (parsedApiUrl.protocol !== "https:" &&
|
|
18
|
+
parsedApiUrl.protocol !== "http:") {
|
|
18
19
|
throw new ConfigError("DOMINUSNODE_API_URL must use http: or https: protocol");
|
|
19
20
|
}
|
|
20
21
|
// Warn when http: is used for non-localhost (credentials sent in plaintext)
|
|
21
|
-
if (parsedApiUrl.protocol === "http:" &&
|
|
22
|
+
if (parsedApiUrl.protocol === "http:" &&
|
|
23
|
+
!["localhost", "127.0.0.1", "[::1]"].includes(parsedApiUrl.hostname)) {
|
|
22
24
|
process.stderr.write("WARNING: DOMINUSNODE_API_URL uses http: — credentials will be sent in plaintext. Use https: in production.\n");
|
|
23
25
|
}
|
|
24
26
|
}
|
|
@@ -37,8 +39,12 @@ export function parseConfig(env = process.env) {
|
|
|
37
39
|
}
|
|
38
40
|
// Block bare localhost and other loopback/private hostnames
|
|
39
41
|
const BLOCKED_PROXY_HOSTS = new Set([
|
|
40
|
-
"localhost",
|
|
41
|
-
"
|
|
42
|
+
"localhost",
|
|
43
|
+
"localhost.localdomain",
|
|
44
|
+
"ip6-localhost",
|
|
45
|
+
"ip6-loopback",
|
|
46
|
+
"0.0.0.0",
|
|
47
|
+
"127.0.0.1",
|
|
42
48
|
]);
|
|
43
49
|
const proxyHostLower = proxyHost.toLowerCase();
|
|
44
50
|
if (BLOCKED_PROXY_HOSTS.has(proxyHostLower) ||
|
|
@@ -52,12 +58,16 @@ export function parseConfig(env = process.env) {
|
|
|
52
58
|
if (ipMatch) {
|
|
53
59
|
// Block octal notation IPs (e.g., 0177.0.0.1) to prevent private IP bypass
|
|
54
60
|
const octets = [ipMatch[1], ipMatch[2], ipMatch[3], ipMatch[4]];
|
|
55
|
-
if (octets.some(o => o.startsWith("0") && o.length > 1)) {
|
|
61
|
+
if (octets.some((o) => o.startsWith("0") && o.length > 1)) {
|
|
56
62
|
throw new ConfigError("DOMINUSNODE_PROXY_HOST must not use octal IP notation");
|
|
57
63
|
}
|
|
58
64
|
const a = parseInt(ipMatch[1], 10);
|
|
59
65
|
const b = parseInt(ipMatch[2], 10);
|
|
60
|
-
if (a === 127 ||
|
|
66
|
+
if (a === 127 ||
|
|
67
|
+
a === 10 ||
|
|
68
|
+
a === 0 ||
|
|
69
|
+
(a === 172 && b >= 16 && b <= 31) ||
|
|
70
|
+
(a === 192 && b === 168)) {
|
|
61
71
|
throw new ConfigError("DOMINUSNODE_PROXY_HOST must not be a private/loopback IP address");
|
|
62
72
|
}
|
|
63
73
|
}
|
package/dist/src/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,UAAU,WAAW,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA4FvD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,UAAU;IAKnB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,YAAY;IALtB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAS;gBAGrB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY,EAClC,cAAc,SAAK;IASf,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAsLtD,qFAAqF;IACrF,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAItD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,UAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIrD,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,YAAY,UAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAItE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhD,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAG1C"}
|
package/dist/src/http-client.js
CHANGED
|
@@ -3,6 +3,7 @@ const USER_AGENT = "dominusnode-mcp-server/1.0.0";
|
|
|
3
3
|
const CREDENTIAL_PATTERNS = [
|
|
4
4
|
/dn_live_[A-Za-z0-9_-]+/g,
|
|
5
5
|
/dn_test_[A-Za-z0-9_-]+/g,
|
|
6
|
+
/dn_proxy_[A-Za-z0-9_.-]+/g,
|
|
6
7
|
/eyJ[A-Za-z0-9_-]{20,}\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*/g,
|
|
7
8
|
/Bearer\s+[A-Za-z0-9._-]+/gi,
|
|
8
9
|
];
|
|
@@ -92,7 +93,16 @@ export class HttpClient {
|
|
|
92
93
|
throw new Error("MCP rate limit exceeded — too many requests. Please slow down.");
|
|
93
94
|
}
|
|
94
95
|
// Protect base headers from user override
|
|
95
|
-
const PROTECTED_HEADERS = new Set([
|
|
96
|
+
const PROTECTED_HEADERS = new Set([
|
|
97
|
+
"user-agent",
|
|
98
|
+
"content-type",
|
|
99
|
+
"authorization",
|
|
100
|
+
"host",
|
|
101
|
+
"connection",
|
|
102
|
+
"content-length",
|
|
103
|
+
"x-dominusnode-agent",
|
|
104
|
+
"x-dominusnode-agent-secret",
|
|
105
|
+
]);
|
|
96
106
|
const headers = {
|
|
97
107
|
"User-Agent": USER_AGENT,
|
|
98
108
|
"Content-Type": "application/json",
|
|
@@ -199,9 +209,14 @@ export class HttpClient {
|
|
|
199
209
|
try {
|
|
200
210
|
// Use safeJsonParse to prevent prototype pollution on error paths
|
|
201
211
|
const parsed = safeJsonParse(retryBody);
|
|
202
|
-
retryMessage =
|
|
212
|
+
retryMessage =
|
|
213
|
+
parsed.error ??
|
|
214
|
+
parsed.message ??
|
|
215
|
+
retryBody.slice(0, 500);
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
/* use raw text */
|
|
203
219
|
}
|
|
204
|
-
catch { /* use raw text */ }
|
|
205
220
|
throw new Error(scrubCredentials(`API error ${retry.status}: ${retryMessage}`));
|
|
206
221
|
}
|
|
207
222
|
const responseText = await response.text();
|
|
@@ -214,9 +229,14 @@ export class HttpClient {
|
|
|
214
229
|
try {
|
|
215
230
|
// Use safeJsonParse to prevent prototype pollution on error paths
|
|
216
231
|
const parsed = safeJsonParse(responseText);
|
|
217
|
-
message =
|
|
232
|
+
message =
|
|
233
|
+
parsed.error ??
|
|
234
|
+
parsed.message ??
|
|
235
|
+
responseText.slice(0, 500);
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
/* use raw text */
|
|
218
239
|
}
|
|
219
|
-
catch { /* use raw text */ }
|
|
220
240
|
throw new Error(scrubCredentials(`API error ${response.status}: ${message}`));
|
|
221
241
|
}
|
|
222
242
|
return responseText ? safeJsonParse(responseText) : {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/http-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/http-client.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -19,6 +19,7 @@ import { registerAgentWalletTools } from "./tools/agent-wallet.js";
|
|
|
19
19
|
import { registerWalletAuthTools } from "./tools/wallet-auth.js";
|
|
20
20
|
import { registerSlotsTools } from "./tools/slots.js";
|
|
21
21
|
import { registerTeamsTools } from "./tools/teams.js";
|
|
22
|
+
import { registerMppTools } from "./tools/mpp.js";
|
|
22
23
|
async function main() {
|
|
23
24
|
let config;
|
|
24
25
|
try {
|
|
@@ -43,8 +44,14 @@ async function main() {
|
|
|
43
44
|
function cleanupCredentials() {
|
|
44
45
|
tokenManager.clear();
|
|
45
46
|
}
|
|
46
|
-
process.on("SIGINT", () => {
|
|
47
|
-
|
|
47
|
+
process.on("SIGINT", () => {
|
|
48
|
+
cleanupCredentials();
|
|
49
|
+
process.exit(0);
|
|
50
|
+
});
|
|
51
|
+
process.on("SIGTERM", () => {
|
|
52
|
+
cleanupCredentials();
|
|
53
|
+
process.exit(0);
|
|
54
|
+
});
|
|
48
55
|
process.on("exit", cleanupCredentials);
|
|
49
56
|
const server = new McpServer({
|
|
50
57
|
name: "dominusnode",
|
|
@@ -66,12 +73,13 @@ async function main() {
|
|
|
66
73
|
// they require authentication and should only be available in authenticated mode.
|
|
67
74
|
registerWalletAuthTools(server, httpClient);
|
|
68
75
|
registerSlotsTools(server, httpClient);
|
|
76
|
+
registerMppTools(server, httpClient);
|
|
69
77
|
// Register a helper tool that tells the agent what to do
|
|
70
78
|
registerBootstrapHelper(server);
|
|
71
79
|
const transport = new StdioServerTransport();
|
|
72
80
|
await server.connect(transport);
|
|
73
|
-
process.stderr.write("Dominus Node MCP Server ready — bootstrap mode (
|
|
74
|
-
process.stderr.write("Run dominusnode_setup or dominusnode_wallet_setup to create an account and unlock all
|
|
81
|
+
process.stderr.write("Dominus Node MCP Server ready — bootstrap mode (22 tools + bootstrap helper)\n");
|
|
82
|
+
process.stderr.write("Run dominusnode_setup or dominusnode_wallet_setup to create an account and unlock all 64 tools.\n");
|
|
75
83
|
}
|
|
76
84
|
else {
|
|
77
85
|
// ── Authenticated Mode ──────────────────────────────────────────
|
|
@@ -101,9 +109,10 @@ async function main() {
|
|
|
101
109
|
registerWalletAuthTools(server, httpClient);
|
|
102
110
|
registerSlotsTools(server, httpClient);
|
|
103
111
|
registerTeamsTools(server, httpClient);
|
|
112
|
+
registerMppTools(server, httpClient);
|
|
104
113
|
const transport = new StdioServerTransport();
|
|
105
114
|
await server.connect(transport);
|
|
106
|
-
process.stderr.write("Dominus Node MCP Server ready —
|
|
115
|
+
process.stderr.write("Dominus Node MCP Server ready — 64 tools available\n");
|
|
107
116
|
}
|
|
108
117
|
}
|
|
109
118
|
function registerBootstrapHelper(server) {
|
|
@@ -149,7 +158,7 @@ function registerBootstrapHelper(server) {
|
|
|
149
158
|
` All traffic bills to team wallet. Only lead needs payment.`,
|
|
150
159
|
``,
|
|
151
160
|
`After setup, set DOMINUSNODE_API_KEY in your environment`,
|
|
152
|
-
`to unlock all
|
|
161
|
+
`to unlock all 63 tools on next startup.`,
|
|
153
162
|
``,
|
|
154
163
|
`Email auto-verified for MCP agents — crypto payments enabled (11 currencies).`,
|
|
155
164
|
`Free tier: 10 connections, 1GB bandwidth — no payment required.`,
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-fetch.d.ts","sourceRoot":"","sources":["../../src/proxy-fetch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,IAAI,GAAG,aAAa,GAAG,MAAM,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"proxy-fetch.d.ts","sourceRoot":"","sources":["../../src/proxy-fetch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,IAAI,GAAG,aAAa,GAAG,MAAM,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAiMD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CA+C5C;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAmD3B"}
|
package/dist/src/proxy-fetch.js
CHANGED
|
@@ -13,9 +13,15 @@ function validateHeaders(headers) {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
const BINARY_CONTENT_TYPES = [
|
|
16
|
-
"image/",
|
|
17
|
-
"
|
|
18
|
-
"
|
|
16
|
+
"image/",
|
|
17
|
+
"audio/",
|
|
18
|
+
"video/",
|
|
19
|
+
"application/octet-stream",
|
|
20
|
+
"application/zip",
|
|
21
|
+
"application/gzip",
|
|
22
|
+
"application/pdf",
|
|
23
|
+
"application/x-tar",
|
|
24
|
+
"application/x-rar",
|
|
19
25
|
];
|
|
20
26
|
function isBinaryContentType(contentType) {
|
|
21
27
|
const lower = contentType.toLowerCase();
|
|
@@ -207,7 +213,9 @@ export function validateUrl(url) {
|
|
|
207
213
|
throw new Error("Requests to localhost/loopback addresses are blocked");
|
|
208
214
|
}
|
|
209
215
|
// Block hostnames ending in .local, .internal, .arpa
|
|
210
|
-
if (hostname.endsWith(".local") ||
|
|
216
|
+
if (hostname.endsWith(".local") ||
|
|
217
|
+
hostname.endsWith(".internal") ||
|
|
218
|
+
hostname.endsWith(".arpa")) {
|
|
211
219
|
throw new Error("Requests to internal network hostnames are blocked");
|
|
212
220
|
}
|
|
213
221
|
// DNS rebinding note — proxyFetch always routes through the upstream proxy
|
|
@@ -253,7 +261,15 @@ function httpProxyFetch(apiKey, config, opts, parsed, method, timeoutMs, maxByte
|
|
|
253
261
|
}, timeoutMs);
|
|
254
262
|
// Block smuggling-prone headers on HTTP path (matches HTTPS path blocklist)
|
|
255
263
|
// Add user-agent to blocked set (matches HTTPS path PROTECTED_HEADERS)
|
|
256
|
-
const BLOCKED_HTTP_HEADERS = new Set([
|
|
264
|
+
const BLOCKED_HTTP_HEADERS = new Set([
|
|
265
|
+
"host",
|
|
266
|
+
"connection",
|
|
267
|
+
"content-length",
|
|
268
|
+
"transfer-encoding",
|
|
269
|
+
"proxy-authorization",
|
|
270
|
+
"user-agent",
|
|
271
|
+
"authorization",
|
|
272
|
+
]);
|
|
257
273
|
const safeHttpHeaders = {};
|
|
258
274
|
if (opts.headers) {
|
|
259
275
|
for (const [key, value] of Object.entries(opts.headers)) {
|
|
@@ -277,13 +293,18 @@ function httpProxyFetch(apiKey, config, opts, parsed, method, timeoutMs, maxByte
|
|
|
277
293
|
const contentType = res.headers["content-type"] ?? "";
|
|
278
294
|
// Redact security-sensitive response headers
|
|
279
295
|
const REDACTED_RESP = new Set([
|
|
280
|
-
"set-cookie",
|
|
281
|
-
"
|
|
296
|
+
"set-cookie",
|
|
297
|
+
"www-authenticate",
|
|
298
|
+
"proxy-authenticate",
|
|
299
|
+
"authorization",
|
|
300
|
+
"proxy-authorization",
|
|
282
301
|
]);
|
|
283
302
|
const responseHeaders = {};
|
|
284
303
|
for (const [key, value] of Object.entries(res.headers)) {
|
|
285
304
|
if (value && !REDACTED_RESP.has(key))
|
|
286
|
-
responseHeaders[key] = Array.isArray(value)
|
|
305
|
+
responseHeaders[key] = Array.isArray(value)
|
|
306
|
+
? value.join(", ")
|
|
307
|
+
: value;
|
|
287
308
|
}
|
|
288
309
|
let responseBody;
|
|
289
310
|
if (isBinaryContentType(contentType)) {
|
|
@@ -323,7 +344,9 @@ function httpsProxyFetch(apiKey, config, opts, parsed, method, timeoutMs, maxByt
|
|
|
323
344
|
}, timeoutMs);
|
|
324
345
|
let socket;
|
|
325
346
|
// Step 1: CONNECT tunnel
|
|
326
|
-
const connectHost = parsed.hostname.includes(":")
|
|
347
|
+
const connectHost = parsed.hostname.includes(":")
|
|
348
|
+
? `[${parsed.hostname}]`
|
|
349
|
+
: parsed.hostname;
|
|
327
350
|
const connectReq = http.request({
|
|
328
351
|
hostname: config.proxyHost,
|
|
329
352
|
port: config.httpProxyPort,
|
|
@@ -360,7 +383,14 @@ function httpsProxyFetch(apiKey, config, opts, parsed, method, timeoutMs, maxByt
|
|
|
360
383
|
return;
|
|
361
384
|
}
|
|
362
385
|
// Set base headers first, then user headers, but block security-sensitive overrides
|
|
363
|
-
const BLOCKED_HEADERS = new Set([
|
|
386
|
+
const BLOCKED_HEADERS = new Set([
|
|
387
|
+
"host",
|
|
388
|
+
"connection",
|
|
389
|
+
"content-length",
|
|
390
|
+
"transfer-encoding",
|
|
391
|
+
"proxy-authorization",
|
|
392
|
+
"authorization",
|
|
393
|
+
]);
|
|
364
394
|
const safeUserHeaders = {};
|
|
365
395
|
if (opts.headers) {
|
|
366
396
|
for (const [key, value] of Object.entries(opts.headers)) {
|
|
@@ -370,7 +400,12 @@ function httpsProxyFetch(apiKey, config, opts, parsed, method, timeoutMs, maxByt
|
|
|
370
400
|
}
|
|
371
401
|
}
|
|
372
402
|
// Merge user headers WITHOUT allowing override of security-critical base headers
|
|
373
|
-
const PROTECTED_HEADERS = new Set([
|
|
403
|
+
const PROTECTED_HEADERS = new Set([
|
|
404
|
+
"host",
|
|
405
|
+
"user-agent",
|
|
406
|
+
"connection",
|
|
407
|
+
"content-length",
|
|
408
|
+
]);
|
|
374
409
|
const reqHeaders = {
|
|
375
410
|
Host: parsed.host,
|
|
376
411
|
"User-Agent": "dominusnode-mcp-server/1.0.0",
|
|
@@ -496,8 +531,11 @@ function parseHttpResponse(socket, maxBytes, timer) {
|
|
|
496
531
|
const statusText = statusMatch?.[2] ?? "";
|
|
497
532
|
// Redact security-sensitive response headers before returning to MCP client
|
|
498
533
|
const REDACTED_RESPONSE_HEADERS = new Set([
|
|
499
|
-
"set-cookie",
|
|
500
|
-
"
|
|
534
|
+
"set-cookie",
|
|
535
|
+
"www-authenticate",
|
|
536
|
+
"proxy-authenticate",
|
|
537
|
+
"authorization",
|
|
538
|
+
"proxy-authorization",
|
|
501
539
|
]);
|
|
502
540
|
const headers = {};
|
|
503
541
|
const headerLines = headerSection.split("\r\n").slice(1);
|