Skip to main content
Glama

Lordevo Shop (x402 website checks)

Readability and word count (Flesch, reading time, top terms) ($0.002/call)

readability
Read-onlyIdempotent

$0.002 per call (x402, USDC on Base; free trial: add "trial": true or use try_free). [Fetch and read the web] Text statistics for the main content of one page: word, sentence and character counts, Flesch reading ease and Flesch-Kincaid grade (English), level, long-sentence ratio, reading and speaking time, and top terms. Computed by formula, no AI. Cached 1 h. ~0.3-2 s.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "url": "<url>"
    },
    "name": "readability"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlYesPublic http(s) URL or bare domain, e.g. https://example.com
trialNoOptional. true = free if a trial call is left (3 per IP per UTC day), else the payment terms.

Output Schema

NameRequiredDescriptionDefault
urlNo
toolNo
cacheNo
levelNo
_trialNoPresent when the call was a free trial call.
providerNo
price_usdNo
top_termsNo
word_countNo
sentence_countNo
flesch_reading_easeNo
flesch_kincaid_gradeNo
reading_time_minutesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / trial / description
      Previous value: -"Optional. true = answer free if a trial call is left (3 per IP per UTC day); otherwise you get the payment terms."New value: +"Optional. true = free if a trial call is left (3 per IP per UTC day), else the payment terms."
  2. Changed2 schema fields changed
    • addedInput schema / properties / trial
      Added value: +{
      +  "description": "Optional. true = answer free if a trial call is left (3 per IP per UTC day); otherwise you get the payment terms.",
      +  "type": "boolean"
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "anyOf": [
      +    {
      +      "required": [
      +        "tool",
      +        "url",
      +        "word_count"
      +      ]
      +    },
      +    {
      +      "properties": {
      +        "accepts": {
      +          "type": "array"
      +        },
      +        "error": {
      +          "type": "string"
      +        },
      +        "resource": {
      +          "type": "object"
      +        },
      +        "x402Version": {
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "x402Version",
      +        "accepts"
      +      ]
      +    },
      +    {
      +      "properties": {
      +        "charged": {
      +          "type": "boolean"
      +        },
      +        "error": {
      +          "type": "string"
      +        },
      +        "message": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "error"
      +      ]
      +    }
      +  ],
      +  "properties": {
      +    "_trial": {
      +      "description": "Present when the call was a free trial call.",
      +      "type": "object"
      +    },
      +    "cache": {
      +      "type": "object"
      +    },
      +    "flesch_kincaid_grade": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "flesch_reading_ease": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "level": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "price_usd": {
      +      "type": "number"
      +    },
      +    "provider": {
      +      "type": "string"
      +    },
      +    "reading_time_minutes": {
      +      "type": "number"
      +    },
      +    "sentence_count": {
      +      "type": "integer"
      +    },
      +    "tool": {
      +      "type": "string"
      +    },
      +    "top_terms": {
      +      "type": "array"
      +    },
      +    "url": {
      +      "type": "string"
      +    },
      +    "word_count": {
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Added

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, and the description adds real operational context beyond them: results are cached for 1 h, latency is ~0.3–2 s, and scores are 'computed by formula, no AI' (so they are deterministic). It also discloses the payment model and the trial escape hatch, which an agent must know before calling. The gap is that it doesn't say what happens when main-content extraction fails (paywall, JS-only page).

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?

Dense but tight — every clause carries information (pricing, metric list, determinism, cache, latency). The one structural weakness is that the pricing/payment sentence occupies the prime front-loaded position ahead of what the tool actually does, pushing the capability statement to second place.

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?

With an output schema present, return values need no explanation, and the description covers cost, trial, caching, speed, determinism and the English limitation. It falls just short of full completeness by not addressing extraction failure modes or non-English behavior, which matter for a tool scoped to 'the main content of one page'.

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% with only two params, so the schema does the heavy lifting and baseline would be 3. The description still adds value by naming the trial mechanism ('add "trial": true or use try_free') and the per-IP daily cap, giving an agent a concrete alternative invocation path that the schema alone only partially conveys.

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 concrete verb and resource — 'text statistics for the main content of one page' — and then enumerates the exact metrics returned (word/sentence/character counts, Flesch reading ease, Flesch-Kincaid grade, long-sentence ratio, reading and speaking time, top terms). That metric list effectively separates it from siblings like token_count or page_quality, though no sibling is named explicitly.

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?

Usage is only implied: an agent infers this is the tool for readability/length scoring of a single page, but the description never states when to pick it over token_count, page_markdown, or page_quality, nor any exclusions. The closest thing to guidance is the '(English)' caveat on the Flesch scores, which hints at a limitation rather than a routing rule.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources