netintel-mcp 1.1.35 → 1.1.38

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.
Files changed (3) hide show
  1. package/README.md +12 -2
  2. package/dist/index.js +101 -0
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # netintel-mcp
2
2
 
3
- MCP server for NetIntel — 98 network intelligence tools for AI agents.
3
+ MCP server for NetIntel — 108 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
- 98 pay-per-call tools across DNS, SSL/TLS, WHOIS & domains, email security, IP intelligence, web & content, OSINT, AI text processing, and bundled reports.
34
+ 108 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,16 @@ 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 |
136
146
 
137
147
  ## Payment
138
148
  All tools pay automatically via x402 in USDC on Base mainnet.
package/dist/index.js CHANGED
@@ -1020,6 +1020,107 @@ 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
+ });
1023
1124
  }
1024
1125
  async function main() {
1025
1126
  const api = await createClient();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "netintel-mcp",
3
- "version": "1.1.35",
3
+ "version": "1.1.38",
4
4
  "mcpName": "io.github.kjgueye/netintel-mcp",
5
5
  "repository": {
6
6
  "type": "git",