{
  "$schema": "https://modelcontextprotocol.io/schemas/server-card.json",
  "name": "Enterno MCP Server",
  "version": "1.1.0",
  "protocolVersion": "2024-11-05",
  "description": "Enterno.io site-diagnostics MCP server. 43 tools for HTTP / DNS / SSL / network / domain / SEO / security / AI-readiness checks — natively callable from Claude Desktop, Cursor, Zed, and any MCP client. Requires an API key, free on every plan.",
  "vendor": {
    "name": "Enterno.io",
    "url": "https://enterno.io"
  },
  "transports": {
    "streamable-http": {
      "url": "https://enterno.io/mcp"
    }
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    },
    "resources": {}
  },
  "tools": [
    {
      "name": "check_http",
      "description": "Fetch HTTP response headers, status code and timing. Follows redirects. SSRF-safe.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "method": {
            "type": "string",
            "enum": [
              "GET",
              "HEAD",
              "POST"
            ],
            "default": "GET"
          },
          "follow": {
            "type": "boolean",
            "default": true
          },
          "timeout": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30,
            "default": 15
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_dns",
      "description": "Query DNS records (A, AAAA, MX, NS, TXT, CNAME, SOA).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "types": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "A",
                "AAAA",
                "MX",
                "NS",
                "TXT",
                "CNAME",
                "SOA"
              ]
            }
          }
        },
        "required": [
          "domain"
        ]
      }
    },
    {
      "name": "check_ssl",
      "description": "Inspect SSL certificate chain, protocol, cipher, SAN list, expiry.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "host": {
            "type": "string"
          },
          "port": {
            "type": "integer",
            "minimum": 1,
            "maximum": 65535,
            "default": 443
          }
        },
        "required": [
          "host"
        ]
      }
    },
    {
      "name": "check_ping",
      "description": "ICMP ping a host and report min/avg/max/loss.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "host": {
            "type": "string"
          },
          "count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "default": 4
          }
        },
        "required": [
          "host"
        ]
      }
    },
    {
      "name": "check_ip",
      "description": "IP geolocation, ASN, reverse DNS, basic threat signals.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "host": {
            "type": "string"
          }
        },
        "required": [
          "host"
        ]
      }
    },
    {
      "name": "check_whois",
      "description": "WHOIS lookup for a domain: registrar, creation/expiry dates, name servers, status flags.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          }
        },
        "required": [
          "domain"
        ]
      }
    },
    {
      "name": "check_speed",
      "description": "Google PageSpeed Insights — mobile + desktop. Core Web Vitals (LCP, CLS, INP), score 0-100.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "strategy": {
            "type": "string",
            "enum": [
              "mobile",
              "desktop",
              "both"
            ],
            "default": "both"
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_redirects",
      "description": "Trace the redirect chain — every 3xx hop with status, target, timing. Loop + chain-length detection.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "max_redirects": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 10
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_security",
      "description": "Security grade by the /security tool: HTTP security headers (HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy), HTTPS enforcement, cookies, information leakage. Score 0-100 + grade A+-F — the same grade as https://enterno.io/security.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_mx",
      "description": "List MX records for a domain (mail server hostnames + priorities, RFC 5321 sorted).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          }
        },
        "required": [
          "domain"
        ]
      }
    },
    {
      "name": "check_robots",
      "description": "Fetch /robots.txt — number of user-agents, allow/disallow rules, sitemap URLs, crawl-delay.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          }
        },
        "required": [
          "domain"
        ]
      }
    },
    {
      "name": "check_subdomain_enum",
      "description": "Discover subdomains via Certificate Transparency logs (crt.sh). Useful for asset inventory + security audits.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "default": 100
          }
        },
        "required": [
          "domain"
        ]
      }
    },
    {
      "name": "check_ai_readiness",
      "description": "Audit a domain for AI-agent discoverability by the /ai-check tool: 20 signals (agents.json, ai-plugin.json, llms.txt, MCP/A2A cards, robots.txt AI policy, Speakable schema, OpenAPI, Agent Skills). Score 0-100 (share of the tool scale) + points/max_points + grade A-F — the same grade as https://enterno.io/ai-check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          }
        },
        "required": [
          "domain"
        ]
      }
    },
    {
      "name": "check_traceroute",
      "description": "mtr-based traceroute — each hop with IP, rdns, packet loss%, avg/best/worst RTT.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "host": {
            "type": "string"
          },
          "max_hops": {
            "type": "integer",
            "minimum": 5,
            "maximum": 30,
            "default": 20
          }
        },
        "required": [
          "host"
        ]
      }
    },
    {
      "name": "check_email",
      "description": "Email-deliverability audit: MX, SPF + RFC 7208 lookups, DMARC strength, SPF/DMARC alignment, DKIM (common selectors), MX reverse DNS, BIMI, MTA-STS. Score 0-100.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain or full email (user@example.com → example.com)"
          }
        },
        "required": [
          "domain"
        ]
      }
    },
    {
      "name": "plane_assets",
      "description": "List the assets this account is observing, with what has been seen on each.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Filter by asset kind"
          },
          "q": {
            "type": "string",
            "description": "Substring match on the asset name"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 50
          }
        },
        "required": []
      }
    },
    {
      "name": "plane_events",
      "description": "Recent changes and alerts across this account's assets.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "since_days": {
            "type": "integer",
            "default": 7
          },
          "min_severity": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "default": 50
          }
        },
        "required": []
      }
    },
    {
      "name": "plane_asset",
      "description": "One asset in depth: coverage, statistics and its recent timeline. An id belonging to another account is reported as not found.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "asset_id": {
            "type": "integer",
            "description": "Asset id from plane_assets"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 40
          }
        },
        "required": [
          "asset_id"
        ]
      }
    },
    {
      "name": "check_cookie",
      "description": "Cookie flags and trackers. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_cors",
      "description": "CORS policy. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          },
          "origin": {
            "type": "string",
            "description": "Optional."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_csp",
      "description": "Content-Security-Policy grade. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_http_status",
      "description": "Status code and timing. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_protocol",
      "description": "HTTP version and TLS negotiation. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_mixed_content",
      "description": "Mixed content on an HTTPS page. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_schema",
      "description": "Structured data. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_tech_detect",
      "description": "Technology fingerprint. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_og_preview",
      "description": "Open Graph and social preview. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_cms",
      "description": "CMS detection. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_url_expand",
      "description": "Resolve a short link. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_resolve_url",
      "description": "Resolve a URL to its final target. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_wayback",
      "description": "Wayback Machine history. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_seo_audit",
      "description": "On-page SEO audit. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_ai_check",
      "description": "AI readiness. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain name, no scheme."
          }
        },
        "required": [
          "domain"
        ]
      }
    },
    {
      "name": "check_carbon",
      "description": "Carbon footprint estimate. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_performance",
      "description": "Performance metrics. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_pagespeed",
      "description": "PageSpeed. Runs the same code the tool page runs. Scope: check.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Full URL including scheme."
          },
          "strategy": {
            "type": "string",
            "description": "Optional."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "check_dkim",
      "description": "DKIM public key. Runs the same code the tool page runs. Scope: dns.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain name, no scheme."
          },
          "selector": {
            "type": "string",
            "description": "Optional."
          }
        },
        "required": [
          "domain"
        ]
      }
    },
    {
      "name": "check_email_check",
      "description": "SPF, DKIM and DMARC. Runs the same code the tool page runs. Scope: dns.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain name, no scheme."
          }
        },
        "required": [
          "domain"
        ]
      }
    },
    {
      "name": "check_email_header",
      "description": "Parse raw email headers. Runs the same code the tool page runs. Scope: dns.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "headers": {
            "type": "string",
            "description": "Raw email headers, one per line."
          }
        },
        "required": [
          "headers"
        ]
      }
    },
    {
      "name": "check_propagation",
      "description": "DNS propagation across resolvers. Runs the same code the tool page runs. Scope: dns.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain name, no scheme."
          },
          "type": {
            "type": "string",
            "description": "Optional."
          }
        },
        "required": [
          "domain"
        ]
      }
    },
    {
      "name": "check_smtp_test",
      "description": "SMTP banner and STARTTLS. Runs the same code the tool page runs. Scope: dns.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "target": {
            "type": "string",
            "description": "Mail host to connect to."
          },
          "port": {
            "type": "string",
            "description": "Optional."
          }
        },
        "required": [
          "target"
        ]
      }
    },
    {
      "name": "check_asn",
      "description": "ASN and network owner. Runs the same code the tool page runs. Scope: ip.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "IP address, ASN, or prefix."
          }
        },
        "required": [
          "query"
        ]
      }
    },
    {
      "name": "check_reverse_ip",
      "description": "Domains sharing an address. Runs the same code the tool page runs. Scope: ip.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "description": "IPv4 or IPv6 address."
          }
        },
        "required": [
          "ip"
        ]
      }
    }
  ],
  "auth": {
    "type": "apiKey",
    "header": "Authorization",
    "prefix": "Bearer",
    "alternate": {
      "header": "X-API-Key"
    },
    "signupUrl": "https://enterno.io/register"
  },
  "documentation": "https://enterno.io/mcp-server",
  "openapi": "https://enterno.io/.well-known/openapi.yaml",
  "license": "Proprietary — free tier available",
  "contact": {
    "email": "support@enterno.io",
    "url": "https://enterno.io/support"
  }
}
