Skip to main content
Glama

unpin_message

Idempotent

Remove a pinned message from a Signal DM or group so it no longer appears at the top for all participants; the message remains in the chat.

Instructions

Remove a pinned message from the top of a DM or group conversation for all participants; the message itself stays. Use pin_message to pin. target_author: E.164 number of the pinned message's sender; target_timestamp: its ms timestamp (message id in get_conversation). Give recipient (E.164) for a DM or group_id for a group; neither is an error. Contacts Signal's servers; repeating has no further effect. Returns {status: 'message unpinned'}.

Input Schema

NameRequiredDescriptionDefault
group_idNoGroup ID for group conversations — provide this OR recipient
recipientNoPhone number for DM conversations — provide this OR group_id
target_authorYesPhone number of the message author (E.164)
target_timestampYesTimestamp of the pinned message (from get_conversation)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv0.1.2
    • changedInput schema / properties / group_id / description
      Previous value: -"Group ID for group conversations"New value: +"Group ID for group conversations — provide this OR recipient"
    • changedInput schema / properties / recipient / description
      Previous value: -"Phone number for DM conversations"New value: +"Phone number for DM conversations — provide this OR group_id"
    • changedInput schema / properties / target_author / description
      Previous value: -"Phone number of the message author"New value: +"Phone number of the message author (E.164)"
    • changedInput schema / properties / target_timestamp / description
      Previous value: -"Timestamp of the pinned message"New value: +"Timestamp of the pinned message (from get_conversation)"
  2. First observedv0.1.0

TDQS

A3.9/5.0
Behavior4/5

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

Adds real behavioral context beyond annotations: 'the message itself stays' clarifies non-destructive scope, 'for all participants' states the effect's reach, 'Contacts Signal's servers' matches openWorldHint, and 'repeating has no further effect' explains the idempotentHint. The idempotency point overlaps the annotation but is explained rather than merely repeated.

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-loaded with the purpose, then packed into a compact semicolon-delimited sentence carrying routing rules and the return value. Dense but every clause carries information; no filler.

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 mutation with no output schema, the description covers effect scope, non-destructiveness, server contact, idempotency, and even the return value {status: 'message unpinned'}. Only auth/permission prerequisites are unaddressed, a minor gap given the annotation 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 the schema already documents all four parameters, including E.164 format and get_conversation provenance. The description mostly restates these ('E.164 number', 'its ms timestamp (message id in get_conversation)'), adding only the 'ms' unit precision, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Remove a pinned message from the top of a DM or group conversation for all participants') and clarifies the message itself is preserved. It names pin_message as the inverse but does not differentiate from the sibling remove_pin, leaving a small ambiguity about which removal tool applies.

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 routes to pin_message for the opposite operation and tells the agent the conversation-selector rule ('Give recipient for a DM or group_id for a group'), so context is clear. No when-not guidance and no mention of remove_pin, so it falls short of full alternative coverage.

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