Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
52
💰 Paid API ai A2A 0.3.0 v1.0.0 x402 micropay

NetIntel

netintel.dev · NetIntel

Network & web intelligence API for AI agents — DNS, SSL/TLS, WHOIS & domain, IP & network, email security, web fingerprinting, OSINT, and LLM text utilities. Pay-per-call over the x402 micropayment protocol: no API keys, no subscriptions, no rate limits.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain netintel.dev via a single DNS TXT record to add the verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Verify ownership

Compare public evidence

🔔 Watch this agent. Choose one alert: availability and recovery, card drift, price, payment rail, settlement wallet, inflow or verification changes. Add more alert types from your account. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
52/100
grade D · 9 criteria
Uptime
100.0%
26 direct probes · 30d
~196 ms response
Observed inflow · 30d
$13.57
1,225 tx · on-chain
Invocations · 7d
0
no calls observed
Card drift · 7d
changed
8 snapshots tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

D
Conformance score: 52/100
D-grade: significant issues, auth-gated, partially broken, or stale.
click to expand breakdown ▾ click to collapse breakdown ▴
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
fail Live JSON-RPC 2/25
Card is valid but has no .url field.
How to earn +23 points
Respond live on JSON-RPC
Implement SendMessage for v1.0 (or message/send for v0.x), negotiate A2A-Version, and return a schema-valid JSON-RPC response. Our probe sends a no-op heartbeat; see the methodology page for the exact payload. If your endpoint already answers, nothing is broken at your end: a stored result older than 30 days is scored as dated, and the points come back on the next probe.
Docs →
partial Protocol version 5/10
Declares pre-1.0 A2A 0.3.0 (Google preview). Upgrade to v1.x for full points.
How to earn +5 points
Declare protocolVersion
Add `"protocolVersion": "1.0"` (Major.Minor, no patch number — §3.6) to every entry in `supportedInterfaces[]`. A2A v1.0 removed the AgentCard root field.
Docs →
info JWS signature 0/10
Card is unsigned (most published agents are).
pass Uptime track record 15/15
26/26 probes succeeded (100% uptime).
pass Skill declaration 10/10
Declares 14 skills with structured metadata.
partial Verified Identity 5/10
Provider declared: NetIntel (https://netintel.dev). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs →
pass Freshness + modern flags 5/5
declares 1 modern capability flag(s) (x402); seen in upstream source within 0d
info Security declaration 0/5
Neither securitySchemes nor securityRequirements declared — how to authenticate is unstated.
⚠ Card drift detected. This agent's agent-card.json changed within the last 7 days. We track these so downstream callers can react.

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded
0
invocations 7d
reached the endpoint through us
0
lookups 7d
our API answered about it
0
impressions 7d
appeared in a result list
Per event type (7d)
2
search_click
Recent events (last 20)
When Event Method Status Latency
2026-10-06T19:16:25 search_click /agents — ok 3ms
2026-10-06T15:44:25 search_click /agents — ok 5ms
2026-10-04T14:03:49 search_click /agents — ok 13ms

Card history

8 snapshots drifted 7× Every change to agent-card.json
Captured Hash
2026-10-11 07:45:21 current d653e084d9cb… view →
2026-10-01 20:07:10 5ce987458a06… view →
2026-08-21 10:09:28 cb923e4155ff… view →
2026-07-28 05:12:30 586af2927a28… view →
2026-07-23 02:48:24 8abf015c7c77… view →
2026-07-18 03:37:47 c6264645169b… view →
2026-07-11 14:51:29 995f87828b21… view →
2026-07-07 11:59:12 929b71d74690… view →
Uptime
100.0%
26 direct probes · 30d
Response
157ms
last direct probe
Skills
14
declared
Streaming
—
SSE-capable

Endpoints

Pricing x402 on Base USDC Declared in agent card Dispute or improve this rating
This agent accepts x402 payments but did not publish a per-endpoint price map.
Try it ↗ Opens the operator's playground / docs in a new tab.
Settlement wallet: 0xdadc335482ad545296fd7b28518a251ffcbeb9df on Base · basescan ↗
Listed by facilitators Coinbase CDP · 125 Dexter · 31 UltravioletaDAO · 2
UltravioletaDAO health check: 4 alive · checked 2026-10-11 (their probe)
Observed on-chain inflow verified on-chain
Last 7d
$2.24
257 transfers · synced 2026-10-07
Last 30d
$13.57
1,225 transfers · synced 2026-10-07
Last 90d PRO
Unlock with Pro
90-day total + 90 days of daily history
USDC inflows on Base. Reproducible via eth_getLogs on USDC Transfer events to the wallet. Inflow to a wallet, not proof that every transfer was a paid call.
How the last 30 days were settled
x402-settled: $0.06 (100%) · 20 transfers sent by a known x402 facilitator (Coinbase)
Other: $0.00 plain transfers sent by the payer · $0.00 other contract calls · 0% of $12.69 classified so far. How we classify
Cross-check: Coinbase's Bazaar reports 769 calls in 30 days to this wallet across 125 listed resources; our ledger observed 1,123 transfers (20 facilitator-settled) over 26 of 30 scanned days. Different counters; neither is assumed correct.
Daily 30-day observed-inflow history ↑ +$12.07 since 2026-09-11
2026-09-11 2026-10-11
Last 30 days · 90 days with Pro Peak 30-day total: $19.24 Data points: 28 Total tx (30d window): 1,225
Payment authenticity evidence confidence How we measure this →
independently_paid 5/5

Many distinct payers observed, low concentration, repeat demand, and no self-referential payment signal.

Assessed window
30d
26 active of 27 observed
Inflow assessed
$12.86
1,157 transactions
Payer identities
available
1 evidence caveat
shared_settlement_wallet — The settlement wallet is shared with other indexed agents, so inflow cannot be attributed to this agent alone.
Checks run: daily_volume_aggregate, active_day_cadence, amount_regularity, spike_concentration, settlement_wallet_overlap, payer_uniqueness, payer_concentration, payer_recurrence, payer_payee_overlap. Derived from agent_revenue_daily, agents.payment_wallet, agent_payment_transactions. Measured 2026-10-10.
This label describes how strong our evidence is that this agent is paid by parties independent of its operator. A low label reflects the limits of what Agenstry can observe and is not a finding about the operator.
Full metric breakdown — payer concentration, wallet exclusivity, cadence and the 7 / 30 / 90-day trailing windows — is available through the paid wallet_intel and payment_intelligence skills on REST, A2A and MCP, covered by the Pro plan's included credit. API docs →
Agent cardhttps://netintel.dev/.well-known/agent-card.json
Providerhttps://netintel.dev
Docshttps://netintel.dev/llms.txt
About this provider off-card enrichment
SSL certificate
Let's Encrypt
expires 2026-11-17
Discovered via
agentic_market recrawl_hot x402_list recrawl_warm

Skills · 14 declared · mapped to canonical taxonomy

DNS

GET /dns/lookup — DNS lookup for any domain — resolve A, AAAA, MX, TXT, NS, CNAME, SOA and PTR records in one call, with SPF and DMARC parsed from TXT. GET /dns…

orphan: no canonical match yet
dnsx402pay-per-call
SSL / TLS

GET /ssl/analyze — Performs a TLS handshake to inspect the certificate chain, probes supported TLS versions (1.0–1.3), detects weak keys and expiry issues, and …

orphan: no canonical match yet
ssl_tlsx402pay-per-call
Domain & WHOIS

GET /whois-rdap/lookup — Domain registration lookup, WHOIS via RDAP — registrar, registration and expiry dates, last-updated date, nameservers, and status flags…

orphan: no canonical match yet
domainx402pay-per-call
Network & IP

GET /subnet/calc — Calculates IPv4/IPv6 subnet details from CIDR notation — network/broadcast, netmask, wildcard (Cisco ACL) mask, binary/hex masks, usable host…

orphan: no canonical match yet
networkx402pay-per-call
Email

POST /email-auth — Email deliverability & domain security check — validates SPF, DKIM (multi-selector), and DMARC, detects spoofing and misconfigurations, and r…

orphan: no canonical match yet
emailx402pay-per-call
Web

GET /redirect/trace — Follows a URL through its full redirect chain (up to 20 hops), recording status codes, timing, headers, TLS status, and protocol downgrade…

orphan: no canonical match yet
webx402pay-per-call
Web Search

POST /exa/search — Exa neural web search for AI agents — POST or GET a query, get ranked live results (title, url, published_date, author, score) with optional …

orphan: no canonical match yet
searchx402pay-per-call
Security

POST /breach-check/password — Check if a password has appeared in known data breaches using the HaveIBeenPwned Pwned Passwords API with k-anonymity — the full p…

orphan: no canonical match yet
securityx402pay-per-call
OSINT

GET /cloud-fingerprint/analyze — Fingerprints a domain's cloud infrastructure — DNS records, HTTP headers, a TLS handshake and PTR lookups — to detect CDN, WAF,…

orphan: no canonical match yet
osintx402pay-per-call
AI & Text

POST /messages — OpenAI-compatible chat completions over x402, answered by Claude Sonnet 4.6 — send a messages array and get an assistant reply for Q&A, reasoni…

orphan: no canonical match yet
aix402pay-per-call
Finance & Markets

GET /currency-exchange/convert — Convert any amount between 32 fiat currencies (live European Central Bank rates) and major cryptocurrencies (BTC, ETH, USDC, SO…

canonical Foreign Exchange Rates match 89%
financex402pay-per-call
Weather

POST /weather/current — Live weather + 3-day forecast for any city or lat/lon worldwide — temperature, feels-like, humidity, wind, precipitation, cloud cover, a…

canonical Weather Forecast and Alerts match 88%
weatherx402pay-per-call
Prediction Markets

POST /prediction/markets — Live prediction-market odds from Polymarket — list the top active markets by volume, or search by keyword. Each result has the questi…

orphan: no canonical match yet
predictionx402pay-per-call
Utilities

GET /cron-parser/explain — Parse any cron expression into a human-readable explanation, validate its syntax, compute the next 5 scheduled run times (UTC), and d…

orphan: no canonical match yet
utilitiesx402pay-per-call

Health · last 26 probes

When HTTP Live JSON-RPC Latency
2026-10-11 07:45:21 200 — 157ms
2026-10-10 18:01:05 200 — 163ms
2026-10-09 20:37:07 200 — 166ms
2026-10-09 10:02:11 200 — 165ms
2026-10-08 21:55:38 200 — 174ms
2026-10-08 12:32:04 200 — 162ms
2026-10-08 01:20:14 200 — 159ms
2026-10-07 15:13:52 200 — 158ms
2026-10-07 04:11:55 200 — 153ms
2026-10-06 15:53:51 200 — 155ms

Who's calling this agent 30d

3 interactions captured (impressions + lookups + A2A calls)

By AI host (caller_kind) · top 3
PerplexityBot (crawler) 2 (67%)
MJ12bot / Majestic (SEO tool) 1 (33%)
Caller geography · top 3
US 2
FR 1
Via which API surface · top 3
web 3

Public view: top 3 per dimension. Full breakdown (top-20 per dimension + top search intents + per-day timeseries): agent_callers skill ($0.05/call, $0 on Enterprise). Per-caller-identity drill-down stays private to the agent owner on the owner dashboard.

Cheaper or better alternatives per-skill

↑ 2 higher quality

For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.

Similar agents embedding-nearest

NetIntel
Network & web intelligence API for AI agents — DNS, SSL/TLS, WHOIS & domain, IP & network, email security, web fingerprinting, OSINT, and LL
NetIntel · q 90%
broke2built Data & Intelligence Skills live
Working data skills for other agents: email/domain/DNS intelligence, web-page audit (SEO, security headers, broken links, metadata), content
broke2built · q 100%
broke2built Data & Intelligence Skills live
Working data skills for other agents: email/domain/DNS intelligence, web-page audit (SEO, security headers, broken links, metadata), content
broke2built · q 100%
Domain Intel
Pay-per-call domain intelligence: domain in, WHOIS, DNS, mail policy, certificate and subdomains out.
Die Netzhandwerker · q 78%
Domain Intel
Pay-per-call domain intelligence: domain in, WHOIS, DNS, mail policy, certificate and subdomains out.
Die Netzhandwerker · q 78%
Ai
Live AI answer-engine readability audit of one domain, returned as JSON. Operated by an AI, not by a person.
ai.rjhsignaltech.workers.dev · q 0%

Embed your Agenstry badge

Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/netintel.dev.svg)](https://agenstry.com/agents/netintel.dev)
[![Verified Business](https://agenstry.com/badge/netintel.dev/identity.svg)](https://agenstry.com/agents/netintel.dev)
[![Uptime](https://agenstry.com/badge/netintel.dev/uptime.svg)](https://agenstry.com/agents/netintel.dev)
[![A2A version](https://agenstry.com/badge/netintel.dev/protocol.svg)](https://agenstry.com/agents/netintel.dev)

Audit-grade evidence bundle

JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against our JWKS. See the methodology.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "protocolVersion": "0.3.0",
  "name": "NetIntel",
  "description": "Network & web intelligence API for AI agents \u2014 DNS, SSL/TLS, WHOIS & domain, IP & network, email security, web fingerprinting, OSINT, and LLM text utilities. Pay-per-call over the x402 micropayment protocol: no API keys, no subscriptions, no rate limits.",
  "url": "https://netintel.dev",
  "preferredTransport": "HTTP+JSON",
  "additionalInterfaces": [
    {
      "url": "https://netintel.dev",
      "transport": "HTTP+JSON"
    },
    {
      "url": "https://netintel.dev",
      "transport": "JSONRPC"
    }
  ],
  "version": "1.0.0",
  "documentationUrl": "https://netintel.dev/llms.txt",
  "provider": {
    "organization": "NetIntel",
    "url": "https://netintel.dev",
    "contact": "support@netintel.dev"
  },
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "dns",
      "name": "DNS",
      "description": "GET /dns/lookup \u2014 DNS lookup for any domain \u2014 resolve A, AAAA, MX, TXT, NS, CNAME, SOA and PTR records in one call, with SPF and DMARC parsed from TXT. GET /dns-propagation/check \u2014 Query a domain's DNS record across 10 geographically distributed public resolvers simultaneously \u2014 returns what each resolver sees, whether results are consistent, propagation percentage, and a readiness score so agents can confirm DNS changes have fully propagated globally. GET /dnssec/validate \u2014 Validate a domain's DNSSEC configuration over DNS-over-HTTPS: DS records at the parent zone, DNSKEY records at the domain, RRSIG signatures, NSEC/NSEC3, plus the validating resolver's AD bit \u2014 returns a full chain-of-trust assessment and readiness score so agents can verify DNS integrity before trusting resolution results.",
      "tags": [
        "dns",
        "x402",
        "pay-per-call"
      ],
      "examples": [
        "GET https://netintel.dev/dns/lookup",
        "GET https://netintel.dev/dns-propagation/check",
        "GET https://netintel.dev/dnssec/validate"
      ]
    },
    {
      "id": "ssl_tls",
      "name": "SSL / TLS",
      "description": "GET /ssl/analyze \u2014 Performs a TLS handshake to inspect the certificate chain, probes supported TLS versions (1.0\u20131.3), detects weak keys and expiry issues, and returns an overall security grade (A/B/C/F). For just the cert facts fast, see the cheaper /ssl/cert (quick tier). POST /ssl/cert \u2014 SSL certificate check for any domain \u2014 issuer, subject, SANs, valid from/to, days until expiry, expired/self-signed flags, TLS version, chain length. One TLS handshake, sub-2-second answer. The light, cheap tier under /ssl/analyze (full analysis, grading). No API key. GET /cert-transparency/lookup \u2014 Query the crt.sh certificate transparency log database to enumerate all SSL certificates ever issued for a domain \u2014 returns subdomains discovered, certificate issuers, validity periods, and a risk score flagging wildcard certs, expiring certs, and suspicious issuance patterns.",
      "tags": [
        "ssl_tls",
        "x402",
        "pay-per-call"
      ],
      "examples": [
        "GET https://netintel.dev/ssl/analyze",
        "POST https://netintel.dev/ssl/cert",
        "GET https://netintel.dev/cert-transparency/lookup"
      ]
    },
    {
      "id": "domain",
      "name": "Domain & WHOIS",
      "description": "GET /whois-rdap/lookup \u2014 Domain registration lookup, WHOIS via RDAP \u2014 registrar, registration and expiry dates, last-updated date, nameservers, and status flags from the authoritative registry, plus an actionability score so agents can assess domain trustworthiness, ownership, or availability risk. GET /domain-availability/check \u2014 Check if a domain name is available for registration by querying RDAP and DNS \u2014 pass a bare name (e.g. mybrand) to sweep it across 10 popular TLDs simultaneously, or a full domain (e.g. mybrand.com) to check that single domain \u2014 returns registration status, expiry date if registered, and available/taken TLD lists so agents can find the best domain for a brand or project. POST /bulk-domain/check \u2014 Check availability of many domain names across multiple TLDs in a single call \u2014 submit up to 50 name/TLD combinations and get back per-domain registration status, registrar, and expiry concurrently, so agents can scan an entire naming shortlist or brand portfolio in one request instead of dozens. Caveat: when both RDAP and DNS are unreachable, status reads 'available' \u2014 re-check surprising availables on premium names. GET /domain-age/check \u2014 Determine a domain's age from registration data and archival history \u2014 tries RDAP, then port-43 WHOIS, then a Wayback-based estimate (age_source: rdap | whois | wayback_estimate | null), returning creation date, age in years, first Wayback capture, archived snapshot count, and a maturity signal so agents can assess trustworthiness and detect freshly registered domains used for fraud or phishing \u2014 including .io and TLDs without public RDAP. GET /domain-report/analyze \u2014 One call returns a complete intelligence profile for a domain \u2014 WHOIS registration, DNS records, SSL certificate, detected tech stack, and blacklist status \u2014 aggregated into a single risk-scored report so agents can fully vet a domain without orchestrating five separate lookups. GET /domain-report/full \u2014 One premium call returns a complete six-part domain profile \u2014 DNS records, SSL certificate, WHOIS registration, cloud fingerprint, technology stack, and security headers \u2014 each section run concurrently with graceful partial-failure handling, so agents get an entire domain workup in a single request instead of orchestrating six. POST /domain/vendor-risk \u2014 Composite 0-100 trust/risk score for a domain in one call \u2014 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 per-signal breakdown and actionable flags. Partial results never read as safe. POST /domain/vet \u2014 Vet and pick a domain in one call \u2014 give candidate names, get back a ranked verdict on which to use and whether it's safe to build on: availability across TLDs, name quality, typosquat exposure, and a factual brand-collision check against similar existing names. Collapses the pick-a-brand-name funnel into one call. GET /domain-appraise/estimate \u2014 Estimate the market value tier of a domain name using transparent heuristics \u2014 length, TLD premium, dictionary-word presence, pronounceability, keyword value, and numeric/hyphen penalties \u2014 returns a value tier and 0-100 quality score so agents can triage domain portfolios and prioritize acquisitions without a paid appraisal service. GET /domain-due-diligence \u2014 One call combines domain availability, heuristic value appraisal, and TLD pricing into a single acquisition brief \u2014 tells an agent whether a name is available, what it's worth, and what it costs across TLDs, concurrently and with graceful partial-failure handling. GET /name-gen/suggest \u2014 Generate brandable startup/product names from a keyword using prefixes, suffixes, blends, and phonetic patterns, then check .com (or any TLD) availability for each via DNS \u2014 returns available names ranked by a brandability heuristic so agents can find a claimable brand without manual brainstorming plus one-by-one availability checks. GET /tld-price/compare \u2014 Reference registration/renewal/transfer pricing from a curated table of ~21 common TLDs \u2014 Mode A: price one TLD (typical register/renew/transfer cost + renewal-markup %); Mode B: price a name across all covered TLDs, sorted cheapest-first with cheapest/cheapest_premium picks. Reference prices, not live per-registrar quotes \u2014 for budgeting and spotting predatory renewal markups; TLDs outside the table return pricing:null. GET /typosquat/scan \u2014 Generate common typo and look-alike variations of a domain and check which are already registered \u2014 catches character swaps, omissions, additions, homoglyphs, and alternate TLDs so agents can detect typosquatting and brand-impersonation domains targeting a company.",
      "tags": [
        "domain",
        "x402",
        "pay-per-call"
      ],
      "examples": [
        "GET https://netintel.dev/whois-rdap/lookup",
        "GET https://netintel.dev/domain-availability/check",
        "POST https://netintel.dev/bulk-domain/check",
        "GET https://netintel.dev/domain-age/check",
        "GET https://netintel.dev/domain-report/analyze",
        "GET https://netintel.dev/domain-report/full",
        "POST https://netintel.dev/domain/vendor-risk",
        "POST https://netintel.dev/domain/vet",
        "GET https://netintel.dev/domain-appraise/estimate",
        "GET https://netintel.dev/domain-due-diligence",
        "GET https://netintel.dev/name-gen/suggest",
        "GET https://netintel.dev/tld-price/compare",
        "GET https://netintel.dev/typosquat/scan"
      ]
    },
    {
      "id": "network",
      "name": "Network & IP",
      "description": "GET /subnet/calc \u2014 Calculates IPv4/IPv6 subnet details from CIDR notation \u2014 network/broadcast, netmask, wildcard (Cisco ACL) mask, binary/hex masks, usable host range, RFC classification (private/loopback/multicast), supernet, and subnet-split counts. Pass comma-separated CIDRs to detect overlaps and classify each pair (subnet/supernet/partial overlap/disjoint); multi-CIDR responses return {subnets, overlaps}. GET /asn-lookup/analyze \u2014 Resolves an IP address or domain to its Autonomous System Number (ASN), network owner, country, and hosting/cloud classification \u2014 agents get structured network ownership context plus a trust score to assess infrastructure risk. GET /ip-blacklist/check \u2014 Check an IP address against 15 major DNS blacklists (Spamhaus, Barracuda, SORBS, etc.) simultaneously \u2014 returns which lists it appears on, a reputation score, and a threat classification so agents can make block/allow decisions instantly. GET /ip-reputation/analyze \u2014 IP reputation and malicious-IP check \u2014 screens an address against AbuseIPDB and AlienVault OTX threat feeds and returns a composite risk score, threat categories, malware families, and full source data. GET /ip-geo/locate \u2014 IP geolocation lookup (geoip / IP location API) \u2014 geolocate any IPv4 or IPv6 address to city, region, country, latitude/longitude, timezone, and ISP/ASN as structured JSON so agents can localize content and enrich user records without a paid geolocation subscription. For proxy/VPN/anonymizer or hosting/datacenter detection, use /ip-risk/score or /ip-reputation/analyze. GET /ip-risk/score \u2014 One call returns a complete risk profile for an IP address \u2014 geolocation, ASN/network owner, blacklist status across multiple DNSBLs, and proxy/VPN/hosting classification \u2014 aggregated into a single verdict so agents can make a block/allow decision without calling four separate IP endpoints. GET /ip-report/full \u2014 One premium call returns a complete five-part IP profile \u2014 geolocation, ASN/network ownership, multi-DNSBL blacklist status, threat reputation, and an aggregate risk verdict \u2014 run concurrently with graceful partial-failure handling, so agents get a full IP workup and a block/allow decision in a single request.",
      "tags": [
        "network",
        "x402",
        "pay-per-call"
      ],
      "examples": [
        "GET https://netintel.dev/subnet/calc",
        "GET https://netintel.dev/asn-lookup/analyze",
        "GET https://netintel.dev/ip-blacklist/check",
        "GET https://netintel.dev/ip-reputation/analyze",
        "GET https://netintel.dev/ip-geo/locate",
        "GET https://netintel.dev/ip-risk/score",
        "GET https://netintel.dev/ip-report/full"
      ]
    },
    {
      "id": "email",
      "name": "Email",
      "description": "POST /email-auth \u2014 Email deliverability & domain security check \u2014 validates SPF, DKIM (multi-selector), and DMARC, detects spoofing and misconfigurations, and returns an A\u2013F email security grade with transparent deductions. Anti-spam / anti-phishing readiness for any sending domain. GET /email-intel/analyze \u2014 Email verification & deliverability check (email validator / verifier) \u2014 validate an address, detect disposable/temporary domains, flag role-based inboxes, confirm MX records exist, and return a trust/risk score so agents can qualify leads, clean lists, and gate signups without sending a single email. POST /email-report/full \u2014 One call combines domain email authentication (SPF/DKIM/DMARC), email-address intelligence (deliverability, disposable/role detection), and an optional password breach check into a single email-trust report \u2014 each section run concurrently with graceful partial-failure handling \u2014 so agents can fully vet an email and its domain in one request. POST /email/verify \u2014 Validate an email address \u2014 email verification before you send: syntax + MX + disposable/role/free-provider detection in one call, boolean-first (deliverable, safe_to_send) with a machine-readable reason. DNS-level check only \u2014 does not confirm the individual mailbox exists (no SMTP probe). For a scored trust report instead of a yes/no gate, see /email-intel/analyze.",
      "tags": [
        "email",
        "x402",
        "pay-per-call"
      ],
      "examples": [
        "POST https://netintel.dev/email-auth",
        "GET https://netintel.dev/email-intel/analyze",
        "POST https://netintel.dev/email-report/full",
        "POST https://netintel.dev/email/verify"
      ]
    },
    {
      "id": "web",
      "name": "Web",
      "description": "GET /redirect/trace \u2014 Follows a URL through its full redirect chain (up to 20 hops), recording status codes, timing, headers, TLS status, and protocol downgrades per hop, then returns an overall redirect health grade (A\u2013F). GET /security-headers/analyze \u2014 Fetches a URL and evaluates 10 security-critical response headers (CSP, HSTS, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy, X-XSS-Protection, CORP, COEP, COOP), detects anti-patterns, and returns an overall security grade (A\u2013F). GET /tech-fingerprint/analyze \u2014 Fetch a URL and detect the full technology stack from HTTP response headers, HTML meta tags, cookies, and script patterns \u2014 returns CMS, framework, CDN, server, analytics, and security tool detections so agents can profile any web target without a browser. GET /og-scraper/extract \u2014 Fetch any public URL and extract structured metadata \u2014 Open Graph tags, Twitter Card tags, canonical URL, title, description, favicon, article author/date, JSON-LD structured data, and content type \u2014 so agents can preview, classify, and enrich links without building their own scraper. GET /page-extract/read \u2014 Fetch any article or web page and extract clean readable text stripped of navigation, ads, and boilerplate \u2014 returns the main content body, word count, estimated reading time, detected language, and key sentences so agents can read the web without a browser or third-party scraping service. For JS-rendered or bot-walled pages a plain fetch can't read, use /exa/contents. GET /web/extract \u2014 Extract text from a web page or PDF as clean Markdown \u2014 HTML to Markdown for any URL: strips scripts, nav, ads, and boilerplate while preserving headings, links, lists, tables, code blocks, and blockquotes; extracts the text layer from PDFs. Returns Markdown body, title, word count, and a quality grade. Web scraper / reader for article and main content. For JS-rendered or bot-walled pages a plain fetch can't read, use /exa/contents. POST /web/fetch \u2014 Fetch any URL and get the raw body back \u2014 JSON parsed, everything else as text \u2014 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, SSRF-guarded, billed only on a usable 2xx response. Pass url as ?url= (GET) or a JSON body (POST). GET /robots-txt/analyze \u2014 Fetch and parse a domain's robots.txt file \u2014 returns all crawl rules by user-agent, sitemap URLs, crawl delay settings, and checks whether a specific path is allowed or blocked for any bot \u2014 so agents can respect crawl policies and locate sitemaps before scraping. GET /rss-parser/fetch \u2014 Fetch and parse any RSS 2.0 or Atom feed URL and return structured articles with title, link, description (truncated to 500 chars), author, publish date, and categories \u2014 so agents can monitor content sources, build news pipelines, and process any feed without building their own XML parser. A URL that isn't a parseable feed still returns 200 with feed_type:\"unknown\", empty items, and a parse_failed finding. GET /sitemap-parser/fetch \u2014 Fetch and parse any XML sitemap or sitemap index file \u2014 returns URLs with their priority, change frequency, and last modified date, follows sitemap indexes one level deep (first 3 child sitemaps), and auto-discovers the sitemap from robots.txt or common paths when given a bare domain \u2014 so agents can enumerate site content for crawling, indexing, and SEO analysis. GET /wayback/lookup \u2014 Query the Internet Archive Wayback Machine to check if a URL has ever been archived, get the closest snapshot to a given date, retrieve the most recent capture, and return archival history stats \u2014 so agents can access historical web content, verify past content claims, and recover deleted pages.",
      "tags": [
        "web",
        "x402",
        "pay-per-call"
      ],
      "examples": [
        "GET https://netintel.dev/redirect/trace",
        "GET https://netintel.dev/security-headers/analyze",
        "GET https://netintel.dev/tech-fingerprint/analyze",
        "GET https://netintel.dev/og-scraper/extract",
        "GET https://netintel.dev/page-extract/read",
        "GET https://netintel.dev/web/extract",
        "POST https://netintel.dev/web/fetch",
        "GET https://netintel.dev/robots-txt/analyze",
        "GET https://netintel.dev/rss-parser/fetch",
        "GET https://netintel.dev/sitemap-parser/fetch",
        "GET https://netintel.dev/wayback/lookup"
      ]
    },
    {
      "id": "search",
      "name": "Web Search",
      "description": "POST /exa/search \u2014 Exa neural web search for AI agents \u2014 POST or GET a query, get ranked live results (title, url, published_date, author, score) with optional highlight snippets. Filter by category (news, research paper, github, company, pdf, and more), domain include/exclude, and publish date. For a direct answer use /exa/answer. No API key, pay per call on Base or Solana. POST /web/search \u2014 Web search for AI agents \u2014 one query in, ranked live results out (title, url, published_date, author, score, optional snippets). Neural + keyword modes, category/domain/date filters. For a direct answer use /exa/answer. Keyless x402, pay per call on Base or Solana. POST /exa/contents \u2014 Clean page text for up to 3 URLs in one call via Exa's index + live crawl \u2014 works on JS-rendered and bot-walled pages that direct fetch can't read. Returns title, author, published_date and text per URL, with per-URL status. Pairs with /exa/search (search \u2192 contents). No API key, pay per call on Base or Solana. POST /exa/answer \u2014 Ask a question, get a direct answer grounded in a live web search, with numbered citations (title, url, published_date). One call replaces search + read + summarize. For ranked results instead of a synthesized answer use /exa/search. Keyless x402, pay per call on Base or Solana.",
      "tags": [
        "search",
        "x402",
        "pay-per-call"
      ],
      "examples": [
        "POST https://netintel.dev/exa/search",
        "POST https://netintel.dev/web/search",
        "POST https://netintel.dev/exa/contents",
        "POST https://netintel.dev/exa/answer"
      ]
    },
    {
      "id": "security",
      "name": "Security",
      "description": "POST /breach-check/password \u2014 Check if a password has appeared in known data breaches using the HaveIBeenPwned Pwned Passwords API with k-anonymity \u2014 the full password is never transmitted, only a 5-character SHA-1 hash prefix \u2014 returns breach count and a risk classification so agents can enforce password policies without storing or exposing credentials. GET /url-safety/check \u2014 Check a URL against URLhaus malware database and heuristic phishing pattern analysis \u2014 returns threat classification, malware family if known, threat confidence, and risk score so agents can screen links before following them or sharing them in automated workflows. GET /url-safety/full \u2014 One call vets a URL end to end \u2014 traces its full redirect chain, checks it against the URLhaus malware database plus phishing heuristics, audits its security headers, and inspects its SSL certificate \u2014 concurrent with graceful partial-failure handling, so agents get a complete safety verdict before following a link.",
      "tags": [
        "security",
        "x402",
        "pay-per-call"
      ],
      "examples": [
        "POST https://netintel.dev/breach-check/password",
        "GET https://netintel.dev/url-safety/check",
        "GET https://netintel.dev/url-safety/full"
      ]
    },
    {
      "id": "osint",
      "name": "OSINT",
      "description": "GET /cloud-fingerprint/analyze \u2014 Fingerprints a domain's cloud infrastructure \u2014 DNS records, HTTP headers, a TLS handshake and PTR lookups \u2014 to detect CDN, WAF, hosting, DNS and email provider, plus cert issuer/wildcard/SAN count, with confidence scores and a security grade (A\u2013F). Hosts that resolve but answer nothing on 80/443 return http_reachable:false, score null and grade insufficient_data \u2014 never a grade inferred from an unanswered probe. GET /username-check/lookup \u2014 Check username availability across 20+ social platforms and developer sites simultaneously \u2014 returns which platforms have a profile registered under that handle so agents can find people, verify identities, scout brand handles, or check name availability before registration. GET /phone-intel/analyze \u2014 Parse and validate any phone number in any format, identify its country and line type (mobile/landline/VOIP/toll-free/premium for NANP + UK numbers; other countries return line_type unknown), and return all standard format variants (E.164, international, national) \u2014 catches fictional/unassigned NANP numbers (555 area code, 555-01XX range) so agents can validate contacts and normalize phone data without a paid telecom API. POST /github-intel/analyze \u2014 Fetch public metadata for any GitHub repository \u2014 stars, forks, open issues, language breakdown, license, contributors, last commit date, topics, and an activity/health score \u2014 so agents can evaluate dependencies, research projects, and assess open source health without the GitHub API complexity. Pass repo as ?repo=owner/repo (GET) or {\"repo\":\"owner/repo\"} (POST).",
      "tags": [
        "osint",
        "x402",
        "pay-per-call"
      ],
      "examples": [
        "GET https://netintel.dev/cloud-fingerprint/analyze",
        "GET https://netintel.dev/username-check/lookup",
        "GET https://netintel.dev/phone-intel/analyze",
        "POST https://netintel.dev/github-intel/analyze"
      ]
    },
    {
      "id": "ai",
      "name": "AI & Text",
      "description": "POST /messages \u2014 OpenAI-compatible chat completions over x402, answered by Claude Sonnet 4.6 \u2014 send a messages array and get an assistant reply for Q&A, reasoning, agent planning, coding help, summarization, extraction, and classification. Body is OpenAI chat.completions-shaped ({model?, messages:[{role,content}], max_tokens?, temperature?}); response is a chat.completion object. Flat $0.06; inputs capped ~6KB, max_tokens 1024; no streaming in v1. POST /v1/chat/completions \u2014 OpenAI-compatible chat completions gateway \u2014 standard /v1/chat/completions path and request shape, model chosen in the body: any gpt-* chat model (not Claude/embeddings), each at its own price. Priced per model, $0.005\u2013$0.65 per call in USDC via x402, no API key: POST unpaid and the 402 quotes your model's exact price. Supports response_format json_object. GET /v1/models (free) lists every model with its endpoint and price. POST /api/v1/chat/completions \u2014 OpenAI-compatible chat completions gateway (alias of /v1/chat/completions for api/v1-style base URLs) \u2014 standard request shape, model chosen in the body: any gpt-* chat model (not Claude/embeddings), each at its own price. Priced per model, $0.005\u2013$0.65 per call in USDC via x402, no API key: POST unpaid and the 402 quotes your model's exact price. Supports response_format json_object. Free model catalog: GET /v1/models. POST /v1/embeddings \u2014 OpenAI-compatible text embeddings API \u2014 standard /v1/embeddings request shape: input as a string or a batch of up to 128 strings (64000 chars total on text-embedding-3-small, the default; 24000 on text-embedding-3-large). Flat $0.005 per call in USDC via x402, no OpenAI account or API key. Returns float vectors for RAG, semantic search, clustering, and dedup. POST /api/v1/embeddings \u2014 OpenAI-compatible text embeddings API (alias of /v1/embeddings for api/v1-style base URLs) \u2014 input as a string or batch of up to 128 strings, model text-embedding-3-small (default) or text-embedding-3-large. Flat $0.005 per call in USDC via x402, no OpenAI account or API key. POST /embeddings \u2014 Multilingual text embeddings (384-dim) served in-house, no OpenAI dependency, no API key. NetIntel's cheapest embeddings at $0.001/call, batches up to 256 texts. Supports query/passage input types for retrieval (e5). Pairs with /text/chunk for a full chunk\u2192embed RAG pipeline on one provider. POST /semantic/rank \u2014 Semantic similarity ranking \u2014 send a query plus up to 100 candidate texts, get the candidates back ranked by semantic similarity with scores. No vectors, no cosine math, no embedding model to manage: one call, one price, ranked results. Flat $0.02 per call in USDC via x402, no API key. For RAG retrieval, FAQ matching, and search result ordering. POST /openai/gpt-4o \u2014 Call OpenAI's gpt-4o via a single pay-per-call x402 endpoint \u2014 no OpenAI account or API key needed, pay $0.10 per request in USDC. Standard OpenAI chat.completions shape. EVERY call is bounded by a 16000-token combined input budget (real tokenizer) plus the 48000-char cap; output 2048. Vision: up to 4 https image_url parts (detail low/high/auto). POST /openai/gpt-4-1 \u2014 Call OpenAI's gpt-4.1 via a single pay-per-call x402 endpoint \u2014 no OpenAI account or API key needed, pay $0.09 per request in USDC. Standard OpenAI chat.completions request/response shape, capped input and output. POST /openai/gpt-4-1-mini \u2014 Call OpenAI's gpt-4.1-mini via a single pay-per-call x402 endpoint \u2014 no OpenAI account or API key needed, pay $0.005 per request in USDC. Standard OpenAI chat.completions request/response shape, capped input and output. POST /openai/gpt-4o-mini \u2014 Call OpenAI's gpt-4o-mini via a single pay-per-call x402 endpoint \u2014 no OpenAI account or API key needed, pay $0.005 per request in USDC. Standard OpenAI chat.completions request/response shape, capped input and output. POST /openai/gpt-4-1-nano \u2014 Call OpenAI's gpt-4.1-nano via a single pay-per-call x402 endpoint \u2014 no OpenAI account or API key needed, pay $0.005 per request in USDC. Standard OpenAI chat.completions request/response shape, capped input and output. POST /openai/gpt-5-5 \u2014 Call OpenAI's gpt-5.5 via a single pay-per-call x402 endpoint \u2014 no OpenAI account or API key needed, pay $0.65 per request in USDC. Standard OpenAI chat.completions request/response shape, capped input and output. POST /openai/gpt-5-4 \u2014 Call OpenAI's gpt-5.4 via a single pay-per-call x402 endpoint \u2014 no OpenAI account or API key needed, pay $0.25 per request in USDC. Standard OpenAI chat.completions request/response shape, capped input and output. POST /openai/gpt-5-4-mini \u2014 Call OpenAI's gpt-5.4-mini via a single pay-per-call x402 endpoint \u2014 no OpenAI account or API key needed, pay $0.04 per request in USDC. Standard OpenAI chat.completions request/response shape, capped input and output. POST /openai/gpt-5-4-nano \u2014 Call OpenAI's gpt-5.4-nano via a single pay-per-call x402 endpoint \u2014 no OpenAI account or API key needed, pay $0.005 per request in USDC. Standard OpenAI chat.completions request/response shape, capped input and output. POST /openai/gpt-5-1 \u2014 Call OpenAI's gpt-5.1 via a single pay-per-call x402 endpoint \u2014 no OpenAI account or API key needed, pay $0.15 per request in USDC. Standard OpenAI chat.completions request/response shape, capped input and output. POST /openai/gpt-5-nano \u2014 Call OpenAI's gpt-5-nano via a single pay-per-call x402 endpoint \u2014 no OpenAI account or API key needed, pay $0.005 per request in USDC. Standard OpenAI chat.completions request/response shape, capped input and output. POST /openai/gpt-5-2 \u2014 Call OpenAI's gpt-5.2 via a single pay-per-call x402 endpoint \u2014 no OpenAI account or API key needed, pay $0.20 per request in USDC. Standard OpenAI chat.completions request/response shape, capped input and output. POST /openai/gpt-5-6-sol \u2014 Call OpenAI's gpt-5.6-sol via a single pay-per-call x402 endpoint \u2014 no OpenAI account or API key needed, pay $0.65 per request in USDC. Standard OpenAI chat.completions request/response shape, capped input and output. POST /openai/gpt-5-6-terra \u2014 Call OpenAI's gpt-5.6-terra via a single pay-per-call x402 endpoint \u2014 no OpenAI account or API key needed, pay $0.25 per request in USDC. Standard OpenAI chat.completions request/response shape, capped input and output. POST /openai/gpt-5-6-luna \u2014 Call OpenAI's gpt-5.6-luna via a single pay-per-call x402 endpoint \u2014 no OpenAI account or API key needed, pay $0.06 per request in USDC. Standard OpenAI chat.completions request/response shape, capped input and output. POST /ai-image/generate \u2014 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; ratios 1:1/16:9/9:16. POST /schema-parse/extract \u2014 Extract structured data from any unstructured text into your own JSON Schema \u2014 structured-data / information extraction, text-to-JSON, LLM data enrichment. You supply the schema; the LLM returns a matching object. Works for contacts, invoices, events, product specs, medical records, legal clauses, resumes \u2014 any shape. Returns the extracted object plus token usage; unfound fields are omitted or null. POST /classify \u2014 Classify text into your own categories \u2014 zero-shot: supply 2\u201320 labels and Claude Haiku returns the best-matching category with confidence and per-label scores. Route, tag, triage, and detect intent or topic with your own taxonomy in one call. POST /content-moderate \u2014 Moderate text content using Claude Haiku \u2014 flags categories like harassment, hate, sexual content, violence, self-harm, and spam with per-category severity and an overall allow/flag/block recommendation, so agents can screen user-generated content before publishing or storing it. POST /entity-extract \u2014 Extract named entities from text using Claude Haiku \u2014 people, organizations, locations, dates, emails, URLs, money amounts, and products \u2014 returned as structured typed arrays so agents can pull structured signals out of unstructured text in one call. POST /extract/address \u2014 Parse and normalize a freeform address string using Claude Haiku \u2014 splits it into street, city, state/region, postal code, and country, plus a normalized single-line form, so agents can clean and standardize messy address data for shipping, CRM, and verification workflows. POST /extract/contact \u2014 Extract structured contact details from text, an email signature, or webpage text using Claude Haiku \u2014 returns name, title, company, email, phone, and address as clean JSON so agents can turn unstructured contact blocks into CRM-ready records in one call. POST /extract/invoice \u2014 Extract structured data from invoice or receipt text \u2014 or directly from an invoice URL (PDF, HTML, or plain text, fetched and parsed server-side) \u2014 using Claude Haiku: returns vendor, invoice number, dates, line items, subtotal, tax, total, and currency as clean JSON for accounts-payable, expense processing, and bookkeeping automation. POST /pdf/parse \u2014 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 that are scanned images with no text layer. Up to 50 pages per call. Text layer only, no OCR: an image-only PDF returns an uncharged 422. POST /extract/resume \u2014 Extract structured data from resume/CV text using Claude Haiku \u2014 returns name, contact info, skills, work experience, and education as clean JSON arrays so agents can automate applicant screening, candidate databases, and recruiting workflows from raw resume text. POST /extract/table \u2014 Extract tabular data from messy text or HTML using Claude Haiku \u2014 detects columns and rows in unstructured content and returns clean structured JSON (columns + rows) so agents can turn pasted tables, HTML tables, and delimited text into usable data in one call. POST /markdown/clean \u2014 Convert messy HTML or text into clean, well-structured Markdown using Claude Haiku \u2014 strips boilerplate, fixes heading hierarchy, normalizes lists and links, and returns readable Markdown so agents can feed clean docs into downstream pipelines, knowledge bases, or LLM context. POST /normalize/json \u2014 Conform messy or inconsistent JSON to a target schema using Claude Haiku \u2014 renames keys, coerces types (string\u2192number, \"true\"\u2192boolean, etc.), and fills missing fields with null, returning JSON that matches the exact shape the caller specified so agents can normalize data from varied sources into one consistent structure. POST /text-summarize \u2014 Text summarizer / summarization API \u2014 condense text, Markdown, or a URL into a TL;DR plus key bullet points using Claude Haiku. Accepts raw text or a URL (fetched and extracted), enforces an input cap, and returns a clean structured summary so agents can compress documents and articles in one call. POST /text/chunk \u2014 Split text into overlapping chunks for RAG ingestion \u2014 by characters or words, with configurable chunk size and overlap. Deterministic (same input \u2192 same chunks), returns each chunk with its index and start/end offsets. No API key, no LLM. Pairs with /v1/embeddings for a full chunk\u2192embed pipeline. POST /text/stats \u2014 Instant text statistics \u2014 characters (with/without spaces), words, unique words, sentences, paragraphs, average word/sentence length, longest word, reading and speaking time. Deterministic, no LLM, no API key. For agents sizing content before summarizing, chunking, embedding, or posting. Pass text as ?text= (GET) or a JSON body (POST). POST /text-to-json \u2014 Turn unstructured text into structured JSON matching a caller-supplied schema using Claude Haiku \u2014 the agent declares the fields and types it wants, and gets back populated JSON with values pulled from the text and coerced to the right types, so agents can structure any prose into the exact shape their pipeline expects. POST /sentiment/analyze \u2014 Sentiment analysis API \u2014 analyze sentiment of text and get a text sentiment score in one call: classifies positive / negative / neutral / mixed polarity with a -1 to +1 sentiment score, plus emotion detection in text (joy, anger, sadness, fear, surprise, disgust, trust, anticipation). Aspect-based sentiment and opinion mining for customer feedback analysis \u2014 analyze reviews, support tickets, social posts, chat messages. Via Claude Haiku. POST /translate/long \u2014 Translate up to 2000 words between languages using Claude Haiku \u2014 auto-detects source, supports 30+ target languages, preserves formatting, for larger documents and articles. For short snippets use the cheaper /translate/short. POST /translate/short \u2014 Translate text between languages \u2014 text translation API for short content: translate a sentence, chat message, or up to 500 words to English, Spanish, French, Chinese, or any of 30+ languages. Language translation with auto-detected source language, formatting preserved; returns the translation plus detected source. Machine translation via Claude Haiku for agents localizing content cheaply. For longer documents use /translate/long. POST /translate/structured \u2014 Translate structured content \u2014 JSON, HTML, Markdown, templates, UI strings \u2014 without breaking structure. Preserves keys, tags, markdown, URLs, emails, variables, placeholders, code blocks, and brand names, honors a caller glossary, and validates that no placeholder was dropped, so agents can localize app content safely. POST /translate/batch \u2014 Translate many independent strings in one request \u2014 each with a caller ID preserved in the response \u2014 with per-item status, glossary and tone support, and partial success so one bad item never fails the batch, so agents can localize whole string tables in a single call. POST /event-classify \u2014 Cheap, fast \"is this a dateable event?\" filter for social and web text \u2014 one tiny Haiku call returns is_event, confidence, and a one-line reason, so agents can screen every post for free-ish and only pay for full extraction on the ones that pass. Front-end filter to /event-extract; intentionally minimal output for cost/latency discipline. POST /event-extract \u2014 Event extraction / event parsing \u2014 turn any caption, announcement, listing, or page text into a normalized calendar event via Claude Haiku. Resolves relative dates (\"this Saturday 7pm\") against post time + timezone, handles all-day/multi-day, and returns title, start/end, venue, address, city, price, organizer, url. Purpose-built for structured event data (no schema to define); pairs with /event-classify and /calendar/ics.",
      "tags": [
        "ai",
        "x402",
        "pay-per-call"
      ],
      "examples": [
        "POST https://netintel.dev/messages",
        "POST https://netintel.dev/v1/chat/completions",
        "POST https://netintel.dev/api/v1/chat/completions",
        "POST https://netintel.dev/v1/embeddings",
        "POST https://netintel.dev/api/v1/embeddings",
        "POST https://netintel.dev/embeddings",
        "POST https://netintel.dev/semantic/rank",
        "POST https://netintel.dev/openai/gpt-4o",
        "POST https://netintel.dev/openai/gpt-4-1",
        "POST https://netintel.dev/openai/gpt-4-1-mini",
        "POST https://netintel.dev/openai/gpt-4o-mini",
        "POST https://netintel.dev/openai/gpt-4-1-nano",
        "POST https://netintel.dev/openai/gpt-5-5",
        "POST https://netintel.dev/openai/gpt-5-4",
        "POST https://netintel.dev/openai/gpt-5-4-mini",
        "POST https://netintel.dev/openai/gpt-5-4-nano",
        "POST https://netintel.dev/openai/gpt-5-1",
        "POST https://netintel.dev/openai/gpt-5-nano",
        "POST https://netintel.dev/openai/gpt-5-2",
        "POST https://netintel.dev/openai/gpt-5-6-sol",
        "POST https://netintel.dev/openai/gpt-5-6-terra",
        "POST https://netintel.dev/openai/gpt-5-6-luna",
        "POST https://netintel.dev/ai-image/generate",
        "POST https://netintel.dev/schema-parse/extract",
        "POST https://netintel.dev/classify",
        "POST https://netintel.dev/content-moderate",
        "POST https://netintel.dev/entity-extract",
        "POST https://netintel.dev/extract/address",
        "POST https://netintel.dev/extract/contact",
        "POST https://netintel.dev/extract/invoice",
        "POST https://netintel.dev/pdf/parse",
        "POST https://netintel.dev/extract/resume",
        "POST https://netintel.dev/extract/table",
        "POST https://netintel.dev/markdown/clean",
        "POST https://netintel.dev/normalize/json",
        "POST https://netintel.dev/text-summarize",
        "POST https://netintel.dev/text/chunk",
        "POST https://netintel.dev/text/stats",
        "POST https://netintel.dev/text-to-json",
        "POST https://netintel.dev/sentiment/analyze",
        "POST https://netintel.dev/translate/long",
        "POST https://netintel.dev/translate/short",
        "POST https://netintel.dev/translate/structured",
        "POST https://netintel.dev/translate/batch",
        "POST https://netintel.dev/event-classify",
        "POST https://netintel.dev/event-extract"
      ]
    },
    {
      "id": "finance",
      "name": "Finance & Markets",
      "description": "GET /currency-exchange/convert \u2014 Convert any amount between 32 fiat currencies (live European Central Bank rates) and major cryptocurrencies (BTC, ETH, USDC, SOL, ICP, CELO and more, live Coinbase spot rates) \u2014 fiat\u2194fiat, crypto\u2194fiat, and crypto\u2194crypto all work. Returns converted amount, exchange rate, inverse rate, rate date, and rate source so agents can price and invoice across fiat and crypto without a paid forex API. GET /currency-exchange/batch \u2014 Convert one base currency to up to 30 targets in a single call \u2014 fiat (~200 currencies incl. SAR, AED, COP) and major crypto \u2014 ECB reference rates + Coinbase spot, no API key. Per target: rate, converted amount, rate date, source. The batch sibling of /currency-exchange/convert: 30 pairs for one $0.02 call instead of 30 singles. GET /currency-exchange/history \u2014 Daily historical exchange-rate series for any currency pair \u2014 fiat via ECB reference data, crypto via Coinbase daily closes \u2014 with min/max/average/change stats, no API key. Pass start/end dates or a days lookback (default 30). The history sibling of /currency-exchange/convert: trend and repricing context for the pairs agents already quote spot. GET /crypto/market \u2014 Structured live crypto market data for ~50 top assets in one JSON call: spot price and 24h open/high/low/volume/change (Coinbase Exchange) plus market cap, rank and circulating/total/max supply (CoinGecko). Quote in USD, EUR or GBP; defaults symbol=BTC vs=USD, so a bare call returns Bitcoin. 60s cache, keyless upstreams \u2014 the purpose-built replacement for scraping exchange price pages. GET /crypto/price \u2014 Crypto prices for up to 25 coins in one call \u2014 live cryptocurrency spot prices for BTC, ETH, SOL and more in USD, EUR, or GBP from Coinbase with Kraken and CoinGecko fallback; no API key, one flat price. Per asset: price, 24h change when the source provides it, source, cache age. 30s cache; unknown symbols land in unresolved without failing the call. 25 prices for one $0.005 call vs 25 single-symbol lookups. GET /crypto/ohlc \u2014 Historical OHLC candles for any major crypto asset \u2014 hourly or daily, up to 300 candles, with period stats (change %, high, low) \u2014 from Coinbase Exchange with Kraken fallback, no API key. Also a price-at-date mode: pass date=YYYY-MM-DD for that day's candle and close. USD, EUR, or GBP quotes; 5min cache. GET /gas/price \u2014 Live gas prices across Base, Ethereum, Arbitrum, Optimism, and Polygon with USD cost estimates for a transfer, an ERC-20 send, and a swap \u2014 keyless, one call, all chains. Per chain: gas price + EIP-1559 base/priority fee in gwei, native-token USD price, 15s cache. L2 figures are execution-gas only (L1 data fee excluded, flagged in findings). GET /token/info \u2014 Full profile for any ERC-20 token by contract address \u2014 name, symbol, decimals, supply from the chain itself, plus live price, liquidity, and volume from DEX data \u2014 Base and Ethereum, no API key. Holder count included; identity read on-chain so it can't lie or be rate-limited away. 10min cache; unlisted tokens return nulls with a no_dex_liquidity finding. GET /wallet/balance \u2014 Native + USDC + custom-token balances for any wallet on Base, Ethereum, or Solana \u2014 with USD estimates \u2014 straight from public RPCs, no API key. Raw units as decimal strings plus formatted numbers; add up to 10 ERC-20 contracts via tokens=. 60s cache; an empty, never-used address is a real answer (zeros + no_activity_detected finding). GET /wallet/intel \u2014 Counterparty due-diligence for any Base or Ethereum wallet \u2014 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 counterparties, 30d activity shape, contract-or-EOA, score + A\u2013F grade. An empty or fresh wallet is a real answer (low score + flags). 5min cache. POST /money/parse \u2014 Normalize any messy money string into a typed decimal amount plus ISO 4217 currency \u2014 handles symbols, locale separators ($1,234.56 vs \u20ac1.234,56), magnitude suffixes (1.2M), accounting notation, and natural-language amounts \u2014 so agents can clean money values before converting or storing them, with no external data and a deterministic fast path. POST /iban/validate \u2014 Validate any IBAN offline \u2014 mod-97 check digits, per-country structure, bank/branch extraction, and pretty formatting for ~80 countries \u2014 deterministic, instant, no upstream. A structurally invalid IBAN is a real answer: valid:false + findings naming exactly what failed. Pass iban as ?iban= (GET) or a JSON body (POST). GET /market/snapshot \u2014 One-call market briefing for agents \u2014 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 with graceful partial failure; any dead section is null with a finding, never a failed call. 60s cache; no API key.",
      "tags": [
        "finance",
        "x402",
        "pay-per-call"
      ],
      "examples": [
        "GET https://netintel.dev/currency-exchange/convert",
        "GET https://netintel.dev/currency-exchange/batch",
        "GET https://netintel.dev/currency-exchange/history",
        "GET https://netintel.dev/crypto/market",
        "GET https://netintel.dev/crypto/price",
        "GET https://netintel.dev/crypto/ohlc",
        "GET https://netintel.dev/gas/price",
        "GET https://netintel.dev/token/info",
        "GET https://netintel.dev/wallet/balance",
        "GET https://netintel.dev/wallet/intel",
        "POST https://netintel.dev/money/parse",
        "POST https://netintel.dev/iban/validate",
        "GET https://netintel.dev/market/snapshot"
      ]
    },
    {
      "id": "weather",
      "name": "Weather",
      "description": "POST /weather/current \u2014 Live weather + 3-day forecast for any city or lat/lon worldwide \u2014 temperature, feels-like, humidity, wind, precipitation, cloud cover, and a plain-language condition. Give a city name (geocoded for you) or coordinates. No API key, metric or imperial units. Pass params as query (GET) or a JSON body (POST). POST /weather/forecast \u2014 Multi-day weather forecast for any city or lat/lon worldwide \u2014 up to 16 days of daily highs/lows, precipitation & probability, UV, sunrise/sunset, wind, and plain-language conditions, plus optional next-24h hourly. Give a city name (geocoded) or coordinates. No API key, metric or imperial. Pass params as query (GET) or a JSON body (POST).",
      "tags": [
        "weather",
        "x402",
        "pay-per-call"
      ],
      "examples": [
        "POST https://netintel.dev/weather/current",
        "POST https://netintel.dev/weather/forecast"
      ]
    },
    {
      "id": "prediction",
      "name": "Prediction Markets",
      "description": "POST /prediction/markets \u2014 Live prediction-market odds from Polymarket \u2014 list the top active markets by volume, or search by keyword. Each result has the question, outcomes with current prices (implied probabilities), 24h/total volume, liquidity, and resolution date. No API key. Great for agents tracking real-world event probabilities (elections, crypto, sports, econ). Pass params as query (GET) or a JSON body (POST). POST /prediction/market \u2014 Full detail for ONE Polymarket prediction market by id or slug \u2014 question, description, every outcome with its current price (implied probability), volume, liquidity, open/close dates, resolution source, category, and status. No API key. The drill-in companion to /prediction/markets (browse/search): find a market there, then pull its full state here. Pass id or slug as query (GET) or a JSON body (POST).",
      "tags": [
        "prediction",
        "x402",
        "pay-per-call"
      ],
      "examples": [
        "POST https://netintel.dev/prediction/markets",
        "POST https://netintel.dev/prediction/market"
      ]
    },
    {
      "id": "utilities",
      "name": "Utilities",
      "description": "GET /cron-parser/explain \u2014 Parse any cron expression into a human-readable explanation, validate its syntax, compute the next 5 scheduled run times (UTC), and detect common patterns (daily, weekly, monthly, hourly) \u2014 accepts standard numeric fields plus JAN-DEC/SUN-SAT name tokens \u2014 so agents can understand, validate, and work with cron schedules without implementing their own cron parser. GET /convert \u2014 Convert any physical measurement \u2014 length, mass, volume, temperature, area, speed, pressure, energy, time, data storage & transfer rate, power, frequency, force, fuel economy (mpg/L per 100 km), angle. Auto-detects the category, handles US/imperial ambiguity, reports assumptions. Accepts natural-language queries (\"what is 5 km in miles\") and volume\u2194mass via density/substance. Deterministic and instant. POST /json/repair \u2014 Repair malformed JSON into valid JSON \u2014 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 optional Haiku fallback, plus optional schema validation and type coercion \u2014 so agents can rescue broken model output or dirty data in one call. POST /schema/validate \u2014 Validate data against a supplied schema \u2014 checks required fields, nested objects, arrays, enums, string formats, numeric ranges, lengths, and additional-property rules deterministically, with optional type coercion and repair, returning precise errors with JSON paths so agents can verify structured data before acting on it. POST /schema/map \u2014 Transform a source object into a target schema \u2014 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 between systems with per-field confidence and a clear report of what mapped and what didn't. POST /calendar/ics \u2014 Turn event fields into a valid RFC 5545 .ics calendar file \u2014 handles timed and all-day events, escaping, line folding, and a deterministic UID for idempotent re-import \u2014 so agents can publish events that import cleanly into Google, Apple, and Outlook calendars. Add ?download=1 (or Accept: text/calendar) to receive the raw .ics file with a Content-Disposition attachment header instead of the JSON envelope. Pure compute, no LLM. GET /holidays/check \u2014 Look up public holidays for any country and year, check whether a specific date is a holiday, and calculate the next business day \u2014 so agents can handle scheduling, SLA calculations, deadline setting, and date-aware workflows without hardcoding country-specific holiday rules. POST /jwt-inspector/decode \u2014 Decode and inspect any JWT token \u2014 extracts header algorithm, payload claims, expiry status, issued-at time, audience, issuer, and subject without requiring the secret \u2014 so agents can debug auth issues, check token expiry, and extract identity claims from tokens in pipelines. POST /lang-detect/analyze \u2014 Detect the language of any text input using stopword-set matching and Unicode script analysis \u2014 returns the detected language, ISO code, a high/medium/low confidence level, and top alternative languages so agents can route multilingual content, trigger translation workflows, and classify text without a paid NLP API. GET /npm-intel/analyze \u2014 Fetch metadata for any npm package \u2014 download counts, latest version, version count, dependency/devDependency counts, maintainers, repository URL, license, and a health score based on maintenance signals \u2014 so agents can evaluate dependencies, audit package ecosystems, and assess supply chain risk. (Returns counts, not the full version/dependency lists.)",
      "tags": [
        "utilities",
        "x402",
        "pay-per-call"
      ],
      "examples": [
        "GET https://netintel.dev/cron-parser/explain",
        "GET https://netintel.dev/convert",
        "POST https://netintel.dev/json/repair",
        "POST https://netintel.dev/schema/validate",
        "POST https://netintel.dev/schema/map",
        "POST https://netintel.dev/calendar/ics",
        "GET https://netintel.dev/holidays/check",
        "POST https://netintel.dev/jwt-inspector/decode",
        "POST https://netintel.dev/lang-detect/analyze",
        "GET https://netintel.dev/npm-intel/analyze"
      ]
    }
  ],
  "x402": {
    "protocol": "x402",
    "scheme": "exact",
    "network": "eip155:8453",
    "networks": [
      "eip155:8453",
      "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"
    ],
    "payTo": "0xdaDc335482AD545296Fd7b28518A251fFCbEb9Df",
    "currency": "USDC",
    "priceRange": {
      "min": "$0.001",
      "max": "$0.100"
    },
    "manifest": "https://netintel.dev/.well-known/x402",
    "openapi": "https://netintel.dev/openapi.json",
    "llmsTxt": "https://netintel.dev/llms.txt",
    "note": "Make a normal HTTP request; an unpaid request returns HTTP 402 with payment requirements. Retry with an X-PAYMENT header. Failed calls (HTTP >= 400) are never charged."
  }
}