Skip to main content
Glama
EmericLaberge

Hermes SearXNG MCP Server

get_content

Fetch a specific URL and extract its content as clean Markdown, ready for LLM use. Solves reading web pages when you already have the link.

Instructions

Fetch a URL and extract LLM-ready Markdown content.

Use this when you already have a specific URL and want to read its content.
If you need to discover URLs first, use web_search() instead.

Args:
    url: URL to fetch and extract content from.

Returns:
    Dictionary with:
    - url: The requested URL
    - content: Extracted Markdown content

Example:
    >>> await get_content("https://example.com")
    {
        "url": "https://example.com",
        "content": "# Example Domain

This domain is for use in illustrative examples..." }

Notes:
    - Specialized handlers for GitHub Issues, Stack Exchange, Wikipedia, and arXiv.
    - Falls back to Trafilatura and BeautifulSoup for general websites.
    - Content extraction is best-effort and may fail for paywalled or protected content.
    - Some content types (PDFs, videos) may not be supported.

Raises:
    ContentExtractionError: If fetching or extraction fails.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses specialized handlers, fallback behavior, best-effort extraction, potential failures (paywalled/protected content), unsupported content types, and raises an exception. This is rich behavioral context beyond what the schema provides. It doesn't mention rate limits or auth, but for a fetch tool this is strong coverage.

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?

The description is well-structured with clear sections (Args, Returns, Example, Notes, Raises). It is somewhat verbose but every section earns its place: the example clarifies output, notes disclose limitations, and raises documents errors. The core purpose is front-loaded in the first line.

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?

Given the tool has only 1 parameter, no annotations, and an output schema, the description is complete. It covers what the tool does, when to use it, what it returns, what can go wrong, and limitations. An agent has everything needed to invoke it correctly.

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 description coverage is 0%, so the description must compensate. It explains the single parameter 'url' as 'URL to fetch and extract content from' and provides a concrete example with expected output. This adds meaning beyond the bare schema, though it doesn't add format validation details (e.g., must be http/https).

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 states a specific verb ('Fetch a URL and extract LLM-ready Markdown content') and clearly identifies the resource (URL). It distinguishes itself from siblings by explicitly saying to use it when you already have a URL, versus web_search for discovering URLs. This is a clear, specific purpose.

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?

The description explicitly says 'Use this when you already have a specific URL and want to read its content' and names the alternative: 'If you need to discover URLs first, use web_search() instead.' This provides clear when-to-use and when-not-to-use guidance, plus a named alternative.

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

Deploy Server

Other Tools