Skip to main content
Glama

Set progress

set_progress
DestructiveIdempotent

Update how far the user is through an in-progress item. Books: current page, the page count of their copy, and/or a reading percentage (for audiobooks and e-readers). Shows: current season + episode. Anime: episodes watched. Manga: chapter and/or volume read up to.

Input Schema

NameRequiredDescriptionDefault
titleNoTitle of the item (exact title preferred; an ambiguous partial match returns candidates with ids instead of guessing)
volumeNoLast volume read (manga only)
chapterNoLast chapter read (manga only)
item_idNoLibrary item id (UUID), as shown by get_details. When given, title is ignored and the row is addressed exactly.
media_typeYesType of media (progress only applies to books, shows, anime and manga)
page_countNoPages in the copy they are reading (books only); null clears it
current_pageNoCurrent page number (books only)
current_seasonNoCurrent season number (shows only)
current_episodeNoCurrent episode number within the season (shows only)
episodes_watchedNoTotal episodes watched so far (anime only)
reading_progressNoPercent read, 0 to 100 (books only, for formats without pages); null clears it

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changed
    • addedInput schema / properties / chapter
      Added value: +{
      +  "description": "Last chapter read (manga only)",
      +  "type": "integer"
      +}
    • addedInput schema / properties / item_id
      Added value: +{
      +  "description": "Library item id (UUID), as shown by get_details. When given, title is ignored and the row is addressed exactly.",
      +  "type": "string"
      +}
    • changedInput schema / properties / media_type / description
      Previous value: -"Type of media (progress only applies to books, shows, and anime)"New value: +"Type of media (progress only applies to books, shows, anime and manga)"
    • changedInput schema / properties / media_type / enum
      Previous value: -[
      -  "book",
      -  "show",
      -  "anime"
      -]New value: +[
      +  "book",
      +  "show",
      +  "anime",
      +  "manga"
      +]
    • addedInput schema / properties / page_count
      Added value: +{
      +  "description": "Pages in the copy they are reading (books only); null clears it",
      +  "minimum": 0,
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / reading_progress
      Added value: +{
      +  "description": "Percent read, 0 to 100 (books only, for formats without pages); null clears it",
      +  "maximum": 100,
      +  "minimum": 0,
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • changedInput schema / properties / title / description
      Previous value: -"Title of the item (partial match supported)"New value: +"Title of the item (exact title preferred; an ambiguous partial match returns candidates with ids instead of guessing)"
    • addedInput schema / properties / volume
      Added value: +{
      +  "description": "Last volume read (manga only)",
      +  "type": "integer"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "media_type",
      -  "title"
      -]New value: +[
      +  "media_type"
      +]
  2. Added

TDQS

B3.4/5.0
Behavior3/5

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

Annotations declare destructiveHint=true and idempotentHint=true, so the safety profile is partly covered structurally. The description, however, never discloses that existing progress is overwritten or that null clears values, and gives no return-value information for a mutation with 11 params. It adds the per-format field mapping but not the destructive consequences.

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?

Three tight sentences, front-loaded with the core action and followed by an efficient per-format breakdown. No filler, though the bullet-like enumeration is dense relative to the schema it duplicates.

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?

Covers which fields apply to which media type, which is the main complexity, but for a destructive 11-param mutation with no output schema it omits overwrite semantics, partial-update behavior, and the item_id-vs-title resolution path. Adequate rather than complete.

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 100%, so every parameter is already documented, including media-specific scoping and null-clearing. The description largely restates that mapping (books → page/percentage, shows → season+episode) without adding syntax, precedence between title and item_id, or cross-field constraints. Baseline 3 applies.

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?

States a specific verb and resource ('Update how far the user is through an in-progress item') and enumerates the per-media-type progress fields, so the operation is unambiguous. It does not differentiate itself from plausible siblings such as mark_tv_watched or update_status, which keeps it from 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?

'in-progress item' implies usage, and the media-type breakdown hints at applicability, but there is no explicit when-to-use guidance, no exclusions, and no routing to alternatives like mark_tv_watched or get_show_progress for shows/anime.

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