protogrid

Search / si.mttr/mttr

mttr

R0· no sign-in

Reads a site as search engines and AI assistants do, ranks its fixes, and checks them live.

v1.0.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality82good
Trust82of 100
Uptime, 30 days98%
Latency p50402 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "mttr": {
      "type": "http",
      "url": "https://mttr.si/mcp",
      "headers": {
        "Authorization": "Bearer ${MTTR_TOKEN}"
      }
    }
  }
}
claude mcp add --transport http mttr https://mttr.si/mcp --header "Authorization: Bearer ${MTTR_TOKEN}"
[mcp_servers.mttr]
url = "https://mttr.si/mcp"
bearer_token_env_var = "MTTR_TOKEN"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mttr": {
      "type": "remote",
      "url": "https://mttr.si/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:MTTR_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "mttr": {
      "type": "http",
      "url": "https://mttr.si/mcp",
      "headers": {
        "Authorization": "Bearer ${MTTR_TOKEN}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=mttr&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbXR0ci5zaS9tY3AiLCJoZWFkZXJzIjp7IkF1dGhvcml6YXRpb24iOiJCZWFyZXIgJHtNVFRSX1RPS0VOfSJ9fQ%3D%3D"
}
{
  "servers": {
    "mttr": {
      "type": "http",
      "url": "https://mttr.si/mcp",
      "headers": {
        "Authorization": "Bearer ${MTTR_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "mttr": {
      "httpUrl": "https://mttr.si/mcp",
      "headers": {
        "Authorization": "Bearer ${MTTR_TOKEN}"
      }
    }
  }
}
extensions:
  "mttr":
    enabled: true
    name: "mttr"
    type: streamable_http
    uri: "https://mttr.si/mcp"
    headers:
      "Authorization": "Bearer ${MTTR_TOKEN}"
    timeout: 300

Placeholders to fill from your own secret store: ${MTTR_TOKEN}. The registry never accepts secret values.

Quality 82 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene88 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations17 of 17 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: clickd_propose (idempotentHint); clickd_log_work (idempotentHint); clickd_todo (destructiveHint, idempotentHint); …
  • pass
    tools.token_costabout 4,596 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
  • pass
    tools.hidden_textno hidden text in tool names, descriptions, schemas or annotations
stability83 · weight 15
  • warn
    stability.changes99 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
  • pass
    stability.new_linksno tool change named a new site
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

17 tools, about 4,596 tokens to load them all · tool set 66facca9a0b6 · tools last changed 2026-11-01 · checked 2026-11-14 07:03 UTC

Tool changes

  • mttr_eventsremoved

    The newest things that happened: reads asked for, finished and failed, scores that moved, rules that were fixed.

  • mttr_changesremoved

    What the latest run of a site changed against the run before it: the score, rules now passing, rules newly failing, and pages added and removed. Call it after a rescan is done. For a site whose server sends its own counts, "visits" sets people, people an assistant sent and crawler fetches in the week before the run against the week since.

  • mttr_marketremoved

    A site set against its market, or its nearest sites when it has none: its place by score, the median score, and for every rule the share of pages passing here against the market median and the best site, with the rules furthest behind first.

  • mttr_rulesremoved

    The rulebook: every rule clickd checks, with its stage, its weight and how to fix a failure.

  • mttr_structureremoved

    How a site is put together: its sections, how many clicks each sits from the home page, how much of each is linked from page content, and the links between sections.

  • mttr_todoremoved

    The person's work across their sites, as their progress page shows it: the next fix to make, with the words to work from, then every other fix by worth, what slipped back, what a read has checked fixed, and sites changed since their last read that need reading again. A fix counts as done only once a later read finds it passing.

  • mttr_product_checkremoved

    Checks one live product page's structured data the way the free schema checker does: each Product, ProductGroup and Offer field by field against the fields Google lists for merchant listings (name, image, offers, price above zero, priceCurrency in ISO 4217, availability, shipping, returns, brand, GTIN, variants, ratings), each present, missing or invalid with what to do, and a guess at whether a shopper can buy on the page. Use it on one product URL per template before and after a fix. It reads only what the page publishes; Merchant Center and Google decide eligibility for any Google feature.

  • mttr_queueremoved

    What the person queued for you from their clickd, oldest first: each task with its id, its site, and the words to work from. Check it when you start, and whenever an answer says tasks are waiting.

  • mttr_nearremoved

    The sites closest in meaning to one site, closest first: the ones writing about the same work, which are its likeliest rivals. Read from one vector a site kept in the catalog, so both sites must have been embedded.

  • mttr_similarremoved

    Pages of a site that mean nearly the same thing, grouped, which may compete for one search. With a path, the pages nearest that page, each with the two passages that come closest. Read from vectors of the page text, so the site must have been embedded. Passages come under "quoted".

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 82 / 100

no-repository
provenance55
liveness99
freshness100
hygiene80

+dns-namespace +website +reachable +uptime-98% +updated-20d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mttr.si/mcp streamable-httpnoneyes98%402 ms2025-06-182026-11-14

Tools (17)

clickd_briefread-onlyGets a site's fixes as a work order: what to fix, in what order, how, why and on which pages. When: at the start of work on a site, and after clickd_changes says a read is done. Instead: clickd_site for the score to tell a person; clickd_todo for the next fix across all the person's sites. Inputs: `site` is a domain, like example.com. `format` is markdown (the default), the whole list, or steps: the four fixes worth the most as steps with pages and points, and words to hand another agent. Returns: with markdown, the Markdown text alone; with steps, JSON with steps, prompt, report and caveat. Fails: a site never read, or a draft, answers not found; clickd_rescan reads it. Works with no key.
clickd_changesread-onlySays what a site's latest read changed against the one before: score, rules fixed and newly failing, pages added and removed. When: after clickd_rescan, every minute or two with its job until the read is done. Instead: clickd_rescan to ask for the read; clickd_site for the report as it now stands. Inputs: `site` is a domain, like example.com. `job` is the id clickd_rescan returned: the reply then says where that read stands, with changes only once it is done. Returns: host, run, changes (null for a first read) and visits; with job, job ({ id, state, ahead }), changes null until done. Fails: a site never read, or a job for another site, answers not found; a failed read says so in job. Needs a key.
clickd_checkread-onlyChecks one live address now, as the free tools do: product data, a page as an agent reads it, an X card, a certificate, or location pages. When: before and after a fix to one page, link or host. Instead: clickd_rescan and clickd_changes for every page of a site; clickd_pages for a page as last read. Inputs: `kind` is product, agent, x_card, ssl or locations. `url` is the page's full address; for ssl, only its host is used; for locations, the brand's site. Returns: the findings, each with its state in a word and what to do when it is wrong. Fails: a private address is refused, and robots.txt is obeyed; the free tools' hourly allowance applies. Works with no key.
clickd_citationsread-onlyLists what assistants were found to cite for a site, question by question, from lookups already made, and the credits left. When: to tell a person whether assistants cite their site, at no cost. Instead: clickd_site for how well formed the pages are, which is not whether they are cited. Inputs: `site` is a domain, like example.com. Returns: host, rows, credits, price, perDay and note. Fails: rows is empty until a lookup is made. Needs a key and a claim.
clickd_claimClaims a site for the person: the TXT record or file that proves it is theirs, then the check that finds it. When: to open a site's private parts, such as rivals, citations and proposals. Instead: clickd_signup first for a key; clickd_site for a public report, which needs no claim. Inputs: `site` is a domain, like example.com. `step` is start (the default), for the record and file, or check, to look for either and add the site. Returns: with start, site, record, dns, file and note; with check, site, claimed and how. Fails: check before the proof is up answers claimed false; a new DNS record can take minutes to be seen. Needs a person's key.
clickd_leaderboardread-onlyLists the public leaderboard: every ranked site by its latest score, the board of one crowd, or a record. When: to show a person where a site places among every site, or sites like it. Instead: clickd_site for one site's own place; clickd_rivals for the sites closest to one site. Inputs: `in` (a line of work such as trades), `state` (two letters), `city` (needs state) and `size` narrow the board, together or alone. `record` gives one record in place of the places. `limit` and `offset` page it. Returns: total, offset, limit, sites, tiers and note; with record, its sites and what it counted. Fails: a crowd too small answers an empty board; drafts and closed sites are not ranked. Works with no key.
clickd_log_workRecords a step of work on a site: what you planned, changed or checked, or where you got stuck. When: after each step, including one that carries out a proposal or a queued task. Instead: clickd_propose before deploying to a site set to approve; clickd_todo for tasks waiting. Inputs: `site` is a domain, like example.com. `step` is planned, changed, checked or stuck; `did` says what. `found`, `files` and `rules` (comma separated) add detail. `proposal` names the proposal carried out, `task` the queued task finished. Never send private data. Returns: kept, site, step and note, with proposal or task and left when given. Fails: a proposal or task not the person's keeps nothing and says so. Needs a person's key.
clickd_pagesread-onlyLists the pages of a site's latest read with status, depth, words and failing rules, or gives one page in full. When: to find the pages behind a fix, or everything wrong with one page. Instead: clickd_brief for the fixes in order; clickd_check for a page as it is live now. Inputs: `site` is a domain, like example.com. `path`, such as /pricing, gives that page in full, and the rest is then ignored. `failing` (a rule id), `q`, `kind` and `section` narrow the list, `sort` and `dir` order it, `limit` and `offset` page it. Returns: host, run, total and pages; one page as path, status, failing, needsAPerson, linkedFrom, linksTo and quoted. Fails: a site or page not read answers not found. Needs a key; any key reads a public site.
clickd_proposalsread-onlyLists the person's proposals and where each stands, or one by id, and whether a site is set to approve or automatic. When: before work on a claimed site, and every few minutes after clickd_propose until it is answered. Instead: clickd_propose to make one; clickd_todo for the work itself. Inputs: `id` is one proposal from clickd_propose; deploy only once it says approved. `site` gives that site's proposals and its mode. Neither, every proposal; never both. Returns: with id, proposal and promise; otherwise proposals and promise, and with site, site and mode. Fails: id and site together are refused; one not the person's answers not found. Needs a person's key.
clickd_proposeProposes a change before you deploy it, emailing the person Approve and Decline links that lapse in 72 hours. When: before each deploy to a site clickd_proposals says is set to approve. Instead: clickd_proposals with the id to wait for the answer; clickd_log_work, naming it, once carried out. Inputs: `site` is a domain, like example.com. `title` is the change in a few words; `summary` what it does and why; `rule` the rule id it answers; `pages` the paths it changes, comma separated; `diff` a unified diff, shown and never applied. Returns: proposal ({ id, state, deploy, ... }), note and promise. Fails: a site not claimed with this key answers not found; 20 proposals a site an hour at most. Needs a person's key.
clickd_rescanPuts a fresh read of a site in line and returns a job to follow. When: once a fix is deployed, or for a site clickd has never read. Instead: clickd_changes with the job to see what the read changed; clickd_check for one live page with no read. Inputs: `site` is a domain, like example.com. `reason` says what was changed, in a few words. Returns: job, added (false when a read was already in line), allowedAt and ahead. Fails: a site read in the last ten minutes answers allowedAt, when to ask again; a private address is refused. Needs a key.
clickd_rivalsread-onlySets a site against its rivals from kept reads: who they are, how close, and where it is behind. When: to pick the fixes that matter against the sites a buyer compares it with. Instead: clickd_leaderboard for places among every site; clickd_site for its own score. Inputs: `site` is a domain, like example.com. `view` is competitors (default: rivals doing similar work), near (closest in meaning), market (rule by rule), or rules or content (two sites side by side). `with` is the other site, for rules or content; alone, it means rules. `limit` is for near, 10 if left out. Returns: host, then by view: local, nearby and elsewhere; sites; rules; ahead and behind; or pages. Fails: a site with no meaning yet answers found or embedded false; rules or content with no with says to give it. Needs a key and a claim.
clickd_rulesread-onlyLists the rulebook: every rule clickd checks, with its id, stage, weight and fix. When: to explain a fix to a person, or to find a rule's id. Instead: clickd_brief for the rules one site fails; clickd_pages with failing for the pages failing one. Inputs: none. Returns: rules, each with id, title, stage, weight and fix. Fails: nothing to refuse. Works with no key.
clickd_schema_createread-onlyMakes JSON-LD for one page from the fields given, ready to paste, and fetches nothing. When: to write the structured data a fix asks for; call it with only type to see the fields. Instead: clickd_check with kind product to check a live product page. Inputs: `type` is one of the types offered; `as` a more exact one, such as Plumber; `fields` the values by field key, as text. Give only what the page shows. Returns: jsonld, script (ready to paste), missing, problems, recommended and fields. Fails: a type not offered says which are. Works with no key.
clickd_signupGets a free key, shown once, with the command to connect with it: the person's by email, or a throwaway one. When: when a call needs a key and there is none. Instead: clickd_claim, with a person's key, to make a site theirs. Inputs: `email` is the person's own address; leave it out for a throwaway key, which reads and asks for a few reads an hour. Returns: key, connect and next, with email or anonymous. Fails: an email already signed up, or not an email, says so; three an hour from one address. Needs no key.
clickd_siteread-onlyGets a site's report from its latest read: score, grades, place among ranked sites, towns served, and every fix with its failing pages. When: to tell a person how a site stands. Instead: clickd_brief for the fixes as a work order; clickd_rivals for its rivals; clickd_check for one live page. Inputs: `site` is a domain, like example.com. `view` is report (the default) or agent: the whole-site Agent View from the same read, with each AI crawler as robots.txt treats it. Returns: host, score, grade, stages, grades, rank, served, fixes and card, a picture to send the person; with agent, the Agent View's figures. Fails: a site never read, a draft or one kept unnamed answers not found. Works with no key.
clickd_todoread-onlyGets the person's work across all their sites: the next fix and every other by worth, or the tasks they queued for you. When: when you start work for the person, and when a reply says tasks are waiting. Instead: clickd_brief for every fix on one site; clickd_log_work with task to finish a queued task. Inputs: `show` is board (the default): next, every fix by worth, what slipped and what is fixed; or queue: the person's tasks for you, oldest first. Returns: with board, next, todo, slipped, fixed, waiting and note; with queue, tasks and note. Fails: an account with no claimed site has an empty board. Needs a person's key.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "si.mttr/mttr",
  "title": "mttr",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://mttr.si/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "isSecret": true,
          "description": "Bearer and a free mttr key (mk_...) from https://mttr.si/agents. Without one, an agent can sign up with mttr_signup."
        }
      ]
    }
  ],
  "version": "1.0.0",
  "websiteUrl": "https://mttr.si/agents",
  "description": "Reads a site as search engines and AI assistants do, ranks its fixes, and checks them live."
}