netintel-mcp 1.1.35 → 1.1.39
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 +13 -2
- package/dist/index.js +111 -0
- package/package.json +1 -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 — 109 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
|
|
|
@@ -31,7 +31,7 @@ Or add manually to your Claude Desktop config:
|
|
|
31
31
|
|
|
32
32
|
## Tools
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
109 pay-per-call tools across DNS, SSL/TLS, WHOIS & domains, email security, IP intelligence, web & content, OSINT, AI text processing, and bundled reports.
|
|
35
35
|
|
|
36
36
|
| Tool | Description | Price |
|
|
37
37
|
|------|-------------|-------|
|
|
@@ -133,6 +133,17 @@ Or add manually to your Claude Desktop config:
|
|
|
133
133
|
| netintel_semantic_rank | Semantic similarity ranking — send a query plus up to 100 candidate… | $0.02 |
|
|
134
134
|
| netintel_v1_chat_completions | OpenAI-compatible chat completions gateway — standard… | $0.10 |
|
|
135
135
|
| netintel_crypto_market | Structured live crypto market data for ~50 top assets in one JSON call:… | $0.005 |
|
|
136
|
+
| netintel_gas_price | Live gas prices across Base, Ethereum, Arbitrum, Optimism, and Polygon… | $0.005 |
|
|
137
|
+
| netintel_crypto_price | Spot prices for up to 25 crypto assets in one call — USD, EUR, or GBP —… | $0.01 |
|
|
138
|
+
| netintel_crypto_ohlc | Historical OHLC candles for any major crypto asset — hourly or daily… | $0.02 |
|
|
139
|
+
| netintel_currency_exchange_batch | Convert one base currency to up to 30 targets in a single call — fiat… | $0.02 |
|
|
140
|
+
| netintel_currency_exchange_history | Daily historical exchange-rate series for any currency pair — fiat via… | $0.02 |
|
|
141
|
+
| netintel_token_info | Full profile for any ERC-20 token by contract address — name, symbol… | $0.02 |
|
|
142
|
+
| netintel_wallet_balance | Native + USDC + custom-token balances for any wallet on Base, Ethereum… | $0.005 |
|
|
143
|
+
| netintel_wallet_intel | Counterparty due-diligence for any Base or Ethereum wallet — age… | $0.05 |
|
|
144
|
+
| netintel_iban_validate | Validate any IBAN offline — mod-97 check digits, per-country structure… | $0.005 |
|
|
145
|
+
| netintel_market_snapshot | One-call market briefing for agents — BTC/ETH/SOL spot + 24h moves… | $0.05 |
|
|
146
|
+
| netintel_web_fetch | Fetch any URL and get the raw body back — JSON parsed, everything else… | $0.003 |
|
|
136
147
|
|
|
137
148
|
## Payment
|
|
138
149
|
All tools pay automatically via x402 in USDC on Base mainnet.
|
package/dist/index.js
CHANGED
|
@@ -1020,6 +1020,117 @@ function registerTools(server, api) {
|
|
|
1020
1020
|
return err(e);
|
|
1021
1021
|
}
|
|
1022
1022
|
});
|
|
1023
|
+
// 99. Gas
|
|
1024
|
+
server.tool("netintel_gas_price", "Live gas prices across Base, Ethereum, Arbitrum, Optimism, and Polygon with USD cost estimates for a transfer, an ERC-20 send, and a swap — keyless, one call, all chains. Per chain: gas price + EIP-1559 base/priority fee in gwei…", { chains: z.string().optional() }, async ({ chains }) => {
|
|
1025
|
+
try {
|
|
1026
|
+
const res = await api.get("/gas/price", { params: params({ chains }) });
|
|
1027
|
+
return ok(res.data);
|
|
1028
|
+
}
|
|
1029
|
+
catch (e) {
|
|
1030
|
+
return err(e);
|
|
1031
|
+
}
|
|
1032
|
+
});
|
|
1033
|
+
// 100. Crypto
|
|
1034
|
+
server.tool("netintel_crypto_price", "Spot prices for up to 25 crypto assets in one call — USD, EUR, or GBP — from Coinbase with Kraken and CoinGecko fallback; no API key, one flat price. Per asset: price, 24h change when the answering source provides it, source, cache age…", { symbols: z.string().optional(), vs: z.string().optional() }, async ({ symbols, vs }) => {
|
|
1035
|
+
try {
|
|
1036
|
+
const res = await api.get("/crypto/price", { params: params({ symbols, vs }) });
|
|
1037
|
+
return ok(res.data);
|
|
1038
|
+
}
|
|
1039
|
+
catch (e) {
|
|
1040
|
+
return err(e);
|
|
1041
|
+
}
|
|
1042
|
+
});
|
|
1043
|
+
// 101. Crypto
|
|
1044
|
+
server.tool("netintel_crypto_ohlc", "Historical OHLC candles for any major crypto asset — hourly or daily, up to 300 candles, with period stats (change %, high, low) — from Coinbase Exchange with Kraken fallback, no API key. Also a price-at-date mode: pass date=YYYY-MM-DD for…", { symbol: z.string().optional(), interval: z.string().optional(), days: z.number().optional(), date: z.string().optional(), vs: z.string().optional() }, async ({ symbol, interval, days, date, vs }) => {
|
|
1045
|
+
try {
|
|
1046
|
+
const res = await api.get("/crypto/ohlc", { params: params({ symbol, interval, days, date, vs }) });
|
|
1047
|
+
return ok(res.data);
|
|
1048
|
+
}
|
|
1049
|
+
catch (e) {
|
|
1050
|
+
return err(e);
|
|
1051
|
+
}
|
|
1052
|
+
});
|
|
1053
|
+
// 102. Currency Exchange
|
|
1054
|
+
server.tool("netintel_currency_exchange_batch", "Convert one base currency to up to 30 targets in a single call — fiat (~200 currencies incl. SAR, AED, COP) and major crypto — ECB reference rates + Coinbase spot, no API key. Per target: rate, converted amount, rate date, source. The…", { from: z.string(), to: z.string(), amount: z.number().optional() }, async ({ from, to, amount }) => {
|
|
1055
|
+
try {
|
|
1056
|
+
const res = await api.get("/currency-exchange/batch", { params: params({ from, to, amount }) });
|
|
1057
|
+
return ok(res.data);
|
|
1058
|
+
}
|
|
1059
|
+
catch (e) {
|
|
1060
|
+
return err(e);
|
|
1061
|
+
}
|
|
1062
|
+
});
|
|
1063
|
+
// 103. Currency Exchange
|
|
1064
|
+
server.tool("netintel_currency_exchange_history", "Daily historical exchange-rate series for any currency pair — fiat via ECB reference data, crypto via Coinbase daily closes — with min/max/average/change stats, no API key. Pass start/end dates or a days lookback (default 30). The history…", { from: z.string(), to: z.string(), start: z.string().optional(), end: z.string().optional(), days: z.number().optional() }, async ({ from, to, start, end, days }) => {
|
|
1065
|
+
try {
|
|
1066
|
+
const res = await api.get("/currency-exchange/history", { params: params({ from, to, start, end, days }) });
|
|
1067
|
+
return ok(res.data);
|
|
1068
|
+
}
|
|
1069
|
+
catch (e) {
|
|
1070
|
+
return err(e);
|
|
1071
|
+
}
|
|
1072
|
+
});
|
|
1073
|
+
// 104. Token
|
|
1074
|
+
server.tool("netintel_token_info", "Full profile for any ERC-20 token by contract address — name, symbol, decimals, supply from the chain itself, plus live price, liquidity, and volume from DEX data — Base and Ethereum, no API key. Holder count included; identity read…", { address: z.string(), chain: z.string().optional() }, async ({ address, chain }) => {
|
|
1075
|
+
try {
|
|
1076
|
+
const res = await api.get("/token/info", { params: params({ address, chain }) });
|
|
1077
|
+
return ok(res.data);
|
|
1078
|
+
}
|
|
1079
|
+
catch (e) {
|
|
1080
|
+
return err(e);
|
|
1081
|
+
}
|
|
1082
|
+
});
|
|
1083
|
+
// 105. Wallet
|
|
1084
|
+
server.tool("netintel_wallet_balance", "Native + USDC + custom-token balances for any wallet on Base, Ethereum, or Solana — with USD estimates — straight from public RPCs, no API key. Raw units as decimal strings plus formatted numbers; add up to 10 ERC-20 contracts via tokens=…", { address: z.string(), chain: z.string().optional(), tokens: z.string().optional() }, async ({ address, chain, tokens }) => {
|
|
1085
|
+
try {
|
|
1086
|
+
const res = await api.get("/wallet/balance", { params: params({ address, chain, tokens }) });
|
|
1087
|
+
return ok(res.data);
|
|
1088
|
+
}
|
|
1089
|
+
catch (e) {
|
|
1090
|
+
return err(e);
|
|
1091
|
+
}
|
|
1092
|
+
});
|
|
1093
|
+
// 106. Wallet
|
|
1094
|
+
server.tool("netintel_wallet_intel", "Counterparty due-diligence for any Base or Ethereum wallet — age, funding origin, USDC flow, activity pattern, and risk flags in one scored report. The domain-report of wallets: wallet age, first funder, in/out totals, distinct…", { address: z.string(), chain: z.string().optional() }, async ({ address, chain }) => {
|
|
1095
|
+
try {
|
|
1096
|
+
const res = await api.get("/wallet/intel", { params: params({ address, chain }) });
|
|
1097
|
+
return ok(res.data);
|
|
1098
|
+
}
|
|
1099
|
+
catch (e) {
|
|
1100
|
+
return err(e);
|
|
1101
|
+
}
|
|
1102
|
+
});
|
|
1103
|
+
// 107. Iban — the API serves GET and POST for the same handler; one MCP
|
|
1104
|
+
// tool suffices, and POST keeps the quasi-PII IBAN out of query strings.
|
|
1105
|
+
server.tool("netintel_iban_validate", "Validate any IBAN offline — mod-97 check digits, per-country structure, bank/branch extraction, and pretty formatting for ~80 countries — deterministic, instant, no upstream. A structurally invalid IBAN is a real answer: valid:false +…", { iban: z.string() }, async ({ iban }) => {
|
|
1106
|
+
try {
|
|
1107
|
+
const res = await api.post("/iban/validate", { iban });
|
|
1108
|
+
return ok(res.data);
|
|
1109
|
+
}
|
|
1110
|
+
catch (e) {
|
|
1111
|
+
return err(e);
|
|
1112
|
+
}
|
|
1113
|
+
});
|
|
1114
|
+
// 109. Market
|
|
1115
|
+
server.tool("netintel_market_snapshot", "One-call market briefing for agents — BTC/ETH/SOL spot + 24h moves, major fiat crosses (USD/EUR, USD/GBP, USD/JPY, EUR/GBP), Base and Ethereum gas with USD transfer cost, and the crypto fear/greed index. Four sections fetched concurrently…", { symbols: z.string().optional(), vs: z.string().optional() }, async ({ symbols, vs }) => {
|
|
1116
|
+
try {
|
|
1117
|
+
const res = await api.get("/market/snapshot", { params: params({ symbols, vs }) });
|
|
1118
|
+
return ok(res.data);
|
|
1119
|
+
}
|
|
1120
|
+
catch (e) {
|
|
1121
|
+
return err(e);
|
|
1122
|
+
}
|
|
1123
|
+
});
|
|
1124
|
+
// 110. Web (POST)
|
|
1125
|
+
server.tool("netintel_web_fetch", "Fetch any URL and get the raw body back — JSON parsed, everything else as text — from safe server-side egress. For data APIs (ArcGIS, government/open-data portals, blob storage) that /web/extract's markdown conversion mangles. No API key…", { url: z.string(), max_bytes: z.number().optional() }, async ({ url, max_bytes }) => {
|
|
1126
|
+
try {
|
|
1127
|
+
const res = await api.post("/web/fetch", { url, max_bytes });
|
|
1128
|
+
return ok(res.data);
|
|
1129
|
+
}
|
|
1130
|
+
catch (e) {
|
|
1131
|
+
return err(e);
|
|
1132
|
+
}
|
|
1133
|
+
});
|
|
1023
1134
|
}
|
|
1024
1135
|
async function main() {
|
|
1025
1136
|
const api = await createClient();
|