Skip to main content
Glama

block_contact

Idempotent

Block a Signal contact by E.164 phone number to stop their messages and calls; only works on the primary device, is reversible, and does not notify them.

Instructions

Block a contact so you stop receiving their messages and calls. number (required, E.164). Only works when signal-mcp is the account's primary device — fails with 'This command doesn't work on linked devices' if signal-mcp was set up via signal-cli link. The contact is not notified. The blocked list is synced to your linked devices, and if you share no group with them your profile key is rotated so they lose access to your profile updates. Message history is kept. Blocking an already blocked contact is a no-op. Reversible with unblock_contact. To only delete the local contact entry without blocking, use remove_contact. Returns status 'blocked' and number.

Input Schema

NameRequiredDescriptionDefault
numberYesPhone number to block (E.164 format, e.g. +1234567890)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.1.2
    • changedInput schema / properties / number / description
      Previous value: -"Phone number to block"New value: +"Phone number to block (E.164 format, e.g. +1234567890)"
  2. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only say destructiveHint=false and idempotentHint=true; the description adds substantial context beyond them: the primary-device precondition and error string, that the contact is not notified, that the blocked list syncs to linked devices, that the profile key is rotated when no shared group exists, that message history is kept, and that re-blocking is a no-op (consistent with idempotentHint).

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?

Front-loaded with purpose, then constraints, side effects and the alternative tool. Despite being a dense paragraph, every sentence carries distinct, decision-relevant information and none is 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?

With no output schema, the description compensates by stating the return value ('status \'blocked\' and number'). Combined with preconditions, side effects, reversibility and the no-op case, an agent has everything needed to call this correctly.

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 description coverage is 100% and the single parameter already documents E.164 format with an example. The description restates 'number (required, E.164)' but adds no new syntax or constraint beyond the schema, 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 leads with a specific verb and resource plus the user-visible effect: 'Block a contact so you stop receiving their messages and calls.' It clearly distinguishes itself from sibling tools it is often confused with (remove_contact deletes the local entry only; unblock_contact reverses this).

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?

Explicit when-it-works precondition ('Only works when signal-mcp is the account's primary device'), the exact failure message on linked devices, and a named alternative ('To only delete the local contact entry without blocking, use remove_contact'). Reversibility with unblock_contact is also stated.

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