send_attachment
Send one or more files (photos, videos, documents, audio) to one Signal contact in a single message. Use send_group_attachment for groups, send_message for text only, send_sticker for stickers.
Instructions
Send one or more files (photos, videos, documents, audio) to one Signal contact in a single message. Use send_group_attachment for groups, send_message for text only, send_sticker for stickers. Address by recipient (E.164) or username (alice.42 or username link) — exactly one. path: a single file; paths: several files sent together (one of the two is required). Files must lie inside the allowed send folders (default: the signal-mcp attachments folder, ~/Downloads, ~/Desktop, ~/Documents; override with SIGNAL_MCP_SEND_ROOTS) and not be hidden, else an error is returned. caption: text shown with the files (default empty); view_once=true lets the recipient open media only once; voice_note=true marks audio as a voice note. attachment_dimensions (WIDTHxHEIGHT per file, in order) and attachment_blurhash (BlurHash per file, in order) give clients a size and a preview before download; an empty string skips a file. Reply/quote: quote_author (E.164) + quote_timestamp (ms) of the original; quote_message (quoted text; default: looked up in the local store), quote_mentions ({start, length, author}), quote_text_styles ('start:length:STYLE') and quote_attachments ('contentType[:filename[:previewFile]]') only shape the quote bubble. no_urgent=true sends without a push notification; notify_self=true delivers a normal notifying message if you are among the recipients. Contacts Signal's servers; not idempotent (repeating sends a duplicate); sends share a 20-per-minute rate limit (calls wait rather than fail). Saved to the local store (caption as body). Returns {status, timestamp}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Single file path (absolute, relative, or ~/path) | |
| paths | No | Multiple file paths to send as one message | |
| caption | No | Optional caption text shown below the attachment | |
| username | No | Signal username (e.g. alice.42) or username link, instead of recipient | |
| no_urgent | No | Send without the urgent flag, so the recipient gets no push notification | |
| recipient | No | Phone number in E.164 format | |
| view_once | No | Send as view-once media — recipient can only view it once before it disappears | |
| voice_note | No | Mark audio attachments as voice notes (played inline in Signal) | |
| notify_self | No | If you are among the recipients, deliver as a normal (notifying) message instead of a silent sync message | |
| quote_author | No | Phone number (E.164) of the author of the message being quoted/replied to | |
| quote_message | No | Text of the quoted message shown in the quote bubble. Default: looked up in the local store by quote_author + quote_timestamp | |
| quote_mentions | No | @mentions inside the quoted text, same shape as mentions: {start, length, author} | |
| quote_timestamp | No | Timestamp of the message being quoted/replied to (from get_conversation) | |
| quote_attachments | No | Attachments of the quoted message as 'contentType[:filename[:previewFile]]', e.g. 'image/png:photo.png' | |
| quote_text_styles | No | Styles inside the quoted text as 'start:length:STYLE' (BOLD, ITALIC, SPOILER, STRIKETHROUGH, MONOSPACE) | |
| attachment_blurhash | No | BlurHash per file, in file order, shown by clients while the file downloads; use '' to skip one | |
| attachment_dimensions | No | Displayed size per file, in file order, as 'WIDTHxHEIGHT' (e.g. '1080x1920'); use '' to skip one |