netintel-mcp 1.1.21 → 1.1.23

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 +9 -3
  2. package/dist/index.js +52 -12
  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 — 72 network intelligence tools for AI agents.
3
+ MCP server for NetIntel — 78 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 on Base mainnet. 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
- 72 pay-per-call tools across DNS, SSL/TLS, WHOIS & domains, email security, IP intelligence, web & content, OSINT, AI text processing, and bundled reports.
34
+ 78 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
  |------|-------------|-------|
@@ -41,7 +41,7 @@ Or add manually to your Claude Desktop config:
41
41
  | netintel_security_headers | Fetches a URL and evaluates 10 security-critical response headers (CSP… | $0.01 |
42
42
  | netintel_email_auth | Email deliverability & domain security check — validates SPF, DKIM… | $0.002 |
43
43
  | netintel_cloud_fingerprint | Fingerprints a domain's cloud infrastructure by probing DNS records… | $0.01 |
44
- | netintel_schema_parse | Extract structured data from any unstructured text into your own JSON… | $0.05 |
44
+ | netintel_schema_parse | Extract structured data from any unstructured text into your own JSON… | $0.10 |
45
45
  | netintel_asn_lookup | Resolves an IP address or domain to its Autonomous System Number (ASN)… | $0.03 |
46
46
  | netintel_whois_lookup | WHOIS domain lookup via RDAP — registrar, creation/expiry/updated… | $0.003 |
47
47
  | netintel_cert_transparency | Query the crt.sh certificate transparency log database to enumerate all… | $0.01 |
@@ -63,6 +63,7 @@ Or add manually to your Claude Desktop config:
63
63
  | netintel_ip_reputation | Check an IP address against AbuseIPDB and AlienVault OTX threat feeds… | $0.05 |
64
64
  | netintel_cron_parser | Parse any cron expression into a human-readable explanation, validate… | $0.03 |
65
65
  | netintel_currency_exchange | Convert any amount between 32 fiat currencies (live European Central… | $0.01 |
66
+ | netintel_github_intel | Fetch public metadata for any GitHub repository — stars, forks, open… | $0.03 |
66
67
  | netintel_holidays | Look up public holidays for any country and year, check whether a… | $0.005 |
67
68
  | netintel_ip_geo | IP geolocation lookup (geoip / IP location API) — geolocate any IPv4 or… | $0.002 |
68
69
  | netintel_jwt_inspector | Decode and inspect any JWT token — extracts header algorithm, payload… | $0.005 |
@@ -107,6 +108,11 @@ Or add manually to your Claude Desktop config:
107
108
  | netintel_ai_image | Generate agent-ready image assets (icons, logos, social graphics… | $0.25 |
108
109
  | netintel_convert | Convert any physical measurement — length, mass, volume, temperature… | $0.01 |
109
110
  | netintel_domain | Composite 0-100 trust/risk score for a domain in one call — blends… | $0.10 |
111
+ | netintel_translate_structured | Translate structured content — JSON, HTML, Markdown, templates, UI… | $0.05 |
112
+ | netintel_translate_batch | Translate many independent strings in one request — each with a caller… | $0.05 |
113
+ | netintel_json | Repair malformed JSON into valid JSON — fixes code fences, trailing… | $0.02 |
114
+ | netintel_schema | Validate data against a supplied schema — checks required fields… | $0.02 |
115
+ | netintel_schema_map | Transform a source object into a target schema — matches fields by… | $0.04 |
110
116
 
111
117
  ## Payment
112
118
  All tools pay automatically via x402 on Base mainnet (USDC).
package/dist/index.js CHANGED
@@ -740,40 +740,80 @@ function registerTools(server, api) {
740
740
  return err(e);
741
741
  }
742
742
  });
743
- // 71. Ai Image Assets (POST)
744
- server.tool("netintel_ai_image_assets", "Generate agent-ready image assets — app icons, logos, social graphics, blog thumbnails, product mockups, banners, OG/web images. Claude first does prompt-engineering for the chosen use case (folding in style and brand colors), screens for…", { prompt: z.string(), use_case: z.string().optional(), style: z.string().optional(), brand_colors: z.array(z.string()).optional(), aspect_ratio: z.string().optional(), quality: z.string().optional(), n: z.number().optional(), provider: z.string().optional() }, async ({ prompt, use_case, style, brand_colors, aspect_ratio, quality, n, provider }) => {
743
+ // 71. Ai Image (POST)
744
+ server.tool("netintel_ai_image", "Generate agent-ready image assets (icons, logos, social graphics, thumbnails, banners) with gpt-image-1. Claude refines the prompt, screens content, adds alt text and a score. Returns image_url as a base64 PNG data URI. Flat $0.25; n=1…", { prompt: z.string(), use_case: z.string().optional(), aspect_ratio: z.string().optional(), style: z.string().optional(), brand_colors: z.array(z.string()).optional() }, async ({ prompt, use_case, aspect_ratio, style, brand_colors }) => {
745
745
  try {
746
- const res = await api.post("/ai-image-assets/generate", { prompt, use_case, style, brand_colors, aspect_ratio, quality, n, provider });
746
+ const res = await api.post("/ai-image/generate", { prompt, use_case, aspect_ratio, style, brand_colors });
747
747
  return ok(res.data);
748
748
  }
749
749
  catch (e) {
750
750
  return err(e);
751
751
  }
752
752
  });
753
- // 72. Ai Image (POST)
754
- server.tool("netintel_ai_image", "Generate agent-ready image assets (icons, logos, social graphics, thumbnails, banners) with gpt-image-1. Claude refines the prompt, screens content, adds alt text and a score. Returns image_url as a base64 PNG data URI. Flat $0.25; n=1…", { prompt: z.string(), use_case: z.string().optional(), aspect_ratio: z.string().optional(), style: z.string().optional(), brand_colors: z.array(z.string()).optional() }, async ({ prompt, use_case, aspect_ratio, style, brand_colors }) => {
753
+ // 72. Convert
754
+ server.tool("netintel_convert", "Convert any physical measurement to another length, mass, volume, temperature, area, speed, pressure, energy, time, data, and angle. Auto-detects the unit category, handles US/imperial ambiguity, and returns the exact converted value…", { value: z.number(), from: z.string(), to: z.string(), system: z.string().optional(), base: z.string().optional() }, async ({ value, from, to, system, base }) => {
755
755
  try {
756
- const res = await api.post("/ai-image/generate", { prompt, use_case, aspect_ratio, style, brand_colors });
756
+ const res = await api.get("/convert", { params: params({ value, from, to, system, base }) });
757
757
  return ok(res.data);
758
758
  }
759
759
  catch (e) {
760
760
  return err(e);
761
761
  }
762
762
  });
763
- // 73. Convert
764
- server.tool("netintel_convert", "Convert any physical measurement to anotherlength, mass, volume, temperature, area, speed, pressure, energy, time, data, and angle. Auto-detects the unit category, handles US/imperial ambiguity, and returns the exact converted value…", { value: z.number(), from: z.string(), to: z.string(), system: z.string().optional(), base: z.string().optional() }, async ({ value, from, to, system, base }) => {
763
+ // 73. Domain (POST)
764
+ server.tool("netintel_domain", "Composite 0-100 trust/risk score for a domain in one call blends domain age, SSL/TLS, DNS health, email auth (SPF/DKIM/DMARC), IP reputation, and certificate transparency into a single \"safe to do business with this domain?\" verdict with…", { domain: z.string() }, async ({ domain }) => {
765
765
  try {
766
- const res = await api.get("/convert", { params: params({ value, from, to, system, base }) });
766
+ const res = await api.post("/domain/vendor-risk", { domain });
767
767
  return ok(res.data);
768
768
  }
769
769
  catch (e) {
770
770
  return err(e);
771
771
  }
772
772
  });
773
- // 74. Domain (POST)
774
- server.tool("netintel_domain", "Composite 0-100 trust/risk score for a domain in one callblends domain age, SSL/TLS, DNS health, email auth (SPF/DKIM/DMARC), IP reputation, and certificate transparency into a single \"safe to do business with this domain?\" verdict with…", { domain: z.string() }, async ({ domain }) => {
773
+ // 74. Translate (POST)
774
+ server.tool("netintel_translate_structured", "Translate structured content JSON, HTML, Markdown, templates, UI stringswithout breaking structure. Preserves keys, tags, markdown, URLs, emails, variables, placeholders, code blocks, and brand names, honors a caller glossary, and…", { content: z.record(z.any()), content_type: z.string().optional(), target: z.string(), source: z.string().optional(), glossary: z.record(z.any()).optional(), protected_values: z.array(z.any()).optional(), formality: z.string().optional(), tone: z.string().optional(), locale: z.string().optional() }, async ({ content, content_type, target, source, glossary, protected_values, formality, tone, locale }) => {
775
775
  try {
776
- const res = await api.post("/domain/vendor-risk", { domain });
776
+ const res = await api.post("/translate/structured", { content, content_type, target, source, glossary, protected_values, formality, tone, locale });
777
+ return ok(res.data);
778
+ }
779
+ catch (e) {
780
+ return err(e);
781
+ }
782
+ });
783
+ // 75. Translate (POST)
784
+ server.tool("netintel_translate_batch", "Translate many independent strings in one request — each with a caller ID preserved in the response — with per-item status, glossary and tone support, and partial success so one bad item never fails the batch, so agents can localize whole…", { items: z.array(z.any()), target: z.string(), source: z.string().optional(), glossary: z.record(z.any()).optional(), protected_values: z.array(z.any()).optional(), tone: z.string().optional(), formality: z.string().optional() }, async ({ items, target, source, glossary, protected_values, tone, formality }) => {
785
+ try {
786
+ const res = await api.post("/translate/batch", { items, target, source, glossary, protected_values, tone, formality });
787
+ return ok(res.data);
788
+ }
789
+ catch (e) {
790
+ return err(e);
791
+ }
792
+ });
793
+ // 76. Json (POST)
794
+ server.tool("netintel_json", "Repair malformed JSON into valid JSON — fixes code fences, trailing commas, single quotes, unquoted keys, bad escapes, duplicate keys, truncation, and JSON buried in prose. A deterministic tokenizer runs first (no LLM cost), with an…", { input: z.string(), schema: z.record(z.any()).optional(), allow_llm: z.boolean().optional(), coerce: z.boolean().optional() }, async ({ input, schema, allow_llm, coerce }) => {
795
+ try {
796
+ const res = await api.post("/json/repair", { input, schema, allow_llm, coerce });
797
+ return ok(res.data);
798
+ }
799
+ catch (e) {
800
+ return err(e);
801
+ }
802
+ });
803
+ // 77. Schema (POST)
804
+ server.tool("netintel_schema", "Validate data against a supplied schema — checks required fields, nested objects, arrays, enums, string formats, numeric ranges, lengths, and additional-property rules deterministically, with optional type coercion and repair, returning…", { data: z.string(), schema: z.record(z.any()), coerce: z.boolean().optional(), repair: z.boolean().optional(), allow_llm: z.boolean().optional() }, async ({ data, schema, coerce, repair, allow_llm }) => {
805
+ try {
806
+ const res = await api.post("/schema/validate", { data, schema, coerce, repair, allow_llm });
807
+ return ok(res.data);
808
+ }
809
+ catch (e) {
810
+ return err(e);
811
+ }
812
+ });
813
+ // 78. Schema (POST)
814
+ server.tool("netintel_schema_map", "Transform a source object into a target schema — matches fields by alias and structure deterministically, uses an LLM only for semantic mapping when needed, and supports mapping hints, transforms, and defaults, so agents can reshape data…", { source: z.record(z.any()), target_schema: z.record(z.any()), hints: z.record(z.any()).optional(), transforms: z.record(z.any()).optional(), defaults: z.record(z.any()).optional(), mode: z.string().optional(), allow_llm: z.boolean().optional() }, async ({ source, target_schema, hints, transforms, defaults, mode, allow_llm }) => {
815
+ try {
816
+ const res = await api.post("/schema/map", { source, target_schema, hints, transforms, defaults, mode, allow_llm });
777
817
  return ok(res.data);
778
818
  }
779
819
  catch (e) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "netintel-mcp",
3
- "version": "1.1.21",
3
+ "version": "1.1.23",
4
4
  "mcpName": "io.github.kjgueye/netintel-mcp",
5
5
  "repository": {
6
6
  "type": "git",