Skip to main content
Glama

utilpeek: summarize a text by picking its key sentences

text_summarize
Read-onlyIdempotent

utilpeek: Summarize a text by picking its key sentences. For paper abstracts use paper_digest; for counts use text_stats. Returns an extractive summary: the most central sentences (or ratio of them) by LexRank, picked verbatim and kept in their original order, with per-sentence scores. It does not paraphrase, shorten or check facts. Typically under 0.5 s. Price: USD 0.003. Free: 10 utilpeek calls per IP per UTC day. The submitted text is never logged or stored. Docs: https://tanod.dev/learn/text-summarization-api.html

Input Schema

NameRequiredDescriptionDefault
textYesThe text (at most 200,000 characters).
ratioNoPick this share of the sentences instead (at most 100).
languageNoStop-word language: de, en (default), es, fr, it, nl or pt.en
sentencesNoSentences to pick (ignored when ratio is set).

Output Schema

NameRequiredDescriptionDefault
noteNo
errorNoOnly on an error result: an object {code, message}, or the reason string of an x402 PaymentRequired object.
methodNo
sourceNo
summaryNo
sentencesNo
iterationsNo
input_truncatedNo
sentences_totalNo
sentences_selectedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / language / description
      Added value: +"Stop-word language: de, en (default), es, fr, it, nl or pt."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "error": {
      +      "description": "Only on an error result: an object {code, message}, or the reason string of an x402 PaymentRequired object."
      +    },
      +    "input_truncated": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "iterations": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "method": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "note": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "sentences": {
      +      "items": {
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "sentences_selected": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "sentences_total": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "source": {
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "summary": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  2. Added

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower; the description still adds substantial context: LexRank extractive method, verbatim sentences kept in original order, no paraphrasing/shortening/fact-checking, typical latency under 0.5s, pricing, free-tier limit, and a no-logging/no-storage privacy guarantee. No contradiction with annotations.

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?

Front-loads purpose and routing in the first sentence, then layers behavior, performance, cost, and privacy in tight clauses. Every sentence (including pricing and the docs URL) carries information an agent or caller would want; no filler.

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?

With an output schema present, return values need not be enumerated, and the description still notes per-sentence scores and original ordering. Combined with the alternatives routing, cost, limits, and privacy disclosure, nothing an agent needs to select or invoke this tool correctly is missing.

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; the description adds meaning by framing `sentences` and `ratio` as alternative selection mechanisms ('the most central `sentences` (or `ratio` of them)') and characterizing the selection as centrality-based (LexRank). It leaves the mutual-exclusion detail ('ignored when ratio is set') to the schema, but contributes real semantic framing.

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+resource ('Summarize a text by picking its key sentences') and immediately differentiates itself from siblings paper_digest (abstracts) and text_stats (counts). An agent can identify this as the extractive-summarization tool without opening the 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?

Explicitly names the two nearest alternatives and the condition that selects each ('For paper abstracts use paper_digest; for counts use text_stats'). This is exactly the when-to-use-this-vs-siblings guidance the dimension asks for.

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