Skip to main content
Glama
mcp-signal

mcp-signal

by Sealjay

Decrypt Attachment

decrypt_attachment

Decrypt a locally stored Signal attachment using message metadata and return the absolute path to the decrypted temporary file for further processing.

Instructions

Decrypt a locally stored Signal attachment and return the path to the decrypted file.

The encrypted_path and local_key values come from attachment metadata in read_messages or search_messages results. Read-only on Signal data; writes a decrypted copy to a temporary directory (the temp file is not auto-cleaned). Returns the absolute path to the decrypted file as a string on success, or a string starting with 'Error:' on failure (missing file, wrong key length, or HMAC mismatch). Use this after reading messages that contain attachments.

Input Schema

NameRequiredDescriptionDefault
local_keyYesBase64-encoded 64-byte key (32-byte AES-CBC + 32-byte HMAC-SHA256), from the 'local_key' field of attachment metadata.
encrypted_pathYesAbsolute filesystem path to the encrypted attachment file, as returned in the 'encrypted_path' field of message attachment metadata.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.1.3

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that it is read-only on Signal data but writes a decrypted copy to a temp directory that is not auto-cleaned, and enumerates failure modes (missing file, wrong key length, HMAC mismatch) with the 'Error:' prefix convention. This is exactly the side-effect and auth/state context an agent needs before calling.

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?

Purpose is front-loaded in the first clause and each sentence carries operational content. The return-value explanation is somewhat redundant given an output schema exists, which slightly blunts conciseness.

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?

Covers source of inputs, side effects, cleanup caveats, and error surface, which is everything needed for a two-parameter cryptographic tool with an output schema and annotations already present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds provenance ('attachment metadata in read_messages or search_messages results') that tells the agent where to obtain the values. It does not restate format details, which the schema already covers well.

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 and resource ('Decrypt a locally stored Signal attachment') plus the outcome ('return the path to the decrypted file'). This is clearly distinct from the reading/searching siblings that merely surface the metadata this tool consumes.

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 the agent: values 'come from attachment metadata in read_messages or search_messages results' and 'Use this after reading messages that contain attachments.' It gives clear positive conditions but no explicit when-not-to-use or alternate tool.

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