Skip to main content
Glama

reading_stats

Query reading statistics for a date range to see totals, streak, pace, and per-work rows.

Instructions

Reading totals, streak and pace over a span, plus per-work rows.

range is "all" or a number of days from 1 to 3660 ("7d", "30d"); any other value is refused rather than silently defaulted, because the upstream summary and works endpoints would then disagree on the span. Per-work rows are ordered by time read and capped at 50; current_progression is always the latest position regardless of the span.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
rangeNo30d

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses several behaviors: refusal of invalid range values rather than silent default, ordering of per-work rows, the 50-row cap, and the invariant that current_progression is always latest. It does not explicitly state whether the tool is read-only, but that is strongly implied by the nature of a stats endpoint, and the disclosure of error handling and ordering is valuable.

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 efficiently structured: a one-line summary up front, followed by two focused sentences detailing the parameter and per-work behavior. Every sentence adds value without padding. The key constraints (refusal, cap, ordering) are front-loaded and easy to parse.

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?

For a tool with a single optional parameter and an output schema provided, the description is complete. It covers the valid inputs, the behavior on invalid inputs, and the characteristics of the returned rows. The output schema will handle the return field structure, so no further explanation is needed. An agent can confidently invoke this tool correctly.

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

Parameters5/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 fully compensate. It does this exceptionally well: it explains the allowed values ('all' or day counts like '7d', '30d'), the 1–3660 range, the refusal behavior, and the rationale (avoiding disagreement between endpoints). This goes far beyond the bare schema, which only shows a default. The agent gets everything it needs to correctly set the parameter.

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 opens with a clear, specific statement of what the tool does: 'Reading totals, streak and pace over a span, plus per-work rows.' This identifies the resource (reading statistics) and the action (retrieving them). It is distinct from sibling tools like search_books or get_book_text, though it does not explicitly name a sibling to differentiate from, which is why it does not receive a 5.

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 description provides clear context on the 'range' parameter, including valid values and the refusal behavior to avoid upstream disagreement. However, it does not explicitly state when to use this tool versus the sibling tools (e.g., when to prefer reading_stats over list_highlights or get_book). The usage is implied by the purpose but not articulated as a recommendation.

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