Skip to main content
Glama

fetch_links

Read-onlyIdempotent

Fetch an HTML page and extract all outbound links as absolute URLs with anchor text and internal/external classification. Use to analyze link structures, filter by type, and deduplicate results for SEO or web research.

Instructions

Extract every outbound link from an HTML page, resolved to absolute URLs. Each entry includes href, anchor text, optional rel/title, and an internal/external classification (bare-domain and www. treated as the same host). Anchors (#), javascript:, mailto:, tel:, data:, and file: URIs are skipped. Respects .

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYes
limitNoCap on returned links (default 1000)
dedupeNoDrop duplicate hrefs (default true)
filterNoFilter by type (default 'all')
max_bytesNo
timeout_msNo
user_agentNo
max_redirectsNo
allow_private_hostsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.6.1

TDQS

A4.2/5.0
Behavior5/5

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

The description adds rich behavioral context beyond the readOnly/openWorld/idempotent annotations: absolute URL resolution, handling of <base href>, skipped URI schemes, and internal/external classification rules. This meaningfully tells the agent what the tool will and will not process.

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

Conciseness5/5

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

The description is two sentences: the first front-loads the core purpose, and the second packs essential behavioral details without fluff. Every clause adds useful information.

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

Completeness4/5

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

There is no output schema, so the description's enumeration of returned fields is valuable and mostly sufficient. It is not fully complete because it omits explicit guidance for advanced parameters and error/edge-case behavior, but for the common call path it is strong.

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

Parameters3/5

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

The description clarifies that `url` should be an HTML page and explains output semantics relevant to `filter` and `dedupe`. However, schema coverage is only 33% and several parameters such as max_bytes, timeout_ms, user_agent, max_redirects, and allow_private_hosts are not addressed in the description, leaving gaps.

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?

The description opens with a specific verb and resource: 'Extract every outbound link from an HTML page' and details the output fields and classification. This makes it clearly distinguishable from sibling tools like fetch_meta or fetch_html_to_markdown.

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

Usage Guidelines3/5

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

The intended use is implied through the link-extraction focus, but the description does not explicitly say when to choose this over sibling tools such as http_get or fetch_html_to_text. No exclusions or alternative recommendations are provided.

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