MCP Server

LMGram

io.github.saezbaldo/lmgram
Communication Public & reachable MCP 2025-11-25

What this MCP does

Enables consent-based matching between people seeking peer advice, collaboration, mentoring, or practical help, with chat messaging.

get_current_user
Get current LMGram profile
Returns the LMGram profile linked to the connected account.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
list_match_requests
List LMGram match requests
Lists recent match requests for the current LMGram user, optionally filtered by role and status.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'role': {'enum': ['candidate', 'requester'], 'type': 'string', 'default': 'candidate'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1}, 'status': {'enum': ['pending', 'chat_requested', 'accepted', 'declined'], 'type': 'string', 'description': 'Optional exact request status to return.'}}, 'additionalProperties': False}
list_messages
List chat messages
Lists messages in a LMGram chat. End-to-end encrypted payloads are never exposed as ciphertext; they are represented by a safe placeholder.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['chatId'], 'properties': {'chatId': {'type': 'string'}}, 'additionalProperties': False}
open_lmgram_panel
Open LMGram conversation panel
Open LMGram chats, groups and suggestions for the current ChatGPT conversation. Each conversation has a separate context; never copy a transcript or private documents. This does not publish an intent or send a message.
Read only Idempotent
Input schema
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['contextId'], 'properties': {'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}}, 'additionalProperties': False}
panel_chat
Read private chat
Retrieve authorized chat data for client-side decryption, not model context.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['contextId', 'chatId'], 'properties': {'before': {'type': 'string', 'maxLength': 32}, 'chatId': {'type': 'string', 'maxLength': 32}, 'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['contextId'], 'properties': {'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}}, 'additionalProperties': False}
panel_create_intent
Publish approved intent
Publish only the minimized intent explicitly reviewed and submitted by the user in this conversation panel. Do not include secrets, private transcripts, or dating requests.
Open world
Input schema
{'type': 'object', 'required': ['contextId', 'topic', 'summary', 'need'], 'properties': {'need': {'type': 'string', 'maxLength': 1000}, 'topic': {'type': 'string', 'maxLength': 240}, 'summary': {'type': 'string', 'maxLength': 2000}, 'language': {'type': 'string', 'maxLength': 40}, 'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['contextId'], 'properties': {'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}}, 'additionalProperties': False}
panel_dismiss_suggestion
Dismiss suggestion
Decline an unopened match suggestion.
Destructive Open world Idempotent
Input schema
{'type': 'object', 'required': ['contextId', 'matchRequestId'], 'properties': {'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}, 'matchRequestId': {'type': 'string', 'maxLength': 32}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['contextId'], 'properties': {'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}}, 'additionalProperties': False}
panel_join_group
Join group
Accept an existing group invitation related to this context.
Open world Idempotent
Input schema
{'type': 'object', 'required': ['contextId', 'roomId'], 'properties': {'roomId': {'type': 'string', 'maxLength': 32}, 'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['contextId'], 'properties': {'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}}, 'additionalProperties': False}
panel_mark_read
Mark chat read
Mark the displayed chat as read.
Open world Idempotent
Input schema
{'type': 'object', 'required': ['contextId', 'chatId'], 'properties': {'chatId': {'type': 'string', 'maxLength': 32}, 'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['contextId'], 'properties': {'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}}, 'additionalProperties': False}
panel_register_device
Register encryption device
Register only a public encryption key for this user's panel.
Open world Idempotent
Input schema
{'type': 'object', 'required': ['contextId', 'deviceId', 'publicKey'], 'properties': {'deviceId': {'type': 'string', 'maxLength': 32}, 'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}, 'publicKey': {'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['contextId'], 'properties': {'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}}, 'additionalProperties': False}
panel_send_message
Send encrypted message
Send a client-encrypted text message after the user presses Send. Retry only the identical payload and clientMessageId.
Open world Idempotent
Input schema
{'type': 'object', 'required': ['contextId', 'chatId', 'clientMessageId', 'body', 'encryptionScheme', 'encryptionNonce', 'senderDeviceId', 'encryptedKeys'], 'properties': {'body': {'type': 'string', 'maxLength': 32000}, 'chatId': {'type': 'string', 'maxLength': 32}, 'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}, 'encryptedKeys': {'type': 'object', 'maxProperties': 1000, 'additionalProperties': {'type': 'string', 'maxLength': 96}}, 'senderDeviceId': {'type': 'string', 'maxLength': 32}, 'clientMessageId': {'type': 'string', 'maxLength': 36}, 'encryptionNonce': {'type': 'string', 'maxLength': 40}, 'encryptionScheme': {'type': 'string', 'maxLength': 32}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['contextId'], 'properties': {'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}}, 'additionalProperties': False}
panel_snapshot
Refresh conversation
Refresh this conversation's private panel data.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['contextId'], 'properties': {'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['contextId'], 'properties': {'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}}, 'additionalProperties': False}
panel_start_chat
Request conversation
Request a chat with a suggestion in this context, without sending a plaintext introduction.
Open world Idempotent
Input schema
{'type': 'object', 'required': ['contextId', 'matchRequestId'], 'properties': {'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}, 'matchRequestId': {'type': 'string', 'maxLength': 32}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['contextId'], 'properties': {'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}}, 'additionalProperties': False}
panel_sync_device_keys
Sync own encryption devices
Share client-encrypted message keys only with this account's registered devices. Does not send messages, plaintext or private keys.
Open world Idempotent
Input schema
{'type': 'object', 'required': ['contextId', 'chatId', 'sourceDeviceId', 'updates'], 'properties': {'chatId': {'type': 'string', 'maxLength': 32}, 'updates': {'type': 'array', 'items': {'type': 'object', 'required': ['messageId', 'encryptionNonce', 'encryptedKeys'], 'properties': {'messageId': {'type': 'string', 'maxLength': 32}, 'encryptedKeys': {'type': 'object', 'maxProperties': 100, 'additionalProperties': {'type': 'string', 'maxLength': 96}}, 'encryptionNonce': {'type': 'string', 'maxLength': 40}}, 'additionalProperties': False}, 'maxItems': 60, 'minItems': 1}, 'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}, 'sourceDeviceId': {'type': 'string', 'maxLength': 32}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['contextId'], 'properties': {'contextId': {'type': 'string', 'maxLength': 43, 'minLength': 43}}, 'additionalProperties': False}
request_human_match
Request a human match
Creates an opt-in LMGram human match request only after the user explicitly asks to use LMGram to find a collaborator, peer, mentor, or helper. Never invoke for general advice, dating or romantic matchmaking. Never include secrets, credentials, API keys, raw transcripts, customer data, or private documents; ask for a minimized non-sensitive summary first.
Open world
Input schema
{'type': 'object', 'required': ['topic', 'summary', 'need'], 'properties': {'need': {'type': 'string', 'description': 'The concrete collaborator, peer, mentor, or helper the user explicitly wants. Dating and romantic matching are not supported.'}, 'topic': {'type': 'string', 'description': 'Short, non-sensitive title for the practical or professional session topic. Dating and romantic requests are not supported.'}, 'summary': {'type': 'string', 'description': 'Minimized non-sensitive summary. Never send secrets, credentials, API keys, raw transcripts, customer data, or private documents.'}, 'urgency': {'type': 'number', 'default': 0.5, 'maximum': 1, 'minimum': 0}, 'language': {'type': 'string'}, 'matchType': {'enum': ['peer', 'mentor', 'collaborator', 'helper'], 'type': 'string', 'default': 'peer'}, 'sensitivity': {'enum': ['normal', 'sensitive', 'high'], 'type': 'string', 'default': 'normal'}, 'maxCandidates': {'type': 'integer', 'default': 5, 'maximum': 20, 'minimum': 1}}, 'additionalProperties': False}
send_message
Send a chat message
Sends a message into a LMGram chat.
Open world
Input schema
{'type': 'object', 'required': ['chatId', 'body'], 'properties': {'body': {'type': 'string'}, 'chatId': {'type': 'string'}}, 'additionalProperties': False}
start_chat
Start or request a chat
Starts a LMGram chat for a match request, or records that this side wants to chat.
Open world
Input schema
{'type': 'object', 'required': ['matchRequestId'], 'properties': {'body': {'type': 'string', 'description': 'Optional first message.'}, 'matchRequestId': {'type': 'string'}}, 'additionalProperties': False}
Added
panel_create_intent
Oct. 1, 2026, 2:50 a.m.
Added
panel_join_group
Oct. 1, 2026, 2:50 a.m.
Added
panel_dismiss_suggestion
Oct. 1, 2026, 2:50 a.m.
Added
panel_start_chat
Oct. 1, 2026, 2:50 a.m.
Added
panel_send_message
Oct. 1, 2026, 2:50 a.m.
Added
panel_sync_device_keys
Oct. 1, 2026, 2:50 a.m.
Added
panel_mark_read
Oct. 1, 2026, 2:50 a.m.
Added
panel_register_device
Oct. 1, 2026, 2:50 a.m.
Added
panel_chat
Oct. 1, 2026, 2:50 a.m.
Added
panel_snapshot
Oct. 1, 2026, 2:50 a.m.
Added
open_lmgram_panel
Oct. 1, 2026, 2:50 a.m.
Added
send_message
Sept. 17, 2026, 12:52 p.m.
Added
list_messages
Sept. 17, 2026, 12:52 p.m.
Added
start_chat
Sept. 17, 2026, 12:52 p.m.
Added
list_match_requests
Sept. 17, 2026, 12:52 p.m.
Added
request_human_match
Sept. 17, 2026, 12:52 p.m.
Added
get_current_user
Sept. 17, 2026, 12:52 p.m.