linkrescue-mcp
LinkRescue MCP Server lets AI agents find, monitor, and fix broken affiliate and other links on websites, with revenue impact estimates and prioritized remediation suggestions.
check_broken_links— Scan a single URL or entire site/sitemap for broken links, returning a structured report with HTTP status codes, link types (affiliate/external/internal), SEO impact ratings, and estimated revenue loss per broken link.monitor_links— Set up recurring broken-link monitoring on a configurable schedule (default every 24 hours), tracking new/fixed broken links and changes in site health score, returning a monitoring ID for future reference.get_fix_suggestions— Generate prioritized remediation recommendations from a broken links report, including recommended actions (update, redirect, remove), human-readable explanations, and code snippets where applicable.health_check— Verify that the MCP server is running and can reach the LinkRescue backend API before performing operations.
Provides container deployment capability through included Dockerfile for hosting on container platforms, enabling portable deployment of the LinkRescue MCP server.
Supports deployment to Fly.io hosting platform via included Dockerfile, allowing cloud hosting of the LinkRescue MCP server for production use.
Enables repository hosting and integration with GitHub for source code management, with specific deployment workflows via Smithery when pushing to GitHub.
Supports package distribution and installation via PyPI, with published package available for installation through Python package management.
Provides runtime environment for the MCP server implementation, with Python 3.11+ requirement for executing the LinkRescue MCP server.
Supports deployment to Railway hosting platform via included Dockerfile, enabling cloud deployment and hosting of the LinkRescue MCP server.
Provides badge generation for PyPI version and license status display in the README documentation.
Provides configuration format for deployment via Smithery with included smithery.yaml file for deployment automation.
LinkRescue MCP Server
Find broken affiliate links fast, prioritize by impact, and generate fix suggestions your AI agent can act on.
One call. 38+ affiliate networks checked. Revenue loss estimated.
One-click install: Install on MCPize |
pip install linkrescue-mcp
LinkRescue MCP exposes broken-link scanning, monitoring, and remediation workflows through the Model Context Protocol (MCP), so tools like Claude and Cursor can run link-health operations directly.
What You Get
check_broken_links: scan a URL (or sitemap) and return a structured broken-link reportmonitor_links: set up recurring monitoring for a websiteget_fix_suggestions: generate prioritized remediation recommendationshealth_check: verify MCP server and backend API connectivity
If the LinkRescue backend API is unreachable, the server falls back to realistic simulated data so local testing and demos keep working.
Related MCP server: webcheck-mcp
Quick Start
{
"mcpServers": {
"linkrescue": {
"command": "linkrescue-mcp"
}
}
}Then ask your AI agent:
"Scan example.com for broken affiliate links"
Free vs Pro
Tool | Free | Pro ($19/mo) | Agency ($29/mo) |
| Yes | Yes | Yes |
| Yes | Yes | Yes |
| - | Yes | Yes |
| - | - | Yes |
| - | Yes | Yes |
| - | Yes | Yes |
| - | - | Yes |
Revenue loss estimates | - | Yes | Yes |
Multi-site monitoring | - | 5 sites | 25 sites |
Free tier gives you single-page broken-link checks. Pro unlocks the full crawler + fix suggestions + recurring monitoring. Agency adds hourly checks, webhooks, and unlimited site count.
Upgrade to Pro on MCPize — $19/mo or $190/yr. Agency $29/mo or $290/yr.
Install
MCPize (Recommended)
One-click install with managed hosting: Install on MCPize
PyPI
pip install linkrescue-mcp
linkrescue-mcpFrom source
git clone https://github.com/carsonroell-debug/linkrescue-mcp.git
cd linkrescue-mcp
pip install -r requirements.txt
python main.pyMCP endpoint:
http://localhost:8000/mcp
Configuration
Variable | Description | Default |
| Base URL for LinkRescue API |
|
| API key for authenticated requests | empty |
Example:
export LINKRESCUE_API_BASE_URL="https://www.linkrescue.io/api/v1"
export LINKRESCUE_API_KEY="your-api-key"
linkrescue-mcpGet an API key at linkrescue.io/settings/api (Pro and Agency tiers only).
Running Options
Run via the installed entry point:
linkrescue-mcpRun directly from source:
python main.pyRun via FastMCP CLI:
fastmcp run main.py --transport streamable-http --port 8000Connect an MCP Client
Claude Desktop
Add this to claude_desktop_config.json:
{
"mcpServers": {
"linkrescue": {
"command": "linkrescue-mcp"
}
}
}Claude Code
claude mcp add linkrescue --transport http http://localhost:8000/mcpTry It
fastmcp list-tools main.py
fastmcp call-tool main.py health_check '{}'
fastmcp call-tool main.py check_broken_links '{"url":"https://example.com"}'Tool Inputs and Outputs
check_broken_links
Inputs:
url(required): site URL to scansitemap_url(optional, Agency tier): crawl from sitemapmax_depth(optional, default3): crawl depth
Returns scan metadata, broken-link details, and summary statistics. Pro and Agency tiers include estimated monthly revenue loss for broken affiliate links.
monitor_links
Inputs:
url(required)frequency_hours(optional, default24; Agency tier supports1)
Returns monitoring ID, schedule details, and status. Free tier returns a simulated monitor (no persistence).
get_fix_suggestions
Input:
full report from
check_broken_links, orraw
broken_linksarray, orJSON string of either format
Returns prioritized actions and suggested remediation steps. Pro and Agency tiers only.
health_check
No input. Returns server status and backend API reachability.
Deployment
Smithery
This repo includes smithery.yaml and smithery.json.
Push repository to GitHub
Create/add server in Smithery
Point Smithery to this repository
Docker / Hosting Platforms
A Dockerfile is included for Railway, Fly.io, and other container hosts.
# Railway
railway up
# Fly.io
fly launch
fly deploySet LINKRESCUE_API_BASE_URL and LINKRESCUE_API_KEY in your host environment.
Architecture
Agent (Claude, Cursor, etc.)
-> MCP
LinkRescue MCP Server (this repo)
-> HTTP API
LinkRescue Backend API (linkrescue.io)This server is a translation layer between MCP tool calls and LinkRescue API operations.
License
MIT — Built by Freedom Engineers
Related
SelfHeal MCP — Self-healing proxy for MCP servers
SiteHealth MCP — Full website health audit
LeadEnrich MCP — Waterfall lead enrichment
Additional README Variants
Developer-focused version:
README.dev.mdMarketplace-focused version:
README.marketplace.md
Available Tools
4 toolscheck_broken_linksA
Scans a single URL or entire site/sitemap for broken links.
Returns a structured report with every broken link found, its HTTP status code, the page it was discovered on, link type (affiliate/external/internal), SEO impact rating, and estimated revenue loss.
Agents can pass the output directly to get_fix_suggestions for remediation steps.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The website URL to scan (e.g. "https://example.com"). | |
| sitemap_url | No | Optional sitemap URL to crawl instead of discovering pages by depth. | |
| max_depth | No | How many levels deep to crawl from the start URL. Default 3. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the output format well ('structured report with every broken link found...') and mentions integration with another tool. However, it doesn't cover important behavioral aspects like rate limits, authentication needs, execution time, or error handling for a scanning tool that could be resource-intensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured and concise - three sentences that each earn their place. The first states the purpose, the second details the output, and the third provides integration guidance. No wasted words, front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (mentioned in context signals), the description doesn't need to explain return values in detail. It provides good context about the scanning scope and output integration. However, for a scanning tool with no annotations, it could better address behavioral aspects like performance characteristics or limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents all 3 parameters. The description adds no additional parameter information beyond what's in the schema. The baseline score of 3 is appropriate when the schema does all the parameter documentation work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('scans', 'returns') and resources ('URL or entire site/sitemap', 'broken links'). It distinguishes from siblings by mentioning the specific output format and direct integration with get_fix_suggestions, which differentiates it from health_check and monitor_links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool ('scans a single URL or entire site/sitemap for broken links') and mentions integration with get_fix_suggestions for remediation. However, it doesn't explicitly state when NOT to use it or provide alternatives among siblings like health_check or monitor_links.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fix_suggestionsA
Given a broken links report, returns prioritized remediation suggestions.
Each suggestion includes the broken URL, a recommended action (update link, follow redirect, remove, etc.), a human-readable explanation, and a code snippet where applicable.
Accepts either the full JSON report from check_broken_links or just the broken_links array.
| Name | Required | Description | Default |
|---|---|---|---|
| broken_links_report | Yes | The scan report (JSON string or dict) from check_broken_links. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the tool's output format (prioritized suggestions with specific fields) and input flexibility (accepts full JSON or just array). However, it doesn't mention performance characteristics, error handling, or whether this is a read-only operation (though implied by 'returns').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly front-loaded with the core purpose in the first sentence, followed by details about output format and input flexibility. Every sentence adds value with zero waste. The structure flows logically from purpose to output details to input requirements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which covers return values), no annotations, and 100% schema coverage, the description provides good context about purpose, usage, and behavioral aspects. However, for a tool that processes potentially complex broken link data, more detail about prioritization logic or suggestion criteria would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful context by explaining the parameter accepts either 'the full JSON report from check_broken_links or just the broken_links array' - clarifying format flexibility beyond what the schema's 'anyOf' indicates. This elevates the score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('returns prioritized remediation suggestions') and resources ('broken links report'). It distinguishes from sibling tools by specifying it processes output from 'check_broken_links' rather than performing scanning or monitoring itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('Given a broken links report') and mentions the specific sibling tool 'check_broken_links' as the source. However, it doesn't explicitly state when NOT to use it or mention alternatives among the other siblings like 'health_check' or 'monitor_links'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkA
Confirms the LinkRescue MCP server is alive and can reach the backend API.
Use this to verify connectivity before running scans. Returns server status, API reachability, and current configuration.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing what the tool returns ('server status, API reachability, and current configuration') and its verification purpose. It doesn't mention error behavior or performance characteristics, but provides solid operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Perfectly structured with two sentences: first states purpose, second provides usage guidance and return values. Every word earns its place with zero redundancy or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a zero-parameter health check tool with output schema. The description explains what it does, when to use it, and what it returns - covering all necessary context given the tool's simplicity and available structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters with 100% schema coverage, so baseline is 4. The description appropriately doesn't discuss parameters since none exist, focusing instead on the tool's purpose and output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('confirms', 'verify connectivity') and resources ('LinkRescue MCP server', 'backend API'). It distinguishes from siblings by focusing on server health rather than link scanning or monitoring operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool ('before running scans') and provides clear context about its verification purpose. The description distinguishes it from sibling tools that perform actual link operations rather than connectivity checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_linksA
Sets up ongoing broken-link monitoring for a website.
The monitor runs on a schedule (default: every 24 hours) and will detect new broken links, links that were fixed, and changes in site health score.
Returns a monitoring_id you can reference later to check status or cancel.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The website URL to monitor. | |
| frequency_hours | No | How often to re-scan, in hours. Default 24. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it's a setup/creation tool (implies mutation), runs on a schedule with a default frequency, detects specific changes (new broken links, fixed links, health score changes), and returns a monitoring_id for future reference. It doesn't mention permissions, rate limits, or error handling, but covers core behavior adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by details on schedule and detection scope, ending with return value. Every sentence adds value with zero waste, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (setup of ongoing monitoring), no annotations, 100% schema coverage, and the presence of an output schema (implied by 'Returns a monitoring_id'), the description is complete enough. It explains what the tool does, how it behaves, and the return value, leaving schema details to structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters (url and frequency_hours). The description adds no additional parameter semantics beyond what's in the schema, such as URL format constraints or frequency limits. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Sets up ongoing broken-link monitoring') and identifies the resource ('for a website'). It distinguishes from sibling tools like 'check_broken_links' (one-time check) by emphasizing ongoing monitoring on a schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (ongoing monitoring vs. one-time checks) and implies alternatives through sibling tool names like 'check_broken_links'. However, it doesn't explicitly state when NOT to use it or directly compare to all siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: check_broken_links for scanning, get_fix_suggestions for remediation, health_check for connectivity, and monitor_links for ongoing monitoring. There is no overlap or ambiguity in their functions.
The tools follow a consistent verb_noun pattern (check_broken_links, get_fix_suggestions, monitor_links), with one minor deviation (health_check uses noun_verb). This is mostly consistent and readable.
With 4 tools, the server is well-scoped for its purpose of broken link detection and management. Each tool earns its place, covering scanning, remediation, monitoring, and health checks without being too sparse or bloated.
The tool set provides complete coverage for the domain: check_broken_links for detection, get_fix_suggestions for remediation, monitor_links for ongoing tracking, and health_check for connectivity. There are no obvious gaps, and agents can follow a full workflow from scan to fix to monitoring.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Security, SEO and AI-visibility scanner for web apps · free scans and focused checks via MCP.
SEO MCP server: crawl your site, find AI-visibility gaps, and ship the fix from your coding agent.
Monitor MCP servers, API contracts and AI outputs for schema drift. Alerts on breaking changes.
Scan any website or MCP server for agent readiness: 0-100 score, a fix per failing check. Free.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceMCP server for website SEO + GEO analysis. Scan any URL to get scores across 5 categories (SEO, GEO, Performance, Security, Accessibility) with actionable fix recommendations. Enables AI coding assistants to audit websites and implement fixes autonomously.
- AlicenseNot gradedqualityDmaintenanceWebsite health checker MCP server - SEO audit, accessibility scan, broken link detection, performance analysis, and page comparison.793MIT
- AlicenseNot gradedqualityDmaintenanceDead link checker MCP server - find broken links, redirects, and timeouts on any website. Free tier: 30 links/scan.17MIT
- FlicenseNot gradedqualityFmaintenanceAn MCP server that lets AI assistants check single URLs, scan HTML content, and crawl entire websites for broken links via four tools.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/carsonroell-debug/linkrescue-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server