send_message
Send an end-to-end encrypted text message to one Signal contact by phone number or username.
Instructions
Send a text message to one Signal contact (end-to-end encrypted). Use send_group_message for groups, send_attachment for files, send_note_to_self for your own Note to Self, schedule_message to send later. Address the contact by recipient (E.164, e.g. +4915112345678) or username (alice.42 or a username link) — exactly one, otherwise an error. message is the text; formatting=true turns bold, italic, strikethrough, monospace and ||spoiler|| into real Signal formatting (markers removed; leave off for literal asterisks/backticks). 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. Link preview card: preview_url (must also appear in the text), preview_title (needed for the card to render), preview_description, preview_image (local file). Story reply: story_author (E.164, required with story_timestamp) + story_timestamp (ms). no_urgent=true sends without a push notification; notify_self=true delivers a normal notifying message if you are among the recipients. end_session=true instead resets the encrypted session (message ignored; troubleshooting only). Contacts Signal's servers; not idempotent (repeating sends a duplicate); sends share a 20-per-minute rate limit (calls wait rather than fail). The sent message is saved to the local store. Returns {status, timestamp, recipient}; timestamp is the target_timestamp for edit_message, react_to_message or delete_message.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Message text to send | |
| 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 (e.g. +1234567890) | |
| formatting | No | Convert **bold**, *italic*, ~~strikethrough~~, `monospace`, ||spoiler|| to Signal text formatting. Default false. | |
| end_session | No | Reset the session with this contact instead of sending a message | |
| notify_self | No | If you are among the recipients, deliver as a normal (notifying) message instead of a silent sync message | |
| preview_url | No | URL for a link preview card; the same URL must also appear in the message text | |
| quote_author | No | Phone number (E.164) of the author of the message being quoted/replied to | |
| story_author | No | Phone number of the story's author, to reply to a story | |
| preview_image | No | Local image file for the link preview thumbnail | |
| preview_title | No | Link preview title (needed for the card to render) | |
| 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) | |
| story_timestamp | No | Timestamp of the story being replied to | |
| 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) | |
| preview_description | No | Link preview description |