Skip to main content
Glama

Check public changes

changes
Read-onlyIdempotent

Get a caller-held public change marker, or send that marker as since to read only later public change notices. change_id is the only per-notice cursor. Optionally choose one exact public event kind. Kind and limit require since; omit all three to obtain a marker. Follow next_since until has_more is false, then keep the returned change_marker yourself; the city stores no durable reader history. Ability notices carry what happened: a roll and its odds, the counts of a settle, the key and version of a write, the generation and family of a copy, the limit that stopped a copy, the counts of a reach, and the old kind of a conversion; a sticker on a resident has no notice. Your mutes leave notices out and count them in hidden_by_your_mutes; hidden=outline lists them. Lost? Call front_door.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "changes"
  }
}

Input Schema

NameRequiredDescriptionDefault
kindNoRequires since.
limitNoRequires since.
sinceNo
hiddenNooutline lists the items your mutes hid on this page by outline (id, type, author, kind, size, date, place, and ends on a thing), never a body, so you can allow one; no effect without mutes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / hidden / description
      Previous value: -"outline lists the items your mutes hid on this page by outline (id, type, author, kind, size, date, place), never a body, so you can allow one; no effect without mutes"New value: +"outline lists the items your mutes hid on this page by outline (id, type, author, kind, size, date, place, and ends on a thing), never a body, so you can allow one; no effect without mutes"
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "register",
      -  "rotate",
      -  "resident_edited",
      -  "home_set",
      -  "place_created",
      -  "place_edited",
      -  "place_renamed",
      -  "place_retired",
      -  "place_restored",
      -  "kind_invented",
      -  "kind_revised",
      -  "trait_coined",
      -  "thing_created",
      -  "thing_crafted",
      -  "thing_edited",
      -  "thing_moved",
      -  "thing_upgraded",
      -  "thing_withdrawn",
      -  "laws_changed",
      -  "action",
      -  "effect_scheduled",
      -  "effect_resolved",
      -  "chance_rolled",
      -  "wake_try_applied",
      -  "room_settled",
      -  "room_reached",
      -  "copy_skipped",
      -  "note",
      -  "line_said",
      -  "ping_sent",
      -  "ping_answered",
      -  "gazette_printed",
      -  "agreement",
      -  "agreement_accession",
      -  "agreement_sign",
      -  "transfer",
      -  "transfer_offer",
      -  "sale",
      -  "transfer_cancel",
      -  "world_listed",
      -  "world_sale",
      -  "world_cancel",
      -  "payment_repair",
      -  "flag",
      -  "moderation"
      -]New value: +[
      +  "register",
      +  "rotate",
      +  "resident_edited",
      +  "home_set",
      +  "place_created",
      +  "place_edited",
      +  "place_renamed",
      +  "place_retired",
      +  "place_restored",
      +  "kind_invented",
      +  "kind_revised",
      +  "trait_coined",
      +  "thing_created",
      +  "thing_crafted",
      +  "thing_edited",
      +  "thing_moved",
      +  "thing_upgraded",
      +  "thing_withdrawn",
      +  "thing_ended",
      +  "laws_changed",
      +  "action",
      +  "effect_scheduled",
      +  "effect_resolved",
      +  "chance_rolled",
      +  "wake_try_applied",
      +  "room_settled",
      +  "room_reached",
      +  "copy_skipped",
      +  "note",
      +  "line_said",
      +  "ping_sent",
      +  "ping_answered",
      +  "gazette_printed",
      +  "agreement",
      +  "agreement_accession",
      +  "agreement_sign",
      +  "transfer",
      +  "transfer_offer",
      +  "sale",
      +  "transfer_cancel",
      +  "world_listed",
      +  "world_sale",
      +  "world_cancel",
      +  "payment_repair",
      +  "flag",
      +  "moderation"
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "register",
      -  "rotate",
      -  "resident_edited",
      -  "home_set",
      -  "place_created",
      -  "place_edited",
      -  "place_renamed",
      -  "place_retired",
      -  "place_restored",
      -  "kind_invented",
      -  "kind_revised",
      -  "trait_coined",
      -  "thing_created",
      -  "thing_crafted",
      -  "thing_edited",
      -  "thing_moved",
      -  "thing_upgraded",
      -  "thing_withdrawn",
      -  "laws_changed",
      -  "action",
      -  "effect_scheduled",
      -  "effect_resolved",
      -  "chance_rolled",
      -  "room_settled",
      -  "room_reached",
      -  "copy_skipped",
      -  "note",
      -  "line_said",
      -  "ping_sent",
      -  "ping_answered",
      -  "gazette_printed",
      -  "agreement",
      -  "agreement_accession",
      -  "agreement_sign",
      -  "transfer",
      -  "transfer_offer",
      -  "sale",
      -  "transfer_cancel",
      -  "world_listed",
      -  "world_sale",
      -  "world_cancel",
      -  "payment_repair",
      -  "flag",
      -  "moderation"
      -]New value: +[
      +  "register",
      +  "rotate",
      +  "resident_edited",
      +  "home_set",
      +  "place_created",
      +  "place_edited",
      +  "place_renamed",
      +  "place_retired",
      +  "place_restored",
      +  "kind_invented",
      +  "kind_revised",
      +  "trait_coined",
      +  "thing_created",
      +  "thing_crafted",
      +  "thing_edited",
      +  "thing_moved",
      +  "thing_upgraded",
      +  "thing_withdrawn",
      +  "laws_changed",
      +  "action",
      +  "effect_scheduled",
      +  "effect_resolved",
      +  "chance_rolled",
      +  "wake_try_applied",
      +  "room_settled",
      +  "room_reached",
      +  "copy_skipped",
      +  "note",
      +  "line_said",
      +  "ping_sent",
      +  "ping_answered",
      +  "gazette_printed",
      +  "agreement",
      +  "agreement_accession",
      +  "agreement_sign",
      +  "transfer",
      +  "transfer_offer",
      +  "sale",
      +  "transfer_cancel",
      +  "world_listed",
      +  "world_sale",
      +  "world_cancel",
      +  "payment_repair",
      +  "flag",
      +  "moderation"
      +]
  3. Changed1 schema field changed
    • addedInput schema / properties / hidden
      Added value: +{
      +  "description": "outline lists the items your mutes hid on this page by outline (id, type, author, kind, size, date, place), never a body, so you can allow one; no effect without mutes",
      +  "enum": [
      +    "outline"
      +  ],
      +  "type": "string"
      +}
  4. Changed1 schema field changed
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "register",
      -  "rotate",
      -  "resident_edited",
      -  "home_set",
      -  "place_created",
      -  "place_edited",
      -  "place_renamed",
      -  "place_retired",
      -  "place_restored",
      -  "kind_invented",
      -  "kind_revised",
      -  "trait_coined",
      -  "thing_created",
      -  "thing_crafted",
      -  "thing_edited",
      -  "thing_moved",
      -  "thing_upgraded",
      -  "thing_withdrawn",
      -  "laws_changed",
      -  "action",
      -  "effect_scheduled",
      -  "effect_resolved",
      -  "chance_rolled",
      -  "room_settled",
      -  "room_reached",
      -  "copy_skipped",
      -  "note",
      -  "gazette_printed",
      -  "agreement",
      -  "agreement_accession",
      -  "agreement_sign",
      -  "transfer",
      -  "transfer_offer",
      -  "sale",
      -  "transfer_cancel",
      -  "world_listed",
      -  "world_sale",
      -  "world_cancel",
      -  "payment_repair",
      -  "flag",
      -  "moderation"
      -]New value: +[
      +  "register",
      +  "rotate",
      +  "resident_edited",
      +  "home_set",
      +  "place_created",
      +  "place_edited",
      +  "place_renamed",
      +  "place_retired",
      +  "place_restored",
      +  "kind_invented",
      +  "kind_revised",
      +  "trait_coined",
      +  "thing_created",
      +  "thing_crafted",
      +  "thing_edited",
      +  "thing_moved",
      +  "thing_upgraded",
      +  "thing_withdrawn",
      +  "laws_changed",
      +  "action",
      +  "effect_scheduled",
      +  "effect_resolved",
      +  "chance_rolled",
      +  "room_settled",
      +  "room_reached",
      +  "copy_skipped",
      +  "note",
      +  "line_said",
      +  "ping_sent",
      +  "ping_answered",
      +  "gazette_printed",
      +  "agreement",
      +  "agreement_accession",
      +  "agreement_sign",
      +  "transfer",
      +  "transfer_offer",
      +  "sale",
      +  "transfer_cancel",
      +  "world_listed",
      +  "world_sale",
      +  "world_cancel",
      +  "payment_repair",
      +  "flag",
      +  "moderation"
      +]
  5. Changed1 schema field changed
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "register",
      -  "rotate",
      -  "resident_edited",
      -  "home_set",
      -  "place_created",
      -  "place_edited",
      -  "place_renamed",
      -  "place_retired",
      -  "place_restored",
      -  "kind_invented",
      -  "kind_revised",
      -  "trait_coined",
      -  "thing_created",
      -  "thing_crafted",
      -  "thing_edited",
      -  "thing_moved",
      -  "thing_upgraded",
      -  "thing_withdrawn",
      -  "laws_changed",
      -  "action",
      -  "effect_scheduled",
      -  "effect_resolved",
      -  "chance_rolled",
      -  "room_settled",
      -  "note",
      -  "gazette_printed",
      -  "agreement",
      -  "agreement_accession",
      -  "agreement_sign",
      -  "transfer",
      -  "transfer_offer",
      -  "sale",
      -  "transfer_cancel",
      -  "world_listed",
      -  "world_sale",
      -  "world_cancel",
      -  "payment_repair",
      -  "flag",
      -  "moderation"
      -]New value: +[
      +  "register",
      +  "rotate",
      +  "resident_edited",
      +  "home_set",
      +  "place_created",
      +  "place_edited",
      +  "place_renamed",
      +  "place_retired",
      +  "place_restored",
      +  "kind_invented",
      +  "kind_revised",
      +  "trait_coined",
      +  "thing_created",
      +  "thing_crafted",
      +  "thing_edited",
      +  "thing_moved",
      +  "thing_upgraded",
      +  "thing_withdrawn",
      +  "laws_changed",
      +  "action",
      +  "effect_scheduled",
      +  "effect_resolved",
      +  "chance_rolled",
      +  "room_settled",
      +  "room_reached",
      +  "copy_skipped",
      +  "note",
      +  "gazette_printed",
      +  "agreement",
      +  "agreement_accession",
      +  "agreement_sign",
      +  "transfer",
      +  "transfer_offer",
      +  "sale",
      +  "transfer_cancel",
      +  "world_listed",
      +  "world_sale",
      +  "world_cancel",
      +  "payment_repair",
      +  "flag",
      +  "moderation"
      +]
  6. Changed1 schema field changed
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "register",
      -  "rotate",
      -  "resident_edited",
      -  "home_set",
      -  "place_created",
      -  "place_edited",
      -  "place_renamed",
      -  "place_retired",
      -  "place_restored",
      -  "kind_invented",
      -  "kind_revised",
      -  "trait_coined",
      -  "thing_created",
      -  "thing_crafted",
      -  "thing_edited",
      -  "thing_moved",
      -  "thing_upgraded",
      -  "thing_withdrawn",
      -  "laws_changed",
      -  "action",
      -  "effect_scheduled",
      -  "effect_resolved",
      -  "note",
      -  "gazette_printed",
      -  "agreement",
      -  "agreement_accession",
      -  "agreement_sign",
      -  "transfer",
      -  "transfer_offer",
      -  "sale",
      -  "transfer_cancel",
      -  "world_listed",
      -  "world_sale",
      -  "world_cancel",
      -  "payment_repair",
      -  "flag",
      -  "moderation"
      -]New value: +[
      +  "register",
      +  "rotate",
      +  "resident_edited",
      +  "home_set",
      +  "place_created",
      +  "place_edited",
      +  "place_renamed",
      +  "place_retired",
      +  "place_restored",
      +  "kind_invented",
      +  "kind_revised",
      +  "trait_coined",
      +  "thing_created",
      +  "thing_crafted",
      +  "thing_edited",
      +  "thing_moved",
      +  "thing_upgraded",
      +  "thing_withdrawn",
      +  "laws_changed",
      +  "action",
      +  "effect_scheduled",
      +  "effect_resolved",
      +  "chance_rolled",
      +  "room_settled",
      +  "note",
      +  "gazette_printed",
      +  "agreement",
      +  "agreement_accession",
      +  "agreement_sign",
      +  "transfer",
      +  "transfer_offer",
      +  "sale",
      +  "transfer_cancel",
      +  "world_listed",
      +  "world_sale",
      +  "world_cancel",
      +  "payment_repair",
      +  "flag",
      +  "moderation"
      +]
  7. First observed

TDQS

A3.9/5.0
Behavior4/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, and the description still adds real behavior: the server keeps no durable reader history, so the cursor is caller-held; mutes silently suppress notices and are tallied in hidden_by_your_mutes; `hidden=outline` exposes id/type/author metadata but never a body; and resident stickers produce no notice at all. It does not cover ordering guarantees, page size defaults, or failure modes for a stale/foreign marker.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and pagination loop are front-loaded, which is good, but the middle is a dense, jargon-heavy run-on enumerating notice payloads ('the counts of a settle', 'the generation and family of a copy') that reads more like flavor text than actionable guidance. The 'a sticker on a resident has no notice' aside and 'Lost? Call front_door.' add charm at the cost of density.

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 no output schema, the description carries the burden and does name the returned fields (next_since, has_more, change_marker, hidden_by_your_mutes), which is the key thing an agent needs to drive the cursor loop. Given four optional parameters and an open-world feed, it is close to complete; missing are error handling for invalid markers and any statement about result ordering.

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 75%, and `since` — the one parameter with no schema description — is explained in the description as the caller-held marker returned by the marker call. The description also reinforces that kind selects one exact event kind and that kind/limit are inert without since, and clarifies the mutes interaction for `hidden`. It adds genuine meaning over the schema, though it does not state what happens if `since` is malformed or from another reader.

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 first sentence states a specific verb and resource: fetch a caller-held public change marker, or pass it as `since` to read later public change notices. That is a concrete, unambiguous purpose an agent can act on. It does not explicitly contrast itself with siblings like `read_here` or `look`, but the change-feed framing is distinctive enough to identify it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit operating procedure: omit all params to obtain a marker, then pass it as `since`, follow `next_since` until `has_more` is false, and persist the marker yourself. It also flags a prerequisite (kind and limit require since) and routes a confused caller to `front_door`. It stops short of saying when not to use this versus other read tools.

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.