# Vouch

> Check links live: broken, soft 404, redirects, missing anchors. Check a quote is really on a page.

- name: com.clawhard/vouch
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 85/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.clawhard%2Fvouch
- tools: https://api.protogrid.dev/v1/servers/com.clawhard%2Fvouch/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "vouch": {
      "type": "http",
      "url": "https://vouch.clawhard.com/mcp"
    }
  }
}
```


## Trust

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

## Quality 85/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 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: 94 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 2 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 2 of 2 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,018 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: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`, `stability.new_links`: tool history recorded for 2 of the 7 days needed

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

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

- tools: 2, about 1,018 tokens to load them all
- tool set hash: 50f7b6d9ae45ef8786a4205a3650fd12
- badge: [![protogrid quality](https://protogrid.dev/badge/com.clawhard/vouch.svg)](https://protogrid.dev/servers/com.clawhard/vouch)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://vouch.clawhard.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (2)

- `vouch_check_links`: Use when the user asks whether links work, or before links, sources or doc URLs go into an answer, README, report, email or code comment (signals: "are these links dead", "check the links in this README", "does this URL exist", "404", "broken link", "where does this redirect", "is this docs page still there"). Fetches each URL live (GET, redirects followed hop by hop) and returns per link a status: ok, redirected (link the final_url), soft_404 (answers 200 but the title says not found, or a deep link lands on the front page), anchor_missing (the #section id is not on the page), broken (404, 410 or other 4xx), server_error (5xx), blocked (401, 403, 429 or a bot challenge: not proof the page is missing), unreachable (DNS, connection or timeout) or invalid. Each result has http_status, every hop, final_url, page title and canonical; for broken pages it lists the closest real pages from the site's own sitemap (suggestions, the top one re-checked). Give urls (up to 15) or text (Markdown, HTML or plain text; its http and https links are extracted, first 15 checked). Example: {"urls":["https://docs.stripe.com/api/charge","https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attributes"]}. Limits: a page can work in a browser and still be blocked here; pages built by JavaScript may hide anchors; one call makes at most 45 requests.
- `vouch_check_quote`: Use when a quote, a statistic or a claim is attributed to a web page and the user asks whether the source says it, or before a citation goes into an answer, report, article or essay (signals: "does this article actually say", "verify this quote", "is this citation real", "check the source", "did they really write that", "fact-check this quote against the link"). Fetches the page once, extracts its visible text and returns per quote a verdict: exact (word for word), normalized (same words in order; only punctuation, capitals, spacing or curly quotes differ), close (similarity 0.85 or more, wording differs), partial (0.5 to 0.85) or not_found, with the matching passage, surrounding context, the words that differ and numbers_differ when a number changed (for example 1914 in the quote, 1912 on the page). Quotes with "..." are checked part by part. Example: {"url":"https://en.wikipedia.org/wiki/Alan_Turing","quotes":["widely regarded as the father of theoretical computer science"]}. Limits: a match shows the words are on the page, not that the claim is true; pages built by JavaScript may have little text in their HTML; PDFs and paywalled or bot-blocked pages cannot be read; up to 10 quotes of 1000 characters, at least 3 words each.
