Get message reactions
stream_get_reactionsList the reactions on a message. GET /api/v2/chat/messages/{id}/reactions.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Message id. | |
| limit | No | Max reactions. Default 50. | |
| offset | No | Pagination offset. |
stream_get_reactionsList the reactions on a message. GET /api/v2/chat/messages/{id}/reactions.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Message id. | |
| limit | No | Max reactions. Default 50. | |
| offset | No | Pagination offset. |
Changes observed during successful MCP inspections.
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safe-read profile, so the description's obligation is to add context beyond that — and it adds none. It omits pagination behavior, ordering of results, and what a reaction record contains, which are the traits an agent would actually benefit from here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the purpose front-loaded and no filler. The trailing HTTP endpoint is redundant for tool invocation but harmless, which keeps it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple paginated read with a fully documented schema and a readOnly annotation, the definition is barely sufficient. With no output schema, a note on the shape of a returned reaction or the result ordering would have closed the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so id, limit (default 50), and offset are fully documented in the schema; the description adds no syntax, format, or constraint detail. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the reactions on a message'), which is enough to separate it from the write-side sibling stream_send_reaction. It does not explicitly name any sibling, but the read/write split is obvious from the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus stream_get_message or stream_get_replies, and no stated prerequisites (e.g., needing a valid message id in the current channel). The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.