Skip to main content
Glama

register_event_subscription

Save a realtime-event filter server-side and get a subscription_id whose stream resumes where the last read stopped (POST /register-subscription).

For a live-streaming ask, the default is a dashboard (in Claude, an Artifact) that
loops stream_events itself — see stream_events. Register a subscription when the
user wants a saved filter that resumes across sessions.

Returns {subscription_id, filter, cursor, created_at}. `filter` echoes the
normalised filter (topics lower-cased, symbols upper-cased, duplicates dropped);
`cursor` is the position the subscription starts from — only events published
AFTER registration are ever delivered. KEEP the subscription_id: there is no list
endpoint yet, and it is what stream_event_subscription and
delete_event_subscription take.

`topics` / `symbols` as in stream_events: event types and families from
list_options("event_types") plus the stream-only `report_plan` topic; an empty
body listens to everything. Same vocabulary rules — `report_plan` for "stream
full research as it is minted", a family for "everything earnings-related",
symbols for a watchlist. 30 registrations/hour per user; delete what you no
longer need. The stream keeps ~2,000 entries (several days at current volume): a
subscription idle longer than that resumes at the oldest entry and may have
missed events.

Requires auth (your MCP client attaches the OAuth bearer automatically).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
topicsNoEvent types or families from list_options("event_types") (e.g. "eps_update", "earnings"), plus the stream-only "report_plan"; case-insensitive. Omit for every topic.
symbolsNoTickers to listen for (13f_* filer events carry the filer's CIK in the symbol slot). Omit for every symbol.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
cursorNoStream position the subscription starts from (events after registration).
filterYesThe normalised filter that was saved.
created_atNo
subscription_idYesKeep it: stream_event_subscription and delete_event_subscription take it.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only mark it non-read-only and non-destructive; the description carries the real behavioral load: cursor semantics ('only events published AFTER registration are ever delivered'), a 30 registrations/hour rate limit, the ~2,000-entry retention window and what happens to an idle subscription, plus auth via the MCP client's bearer. That is well beyond what the annotations disclose.

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-loads the verb, resource and return value in a single bolded opening sentence, then layers usage, return shape, vocabulary and limits. It is long and slightly repetitive — it restates list_options("event_types") guidance already present in the schema — but nearly every sentence adds operational value rather than padding.

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?

Although an output schema exists, the description still supplies what matters for correct invocation: the return shape, the persistence of subscription_id (no list endpoint), which tools consume it, auth, rate limit, and the resumption/retention caveat. Nothing needed to call it correctly is missing.

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 100%, so the baseline is 3, but the description adds usable semantics: empty body listens to everything, the vocabulary rules (report_plan as 'stream full research as it is minted', a family for 'everything earnings-related', symbols for a watchlist), and the filter-normalisation behaviour (topics lower-cased, symbols upper-cased, duplicates dropped).

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+resource ('Save a realtime-event filter server-side') and the artifact produced (`subscription_id`), plus the underlying endpoint. It explicitly differentiates itself from the siblings stream_events, stream_event_subscription and delete_event_subscription, so an agent can pick it without opening another schema.

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?

Gives an explicit alternative and the condition that selects it: 'For a live-streaming ask, the default is a dashboard... that loops stream_events itself — see stream_events. Register a subscription when the user wants a saved filter that resumes across sessions.' When-to-use and when-not-to-use are both stated.

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