Skip to main content
Glama

Changes since

changes_since
Read-only

Standard and Pro: changes since an edition cursor, ranked by prominence. IDs in removed that were re-keyed appear in replaced_by with their new id. limit defaults to 100 per list; detail defaults to compact. copy_pending marks missing copy; copy_skipped: the story is rated negligible and will not get a summary (it is dropped if copy arrives later). The cursor advances; when truncated is present (added/changed totals), call latest_stories for the full current list. A malformed cursor returns 400 invalid_cursor. While the upstream is unavailable an unsaved cursor returns itself with empty lists and stale:true: poll again with it. reset:true (old epoch or expired cursor) carries empty lists: re-read latest_stories and continue from the returned cursor. contribution on full-detail items is a snapshot; changes to it alone are not reported.

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": {
      "cursor": "<cursor>"
    },
    "name": "changes_since"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNo
cursorYes
detailNocompact

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only say readOnly and closed-world, but the description discloses the non-obvious behaviors: the cursor self-advances, an unsaved cursor echoes itself with stale:true during upstream outage, reset:true yields empty lists on epoch expiry, and copy_pending/copy_skipped flag per-item states with the drop-if-copy-arrives caveat. It even warns that contribution changes alone are not reported. This is exactly the metadata an agent cannot get from the schema.

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?

Front-loaded with purpose, then defaults, then per-item flags, then error/degraded states, then reset, then the contribution caveat - a sensible ordering with no filler sentences. It is heavily telegraphic (semicolon-chained fragments, an unexplained 'Standard and Pro:' opener), which trades readability for density but wastes no words.

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?

There is no output schema, so the description must describe returns, and it does: added/changed/removed lists, replaced_by on re-keyed IDs, truncated totals, empty lists with stale or reset flags, plus the 400 error path. What is missing is the per-item payload shape for added/changed entries, which for a delta-feed tool with no output schema is a real if modest gap.

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 0%, so the description must carry parameter meaning. It explains cursor semantics well (advances, malformed -> 400, expired -> reset) and says limit is 'per list' and detail 'full' items carry a contribution snapshot, but it only restates the two schema defaults and never explains what compact vs full actually return or the 1-500 limit bounds. Partial compensation for the coverage gap.

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?

Opens with a specific verb+resource+ordering: 'changes since an edition cursor, ranked by prominence', and the removed/replaced_by sentence makes the delta-list nature concrete. It implicitly distinguishes itself from latest_stories by reserving that tool for the 'full current list', though it never states the distinction as a one-line contrast, and terms like 'edition cursor' and 'prominence' are jargon an agent must absorb from context.

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?

Explicit routing in three separate situations: when 'truncated is present' call latest_stories; on reset:true re-read latest_stories and continue from the returned cursor; while upstream is unavailable, poll again with the same cursor. It also gives the plan precondition ('Standard and Pro') and the failure case (malformed cursor -> 400 invalid_cursor), leaving nothing to inference.

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.