Skip to main content
Glama

subscribe_events

Buffer OPC UA alarms, condition changes, and plain events from a notifier node in the background, then read the collected events later to monitor activity without blocking.

Instructions

Start buffering OPC UA events (alarms, condition changes, plain events) from a notifier node. Returns at once; the events themselves are collected in the background and read with read_events. Calling it again for the same node replaces the subscription and discards what it had buffered. Use this to watch for things happening; use list_active_alarms for what is wrong right now.

Input Schema

NameRequiredDescriptionDefault
node_idNoThe notifier node to subscribe to. Defaults to the Server object 'ns=0;i=2253', which is where most servers publish every event they raise.
buffer_sizeNoHow many events to hold before the oldest are dropped (default 100, clamped to 10000). read_events reports how many were dropped.
severity_minNoBuffer only events of at least this OPC UA severity (1-1000). Default 0, which keeps every event.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

Beyond annotations, it discloses important behavior: the call returns immediately, events buffer in the background, repeated calls replace the subscription, and buffered events are discarded on replacement. These details go well beyond the readOnly/idempotent/destructive annotations and help the agent avoid accidental buffer loss.

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?

The description is front-loaded with purpose, then covers asynchronous return, replacement semantics, and alternatives in four efficient sentences. Every sentence provides actionable information with no filler.

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?

Given the annotations, full schema descriptions, and output schema, the description is complete for correct invocation. It explains the asynchronous subscription model, replacement behavior, buffer discard effect, and the key sibling alternative.

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 the schema already documents node_id, buffer_size, and severity_min, including defaults and clamping. The description does not add meaningful parameter-level detail beyond referring generally to a notifier node, so the baseline 3 applies.

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?

The description gives a specific verb, resource, and scope: 'Start buffering OPC UA events (alarms, condition changes, plain events) from a notifier node.' It distinguishes the tool from siblings by naming read_events for retrieval and list_active_alarms for current problems.

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?

It explicitly says to use this tool 'to watch for things happening' and to use list_active_alarms 'for what is wrong right now.' It also directs the agent to read_events for collected events, giving clear routing between subscription, retrieval, and current-state tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.