Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
send_messageA

Send a text message to a Signal contact. The message is delivered end-to-end encrypted. Returns the sent timestamp, which can be used as target_timestamp for react_to_message or edit_message. To reply/quote a specific message, provide quote_author and quote_timestamp (get timestamps from get_conversation). Use send_group_message for group chats, send_attachment for files/images.

send_group_messageA

Send a text message to a Signal group. All group members receive the message. Returns the sent timestamp for use with react_to_message or edit_message. To @mention specific members, provide a mentions list with character offsets into the message text. To reply to a message, provide quote_author and quote_timestamp. Use list_groups to find the group_id.

send_note_to_selfA

Send a note to yourself via Signal's 'Note to Self' / saved messages feature. The note is synced across all your linked Signal devices. Useful for saving reminders, bookmarks, or drafts that sync to your phone.

edit_messageA

Edit the text of a previously sent message. Sends the edit via signal-cli to all original recipients; they see the updated text inline with an '(edited)' label. Only the message text can be modified — attachments, quoted replies, and reactions are immutable. The edit must reference the exact timestamp of the original message as returned by send_message or get_conversation. Edits can only be made to messages you sent; editing someone else's message returns an error. There is no enforced time limit, but Signal clients may ignore edits on very old messages. Provide recipient for a DM edit or group_id for a group edit; exactly one is required. Use when correcting a typo or updating information in a message you already sent. Do NOT use to change who a message was sent to — send a new message instead.

receive_messagesA

Manually poll signal-cli for new messages and store them. Prefer get_unread — it does this automatically and returns results in one call. Use receive_messages only if you want to poll without reading results.

list_contactsA

List all Signal contacts known to this account, including names and phone numbers. Use the optional search parameter to filter by name or number substring. Returns contacts from signal-cli's local contact store. Use get_profile to fetch the current Signal profile for a specific contact.

list_groupsA

List all Signal groups this account belongs to, including group name, ID, members, and admin list. The group_id returned here is required for send_group_message, send_group_attachment, and update_group. Use update_group to modify a group, or leave_group to exit.

get_conversationA

Get recent message history with a contact or group from local store. Automatically marks returned messages as read in the local store (does NOT send a Signal read receipt — call send_read_receipt for that).

search_messagesC

Search for messages containing a keyword

send_attachmentA

Send one or more files or images to a Signal contact. Supports photos, videos, documents, and audio files. Use path for a single file or paths to send multiple files in one message. Set view_once=true to send media that auto-deletes after the recipient views it once. For groups use send_group_attachment instead.

send_group_attachmentA

Send one or more files (photos, videos, documents, audio) to a Signal group in a single message. All current group members receive the attachment via the normal Signal encrypted delivery pipeline. Provide path for a single file or paths for multiple files sent together in one message. Set view_once=true so each member can only open the media once before it disappears — ideal for sensitive images; does not apply to document types. The file must exist and be readable on the local filesystem; non-existent paths return an error. Use list_groups to obtain the group_id. Use when sharing a file with a group chat. Do NOT use for direct messages — use send_attachment instead. Do NOT use when you only want to send text — use send_group_message instead.

react_to_messageA

React to a Signal message with an emoji (DM or group). Set remove=true to remove a reaction.

set_typingA

Send a 'typing…' indicator to a Signal contact to show you are composing a message. The indicator appears immediately in the recipient's conversation and auto-expires after ~15 seconds if no message is sent — you do not need to call stop=true after sending the message. Call with stop=true to cancel an in-progress typing indicator early (e.g. if the user abandons the message). signal-cli relays the indicator via the Signal protocol; if the recipient has typing indicators disabled in their settings, it is silently ignored on their end — no error is returned. Typing indicators are only supported for one-to-one DMs; passing a group_id is not valid. Use before send_message to create a realistic 'typing' effect in an automated workflow. Do NOT use for groups — group typing indicators are not supported by Signal. Do NOT call repeatedly in a tight loop; one call per composing session is sufficient.

get_profileA

Fetch the Signal profile for a contact, including their display name, about text, and avatar. Profile data is fetched live from the Signal network (not local cache). Use this to verify a contact's current name or check if they have a profile set up. Use update_profile to update your own profile.

block_contactA

Block a Signal contact so they can no longer send you messages or call you. The block is applied locally via signal-cli and propagated to the Signal network. The blocked contact receives NO notification — from their perspective, messages appear sent but are silently discarded before reaching you; delivery receipts are suppressed. Blocking does not delete existing message history; prior conversations remain in your local store. The block persists across restarts and is reversible — call unblock_contact to lift it. Use when you want to permanently stop receiving messages from a contact. Use unblock_contact to reverse the block. Do NOT use as a temporary mute — blocking hides the contact from normal message flow entirely. Do NOT use to remove a contact from your list — use remove_contact for that.

unblock_contactA

Unblock a previously blocked Signal contact, restoring their ability to send you messages and calls. The contact is NOT notified that they were unblocked. Use block_contact to re-block, or list_contacts to see which contacts are blocked.

remove_contactA

Remove a contact from the local signal-cli contact list on this device. This only removes the local record — it does NOT block the contact, delete message history, or affect the contact's ability to message you. To prevent incoming messages, use block_contact instead. Use update_contact to set a local display name without removing.

update_profileB

Update your own Signal profile (name, about text, avatar)

create_groupA

Create a new Signal group with specified members. You are automatically added as the group admin. All listed members receive an invitation notification. Returns the new group's ID and invite link. Use update_group to modify the group after creation (name, description, members, link settings). Use send_group_message to post messages to the group.

join_groupA

Join a Signal group using an invite link (https://signal.group/#...). If the group requires admin approval, your join request will be pending until approved. After joining, use list_groups to find the group_id for sending messages.

list_devicesB

List all devices linked to your Signal account

add_deviceB

Link a new device to your Signal account using a device link URI

remove_deviceB

Unlink a device from your Signal account

get_own_numberA

Get your own Signal phone number (the account this server is running as)

store_statsA

Get statistics about locally stored messages (count, unread count, DB size on disk, date range)

get_unreadA

Get new unread messages. If the background service (signal-mcp install-service) is running, reads directly from the local store. Otherwise polls signal-cli first to fetch any messages that arrived since the last check, then returns unread. Always use this to check for new messages. Messages are marked as read after retrieval. Response includes has_more=true if more unread messages exist beyond the limit — call again with a higher limit or paginate.

import_desktopA

Full one-time import of all historical messages from Signal Desktop (macOS/Linux). Requires sqlcipher. On macOS prompts for Keychain access; on Linux uses libsecret/GNOME Keyring. For ongoing sync use sync_desktop instead.

sync_desktopA

Incremental sync from Signal Desktop: imports only messages newer than the last sync. Fast on repeat calls. On first call behaves like import_desktop (imports everything). Requires sqlcipher.

list_conversationsA

List all conversations (direct and group) ordered by most recent message

get_user_statusA

Check whether one or more phone numbers are registered Signal users

send_sync_requestA

Request a sync of messages, contacts, and groups from your primary Signal device. Useful if history is missing on this linked device.

delete_messageB

Remote-delete (unsend) a message you sent to a contact

delete_group_messageB

Remote-delete (unsend) a message you sent to a group

send_read_receiptA

Mark one or more messages as read (sends read receipts to sender)

update_contactA

Set a local display name for a contact

update_groupC

Update a group's name, description, members, admins, or expiration timer

leave_groupA

Leave a Signal group. After leaving, you will no longer receive messages from the group and will be removed from the member list. Other members are notified that you left. This action is irreversible without being re-invited. Use list_groups to find the group_id.

pin_messageA

Pin a message in a DM or group conversation so it appears prominently in the conversation header. Pinning delivers a system-level pin notification to all participants via signal-cli; they see the pinned message highlighted at the top of the thread. Any participant can pin any message — admin privileges are not required. Only one message can be pinned per conversation at a time; pinning a new message automatically replaces the previous pin. Provide exactly one of recipient (for a DM) or group_id (for a group). Get target_author and target_timestamp from get_conversation — both are required to identify the message. Use unpin_message to remove a pinned message without replacing it. Use when you want to highlight an important message for all participants. Do NOT use if you only want to bookmark a message for yourself — pinning is visible to everyone.

unpin_messageA

Unpin a previously pinned message in a DM or group conversation, removing it from the conversation header. Provide either recipient (for DMs) or group_id (for groups). Get target_author and target_timestamp from get_conversation. Use pin_message to pin a message.

admin_delete_messageA

As a group admin, delete any message posted in a group you administer, regardless of who sent it. The message is removed for all participants immediately. Only works if you are an admin of the specified group — use list_groups to confirm admin status. For deleting your own messages use delete_message (DM) or delete_group_message (group) instead.

send_contacts_syncA

Push your local contacts list to all linked Signal devices (e.g., phone, desktop). Useful when contacts added via signal-cli are not showing up on other devices. This is a one-way sync from this device outward.

update_deviceA

Rename a linked secondary device on your Signal account. The updated name is synced to the Signal network and appears immediately in your Signal app's Settings → Linked Devices list across all your devices. Only secondary (linked) devices can be renamed; the primary device name is set during registration. Use list_devices to find all linked device IDs and their current names. The device_id is a small integer (e.g. 2, 3); device 1 is always the primary. Renaming does not affect the device's ability to send or receive messages. Use when you want to distinguish between multiple linked devices by a meaningful label. Use remove_device to unlink a device entirely. Do NOT use to rename your own primary account — that is done via update_profile.

mark_as_unreadB

Mark messages as unread in the local store

get_avatarB

Get the avatar image for a contact or group as base64-encoded data

send_message_request_responseA

Accept or decline a message request from an unknown contact (required before replying to strangers)

create_pollA

Create a poll and send it to a Signal contact or group. Provide at least 2 options. Set multi_select=true to allow voters to pick multiple answers. Provide either recipient (DM) or group_id (group) — exactly one is required. Returns the poll timestamp needed for vote_poll and terminate_poll. Use terminate_poll to close the poll and stop accepting votes.

vote_pollA

Cast your vote on an active Signal poll in a DM or group conversation. Your vote is delivered via signal-cli and is visible to all participants in real time. Each participant can vote once; re-voting overwrites the previous selection. For single-choice polls, provide exactly one option index in votes. For multi-select polls, provide all chosen indices in a single call — partial updates are not supported. votes are 0-based indices corresponding to the options array from the original create_poll call. Get target_author, target_timestamp, and poll_id from the poll message returned by get_conversation. Provide exactly one of recipient (for a DM poll) or group_id (for a group poll). Voting on a terminated poll returns an error. Use terminate_poll to close a poll you created and freeze the results. Use when responding to an open poll in a conversation. Do NOT use to create a poll — use create_poll instead.

terminate_pollA

Close (terminate) a poll you created, stopping any further votes. All participants are notified that the poll has ended and can see the final results. Get target_timestamp and poll_id from the original poll message in get_conversation. Only the poll creator can terminate their own poll. Provide either recipient (DM poll) or group_id (group poll).

set_expiration_timerB

Set or disable the disappearing message timer for a conversation

list_identitiesA

List identity keys and trust levels for contacts (safety number verification)

trust_identityC

Trust a contact's identity key after verifying their safety number

clear_local_storeA

Delete ALL locally stored messages from the signal-mcp database. This does NOT delete messages from Signal — only from the local store. Requires confirm=true.

delete_local_messagesA

Delete locally stored messages for one contact or group. Does NOT unsend from Signal — only removes from local store.

export_messagesA

Export stored messages as JSON or CSV text. Optionally filter by conversation or date.

get_configurationA

Get current Signal account configuration (read receipts, typing indicators, link previews)

update_configurationC

Toggle Signal account settings: read receipts, typing indicators, link previews

list_sticker_packsA

List all sticker packs installed on this Signal account. Returns pack_id and sticker_id values needed for send_sticker and send_group_sticker. Use add_sticker_pack to install a new pack from a signal.art URL.

add_sticker_packA

Install a Signal sticker pack from a signal.art URL. Once installed, use list_sticker_packs to browse pack contents, then send_sticker or send_group_sticker to send individual stickers. The URI must be a signal.art URL in the format: https://signal.art/addstickers/#pack_id=...&pack_key=...

send_stickerA

Send a single sticker to a Signal contact in a direct message. Stickers are small images from installed packs delivered as a distinct message type — they appear rendered in the conversation, not as a file attachment. Both pack_id (a hex string) and sticker_id (a 0-based integer) must match an installed pack; referencing an uninstalled pack or an invalid sticker_id returns an error. Use list_sticker_packs to browse all installed packs and retrieve valid pack_id and sticker_id values. If no packs are installed, call add_sticker_pack first with a signal.art URL to install one. Use when you want to send an expressive image reaction or decoration to a contact. Use send_group_sticker to send a sticker to a group instead of a DM. Do NOT use to send a regular image file — use send_attachment for that.

send_group_stickerA

Send a single sticker to a Signal group so all members receive it. Stickers are small images from installed packs delivered as a distinct message type — they appear rendered in the group conversation, not as a file attachment. Both pack_id (a hex string) and sticker_id (a 0-based integer) must match an installed pack; referencing an uninstalled pack or invalid sticker_id returns an error. Use list_sticker_packs to browse installed packs and retrieve valid pack_id and sticker_id values. If no packs are installed, call add_sticker_pack first with a signal.art URL to install one. Use list_groups to obtain the group_id. Use when sending an expressive image reaction or decoration to a group chat. Use send_sticker for direct messages instead of group chats. Do NOT use to send a regular image file — use send_group_attachment for that.

list_attachmentsA

List all downloaded attachments saved locally (photos, files received via Signal)

get_attachmentA

Get details about a specific downloaded attachment by filename

get_stickerA

Retrieve a single sticker image as base64. Use list_sticker_packs to find pack_id and sticker_id values.

upload_sticker_packB

Upload and publish a sticker pack from a local manifest.json or zip file. Returns the signal.art URL.

list_accountsA

List all Signal accounts (phone numbers) configured in signal-cli on this machine.

update_accountA

Update Signal account-level privacy and identity settings. All parameters are optional — only provide the settings you want to change. discoverable_by_number controls whether others can find you by phone number. number_sharing controls whether your number is shared with contacts you message. username sets a @username alias; delete_username removes it. Use get_configuration for messaging settings (read receipts, typing indicators).

set_pinA

Set the Signal registration lock PIN (protects your account if your SIM is stolen).

remove_pinA

Remove the Signal registration lock PIN.

start_change_numberA

Begin a phone number change. Signal sends a verification code to the new number via SMS (or voice if voice=true). Call finish_change_number to complete. Requires a captcha token if Signal rejects the request — solve it at https://signalcaptchas.org/challenge/generate.html

finish_change_numberA

Complete a phone number change using the verification code received via SMS or voice.

submit_rate_limit_challengeA

Unblock the account after Signal applies a rate limit. Provide the challenge token from the error and a solved captcha from https://signalcaptchas.org/challenge/generate.html

prune_storeA

Delete locally stored messages older than a given number of days (default: 180). Does NOT delete messages from Signal servers — only the local history cache. Useful for keeping the store from growing unbounded.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/googlarz/signal-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server