# clickd

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

- name: com.clickd/clickd
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 75/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.clickd%2Fclickd
- tools: https://api.protogrid.dev/v1/servers/com.clickd%2Fclickd/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "clickd": {
      "type": "http",
      "url": "https://clickd.com/mcp",
      "headers": {
        "Authorization": "Bearer ${CLICKD_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${CLICKD_TOKEN}`.

## Trust

- hygiene: 80
- liveness: 98
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-96% +updated-13d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 75/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 88 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 17 of 17 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: clickd_claim (idempotentHint); clickd_schema_create (destructiveHint, idempotentHint); clickd_site (destructiveHint, idempotentHint); …
- pass `tools.token_cost`: about 4,596 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 50 (weight 15)

- warn `stability.changes`: 98 tool changes in 30 days
- fail `stability.rug_pull`: 15 tools kept their name but changed most of their description in 30 days; review before trusting them
- pass `stability.new_links`: no tool change named a new site

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 17, about 4,596 tokens to load them all
- tool set hash: 66facca9a0b6f24bca7f59a422d53992
- tools last changed: 2026-11-01T21:45:24.088Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.clickd/clickd.svg)](https://protogrid.dev/servers/com.clickd/clickd)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-01 `mttr_schema_create` removed
  - Makes 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: mttr_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.
- 2026-11-01 `mttr_check` removed
  - Checks 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: mttr_rescan and mttr_changes for every page of a site; mttr_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.
- 2026-11-01 `mttr_signup` removed
  - Signs the person up with their email and returns their free key, shown once, with the command to connect with it. When: before any call that needs a key, when the person has none. Instead: mttr_claim, once connected with the key, to make a site theirs. Inputs: `email` is the person's own address. Returns: email, key, connect and next. Fails: an email already signed up, or not an email, says so; three an hour from one address. Needs no key.
- 2026-11-01 `mttr_leaderboard` removed
  - Lists 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: mttr_site for one site's own place; mttr_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.
- 2026-11-01 `mttr_rules` removed
  - Lists 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: mttr_brief for the rules one site fails; mttr_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.
- 2026-11-01 `mttr_proposals` removed
  - Lists 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 mttr_propose until it is answered. Instead: mttr_propose to make one; mttr_todo for the work itself. Inputs: `id` is one proposal from mttr_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.
- 2026-11-01 `mttr_propose` removed
  - Proposes a change before you deploy it, emailing the person what it is with Approve and Decline links that lapse in 72 hours. When: before each deploy to a site mttr_proposals says is set to approve. Instead: mttr_proposals with the id to wait for the answer; mttr_log_work, naming it, once carried out. Inputs: `site` is a domain, such as 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, separated by commas; `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.
- 2026-11-01 `mttr_claim` removed
  - Claims 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: mttr_signup first for a key; mttr_site for a public report, which needs no claim. Inputs: `site` is a domain, such as 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.
- 2026-11-01 `mttr_rivals` removed
  - Sets a site against its rivals from reads already kept: 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: mttr_leaderboard for places among every site; mttr_site for its own score. Inputs: `site` is a domain, such as example.com. `view` is competitors (the 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, which rules and content need; 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.
- 2026-11-01 `mttr_changes` removed
  - Says what a site's latest read changed against the one before: score, rules fixed and newly failing, pages added and removed. When: after mttr_rescan, every minute or two with its job until the read is done. Instead: mttr_rescan to ask for the read; mttr_site for the report as it now stands. Inputs: `site` is a domain, such as example.com. `job` is the id mttr_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.

Full history: https://api.protogrid.dev/v1/servers/com.clickd%2Fclickd/changes

## Remotes

- https://clickd.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.9607843)

## Packages

_none_

## Tools (17)

- `clickd_brief`: Gets 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_changes`: Says 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_check`: Checks 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_citations`: Lists 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_claim`: Claims 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_leaderboard`: Lists 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_work`: Records 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_pages`: Lists 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_proposals`: Lists 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_propose`: Proposes 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_rescan`: Puts 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_rivals`: Sets 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_rules`: Lists 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_create`: Makes 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_signup`: Gets 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_site`: Gets 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_todo`: Gets 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.
