netintel-mcp 1.1.56 → 1.1.58
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 +4 -3
- package/dist/client.js +16 -15
- package/dist/index.js +15 -3
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# netintel-mcp
|
|
2
2
|
|
|
3
|
-
MCP server for NetIntel —
|
|
3
|
+
MCP server for NetIntel — 123 network intelligence tools for AI agents.
|
|
4
4
|
DNS, SSL, WHOIS, email security, cloud fingerprinting, OSINT and more.
|
|
5
5
|
Pay-per-call via x402 — the NetIntel API accepts USDC on Base or Solana; this MCP server pays on Base. No API keys needed — just a wallet with USDC.
|
|
6
6
|
|
|
@@ -38,11 +38,11 @@ Or add manually to your Claude Desktop config:
|
|
|
38
38
|
|
|
39
39
|
## Requirements
|
|
40
40
|
- **Optional:** `EVM_PRIVATE_KEY` — a dedicated agent wallet holding USDC on Base mainnet (gasless; a few dollars is plenty). With it, every tool pays its listed price automatically.
|
|
41
|
-
- **Without a wallet** the server still runs:
|
|
41
|
+
- **Without a wallet** the server still runs: every tool replies with what it costs and how to fund, and `netintel_wallet_status` shows the wallet and its USDC balance. **Spending limits (≥1.1.55):** the server refuses to sign a payment above `NETINTEL_MAX_PER_CALL_USD` (default $0.25) or once it has authorized `NETINTEL_MAX_SESSION_USD` (default $5) in total per process; a refusal returns `SPEND_LIMIT: …` and nothing is paid. Listed prices are what a call costs, not a cap — with a wallet configured every 402 is paid automatically, so authorize paid calls with your user first.
|
|
42
42
|
|
|
43
43
|
## Tools
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
123 pay-per-call tools across DNS, SSL/TLS, WHOIS & domains, email security, IP intelligence, web & content, OSINT, AI text processing, and bundled reports.
|
|
46
46
|
|
|
47
47
|
| Tool | Description | Price |
|
|
48
48
|
|------|-------------|-------|
|
|
@@ -168,6 +168,7 @@ Or add manually to your Claude Desktop config:
|
|
|
168
168
|
| netintel_web_search | Web search for AI agents — one query in, ranked live results out… | $0.01 |
|
|
169
169
|
| netintel_exa_contents | Clean page text for up to 3 URLs in one call via Exa's index + live… | $0.005 |
|
|
170
170
|
| netintel_exa_answer | Ask a question, get a direct answer grounded in a live web search, with… | $0.01 |
|
|
171
|
+
| netintel_pdf_parse | Parse a PDF to text and Markdown: send a PDF url or base64 file, get… | $0.005 |
|
|
171
172
|
|
|
172
173
|
## Payment
|
|
173
174
|
All tools pay automatically via x402 in USDC on Base mainnet.
|
package/dist/client.js
CHANGED
|
@@ -9,20 +9,20 @@ import axios from "axios";
|
|
|
9
9
|
const BASE_URL = "https://netintel.dev";
|
|
10
10
|
/** USDC on Base mainnet — the asset every NetIntel price is quoted in. */
|
|
11
11
|
const USDC_BASE = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
];
|
|
12
|
+
/**
|
|
13
|
+
* Tools that work with NO wallet. NetIntel's free tier is switched by the API's
|
|
14
|
+
* FREE_TIER env and has been OFF since 2026-10-08, so every call is paid and this
|
|
15
|
+
* list is empty. If the API turns it back on, list its tools here again
|
|
16
|
+
* (netintel_dns_lookup, netintel_ssl_cert, netintel_whois_lookup,
|
|
17
|
+
* netintel_subnet_calc, netintel_email_auth) — every "works free" message keys off it.
|
|
18
|
+
*/
|
|
19
|
+
export const FREE_TOOLS = [];
|
|
20
20
|
let walletAddress = null;
|
|
21
21
|
/**
|
|
22
22
|
* Spending limits, enforced INSIDE the x402 client immediately before a payment
|
|
23
23
|
* payload is signed — the only place a limit can be real, because with a wallet
|
|
24
|
-
* configured every 402
|
|
25
|
-
*
|
|
24
|
+
* configured every 402 is paid automatically. The listed per-call prices are
|
|
25
|
+
* what a route costs, not a cap.
|
|
26
26
|
* NETINTEL_MAX_PER_CALL_USD — refuse any single payment above this (default $0.25)
|
|
27
27
|
* NETINTEL_MAX_SESSION_USD — refuse once this MCP server process has authorized
|
|
28
28
|
* this much in total (default $5.00)
|
|
@@ -59,16 +59,17 @@ export function configuredWallet() {
|
|
|
59
59
|
/**
|
|
60
60
|
* The HTTP client every tool uses. With EVM_PRIVATE_KEY set, responses that
|
|
61
61
|
* demand payment are paid automatically (x402) and retried; without it, the
|
|
62
|
-
* server still starts —
|
|
63
|
-
*
|
|
64
|
-
*
|
|
62
|
+
* server still starts — tools return an explanation of what a call costs and
|
|
63
|
+
* how to fund a wallet (and any FREE_TOOLS work as-is), instead of failing to
|
|
64
|
+
* boot for everyone who installed the plugin before funding one.
|
|
65
65
|
*/
|
|
66
66
|
export async function createClient() {
|
|
67
67
|
const key = process.env.EVM_PRIVATE_KEY?.trim();
|
|
68
68
|
const plain = axios.create({ baseURL: BASE_URL });
|
|
69
69
|
if (!key) {
|
|
70
|
-
console.error("[netintel-mcp] No EVM_PRIVATE_KEY set — running wallet-less.
|
|
71
|
-
`(${FREE_TOOLS.join(", ")});
|
|
70
|
+
console.error("[netintel-mcp] No EVM_PRIVATE_KEY set — running wallet-less. " +
|
|
71
|
+
(FREE_TOOLS.length ? `Free-tier tools work (${FREE_TOOLS.join(", ")}); ` : "") +
|
|
72
|
+
"paid tools will explain how to fund an agent wallet.");
|
|
72
73
|
return plain;
|
|
73
74
|
}
|
|
74
75
|
const signer = privateKeyToAccount(key);
|
package/dist/index.js
CHANGED
|
@@ -23,7 +23,7 @@ function err(e) {
|
|
|
23
23
|
const cost = price ? `This tool costs ${price} per call (USDC on Base). ` : "This tool is paid per call (USDC on Base). ";
|
|
24
24
|
const fix = configuredWallet()
|
|
25
25
|
? `The agent wallet ${configuredWallet()} is configured but the payment did not settle — usually an empty wallet. Run netintel_wallet_status to check its USDC balance, then fund it on Base.`
|
|
26
|
-
: `No agent wallet is configured, so it cannot be paid. Set EVM_PRIVATE_KEY to a wallet holding USDC on Base (or enter it in the Claude Code plugin config), then retry. Without a wallet these tools still work free, up to a quota: ${FREE_TOOLS.join(", ")}
|
|
26
|
+
: `No agent wallet is configured, so it cannot be paid. Set EVM_PRIVATE_KEY to a wallet holding USDC on Base (or enter it in the Claude Code plugin config), then retry.${FREE_TOOLS.length ? ` Without a wallet these tools still work free, up to a quota: ${FREE_TOOLS.join(", ")}.` : ""}`;
|
|
27
27
|
return { content: [{ type: "text", text: `Payment required. ${cost}${fix}` }], isError: true };
|
|
28
28
|
}
|
|
29
29
|
return {
|
|
@@ -1277,6 +1277,16 @@ function registerTools(server, api) {
|
|
|
1277
1277
|
return err(e);
|
|
1278
1278
|
}
|
|
1279
1279
|
});
|
|
1280
|
+
// 124. Pdf (POST)
|
|
1281
|
+
server.tool("netintel_pdf_parse", "Parse a PDF to text and Markdown: send a PDF url or base64 file, get clean Markdown with paragraphs rebuilt from the text layer, per-page character offsets for citing pages, metadata (title, author, dates, page count) and the page numbers…", { url: z.string().optional(), file_base64: z.string().optional(), pages: z.string().optional(), max_chars: z.number().optional() }, async ({ url, file_base64, pages, max_chars }) => {
|
|
1282
|
+
try {
|
|
1283
|
+
const res = await api.post("/pdf/parse", { url, file_base64, pages, max_chars });
|
|
1284
|
+
return ok(res.data);
|
|
1285
|
+
}
|
|
1286
|
+
catch (e) {
|
|
1287
|
+
return err(e);
|
|
1288
|
+
}
|
|
1289
|
+
});
|
|
1280
1290
|
}
|
|
1281
1291
|
// Wallet status — free, local: lets an agent (or a human) tell "no wallet",
|
|
1282
1292
|
// "empty wallet" and "funded" apart before spending a call on finding out.
|
|
@@ -1284,9 +1294,11 @@ function registerTools(server, api) {
|
|
|
1284
1294
|
// server.tool() in there with the api.get/post path that follows it, and this
|
|
1285
1295
|
// tool makes no API call.
|
|
1286
1296
|
function registerWalletTool(server) {
|
|
1287
|
-
server.tool("netintel_wallet_status",
|
|
1297
|
+
server.tool("netintel_wallet_status", `Check the agent wallet this MCP server pays NetIntel with: whether a key is configured, its address, its USDC balance on Base, and the spending limits (per call and per session) with how much this session has authorized. Free and local (no NetIntel call). Use when a paid tool reports 'Payment required' or 'SPEND_LIMIT', before funding, or to confirm a top-up arrived.${FREE_TOOLS.length ? " Also lists the tools that work with no wallet at all." : ""}`, {}, async () => {
|
|
1288
1298
|
const address = configuredWallet();
|
|
1289
|
-
const free =
|
|
1299
|
+
const free = FREE_TOOLS.length
|
|
1300
|
+
? { free_without_wallet: [...FREE_TOOLS], note: "Free tools are rate-limited per client (about 30/hour); over the quota they cost their normal price." }
|
|
1301
|
+
: {};
|
|
1290
1302
|
if (!address) {
|
|
1291
1303
|
return ok({ wallet_configured: false, how_to_fund: "Set EVM_PRIVATE_KEY (or the plugin's wallet config) to a dedicated agent wallet, then send it a few dollars of USDC on Base mainnet — no ETH needed, settlement is gasless.", ...free });
|
|
1292
1304
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "netintel-mcp",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.58",
|
|
4
4
|
"mcpName": "io.github.kjgueye/netintel-mcp",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"@x402/axios": "^2.9.0",
|
|
37
37
|
"@x402/core": "^2.9.0",
|
|
38
38
|
"@x402/evm": "^2.9.0",
|
|
39
|
+
"axios": "^1.20.0",
|
|
39
40
|
"viem": "^2.31.3",
|
|
40
41
|
"zod": "^3.25.67"
|
|
41
42
|
},
|