{"protocolVersion":"0.3.0","name":"NetIntel","description":"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.","url":"https://netintel.dev","preferredTransport":"HTTP+JSON","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 — DNS lookup / nslookup / dig API — resolve the common DNS record types (A, AAAA, MX, TXT, NS, CNAME, SOA, PTR) for a domain. Parses SPF/DMARC from TXT plus DKIM at the default._domainkey selector, and cross-checks A records across Google/Cloudflare/Quad9 resolvers for propagation consistency. GET /dns-propagation/check — Query a domain's DNS record across 10 geographically distributed public resolvers simultaneously — 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 — 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 — 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 — Performs a TLS handshake to inspect the certificate chain, probes supported TLS versions (1.0–1.3), detects weak keys and expiry issues, and returns an overall security grade (A/B/C/F). GET /cert-transparency/lookup — Query the crt.sh certificate transparency log database to enumerate all SSL certificates ever issued for a domain — 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","GET https://netintel.dev/cert-transparency/lookup"]},{"id":"domain","name":"Domain & WHOIS","description":"GET /whois-rdap/lookup — WHOIS domain lookup via RDAP — registrar, creation/expiry/updated dates, 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 — Check if a domain name is available for registration by querying RDAP and DNS — 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 — 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 — Check availability of many domain names across multiple TLDs in a single call — 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' — re-check surprising availables on premium names. GET /domain-age/check — Determine a domain's age from registration data and archival history — 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 — including .io and TLDs without public RDAP. GET /domain-report/analyze — One call returns a complete intelligence profile for a domain — WHOIS registration, DNS records, SSL certificate, detected tech stack, and blacklist status — aggregated into a single risk-scored report so agents can fully vet a domain without orchestrating five separate lookups. GET /domain-report/full — One premium call returns a complete six-part domain profile — DNS records, SSL certificate, WHOIS registration, cloud fingerprint, technology stack, and security headers — 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 — 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 per-signal breakdown and actionable flags. Partial results never read as safe. POST /domain/vet — Vet and pick a domain in one call — 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. Search terms: vet a domain, pick a brand name, check domain before building, choose startup name. GET /domain-appraise/estimate — Estimate the market value tier of a domain name using transparent heuristics — length, TLD premium, dictionary-word presence, pronounceability, keyword value, and numeric/hyphen penalties — 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 — One call combines domain availability, heuristic value appraisal, and TLD pricing into a single acquisition brief — 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 — 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 — 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 — Reference registration/renewal/transfer pricing from a curated table of ~21 common TLDs — 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 — for budgeting and spotting predatory renewal markups; TLDs outside the table return pricing:null. GET /typosquat/scan — Generate common typo and look-alike variations of a domain and check which are already registered — 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 — Calculates IPv4/IPv6 subnet details from CIDR notation — 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 — Resolves an IP address or domain to its Autonomous System Number (ASN), network owner, country, and hosting/cloud classification — agents get structured network ownership context plus a trust score to assess infrastructure risk. GET /ip-blacklist/check — Check an IP address against 15 major DNS blacklists (Spamhaus, Barracuda, SORBS, etc.) simultaneously — 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 — Check an IP address against AbuseIPDB and AlienVault OTX threat feeds. Returns a composite risk score, threat categories, malware families, and full source data. GET /ip-geo/locate — IP geolocation lookup (geoip / IP location API) — 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 — One call returns a complete risk profile for an IP address — geolocation, ASN/network owner, blacklist status across multiple DNSBLs, and proxy/VPN/hosting classification — aggregated into a single verdict so agents can make a block/allow decision without calling four separate IP endpoints. GET /ip-report/full — One premium call returns a complete five-part IP profile — geolocation, ASN/network ownership, multi-DNSBL blacklist status, threat reputation, and an aggregate risk verdict — 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 — Email deliverability & domain security check — validates SPF, DKIM (multi-selector), and DMARC, detects spoofing and misconfigurations, and returns an A–F email security grade with transparent deductions. Anti-spam / anti-phishing readiness for any sending domain. GET /email-intel/analyze — Email verification & deliverability check (email validator / verifier) — 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. GET /email-report/full — 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 — each section run concurrently with graceful partial-failure handling — so agents can fully vet an email and its domain in one request.","tags":["email","x402","pay-per-call"],"examples":["POST https://netintel.dev/email-auth","GET https://netintel.dev/email-intel/analyze","GET https://netintel.dev/email-report/full"]},{"id":"web","name":"Web","description":"GET /redirect/trace — 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–F). GET /security-headers/analyze — 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–F). GET /tech-fingerprint/analyze — Fetch a URL and detect the full technology stack from HTTP response headers, HTML meta tags, cookies, and script patterns — returns CMS, framework, CDN, server, analytics, and security tool detections so agents can profile any web target without a browser. GET /og-scraper/extract — Fetch any public URL and extract structured metadata — Open Graph tags, Twitter Card tags, canonical URL, title, description, favicon, article author/date, JSON-LD structured data, and content type — so agents can preview, classify, and enrich links without building their own scraper. GET /page-extract/read — Fetch any article or web page and extract clean readable text stripped of navigation, ads, and boilerplate — 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. GET /web/extract — Extract article / main content from any URL or PDF to clean, LLM-ready Markdown (web scraper / reader / html-to-markdown) — 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 so agents can read articles and documents without a browser or paid scraping service. GET /robots-txt/analyze — Fetch and parse a domain's robots.txt file — 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 — so agents can respect crawl policies and locate sitemaps before scraping. GET /rss-parser/fetch — 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 — 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 — Fetch and parse any XML sitemap or sitemap index file — 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 — so agents can enumerate site content for crawling, indexing, and SEO analysis. GET /wayback/lookup — 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 — 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","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":"security","name":"Security","description":"GET /breach-check/password — Check if a password has appeared in known data breaches using the HaveIBeenPwned Pwned Passwords API with k-anonymity — the full password is never transmitted, only a 5-character SHA-1 hash prefix — returns breach count and a risk classification so agents can enforce password policies without storing or exposing credentials. GET /url-safety/check — Check a URL against URLhaus malware database and heuristic phishing pattern analysis — 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 — One call vets a URL end to end — traces its full redirect chain, checks it against the URLhaus malware database plus phishing heuristics, audits its security headers, and inspects its SSL certificate — concurrent with graceful partial-failure handling, so agents get a complete safety verdict before following a link.","tags":["security","x402","pay-per-call"],"examples":["GET 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 — Fingerprints a domain's cloud infrastructure by probing DNS records, HTTP headers, and PTR lookups to detect CDN, WAF, hosting, DNS provider, and email provider with confidence scores and an infrastructure security grade (A–F). GET /username-check/lookup — Check username availability across 20+ social platforms and developer sites simultaneously — 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 — 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) — 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 — Fetch public metadata for any GitHub repository — stars, forks, open issues, language breakdown, license, contributors, last commit date, topics, and an activity/health score — 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 — OpenAI-compatible chat completions over x402, answered by Claude Sonnet 4.6 — 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 — OpenAI-compatible chat completions gateway — standard /v1/chat/completions path and request shape, model chosen in the body (gpt-4o, gpt-4.1, gpt-5.6-luna, minis, nanos). Flat $0.10 per call in USDC via x402, no OpenAI account or API key. Pricier models have dedicated endpoints; GET /v1/models (free) lists every model with its endpoint and price. POST /api/v1/chat/completions — OpenAI-compatible chat completions gateway (alias of /v1/chat/completions for api/v1-style base URLs) — standard request shape, model chosen in the body (gpt-4o, gpt-4.1, minis, nanos). Flat $0.10 per call in USDC via x402, no API key. Free model catalog: GET /v1/models. POST /v1/embeddings — OpenAI-compatible text embeddings API — 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 — OpenAI-compatible text embeddings API (alias of /v1/embeddings for api/v1-style base URLs) — 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 /semantic/rank — Semantic similarity ranking — 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 — Call OpenAI's gpt-4o via a single pay-per-call x402 endpoint — no OpenAI account or API key needed, pay $0.10 per request in USDC. Standard OpenAI chat.completions request/response shape, capped input and output. Search terms: OpenAI, gpt-4o, chat completion, LLM, no API key. POST /openai/gpt-4-1 — Call OpenAI's gpt-4.1 via a single pay-per-call x402 endpoint — 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. Search terms: OpenAI, gpt-4.1, chat completion, LLM, no API key. POST /openai/gpt-4-1-mini — Call OpenAI's gpt-4.1-mini via a single pay-per-call x402 endpoint — 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. Search terms: OpenAI, gpt-4.1-mini, chat completion, LLM, no API key. POST /openai/gpt-4o-mini — Call OpenAI's gpt-4o-mini via a single pay-per-call x402 endpoint — 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. Search terms: OpenAI, gpt-4o-mini, chat completion, LLM, no API key. POST /openai/gpt-4-1-nano — Call OpenAI's gpt-4.1-nano via a single pay-per-call x402 endpoint — 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. Search terms: OpenAI, gpt-4.1-nano, chat completion, LLM, no API key. POST /openai/gpt-5-5 — Call OpenAI's gpt-5.5 via a single pay-per-call x402 endpoint — 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. Search terms: OpenAI, gpt-5.5, chat completion, LLM, no API key. POST /openai/gpt-5-4 — Call OpenAI's gpt-5.4 via a single pay-per-call x402 endpoint — 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. Search terms: OpenAI, gpt-5.4, chat completion, LLM, no API key. POST /openai/gpt-5-4-mini — Call OpenAI's gpt-5.4-mini via a single pay-per-call x402 endpoint — 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. Search terms: OpenAI, gpt-5.4-mini, chat completion, LLM, no API key. POST /openai/gpt-5-4-nano — Call OpenAI's gpt-5.4-nano via a single pay-per-call x402 endpoint — 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. Search terms: OpenAI, gpt-5.4-nano, chat completion, LLM, no API key. POST /openai/gpt-5-1 — Call OpenAI's gpt-5.1 via a single pay-per-call x402 endpoint — 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. Search terms: OpenAI, gpt-5.1, chat completion, LLM, no API key. POST /openai/gpt-5-nano — Call OpenAI's gpt-5-nano via a single pay-per-call x402 endpoint — 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. Search terms: OpenAI, gpt-5-nano, chat completion, LLM, no API key. POST /openai/gpt-5-2 — Call OpenAI's gpt-5.2 via a single pay-per-call x402 endpoint — 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. Search terms: OpenAI, gpt-5.2, chat completion, LLM, no API key. POST /openai/gpt-5-6-sol — Call OpenAI's gpt-5.6-sol via a single pay-per-call x402 endpoint — 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. Search terms: OpenAI, gpt-5.6-sol, chat completion, LLM, no API key. POST /openai/gpt-5-6-terra — Call OpenAI's gpt-5.6-terra via a single pay-per-call x402 endpoint — 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. Search terms: OpenAI, gpt-5.6-terra, chat completion, LLM, no API key. POST /openai/gpt-5-6-luna — Call OpenAI's gpt-5.6-luna via a single pay-per-call x402 endpoint — 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. Search terms: OpenAI, gpt-5.6-luna, chat completion, LLM, no API key. POST /ai-image/generate — 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 — Extract structured data from any unstructured text into your own JSON Schema — 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 — any shape. Returns the extracted object plus token usage; unfound fields are omitted or null. POST /classify — Text classification API — zero-shot text classifier / categorization: caller supplies 2–20 labels and Claude Haiku returns the best-matching category with confidence and per-label scores. Route, tag, triage, and detect intent/topic with your own taxonomy in one call. POST /content-moderate — Moderate text content using Claude Haiku — 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 — Extract named entities from text using Claude Haiku — people, organizations, locations, dates, emails, URLs, money amounts, and products — returned as structured typed arrays so agents can pull structured signals out of unstructured text in one call. POST /extract/address — Parse and normalize a freeform address string using Claude Haiku — 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 — Extract structured contact details from text, an email signature, or webpage text using Claude Haiku — 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 — Extract structured data from invoice or receipt text — or directly from an invoice URL (PDF, HTML, or plain text, fetched and parsed server-side) — 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 /extract/resume — Extract structured data from resume/CV text using Claude Haiku — 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 — Extract tabular data from messy text or HTML using Claude Haiku — 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 — Convert messy HTML or text into clean, well-structured Markdown using Claude Haiku — 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 — Conform messy or inconsistent JSON to a target schema using Claude Haiku — renames keys, coerces types (string→number, \"true\"→boolean, 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 — Text summarizer / summarization API — 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-to-json — Turn unstructured text into structured JSON matching a caller-supplied schema using Claude Haiku — 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 — Sentiment analysis API — 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 — analyze reviews, support tickets, social posts, chat messages. Via Claude Haiku. POST /translate/long — Translate up to 2000 words between languages using Claude Haiku — 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 — Translate text between languages — 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 — Translate structured content — JSON, HTML, Markdown, templates, UI strings — 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 — 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 string tables in a single call. POST /event-classify — Cheap, fast \"is this a dateable event?\" filter for social and web text — 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 — Event extraction / event parsing — 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/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/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-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":"utilities","name":"Utilities","description":"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 detect common patterns (daily, weekly, monthly, hourly) — accepts standard numeric fields plus JAN-DEC/SUN-SAT name tokens — so agents can understand, validate, and work with cron schedules without implementing their own cron parser. GET /currency-exchange/convert — 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) — fiat↔fiat, crypto↔fiat, and crypto↔crypto 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 /crypto/market — 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 — the purpose-built replacement for scraping exchange price pages. GET /convert — Convert any physical measurement — 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↔mass via density/substance. Deterministic and instant. POST /money/parse — Normalize any messy money string into a typed decimal amount plus ISO 4217 currency — handles symbols, locale separators ($1,234.56 vs €1.234,56), magnitude suffixes (1.2M), accounting notation, and natural-language amounts — so agents can clean money values before converting or storing them, with no external data and a deterministic fast path. POST /json/repair — 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 optional Haiku fallback, plus optional schema validation and type coercion — so agents can rescue broken model output or dirty data in one call. POST /schema/validate — 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 precise errors with JSON paths so agents can verify structured data before acting on it. POST /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 between systems with per-field confidence and a clear report of what mapped and what didn't. POST /calendar/ics — Turn event fields into a valid RFC 5545 .ics calendar file — handles timed and all-day events, escaping, line folding, and a deterministic UID for idempotent re-import — 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 — Look up public holidays for any country and year, check whether a specific date is a holiday, and calculate the next business day — so agents can handle scheduling, SLA calculations, deadline setting, and date-aware workflows without hardcoding country-specific holiday rules. GET /jwt-inspector/decode — Decode and inspect any JWT token — extracts header algorithm, payload claims, expiry status, issued-at time, audience, issuer, and subject without requiring the secret — so agents can debug auth issues, check token expiry, and extract identity claims from tokens in pipelines. POST /lang-detect/analyze — Detect the language of any text input using stopword-set matching and Unicode script analysis — 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 — Fetch metadata for any npm package — download counts, latest version, version count, dependency/devDependency counts, maintainers, repository URL, license, and a health score based on maintenance signals — 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/currency-exchange/convert","GET https://netintel.dev/crypto/market","GET https://netintel.dev/convert","POST https://netintel.dev/money/parse","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","GET 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.002","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."}}