Skip to main content
Glama
Panda Federation Tools

Panda Federation Tools

Broken Link Checker: 404s, Redirects and Dead Links

broken_link_checker
Read-only

Check site or page links for broken and redirecting URLs, returning HTTP status and redirect details so SEO, content, and agency teams can build 404 reports.

Instructions

Crawl one or more start pages and check every unique http(s) link for HTTP status, final URL after redirects, a broken flag (status 400+) and a redirected flag, with external links checked by default. Unlike ai_search_seo_audit (page SEO/GEO scoring) and website_change_monitor (content diffs over time), this finds dead and redirecting links. Use when SEO, content or agency teams need a 404 report for a site or page. Do not use to search the web, to crawl a whole large site in one call or to check private or internal addresses (blocked and never billed). Parameters: startUrls (required in practice) are the pages crawled; maxPages is pages followed per host (1 = only the start pages); maxLinks caps checked links and therefore billing; checkExternal=false stays on-site; timeoutSecs is the per-request timeout (default 15). Billed per link that returns an HTTP status; timeouts, DNS failures and robots-skipped targets are free. Returns per item: agentSummary, originalUrl, finalUrl, statusCode, broken, redirected, external, contentType, sourcePage, error; plus LINKS_XLSX (all links plus a Broken sheet)/CSV.

Behavior: read-only; runs the Apify Actor pandadad0214/broken-link-checker (https://apify.com/pandadad0214/broken-link-checker) on your own Apify account. Price: $0.001 per link checked. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxLinks when you leave it unset, so it also limits what is billed; setting maxLinks higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "broken_link_checker"
  }
}

Input Schema

NameRequiredDescriptionDefault
maxLinksNoMaximum links to check. Maximum unique http(s) URLs to check. This is what you are charged for. Hard max 2,000. (maxResults is accepted as an alias.)
maxPagesNoPages to crawl per host. How many HTML pages on the same host as each start URL to fetch for extracting more links. 1 = only the start URL(s). Further same-host pages are queued only when this is greater than 1. robots.txt is respected for crawl sources.
startUrlsNoStart URLs. Pages to start from. The Actor fetches each page, extracts http(s) links, and checks them. Leave empty for a short demo on example.com. One URL per line.
timeoutSecsNoPer-request timeout (seconds). How long to wait for each request. Timed-out URLs are recorded but not charged.
checkExternalNoCheck outbound (external) links. When on, links to other hosts are checked too. Turn off to check only same-host links.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.7.0

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the read-only, non-destructive, open-world profile, and the description adds substantial context beyond them: per-link pricing ($0.001), free timeouts/DNS failures/robots-skipped targets, a hard per-call spending cap, maxLinks-vs-run_max_items billing interaction, typical 5-15s runtime, and the timeout recovery path (raise run_timeout_secs to 300 or shrink input). Nothing here contradicts the annotations; idempotentHint=false is consistent with a live HTTP crawl.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, differentiation, and exclusions before parameters and cost, and nearly every sentence earns its place. It is one dense block, though, and the billing cap/price information recurs across the description and the run_max_charge_usd schema field, costing some scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description still documents the return envelope ({actor, count, items}), the per-item fields (statusCode, finalUrl, broken, redirected, sourcePage, error) and the XLSX/CSV artifacts. For an 8-parameter billed crawl tool that is complete enough to call correctly on the first try.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real interpretation: maxPages as pages followed per host with '1 = only the start pages', maxLinks as the billing driver, and the non-obvious interaction where run_max_items fills maxLinks when unset. It also flags that startUrls is 'required in practice' despite being technically optional, which the schema does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: crawl start pages and check every unique http(s) link for HTTP status, final URL after redirects, and broken/redirected flags. It explicitly names what it is not (ai_search_seo_audit for page SEO/GEO scoring, website_change_monitor for content diffs), so an agent can separate it from siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit positive trigger (SEO, content or agency teams needing a 404 report for a site or page) plus three concrete exclusions: don't use to search the web, don't crawl a whole large site in one call, and don't target private or internal addresses. The alternatives and boundary conditions are spelled out rather than implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.