Free network utilities,
as tools for your AI agent.
agents.btoven.net is a single remote MCP
endpoint that connects any MCP client to the BTOVEN NETWORK toolkit — built around two
pillars: internet security testing
(headers, email auth, PGP key discovery, RDAP) and
privacy, data sovereignty and anonymity
(private metasearch, translation, leak checkers). Anonymous, read-only and free.
Two pillars, one gateway: internet
security and privacy, data
sovereignty and anonymity. Every tool is a plain HTTP lookup against a BTOVEN service —
the same public API the testers document in their own
llms.txt.
14 tools · all read-only
Security testing
Attack surface and posture of any domain: headers, email auth, exposed agent skills, RFC 9116.5
security_headers_check
securityGET
Scan the HTTPS security headers of a domain and return a 0-100 score, the grade class, which headers are present and which are missing (CSP, HSTS, X-Frame-Options, etc.). Read-only, safe to retry.
Validate the /.well-known/security.txt file of a domain: fetch results, RFC 9116 validation successes and errors (expiry, contact, encryption fields, HTTPS requirement). Read-only, safe to retry.
Check the email authentication posture of a domain: SPF, DKIM selectors, DMARC, MX and CAA records with a 0-100 score. Useful before sending mail from a new domain. Read-only, safe to retry.
Return the agent skills (MCP-style tools/capabilities) a domain advertises via /.well-known/agent-skills/index.json, plus fetch/parse diagnostics. Read-only, safe to retry.
Returns: {domain, index_url, skills_count, skills[], plus fetch/parse/validation diagnostics}.
url
required — Domain or URL to query for advertised agent skills
One-call consolidated security report for a domain: runs security headers, security.txt, email auth and WHOIS/DNSSEC lookups server-side in parallel, then returns scores, validity flags and PRIORITIZED recommendations with reasons. Read-only and idempotent; every sub-result keeps its own cache. Use this first when auditing a domain, then the individual tools for follow-ups.
Returns: {domain, scores{security_headers, email_auth}, valid{securitytxt, dnssec}, recommendations_count, recommendations[{priority, action, why}] max 10, details? (only with details=full), errors?}
domain
required — Domain to audit (example.com)
details
default: summary — 'summary' (scores+recommendations only, compact) or 'full' (adds the 4 sub-results as evidence)
Encrypted key discovery (WKD/DANE), search without tracking, translation without a third-party SaaS.5
wkd_lookup
privacyGET
Look up an OpenPGP key via Web Key Directory (WKD), trying the Advanced method (openpgpkey subdomain) and the Direct method. Returns whether a key was found and any fetch errors. Read-only, safe to retry.
Validate the OPENPGPKEY (TYPE 61) DNS record of an email address, secured by DNSSEC (RFC 7929 DANE-OPENPGP). Returns whether a key was published and DNS/record diagnostics. Read-only, safe to retry.
Returns: {email, dns_name, key_found, plus DNS/record errors[] and successes[]}.
email
required — Email address whose OPENPGPKEY record should be checked
Privacy-respecting metasearch across Google, Bing, DuckDuckGo, Qwant, Wikipedia and more via the BTOVEN SearXNG instance. Returns titles, URLs and snippets with no tracking. Read-only, safe to retry.
Returns: {query, results[{title, url, snippet max 300 chars, engine}] max 10, answers[], suggestions[]}.
q
required — Search query
categories
default: general — Comma-separated categories: general, images, news, videos, music, it, science, files
language
optional — UI/results language code (en, es, de...). Auto if omitted
Translate text between languages using the self-hosted LibreTranslate instance. Deterministic for the same input (source/target pinned), so it is safe to retry. Read-only: nothing is stored.
Returns: {translated_text, detected_language?} — deterministic for the same input and languages.
q
required — Text to translate
source
default: en — Source language code (auto-detect if omitted)
Reveal what an IP address exposes about its holder: reverse DNS, ISP, organization, country/region/city, timezone and coordinates. Use it to audit your own egress IPs (VPN/proxy/runner) for location or identity leaks. Read-only, safe to retry.
Returns: {reverse[], isp, org, country, region, city, timezone, lat, lon} for the inspected IP.
List the languages available for translation as a COMPACT list of codes and names (target pairs are not included to save tokens — they remain at upstream GET /languages). Static data, safe to retry.
Returns: {count, languages[{code, name}]} — compact list without target pairs (per-language targets stay at upstream GET /languages).
curl example
curl -s "https://translate.btoven.net/languages"
whois_summary
utilityGET
Quick registration summary of a domain: registered or not, registrar, creation date and DNSSEC status (signed delegation or not) — useful to check the sovereignty posture of a domain in one call. Read-only.
Resolve the favicon of a domain and return its metadata: source URL, dimensions, format, byte size and dominant color palette — a quick brand/identity fingerprint of a site without loading it. Read-only.
Returns: {url, sourceUrl, width, height, format, bytes, source, palette[] of hex colors}.
domain
required — Domain whose favicon should be resolved (example.com)
Your MCP client calls a tool over Streamable HTTP at
agents.btoven.net/mcp. No session, no state —
each request stands alone.
2 · gateway
The server validates arguments against tools.yaml,
applies per-IP rate limits, checks its in-memory cache and summarizes the response
for LLM consumption.
3 · services
It fans out to BTOVEN services (*.btoven.net) over
their public JSON APIs — each one an independent, self-hosted project you can also run alone.
Every failure is machine-readable: tool errors return
isError: true with one compact JSON envelope
{"error":"…","retry":"…","retry_after_s":N}
so the client reacts instead of guessing — today with rate limits, tomorrow with x402
payments (shape documented, not yet active).
Code / HTTP
Cuándo
Reacción del cliente
Estado
rate_limited · 429
Límite por IP alcanzado (también header transport)
Esperar retry_after_s / Retry-After, reintentar una vez
live
upstream_unavailable · 503
Upstream caído o saturado
Backoff exponencial con jitter
live
timeout · 504
Upstream sin respuesta
Backoff y reintentar una vez
live
upstream_error · invalid_arguments
4xx: input rechazado o argumentos malos
Corregir argumentos; reintentar igual falla igual
live
payment_required · 402
Tool de pago (gate x402 por ruta)
Nunca en bucle: mostrar el costo al usuario, continuar solo con pago aprobado; existe alternativa gratuita
planned
En cada respuesta /mcp:
X-RateLimit-Limit ·
-Remaining ·
-Reset ·
X-Cache-Policy.
Catálogo completo (live + planned) en el recurso MCP
btoven://policy. Authentik
(401) queda para cuando haya identidad — hoy es opcional y anónimo.
FAQ
› Do you store anything about me?
No. There is no user database, no accounts and no client logging. Results are cached in memory with a short TTL to keep upstream services fast, and the cache is keyed by tool + arguments only.
› What does idempotent mean here?
All tools are read-only lookups. Making the same call twice gives the same result and has no side effects, so agents can safely retry after timeouts or rate-limit responses.
› Is it really free? What is the catch?
The whole BTOVEN NETWORK is free and self-hosted with no usage quotas for humans and agents. Abuse is handled with per-IP rate limits, not with accounts. Enterprise SLA support lives at BTOVEN.com.
› Can I add or customize endpoints?
Yes — tools are declared in a single tools.yaml (name, upstream URL template, parameters, response transform). The server loads it at startup: adding a tool is a config change, not a code change.
› Will there be paid tools or API keys?
Not for now. The design leaves room for both: an optional x402 payment gate per route (crypto micropayments) and OIDC/API-key auth via Authentik — both can be enabled later without rewriting the tools.
› How do I run my own instance?
Clone the repo, `npm install && npm run build`, then `npm start`. Point tools.yaml at your own service instances. No database, no migrations, no background jobs.
› What happens if I hit the rate limit — or when paid tools arrive?
Today: HTTP 429 with Retry-After and X-RateLimit-* headers, or a tool error envelope like {"error":"rate_limited","retry_after_s":30,"retry":"honor-retry-after"} — wait that long, retry once, never loop. In the future, paid tools (x402) will answer with error "payment_required" (HTTP 402): the documented behavior is to show the cost to the user and continue only with an approved payment — free tools stay free. The full catalog (live + planned) lives in the MCP resource btoven://policy and at /#errors.