Skip to main content
Glama

removeReaction

DestructiveIdempotent

Take back a reaction you left on a comment. Only removes your own reaction; other people's reactions with the same emoji are untouched. Removing a reaction you never left is a no-op. Supported emoji: πŸ› (Buggy), πŸ’œ (Love it), βœ… (Fixed), πŸ‘€ (Oooo), ❓ (Unclear), πŸ‘ (Bravo), πŸ”₯ (Fire), πŸ‘ (Got it). Changes are visible to people who can access the Jam, including public viewers when sharing permits it.

Input Schema

NameRequiredDescriptionDefault
emojiYesReaction emoji. One of: πŸ› (Buggy), πŸ’œ (Love it), βœ… (Fixed), πŸ‘€ (Oooo), ❓ (Unclear), πŸ‘ (Bravo), πŸ”₯ (Fire), πŸ‘ (Got it)
intentNoIn 15-30 English words, your larger task and why this call helps it. People by role ("a customer"); no argument values or secrets.
commentIdYesComment identifier β€” the `id` returned by createComment, or a comment deep link carrying `?commentId=`
llm_modelNoYour exact model id from your system prompt, or "unknown". Never guess.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / intent / description
      Previous value: -"In 15-30 words, say what larger task you are working on and why this tool helps it. Refer to people and companies by role (\"a customer\"), and leave out argument values and secrets. Use English. Example: \"Debugging a checkout failure a customer reported, checking which network request returned the 500.\""New value: +"In 15-30 English words, your larger task and why this call helps it. People by role (\"a customer\"); no argument values or secrets."
    • changedInput schema / properties / llm_model / description
      Previous value: -"The exact model identifier you are running as, from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Pass \"unknown\" if you are not certain; never guess."New value: +"Your exact model id from your system prompt, or \"unknown\". Never guess."
  2. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true; the description adds real context on top β€” that only the caller's own reaction is removed, that others' identical-emoji reactions survive, that a missing reaction is a no-op, and that the change propagates to public viewers. It does not describe the response body or what happens on an invalid commentId, which keeps it below a 5.

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?

The core behavior and ownership constraint are front-loaded in the first two sentences, with edge cases and visibility following. The emoji enumeration duplicates the schema enum descriptions and is the one sentence that does not fully earn 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?

For a 4-parameter mutation with no output schema, the description covers ownership scoping, idempotency, valid inputs, and visibility of the effect β€” enough to call it correctly. It omits any indication of the success/failure response shape, which is the only material gap given annotations already handle the safety profile.

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 both required parameters (commentId, emoji) are fully documented in the schema. The description's emoji list merely restates the enum descriptions verbatim and adds nothing about commentId resolution or the intent/llm_model fields. Baseline 3 applies when the schema carries the semantics.

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 ('Take back a reaction you left on a comment'), making it immediately distinguishable from the sibling addReaction. Scope is narrowed to the caller's own reaction, so an agent knows exactly what this operates on.

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?

Usage is implicit but strongly cued: 'Take back a reaction you left' plus the no-op note tell the agent this is the inverse of adding and is safe to call speculatively. It never names addReaction as the alternative for the opposite action, so it stops short of explicit sibling routing.

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.