OpenMail — reviewer testing guide

OpenMail is a remote MCP server at https://mcp.openmail.tools/mcp (streamable HTTP). Five tools search and read mail and never mark it as read. send_message sends only when sending is turned on for that mailbox and the connection is allowed to send. The demo mailbox can send. Those messages stay on the isolated demo server and are not delivered to the internet.

1. Reviewer account

2a. Connect with OAuth (Claude, ChatGPT, Muse, MCP Inspector)

1. Add a remote / custom MCP connector with URL https://mcp.openmail.tools/mcp and no authentication header. 2. The client opens OpenMail. Log in as the reviewer account. 3. The consent screen lists the Demo mailbox and what the app can and cannot do. If the app asked only for mail.read, it says “App wants read-only access to your OpenMail mailboxes”. If the app also asked for mail.send, it says “App wants access to your OpenMail mailboxes” and shows an **Also allow App to send email checkbox, unticked by default. Leave it unticked for read-only access, or tick it to test send_message. Click Allow**. 4. You are sent back to the client, which is now connected. 5. To disconnect: Dashboard → Connected apps → Disconnect. The connector stops working at once.

Technical details: discovery via /.well-known/oauth-protected-resource (RFC 9728) and /.well-known/oauth-authorization-server (RFC 8414); Client ID Metadata Documents and Dynamic Client Registration; authorization code + PKCE S256; resource bound to https://mcp.openmail.tools/mcp; iss returned (RFC 9207); scopes mail.read (always granted) and optional mail.send (granted only when the checkbox is ticked); access tokens last 1 hour; refresh tokens rotate.

2b. Connect with an API key (Grok Bot)

1. Dashboard → API keys → Create key. Copy it; it is shown only once. 2. Add a custom MCP connector with URL https://mcp.openmail.tools/mcp and header Authorization: Bearer <key>. Keys are created as Read only or Read and send; a read-only key cannot send. 3. To disconnect: revoke the key in the dashboard.

3. Prompts and expected results

PromptExpected
"List my OpenMail accounts"The Demo (or your) mailbox: address, provider, host. No password anywhere.
"What folders are in my mailbox and how many unread?"Folder list (INBOX, …) with total/unread counts.
"Find unread emails from this week"Newest-first list with sender, subject, date, attachment flag.
"Search for emails about invoices with attachments"Matching messages only; attachments listed by name/size.
"Read the newest unread email"Full headers and text body. Afterwards the message is still unread.
"Show me the whole thread for that email"The conversation's messages in order.

3b. Testing send_message (optional)

send_message is a sensitive write: the assistant asks for your approval every time.

4. Negative checks (optional)

Tools and annotations

Full inputs, outputs, errors and limits: docs/tools.md.

Read tools: readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false. send_message: readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: true.

ToolTitleClassification
list_accountsList accountsRead
list_foldersList foldersRead
search_messagesSearch messagesRead
read_messageRead messageRead
read_threadRead threadRead
send_messageSend emailSensitive write (asks for approval every time). Plain text, and only the recipients passed in. Needs mail.send or a Read and send key, and sending turned on for the mailbox. The demo mailbox can send; mail stays on the isolated demo server.

What it does not do

It does not delete, move, flag, or mark mail as read. It does not send from a mailbox where sending is off, or through a connection that was not allowed to send. Mail content is not stored. Email content is returned marked as untrusted third-party content.