Skip to main content
Glama

Niche: Your niche, followed for you

Read session state

niche_session_state
Read-only

Read the current state of a scan: status, the ranked stories with their sources and source information, and any angles already proposed. Poll this after niche_signal_scan or niche_intelligence_query until the slate is ready.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
viewNostatus returns a short progress summary. full returns the stories and available angles. Default full.full
waitNoWait up to 30 seconds for progress, then return the current state. Default 0.
wait_forNoAlias for wait_until. If both are supplied, wait_until takes precedence.
session_idYessession_id from niche_signal_scan.
wait_untilNoWith wait, return on change, an actionable checkpoint, or completion of synthesis.change
since_statusNoLast status received. With wait and wait_until=change, return when it changes.
include_unpickedNoWhen true, return the full candidate set even after picks have been made. Default false (sparse: only the picked story / angle come back). Meaningful only with view='full'; ignored in view='status' (the lean envelope never carries the candidate slate).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / include_status_glossary
      Removed value: -{
      -  "default": false,
      -  "description": "When true, response includes `status_glossary[]`, the full 17-status state-machine descriptor list with phase, hint, and `actionable` (whether a wait_until='checkpoint' wakes for it) per status. Useful on the first call of an agent session so the agent caches the full map; leave false on subsequent polls. Default false.",
      -  "type": "boolean"
      -}
    • changedInput schema / properties / since_status / description
      Previous value: -"Used with `wait` (wait_until='change'). The status the caller last saw; the wait returns as soon as session.status differs. If unset, any state-change event wakes the wait. Note the pipeline has paired vocabulary: a transient `cpN_generating` (checkpoint about to produce) and a `generating_*` work status (e.g. cp2_generating maps to generating_angles). To skip both and wake only at the next actionable stop, use wait_until='checkpoint' rather than chasing since_status through the intermediates."New value: +"Last status received. With wait and wait_until=change, return when it changes."
    • changedInput schema / properties / view / description
      Previous value: -"`status` (lean): a few-hundred-byte control envelope of status, phase, picked ids, `content_versions` (per-section change counters), `counts`, `output_ids`, cost, and next_step. Use this for the poll loop. `full` (default): the complete state with stories/angles/outputs. Fetch `full` once when a content_version moves, rather than re-shipping the full state every poll. Pairs with wait plus since_status."New value: +"status returns a short progress summary. full returns the stories and available angles. Default full."
    • changedInput schema / properties / wait / description
      Previous value: -"Long-poll for up to N seconds (0-30) waiting for the session state to change. Returns immediately if the state already differs from `since_status` (or if the session is awaiting a checkpoint / complete / failed). Drops agent token burn from N polls to 1 wait. Default 0 (no wait, behave as before)."New value: +"Wait up to 30 seconds for progress, then return the current state. Default 0."
    • changedInput schema / properties / wait_for / description
      Previous value: -"Alias for `wait_until` (same values and semantics). Use either; if both are set, `wait_until` wins. An unrecognized value is rejected (not silently ignored), and it only takes effect with `wait` > 0."New value: +"Alias for wait_until. If both are supplied, wait_until takes precedence."
    • changedInput schema / properties / wait_for / enum
      Previous value: -[
      -  "change",
      -  "checkpoint",
      -  "render",
      -  "synthesis"
      -]New value: +[
      +  "change",
      +  "checkpoint",
      +  "synthesis"
      +]
    • changedInput schema / properties / wait_until / description
      Previous value: -"What the `wait` long-poll resolves on. `change` (default): any status change vs since_status, a reached checkpoint, or a status-less change (synthesis fill, render completion, new output). `checkpoint`: only an actionable checkpoint (cpN_awaiting_* / complete / failed), skipping the noisy intermediate cpN_generating and generating_* transitions, so you get one wake per checkpoint. `render`: a reel/image render marker settles (done|failed). Use this after niche_render_reel / niche_render_image_card, since a render leaves status unchanged and won't wake a `change` wait on status alone. Works on a session already at complete (the normal case, since renders are post-completion add-ons): the wait holds on the render marker, not the session status. `synthesis`: a niche_intelligence_query's synthesis lands (narratives or a shortfall_note). Synthesis filling is not a status change, so block on this in one call instead of busy-polling."New value: +"With wait, return on change, an actionable checkpoint, or completion of synthesis."
    • changedInput schema / properties / wait_until / enum
      Previous value: -[
      -  "change",
      -  "checkpoint",
      -  "render",
      -  "synthesis"
      -]New value: +[
      +  "change",
      +  "checkpoint",
      +  "synthesis"
      +]
  2. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds genuine behavioral context: this is a polling tool whose state advances over time and whose loop ends when the slate is ready. It does not describe blocking/latency behavior, though the schema's wait parameters carry that.

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?

Two sentences, front-loaded with what is returned and followed by the polling instruction. No redundant restatement of the title or annotations; every clause earns its place.

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 characterize return values — and it does, listing status, ranked stories with sources, and proposed angles. The polling model is conveyed, though the distinction between view='status' and view='full' envelopes and the blocking semantics of wait are left entirely to the schema.

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 description coverage is 100%, so the schema already documents all seven parameters, including the view enum, wait, wait_until/wait_for, since_status, and include_unpicked. The description adds no parameter-level meaning beyond that, so the baseline 3 is appropriate.

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 and resource ('Read the current state of a scan') and enumerates the payload returned: status, ranked stories with sources, and proposed angles. It also names the producing siblings (niche_signal_scan, niche_intelligence_query), which distinguishes it from niche_list_sessions and the read-only feed tool.

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?

Explicitly says when to call it — 'Poll this after niche_signal_scan or niche_intelligence_query until the slate is ready' — naming the upstream tools and the terminating condition. It stops short of stating when not to use it (e.g. versus niche_list_sessions for enumerating sessions), so it is clear context rather than full routing guidance.

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.