Agent Tools
Back to MCP servers
● healthy

skills: {'id': 'health_check', 'name': 'health_check', 'description': "Returns a minimal status object confirming the API is alive. Use this to verify\nconnectivity before chaining other calls, or as a liveness check in a workflow.\n\nUse this tool when:\n- You need to verify the API is reachable before starting a multi-step investigation.\n- A prior call failed with a 503 or 504 and you want to confirm the service recovered.\n- You are debugging connectivity from a new environment.\n\nDo NOT use this tool when:\n- You want actual tracker data — use `get_domain` or `search` instead.\n- You want to check a specific domain — this returns nothing domain-specific.\n\nInputs:\n- None.\n\nReturns:\n- `ok`: always true if the API is up.\n- `ts`: ISO 8601 timestamp of the server's current time.\n\nCost:\n- Free. No API key required. Not rate-limited.\n\nLatency:\n- Typical: <50ms, p99: <200ms.\n", 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'get_domain', 'name': 'get_domain', 'description': "Returns the complete surveillance intelligence record for a domain name. If the\ndomain is in TunnelMind's tracker database (80,000+ entries), the response includes\ntracker category, risk score, fingerprinting data, cookie persistence, IAB TCF\npurposes, and the owning corporate entity. If the domain is not in the database,\na live probe is automatically run: RDAP registration data, DNS records (MX, SPF,\nTXT verification tokens), HTTP headers, and CSP third-party actors are fetched\nfresh from the edge and returned.\n\nUse this tool when:\n- You need to know whether a specific domain tracks users, and how aggressively.\n- You are researching who owns a domain and what corporate entity controls it.\n- You want to check HTTP security headers and third-party services embedded in a site.\n- You are building a risk score for a domain before routing traffic through it.\n\nDo NOT use this tool when:\n- You want to search by keyword or category — use `search` instead.\n- You want all domains for an entity — use `get_entity` instead.\n\nInputs:\n- `domain` (path, required): Domain name. Strip `www.` prefix — it is removed automatically.\n Subdomains are resolved to the parent: `ads.doubleclick.net` → `doubleclick.net`.\n Examples: `doubleclick.net`, `google-analytics.com`, `intercom.io`.\n\nReturns:\n- Full `DomainRecord`. Free tier returns the domain, category, score, prevalence, and\n entity name. Pro/enterprise additionally return `tcf_vendor_id`, `tcf_purposes`,\n `tcf_features`, and `disconnect_cats`.\n- If the domain is not in the tracker database, `live_lookup: true` is set and\n RDAP/DNS/HTTP probe results are returned instead of tracker fields.\n- 404 if the domain cannot be found via live probe either (unknown TLD, unreachable).\n\nCost:\n- Free tier: included in 50 req/day limit. Pro/enterprise: included in plan.\n\nLatency:\n- Database hit: typical <100ms, p99 <300ms.\n- Live probe: typical 2-5s, p99 10s (external DNS/HTTP calls).\n", 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'list_domains', 'name': 'list_domains', 'description': "Returns a paginated list of domains from the tracker database. Results are ordered\nalphabetically by domain name and support cursor-based pagination for full traversal.\nFiltering by category and minimum score allows targeted data extraction.\n\nUse this tool when:\n- You want to enumerate all known ad-tech or analytics domains above a risk threshold.\n- You need a dataset of tracker domains for offline analysis.\n- You are paginating through a category to build a block list.\n\nDo NOT use this tool when:\n- You need data for a specific domain — use `get_domain` instead.\n- You are searching by keyword — use `search` instead.\n- You want domains belonging to a specific company — use `get_entity` instead.\n\nInputs:\n- `category` (query, optional): Filter by surveillance category. One of: `ad_tech`,\n `analytics`, `social`, `fingerprinting`, `content`, `cdn`, `other`.\n- `min_score` (query, optional): Integer 0-100. Exclude domains scoring below this value.\n- `limit` (query, optional): Number of results per page. Max 100 (paid), 20 (free). Default 50.\n- `cursor` (query, optional): Pagination cursor from the previous response's `next_cursor` field.\n\nReturns:\n- Array of domain list items (domain, category, score, prevalence, entity summary).\n- `meta.has_more`: true if more pages exist.\n- `meta.next_cursor`: pass as `cursor` to get the next page.\n- `meta.count`: number of results in this page.\n\nCost:\n- Free tier: up to 20 results/page, 50 req/day. Pro/enterprise: up to 100 results/page.\n\nLatency:\n- Typical: <200ms, p99: <500ms.\n", 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'get_entity', 'name': 'get_entity', 'description': 'Returns an entity record for a surveillance company or data broker, including its\nindustry, estimated annual data value per user (in USD), categories of personal data\ncollected, and the full list of domains it controls. Free tier returns 5 domains,\npaid returns up to 200.\n\nUse this tool when:\n- You want to understand what corporate entity owns or controls a tracker domain.\n- You need to assess the total surveillance footprint of a company (e.g., Alphabet,\n Meta, Oracle).\n- You are building a corporate surveillance graph and need domain-to-entity mapping.\n\nDo NOT use this tool when:\n- You have a domain and need its category — use `get_domain` instead.\n- You want to browse entities by industry — use `list_entities` instead.\n- You are searching for an entity by name — use `search` instead.\n\nInputs:\n- `slug` (path, required): URL-safe entity identifier (lowercase, hyphens). Examples:\n `alphabet`, `meta`, `oracle-data-cloud`, `the-trade-desk`.\n\nReturns:\n- Full `EntityRecord` with data categories, estimated data cost, and associated domains.\n- `domains`: array of top-scoring domains (5 for free tier, 200 for paid).\n- Pro/enterprise additionally return `website` and `description` fields.\n\nCost:\n- Free tier: included in 50 req/day limit. Pro/enterprise: included in plan.\n\nLatency:\n- Typical: <150ms, p99: <400ms.\n', 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'list_entities', 'name': 'list_entities', 'description': "Returns a paginated list of corporate entities in the TunnelMind surveillance\ndatabase. Includes data categories, estimated data value, and industry classification.\nUseful for enumerating the surveillance ecosystem by sector.\n\nUse this tool when:\n- You want to enumerate all entities in a specific industry (e.g., all ad-tech companies).\n- You need a dataset of surveillance entities for analysis or reporting.\n- You are building a comprehensive surveillance landscape map.\n\nDo NOT use this tool when:\n- You need the full profile of a specific entity — use `get_entity` instead.\n- You are searching by entity name — use `search` instead.\n- You need domain-level data — use `list_domains` instead.\n\nInputs:\n- `industry` (query, optional): Filter by industry classification. Examples:\n `ad_tech`, `analytics`, `data_broker`, `social`, `crm`.\n- `limit` (query, optional): Results per page. Max 100 (paid), 20 (free). Default 50.\n- `cursor` (query, optional): Pagination cursor from previous response's `next_cursor`.\n\nReturns:\n- Array of entity list items (slug, name, parent_company, industry, data_categories,\n data_cost_usd).\n- `meta.has_more` and `meta.next_cursor` for pagination.\n\nCost:\n- Free tier: up to 20 results/page, 50 req/day. Pro/enterprise: up to 100 results/page.\n\nLatency:\n- Typical: <150ms, p99: <400ms.\n", 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'search', 'name': 'search', 'description': 'Searches both the domains table and the entities table simultaneously. Returns\nmatching domains (by domain name) and entities (by name or slug) in a single\nresponse. Minimum 2 characters, maximum 100 characters.\n\nUse this tool when:\n- You have a partial name and need to identify what tracker or entity it belongs to.\n- You want to find all TunnelMind records related to a company name like "Google" or "Oracle".\n- You are resolving an ambiguous domain (e.g., does `criteo.com` appear in the tracker DB?).\n\nDo NOT use this tool when:\n- You know the exact domain — use `get_domain` instead (faster, more complete).\n- You know the exact entity slug — use `get_entity` instead.\n- You want to browse by category or industry — use `list_domains` or `list_entities`.\n\nInputs:\n- `q` (query, required): Search string, 2-100 characters. Matched against domain names\n and entity names/slugs.\n\nReturns:\n- `domains`: array of matching domain records (list item format).\n- `entities`: array of matching entity records (list item format).\n- Both arrays may be empty if no matches found. No pagination — results are capped\n at 20 per type.\n\nCost:\n- Free tier: included in 50 req/day. Pro/enterprise: included in plan.\n\nLatency:\n- Typical: <200ms, p99: <500ms.\n', 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'intel_http', 'name': 'intel_http', 'description': "Makes a live HEAD request to the target domain from the Cloudflare edge, follows\nup to 5 redirects, and returns the full redirect chain, final HTTP status, key\nresponse headers, a security header score, and any third-party surveillance\nactors referenced in the Content-Security-Policy header.\n\nUse this tool when:\n- You want to verify whether a site enforces HTTPS and HSTS.\n- You need to inspect what third-party scripts a site loads via its CSP header.\n- You are assessing a domain's security posture before trusting it.\n- You want to detect surveillance actors embedded in a site's CSP.\n\nDo NOT use this tool when:\n- You need tracker database data (category, score, entity) — use `get_domain` instead.\n- You need the technology stack (CMS, framework) — use `intel_stack` instead.\n- You need robots.txt AI crawler policy — use `intel_robots` instead.\n\nInputs:\n- `domain` (query, required): Domain to probe. Can include or omit `https://`.\n Examples: `nytimes.com`, `https://example.com`.\n\nReturns:\n- `reachable`: false if the domain did not respond within 6 seconds.\n- `redirect_chain`: each hop with URL, status code, and Location header.\n- `security_headers.score`: 0-100 based on presence of HSTS, CSP, X-Content-Type,\n X-Frame-Options, Referrer-Policy.\n- `security_headers.missing`: list of headers absent.\n- `csp_actors`: known surveillance actors detected in the CSP header.\n- `error`: set if the connection failed.\n\nCost:\n- Free. No API key required.\n\nLatency:\n- Typical: 1-3s (outbound fetch), p99: 6s (timeout). Plan for async if chaining calls.\n", 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'intel_stack', 'name': 'intel_stack', 'description': "Fetches up to 32KB of the domain's HTML and response headers from the edge, then\nfingerprints the content for known CMS platforms, JavaScript frameworks, CDN\nproviders, and analytics tools. Detection is based on meta generator tags, script\nsrc patterns, response headers, and cookie names.\n\nUse this tool when:\n- You need to know what CMS (WordPress, Drupal, Shopify) a site runs.\n- You are assessing a domain's infrastructure before a security review.\n- You want to identify analytics or marketing tools a site embeds.\n\nDo NOT use this tool when:\n- You want HTTP headers and security posture — use `intel_http` instead.\n- You want tracker database classification — use `get_domain` instead.\n- You need robots.txt AI policy — use `intel_robots` instead.\n\nInputs:\n- `domain` (query, required): Domain to fingerprint.\n\nReturns:\n- `cms`: detected content management system, or null.\n- `frameworks`: JavaScript/backend frameworks detected.\n- `cdn`: CDN provider detected, or null.\n- `analytics`: analytics and tracking tools detected.\n- `meta_generators`: raw meta generator tag values.\n\nCost:\n- Free. No API key required.\n\nLatency:\n- Typical: 2-4s (HTML fetch), p99: 7s.\n", 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}; uptime_30d 1.0%; p95 228.2ms; conformance: pass

Transport
streamable-http
Auth
Cost

How to connect

MCP endpoint (streamable-http)
https://mcp-data.tunnelmind.ai/mcp
JSON-RPC initialize probe
curl -X POST https://mcp-data.tunnelmind.ai/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'
Homepage
https://mcp-data.tunnelmind.ai/mcp
Listed at (chiark)
https://chiark.ai/agents/1e3e2f27-9581-47d5-a89e-401527b526e4