Get startedUpdated

Quickstart

Read your first site and find the fix worth the most, in about two minutes. No account is needed.

This page as Markdown

  1. 1. Add the skillsnpx skills add subinternal/mttr
  2. 2. Tell your agentCheck yoursite.com with mttr and fix what’s worth the most.

How do I read my first site?

Type its domain on the home page. mttr reads the first 12 pages on the spot and shows the score and what fails, then puts the full read of up to 100 pages in line behind it. No account is needed. The site has to be on the public internet, and mttr reads only what its robots.txt allows.

ReadPagesReady
First lookThe first 12In seconds, on the spot
Full readUp to 100When its turn in line comes; the page says how many reads are ahead

Read your site

  1. Type the domain

    On the home page, type the domain, such as example.com. A full address works too, and anything after the domain is set aside.

  2. Take the first look

    mttr reads the first 12 pages on the spot and shows the score and what fails, in seconds. The full read, up to 100 pages, goes in line behind it.

  3. Watch it being read

    The page shows each step as it happens: the address checked, robots.txt read, the sitemap read, then every page read and checked. When mttr is busy it says how many reads are ahead of yours. You can close it and come back.

  4. Open the report

    The report leads with the score and the one fix worth the most. Under it is every failing rule, ranked by how much it weighs and how many pages fail it. A site read in the last day opens straight to its report.

Hand it to an agent

An agent can read the same list, change the site in its own repository, and ask mttr to read it again. Pick where yours runs; it connects once.

Answeringhttps://mttr.si/mcpStreamable HTTPJSON API at /api/v1

  1. 1
    Get a key

    Free, with an email. It reads any site's public report; claim your own site to add its private parts.

    Or connect with no key, and your agent signs you up itself with mttr_signup.
  2. 2
    Connect where your agent runs

    First put the key in your shell, where no file you commit can hold it.

    Terminal
    export MTTR_KEY=mk_your_key

    Run this once, from any folder. Claude Code keeps it for every project.

    Terminal
    claude mcp add --transport http mttr https://mttr.si/mcp \
      --header "Authorization: Bearer $MTTR_KEY"

    First put the key in your shell, where no file you commit can hold it.

    Terminal
    export MTTR_KEY=mk_your_key

    Add this to Codex’s settings. It reads the key from your shell when it starts.

    ~/.codex/config.toml
    [mcp_servers.mttr]
    url = "https://mttr.si/mcp"
    bearer_token_env_var = "MTTR_KEY"

    Add this to Gemini CLI’s settings, then start it again and run /mcp to see mttr’s tools.

    ~/.gemini/settings.json
    {
      "mcpServers": {
        "mttr": {
          "httpUrl": "https://mttr.si/mcp",
          "headers": { "Authorization": "Bearer mk_your_key" }
        }
      }
    }

    The key sits in the settings file above. Keep that file to yourself.

    settings.json
    "Authorization": "Bearer mk_your_key"

    Cursor reads the key from the shell it was opened from.

    Terminal
    export MTTR_KEY=mk_your_key

    Add this in the site’s repository, then turn mttr on under MCP in Cursor’s settings.

    .cursor/mcp.json
    {
      "mcpServers": {
        "mttr": {
          "url": "https://mttr.si/mcp",
          "headers": { "Authorization": "Bearer ${env:MTTR_KEY}" }
        }
      }
    }

    Add this under Settings, Customizations, MCP servers, or in this file; then refresh the list of servers. In one project only, use .agents/mcp_config.json instead.

    ~/.gemini/config/mcp_config.json
    {
      "mcpServers": {
        "mttr": {
          "serverUrl": "https://mttr.si/mcp",
          "headers": { "Authorization": "Bearer mk_your_key" }
        }
      }
    }

    The key sits in the settings file above. Keep that file to yourself, and out of any repository.

    mcp_config.json
    "Authorization": "Bearer mk_your_key"

    Add this in the site’s repository. VS Code asks for the key the first time and keeps it safe.

    .vscode/mcp.json
    {
      "servers": {
        "mttr": {
          "type": "http",
          "url": "https://mttr.si/mcp",
          "headers": { "Authorization": "Bearer ${input:mttr-key}" }
        }
      },
      "inputs": [
        { "id": "mttr-key", "type": "promptString", "description": "Your mttr key", "password": true }
      ]
    }

    Nothing to set by hand: paste the key when VS Code asks for it.

    VS Code
    Your mttr key: mk_your_key

    Add this to Windsurf’s MCP settings, then refresh its list of servers.

    ~/.codeium/windsurf/mcp_config.json
    {
      "mcpServers": {
        "mttr": {
          "serverUrl": "https://mttr.si/mcp",
          "headers": { "Authorization": "Bearer mk_your_key" }
        }
      }
    }

    The key sits in the settings file above. Keep that file to yourself.

    mcp_config.json
    "Authorization": "Bearer mk_your_key"

    Any client that speaks MCP over HTTP connects with these three things.

    Settings
    Address    https://mttr.si/mcp
    Transport  Streamable HTTP
    Header     Authorization: Bearer mk_your_key

    Every request carries the key as a bearer token.

    Header
    Authorization: Bearer mk_your_key
  3. 3
    Ask it something

    In words. Your agent picks the call, and the answer is the one a person sees on the report.

    • What should I fix first on example.com?mttr_brief({ site: "example.com" })
    • Fix the top issue, then have mttr read the site again.mttr_rescan({ site: "example.com" })
    • Who am I up against, and what do they cover that I don’t?mttr_competitors({ site: "example.com" })
    What comes backThe start of a brief, a sample
    What mttr_brief answersThe start of one, a sample
    # Fix list for example.com
    
    mttr read 64 pages of https://example.com on 2026-10-15 and scored them 72 of 100.
    
    A score says pages are well formed. It does not say an assistant cites the site.
    
    ## 1. Put the text in the HTML
    
    - **Failing:** 9 pages
    - **What to do:** Put the page text in the HTML the server sends. Most AI crawlers do not run scripts.
    - **Pages:**
      - `/services/drainage`
      - `/pricing`
      - and 7 more

Next

Sources