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. The message is delivered end-to-end encrypted to all group members. Returns the sent timestamp, which can be used as target_timestamp for react_to_message or edit_message. To @mention a member, include their name in the message text and pass a mentions list where each entry has start (character index of the mention in the text), length (character count), and author (E.164 phone number). To reply/quote a message, provide quote_author (sender's phone number) and quote_timestamp (from get_conversation). Use list_groups to get group_id values. Use send_group_attachment to send files or images to a group. Do NOT use for direct messages to a contact — use send_message instead.

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_messagesA

Full-text search across all locally stored messages by keyword or phrase. Searches message bodies using SQLite FTS — results are ranked by relevance. Only messages in the local store are searchable; messages never received on this device are excluded. Use sender to narrow results to a specific conversation. Use limit and offset to paginate through large result sets. Use when looking for a specific message or topic across all Signal conversations. Do NOT use to browse a conversation chronologically — use get_conversation for that.

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

Add or remove an emoji reaction on a Signal message in a direct or group conversation. target_author is the phone number of the person who sent the original message. target_timestamp is the sent_at timestamp of that message (from get_conversation). Supply recipient for a DM conversation or group_id for a group conversation — exactly one is required. Each account can have at most one reaction per message; calling again with a different emoji replaces the previous one. Set remove=true to retract an existing reaction without adding a new one (emoji is still required as the key). Use when you want to react to or acknowledge a specific message without sending a reply. Do NOT use to send a text reply — use send_message or send_group_message for that.

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_profileA

Update your own Signal profile visible to all contacts. name sets your display name shown to contacts who have not saved your number. about sets the bio text shown on your profile page. avatar_path sets a new profile photo from a local image file (JPEG or PNG). Set remove_avatar=true to clear your current photo without setting a new one. All parameters are optional — only include what you want to change. Changes are propagated to the Signal network immediately. Use get_profile to read a contact's current profile. Do NOT use to rename a linked device — use update_device for that. Do NOT use to change messaging settings — use update_configuration for that.

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_devicesA

List all devices currently linked to your Signal account, including the primary device and any linked secondaries. Returns each device's ID, name, and last-seen timestamp. Device ID 1 is always the primary device (your registered phone). Use the returned device_id values with update_device (rename), remove_device (unlink). Use when auditing which devices have access to your Signal account, or to find the ID of a device you want to rename or remove.

add_deviceA

Link a new secondary device to your Signal account using a device-link URI. The URI is generated on the new device by running 'signal-cli link' or by scanning the QR code in Signal Desktop's Settings → Linked Devices → Link New Device. After linking, the new device receives future messages but not historical ones. Use list_devices to confirm the device was linked successfully. Use remove_device to unlink a device you no longer use. Do NOT share the device-link URI — it grants full Signal account access to whoever uses it.

remove_deviceA

Permanently unlink a secondary device from your Signal account. The device loses access to send and receive messages immediately. device_id must be a secondary device (ID ≥ 2) — you cannot unlink your primary device. The removed device is not notified; it simply stops receiving messages. This action is irreversible — the device must re-link via add_device to regain access. Use list_devices to find the device_id you want to remove. Use update_device to rename a device without removing it.

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 (both direct and group) ordered by most recent message. Returns contact/group name, phone number or group_id, last message preview, timestamp, and unread count. Use this to get an inbox overview before reading specific conversations with get_conversation. Contact and group names are resolved from local signal-cli contacts and groups. Use get_unread to fetch only unread messages across all conversations. Do NOT use this to read message history — use get_conversation for that.

get_user_statusA

Check whether one or more phone numbers are registered Signal users. Queries Signal's servers for each number and returns a registered/unregistered status. Accepts a list so you can batch-check multiple numbers in a single call. Useful before sending to an unknown number to avoid 'unregistered user' delivery failures. Note: privacy-mode accounts or numbers that have opted out of discoverability may show as unregistered even if they actively use Signal. Use before sending to a new contact to confirm they are reachable on Signal. Do NOT use to look up contact profile details — use get_profile for that.

send_sync_requestA

Request a full sync of messages, contacts, and groups from your primary Signal device to this linked device. Signal's linked-device architecture stores history on the primary device; a sync pulls that data here. Use when list_conversations shows no history, list_contacts returns fewer contacts than expected, or list_groups is missing groups that exist on your phone. The sync is asynchronous — data arrives in the background over the next few seconds. Do NOT use to receive new incoming messages — use receive_messages for that.

delete_messageA

Remote-delete (unsend) a message you previously sent to a Signal contact. Delivers a delete request to the recipient's device; the message disappears from their conversation view on Signal 5.0+ clients. You can only delete messages you sent — you cannot delete messages received from others. target_timestamp is the sent_at timestamp of the message (from get_conversation). Deletion may fail silently if the recipient is on an older Signal client. Remote deletion does not remove the message from the local signal-mcp store — use delete_local_messages to remove it locally. Use when you want to retract a sent message from the recipient's device. Do NOT use for group messages — use delete_group_message instead. Do NOT use to delete a message you received — only senders can remotely delete.

delete_group_messageA

Remote-delete (unsend) a message you previously sent to a Signal group. Delivers a delete request to all group members' devices; the message disappears from their conversation view on Signal 5.0+ clients. You can only delete messages you sent — for admin deletion of any member's message use admin_delete_message. target_timestamp is the sent_at timestamp of the message (from get_conversation). Deletion may fail silently on older Signal clients. Remote deletion does not remove the message from the local signal-mcp store. Use when you want to retract a message you sent in a group. Do NOT use for direct messages — use delete_message instead.

send_read_receiptA

Send a read receipt to a contact, notifying them that you have read their messages. The sender sees a 'Read' indicator under their messages in their Signal app. Pass all timestamps you want to mark as read in a single call to batch the receipts. Timestamps come from the received_at or sent_at fields in get_conversation. Note: read receipts are only delivered if the sender has read receipts enabled in their Signal settings. Use after reading a conversation with get_conversation to acknowledge the messages. Do NOT use to mark messages as read in the local store — get_conversation does that automatically. Do NOT use for group messages — Signal does not support per-sender read receipts in groups.

update_contactA

Set or update the local display name for a Signal contact. The name is stored only in signal-cli's local contact database — it is never sent to or visible by the contact. Overrides the contact's own profile name in list_contacts and conversation displays. Useful for adding a human-readable label to a number that has no Signal profile name. Use list_contacts to see current names before updating. Use when you want to assign or correct a contact's display name locally. Do NOT use to change your own profile name — use update_profile for that. Do NOT use to block or remove a contact — use block_contact or remove_contact for those.

update_groupA

Modify a Signal group's settings, membership, or permissions. All parameters except group_id are optional — include only what you want to change. add_members sends invitations; remove_members removes members immediately. add_admins promotes members to admin; remove_admins demotes them. expiration_seconds sets the disappearing-messages timer (0 to disable). link_mode controls the invite link: 'enabled' (anyone with link can join), 'enabled-with-approval' (admin must approve), 'disabled' (no link), or 'reset' (generate a new link and invalidate the old one). Changes are applied instantly and all members receive an update notification. You must be a group admin to change membership, admin list, or invite link. Use list_groups to get the group_id and confirm your admin status. Do NOT use to send a message — use send_group_message for that.

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_unreadA

Mark one or more messages as unread in the local signal-mcp store. This updates only the local database — it does not affect read receipts already sent to the sender, nor does it change how messages appear on other devices. message_ids are the internal signal-mcp IDs returned by get_conversation or search_messages. Messages marked unread are returned by get_unread on the next call. Use when you want to flag a message for follow-up later.

get_avatarA

Retrieve the profile photo for a contact or group as base64-encoded image data. Pass a phone number (E.164) for contacts or a group ID (from list_groups) for groups. Returns raw image bytes encoded as base64 — decode to get a JPEG or PNG. Returns an error if no avatar is set for the identifier. Use get_profile to also read name and about text alongside the avatar. Use update_profile with avatar_path to set your own profile photo.

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_timerA

Set or disable the disappearing-messages timer for a direct or group conversation. Once set, all new messages auto-delete after expiration_seconds on both sides. Common values: 3600 (1h), 86400 (1d), 604800 (1w), 2592000 (30d). Set expiration_seconds=0 to disable disappearing messages entirely. Provide recipient for a direct conversation or group_id for a group — exactly one is required. The change is delivered to all participants and takes effect on new messages immediately; existing messages already sent are not affected. Use when you want automatic privacy for a sensitive conversation.

list_identitiesA

List the Signal identity keys (safety numbers) and trust levels for one or all contacts. Each contact has a unique identity key; Signal uses these to verify end-to-end encryption integrity. Trust levels: TRUSTED_VERIFIED (manually verified), TRUSTED_UNVERIFIED (trusted on first use, TOFU), or UNTRUSTED (key changed — sending is blocked until re-trusted). Omit number to inspect all stored identities; provide number to filter to a specific contact. Use before calling trust_identity to check the current trust state and key fingerprint. Use when Signal reports 'safety number changed' to identify which contact needs re-verification. Do NOT use to trust or change trust levels — use trust_identity for that.

trust_identityA

Trust a contact's Signal identity key after verifying their safety number out-of-band. Signal uses identity keys (safety numbers) to verify end-to-end encryption. When a contact's safety number changes (e.g. they reinstalled Signal), sending fails until you explicitly trust the new key — this tool resolves that block. Provide safety_number to trust only that specific verified key; leave it blank to trust all known keys for the number (less secure but unblocks delivery immediately). Use list_identities to inspect the current trust level and key fingerprint before calling. Use when Signal blocks delivery with 'untrusted identity' or 'safety number changed' errors. Do NOT trust without first verifying the safety number via a trusted channel (in-person, phone call). Trusting an unverified key bypasses Signal's TOFU identity verification.

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 locally stored messages as a JSON or CSV string for archiving, analysis, or migration. Returns all messages in the local store by default; use recipient to restrict to one conversation. Use since (ISO 8601 datetime) to export only messages after a given point in time. JSON output preserves all fields (sender, timestamp, body, group_id); CSV output is flat and suitable for spreadsheets. Only messages already in the local store are included — messages never received on this device are absent. Use when you need a full or filtered dump of conversation history in machine-readable form. Do NOT use to read individual messages interactively — use get_conversation or search_messages for that.

get_configurationA

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

update_configurationA

Update Signal account-wide messaging settings. read_receipts controls whether Signal tells senders when you have read their messages. typing_indicators controls whether contacts see the '...' indicator when you are composing. link_previews controls whether URLs in outgoing messages generate inline previews. unidentified_delivery_indicators controls whether sealed-sender delivery icons are shown. All parameters are optional — omit any setting you do not want to change. Changes take effect immediately and persist across sessions. Use get_configuration to read the current values before modifying. Use update_account for account-level privacy settings (discoverability, username). Do NOT use to change your profile name or photo — use update_profile for that.

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 Signal attachments that have been downloaded and saved to the local store. Returns filenames, MIME types, file sizes, and the associated message timestamp for each attachment. Only attachments explicitly downloaded (via receive_messages or import) appear here — attachments not yet fetched from Signal's servers are not listed. Use the returned filename with get_attachment to retrieve the actual file content. Use when you need to discover what media files are available locally before reading them. Do NOT use to download new attachments from Signal servers — use receive_messages for that.

get_attachmentA

Retrieve metadata and the base64-encoded content of a locally saved Signal attachment by filename. Returns MIME type, file size, local path, and the raw bytes as base64 so the caller can read or display the file. Only attachments already downloaded to the local store are accessible — attachments expire on Signal's servers after ~30 days if not downloaded first. Use list_attachments to discover available filenames before calling. Use when you need to read, display, or forward the contents of a received file or image. Do NOT use to send an attachment — use send_attachment or send_group_attachment for that.

get_stickerA

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

upload_sticker_packA

Package and publish a sticker pack to Signal's CDN from local image files. Accepts a local manifest.json describing the pack, or a zip archive containing both the manifest and images. Signal's CDN stores the pack and returns a signal.art install URL you can share with others. Recipients call add_sticker_pack with the URL to install the pack and send its stickers. After publishing, the pack is available on Signal's network indefinitely. Use when you want to create and distribute a custom sticker pack. Use add_sticker_pack to install an existing pack for sending. Do NOT use to install a pack — use add_sticker_pack for that.

list_accountsA

List all Signal accounts (phone numbers) registered in signal-cli on this machine. Returns each account's E.164 phone number and its registration status. Most setups have a single account; multiple accounts appear when signal-cli manages more than one number. Use get_own_number to get the active account's number in single-account setups. Use when you need to confirm which accounts are available before sending or receiving messages.

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 a Signal Registration Lock PIN to protect your account against SIM-swap and unauthorized re-registration. Once set, anyone attempting to re-register your phone number on Signal must provide this PIN. The PIN must be 4–20 digits. Signal also uses the PIN to derive your storage encryption key. If you forget the PIN, you must wait 7 days for the lock to expire before re-registering. Use when you want to harden your account against SIM-swap attacks. Use remove_pin to disable the lock. Do NOT set a PIN you might forget — losing it locks you out of your account for 7 days.

remove_pinA

Remove the Signal Registration Lock PIN, disabling re-registration protection on this account. After removal, anyone who controls your phone number can re-register Signal without a PIN. Use only if you intentionally want to disable the registration lock. Use set_pin to set a new PIN instead of removing the existing one. Do NOT remove the PIN if you rely on it as a security measure against SIM-swap attacks.

start_change_numberA

Begin migrating your Signal account to a new phone number. Signal sends a 6-digit verification code to the new number via SMS (or voice call if voice=true). After calling this tool, call finish_change_number with the new number and received code to complete the migration. If Signal rejects the request due to rate limits, provide a captcha token obtained from https://signalcaptchas.org/challenge/generate.html. The account remains on the old number until finish_change_number succeeds. Use finish_change_number immediately after receiving the SMS code to complete the change. Do NOT call finish_change_number without first calling this tool — the verification code will not exist.

finish_change_numberA

Complete the second step of a Signal phone number change by submitting the verification code. Must be called after start_change_number, which initiates the number change and triggers the SMS/voice code. number is the new E.164 phone number you are migrating to. verification_code is the 6-digit code received via SMS or voice call to that number. pin is required only if your account has a Signal Registration Lock PIN set — omit otherwise. On success, the account is permanently migrated to the new number; all linked devices are updated. Use start_change_number first to request the verification code before calling this tool. Do NOT call this tool without first calling start_change_number — the code will not exist.

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