{
    "name": "outrings",
    "protocol": "Model Context Protocol",
    "protocolVersion": "2026-07-28",
    "protocolVersionsSupported": [
        "2026-07-28",
        "2025-11-25"
    ],
    "transport": "streamable-http, POST only. Every message is a self-contained request/response; this server never opens a server-initiated SSE stream.",
    "endpoint": "https://outrings.com/mcp",
    "howToConnect": {
        "claude-code": "claude mcp add --transport http outrings https://outrings.com/mcp",
        "generic": "Add an HTTP MCP server pointing at https://outrings.com/mcp"
    },
    "authentication": "None. Every tool is public; all are read-only except what_changed, which persists a history snapshot and is annotated readOnlyHint: false.",
    "tools": [
        {
            "name": "audit_website",
            "description": "Run the full 216-check audit of a website and return the overall score, every category score, and the ranked list of what to fix first. Use this when the user asks a broad question about a site \u2014 \"how is my website\", \"what is wrong with it\", \"is this site any good\" \u2014 or when you need grounding before advising on changes. Takes roughly 2-8 seconds. If the user only cares about one area, check_category is faster and returns less."
        },
        {
            "name": "check_category",
            "description": "Inspect a single area and return its verdict, the checks that failed, why each matters and how to fix it. Categories: seo, ai (whether AI crawlers and answer engines can read and cite the site), security (headers, exposure, secrets in source), privacy, tls (certificate and protocol), dns (records, SPF, DMARC, CAA), a11y (accessibility), content, slop (AI-generated-filler signals), design, infra, tech, credibility, correlation (does the page deliver what its title promises), faq, discoverability, local, contact. Use this rather than audit_website when the question is narrow \u2014 \"is my site secure\", \"why is my SEO bad\", \"can ChatGPT see my site\"."
        },
        {
            "name": "get_score",
            "description": "The cheapest useful call: overall score, letter grade and every category score, with no findings or prose. Use it when comparing sites, when the user only wants a number, or as a first step before deciding which category to look into."
        },
        {
            "name": "check_ai_visibility",
            "description": "Measures technical crawler access and the page signals that affect whether an AI system can retrieve and parse a site. Reports, per crawler, whether GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, Claude-User, PerplexityBot, Google-Extended, Googlebot, Bingbot, Applebot-Extended and CCBot are allowed or blocked, naming the exact robots.txt rule responsible. Also checks whether content is served in HTML rather than requiring JavaScript, whether structured data is present and valid, and whether llms.txt exists. It also requests the page as Googlebot, Bingbot, OAI-SearchBot, PerplexityBot, GPTBot and ClaudeBot and compares each response with what a browser receives, reporting the robots.txt policy and what the server actually returned as separate columns. Crawler identity is declared in the User-Agent and not proven, so a refusal may not apply to the real crawler. It does NOT determine whether an assistant will rank, select, mention or cite the page: access is a precondition for citation, not a cause of it, and the crawlers serve different purposes \u2014 for OpenAI, OAI-SearchBot governs eligibility for ChatGPT search while GPTBot relates to model training. Use this to rule out or confirm a technical blocker, and say plainly that ranking and selection are outside what any measurement here can establish."
        },
        {
            "name": "what_changed",
            "description": "Re-audit a site and report what moved since it was last checked: which findings are new, which were resolved, and how each category score shifted. Use it after the user says they fixed something, or to verify that a deployment did not regress anything. Returns comparable=false when the site has no earlier snapshot, which is not an error \u2014 it means history starts now. Unlike the other tools this one WRITES: it stores a durable snapshot of the result, because a comparison against history requires contributing to it. The baseline is the most recent retained snapshot and snapshots are kept at most once per site per six hours, so baselineAt may not be the deployment immediately before this one \u2014 read baselineAt rather than assuming it is the last change. Check comparable before attributing any score movement to the site: when the ruleset differed between the two measurements it is false, and the difference then includes a change in grading rather than a change in the website."
        },
        {
            "name": "get_site_inventory",
            "description": "Return a complete inventory of what the Outrings collector observed on a page \u2014 not a sample of it \u2014 for one kind of thing: internal links, external links, sitemap URLs, email addresses, scripts, images, forms, iframes, stylesheets or API endpoints referenced. The collector does not execute JavaScript, so this is everything present in the served HTML and the responses it fetched, which is not necessarily everything a real browser would end up loading at runtime. Use it for \"what third-party scripts am I loading\", \"which email addresses are exposed on my site\", \"how many images are missing alt text\", \"what does my page link out to\"."
        },
        {
            "name": "compare_websites",
            "description": "Score two to four sites and return them ranked, with the category gaps between them. Use it for \"how do I compare to my competitors\" or \"which of these is better built\". Each site is a real audit, so this takes several seconds per URL."
        },
        {
            "name": "get_badge_embed",
            "description": "Produce the HTML (and Markdown) for a badge the site owner can paste into their footer or README. It renders a live SVG showing a real measured score that refreshes every six hours and links through to the full audit, so a visitor can verify it. Use this when someone wants to display that their site was checked."
        }
    ],
    "capabilities": [
        "website-audit",
        "seo-analysis",
        "security-headers",
        "tls-certificate-check",
        "dns-email-authentication",
        "ai-crawler-access",
        "robots-txt-analysis",
        "structured-data-validation",
        "accessibility-check",
        "privacy-and-tracker-inventory",
        "change-detection",
        "competitor-comparison",
        "open-graph-preview",
        "llms-txt-check",
        "site-inventory"
    ],
    "representativeQueries": [
        "Is my website secure?",
        "Check my site before I launch it",
        "Why is my website not showing up on ChatGPT?",
        "Can AI crawlers read my site?",
        "Is GPTBot blocked on my domain?",
        "Check my SEO and meta tags",
        "Does my site have security headers?",
        "When does my TLS certificate expire?",
        "Is my SPF and DMARC set up correctly?",
        "Audit this website",
        "Why is my og:image not showing when I share the link?",
        "Is this website trustworthy?",
        "Check if my site is accessible",
        "Did my last deploy break anything on my site?",
        "How does my site compare to my competitor?",
        "What third-party scripts is this page loading?",
        "Does this page have valid structured data?",
        "Is my robots.txt blocking search engines?"
    ],
    "catalog": "https://outrings.com/.well-known/ai-catalog.json",
    "alsoAvailable": "https://outrings.com/api/v1 (plain REST, same engine)"
}