Check links live: broken, soft 404, redirects, missing anchors. Check a quote is really on a page.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Markdown, HTML or plain text (a README, an answer, a doc); every http/https link in it is extracted and the first 15 unique ones are checked. Give urls or text, not both.
Up to 15 http or https addresses. A #fragment is checked as an anchor on the page. Give urls or text, not both.
true (default): for broken pages, look up the closest pages in the site's sitemap.xml. false: skip that lookup.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http vouch https://vouch.clawhard.com/mcp
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.
| Argument | Type | Description |
|---|---|---|
| text | string | Markdown, HTML or plain text (a README, an answer, a doc); every http/https link in it is extracted and the first 15 unique ones are checked. Give urls or text, not both. |
| urls | array | Up to 15 http or https addresses. A #fragment is checked as an anchor on the page. Give urls or text, not both. |
| suggest | boolean | true (default): for broken pages, look up the closest pages in the site's sitemap.xml. false: skip that lookup. |
{
"type": "object",
"properties": {
"text": {
"type": "string",
"maxLength": 200000,
"minLength": 10,
"description": "Markdown, HTML or plain text (a README, an answer, a doc); every http/https link in it is extracted and the first 15 unique ones are checked. Give urls or text, not both."
},
"urls": {
"type": "array",
"items": {
"type": "string",
"maxLength": 2000,
"minLength": 4
},
"maxItems": 15,
"minItems": 1,
"description": "Up to 15 http or https addresses. A #fragment is checked as an anchor on the page. Give urls or text, not both."
},
"suggest": {
"type": "boolean",
"description": "true (default): for broken pages, look up the closest pages in the site's sitemap.xml. false: skip that lookup."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| url* | string | The http or https address of the source page (an article, doc, blog post, Wikipedia page or plain-text file). |
| quotes* | array | 1 to 10 quotes or claims to look for, as written in the draft (at least 3 words each). |
{
"type": "object",
"required": [
"url",
"quotes"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2000,
"minLength": 4,
"description": "The http or https address of the source page (an article, doc, blog post, Wikipedia page or plain-text file)."
},
"quotes": {
"type": "array",
"items": {
"type": "string",
"maxLength": 1000,
"minLength": 8
},
"maxItems": 10,
"minItems": 1,
"description": "1 to 10 quotes or claims to look for, as written in the draft (at least 3 words each)."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 11, 2026.