Skip to main content
Glama

readability_ops

Extract clean, ad-free article text from web pages for RSS feeds. Uses trafilatura with readability-lxml fallback, caching results in SQLite.

Instructions

readability_ops - Clean article text without ad sites.

RATIONALE: trafilatura primary plus readability-lxml fallback, cached in SQLite. No paywall bypass: if the page needs login, extraction reports failure honestly.

Return Format

Dictionary with success (bool), message (str), and article text fields (title, author, text, html, extractor, cached).

Examples

  • {"operation": "extract", "item_id": 3} -> downloads article and extracts cleaned text.

  • {"operation": "get_cached", "item_id": 3} -> retrieves previously cached clean extraction.

  • {"operation": "list_extractors"} -> lists available readability engines.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
forceNo
item_idNo
operationYesReadability operation to run

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does meaningful work: it discloses SQLite caching, the primary/fallback extractor chain, and honest failure reporting when a login/paywall is encountered. It still omits permission or rate-limit behavior, and the 'clear_cache' operation's destructive effect on stored extractions is never described.

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 front-loaded with the purpose, then uses clear headers for rationale, return format, and examples. The RATIONALE is arguably internal-implementation detail, but it is short and earns its place by explaining the caching and fallback semantics.

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

Completeness3/5

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

An output schema exists, so the Return Format block is somewhat redundant but harmless. The gaps are on the input side: one of four enum operations ('clear_cache') and one of three parameters ('force') go undocumented, which leaves an agent unable to safely invoke those paths.

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?

Schema coverage is only 33%: 'operation' is documented and enum-bound, but 'item_id' and 'force' have no schema descriptions. The examples add meaning to item_id (an article id) but 'force' is never explained in either place, and 'clear_cache' appears in the enum without any clarifying example.

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

Purpose4/5

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

The description states a specific verb and resource — 'Clean article text' — plus a 'RATIONALE' naming trafilatura with a readability-lxml fallback, so the agent knows exactly what the tool produces. It does not, however, differentiate itself from the sibling reader_ops, which risks confusion between two reading/extraction tools.

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 Examples section implicitly shows when to use each operation (extract for a fresh download, get_cached for a prior extraction), which is better than nothing. But there is no explicit statement of when to prefer this tool over reader_ops, nor any when-not guidance beyond the 'no paywall bypass' remark.

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