REA
Reverse engineer anything from your terminal or agent with one CLI and MCP server.
Test inboxes for AI agents testing your app: block until the OTP or magic link arrives.
Pick the AI app you use, then copy the settings.
Passed 5/5 checks · What you ask goes through the maker’s server (mcp.mailsocket.app) · ✓ Commands checked Nov 14, 2026
First: which AI do you use?
Pick your app and the steps appear below.
Works with Claude · about 5 min
You need a mailsocket key (create it on the maker’s site) · Set it up once on claude.ai or the desktop app, then use it in chat · free accounts can add 1 · on Team/Enterprise an Owner adds it
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
CustomizeConnectors
Copy each value into the field with the same name in Claude, then click Continue
mailsockethttps://mcp.mailsocket.app/mcpUnder Request headers, add this name and value
AuthorizationBearer <paste your key here>Paste the key only into the app’s field, never into a chat or to anyone
Click Continue past the sign-in settings Claude detected · under Authentication choose what the maker says (Sign in now, Sign in when needed or No sign in), then click Add
+Connectorsmailsocket
Use mailsocket and tell me what you can do for me, then show me one thing✓ If Claude says it is using mailsocket or shows a mailsocket tool in the answer, you are connected
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
ChatGPT cannot connect mailsocket yet
mailsocket needs your own key to connect, but OpenAI’s help page only describes OAuth sign-in; there is no key option we could verify
A · Use an app that can connect mailsocket
B · Others in Developer tools that work with ChatGPT
Picked from the most used in the same category, only ones that connect by address with no key
Works with Claude Code · about 5 min
You need a mailsocket key (create it on the maker’s site)
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
Mac: press Command+Space and type Terminal · Windows: open PowerShell
claude mcp add --transport http --scope user mailsocket https://mcp.mailsocket.app/mcp --header 'Authorization: Bearer your-value'Replace “your-value” with your key before pressing Enter
Paste the key only into the app’s field, never into a chat or to anyone
You should see mailsocket listed as connected
Use mailsocket and tell me what you can do for me, then show me one thing✓ If Claude Code says it is using mailsocket or shows a mailsocket tool in the answer, you are connected
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with Cursor · about 5 min
You need a mailsocket key (create it on the maker’s site)
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
In the mailsocket settings, Authorization is empty; add your key and save
Paste the key only into the app’s field, never into a chat or to anyone
Use mailsocket and tell me what you can do for me, then show me one thing✓ If Cursor says it is using mailsocket or shows a mailsocket tool in the answer, you are connected
Menu names checked against Cursor’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with VS Code · about 5 min
You need a mailsocket key (create it on the maker’s site)
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
In the mailsocket settings, Authorization is empty; add your key and save
Paste the key only into the app’s field, never into a chat or to anyone
Use mailsocket and tell me what you can do for me, then show me one thing✓ If VS Code says it is using mailsocket or shows a mailsocket tool in the answer, you are connected
Menu names checked against VS Code’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Other apps that use MCP, such as Windsurf, Zed or Gemini CLI, each add servers differently. See how in the app list.
Address for apps that connect over the web
https://mcp.mailsocket.app/mcpJSON settings are under “For developers” below
Claude Code
claude mcp add --transport http --scope user mailsocket https://mcp.mailsocket.app/mcp --header 'Authorization: Bearer your-value'Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"mailsocket": {
"url": "https://mcp.mailsocket.app/mcp",
"headers": {
"Authorization": "Bearer your-value"
}
}
}
}VS Code (mcp.json)
{
"servers": {
"mailsocket": {
"type": "http",
"url": "https://mcp.mailsocket.app/mcp",
"headers": {
"Authorization": "Bearer your-value"
}
}
}
}Claude Code
claude mcp add --scope user mailsocket --env MAILSOCKET_API_KEY=your-value -- uvx mailsocket-mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"mailsocket": {
"command": "uvx",
"args": [
"mailsocket-mcp"
],
"env": {
"MAILSOCKET_API_KEY": "your-value"
}
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"mailsocket": {
"command": "uvx",
"args": [
"mailsocket-mcp"
],
"env": {
"MAILSOCKET_API_KEY": "your-value"
}
}
}
}VS Code (mcp.json)
{
"servers": {
"mailsocket": {
"type": "stdio",
"command": "uvx",
"args": [
"mailsocket-mcp"
],
"env": {
"MAILSOCKET_API_KEY": "your-value"
}
}
}
}MAILSOCKET_API_KEY secret required envMAILSOCKET_BASE_URL envDescriptions are as written by the maker.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
pypi: mailsocket-mcpBased on how this server connects and on each app’s own docs, checked Nov 10, 2026.
Connect over the internet in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast
Run on your computer in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
The server asks you to sign in before it lists its tools.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 14, 2026
The registry name was verified against the domain mailsocket.app (the registry checks domain ownership)
Code last changed 13 days ago
Uses MIT
Responded in 140 ms (HTTP 401)
Declares OAuth sign-in, so your AI app can take you to log in
Not checked yet; we read the tool list when we check the endpoint
Ask, share a tip or report that it does not work. Sorted by what people marked helpful.
No posts yet. Be the first to ask or share.
Posts here are written by users, not the PopNx team.
No reviews yet
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 5 of 5 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: Authorization, MAILSOCKET_API_KEY
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed 13 days ago, and the latest version (0.4.2) reached the registry 13 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT on the web (full MCP on Business and above; Pro read-only).
In the same category: REA, GitHub, Serena MCP: the IDE for your agent
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Reverse engineer anything from your terminal or agent with one CLI and MCP server.
A powerful toolkit for coding, providing semantic retrieval and editing capabilities.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
An MCP server that exposes mailsocket to AI coding agents as native tools, so an agent can create a per-test inbox and block on the OTP or magic link without writing any polling code. For testing apps you own or are authorized to test. Not for creating accounts on services you don't control.
It wraps the Python SDK — no second HTTP client, no re-implemented polling.
| Tool | What the agent gets |
|---|---|
create_inbox(label?) | a fresh inbox id + address |
wait_for_otp(inbox_id, timeout?=60, min_confidence?=0, since?) | the headline — blocks (bounded: requested deadline clamped to 120s locally, 55s on the remote server) and returns the OTP string + confidence + subject/from/id/received_at. Default since omitted: only messages arriving after this call are matched. |
wait_for_link(inbox_id, timeout?=60, since?) | the extracted magic link (returned, *not* followed) + subject/from/id/received_at. Default since omitted: only messages arriving after this call are matched. |
list_inboxes(limit?, cursor?) | one page of inboxes owned by the key (server default page size 25) + next_cursor/has_more |
list_messages(inbox_id, has_otp?, subject_contains?, sender?, limit?, cursor?) | one page of messages, optionally filtered (server default page size 25) + next_cursor/has_more |
get_latest(inbox_id) | the newest message, without blocking |
send_test_code(inbox_id) | puts one sample OTP email straight into the inbox (no mail server) and returns its message_id + sent_at, so you can check the wait loop without real email. 5 per inbox / 20 per account per hour. |
delete_inbox(inbox_id) | remove an inbox when done |
Errors from the SDK (AuthError / NotFound / RateLimited / WaitTimeout) are turned into clean MCP tool errors — no stack traces, and the API key is never echoed back.
create_inbox needs no since — a fresh inbox only ever has new messages. By default, wait_for_otp/wait_for_link omit since entirely, so the server matches only messages arriving AFTER the call (the request start time). But if you reuse an existing inbox (e.g. to request a second OTP/link), pass since explicitly: otherwise a call with no since will correctly ignore anything already sitting in the inbox, which is right for most reuse, but if you actually WANT to catch a code that already arrived before you called the tool, pass either the time right before you triggered the new email (ISO8601 or unix seconds), or the id of the last message you saw (msg_..., meaning "only messages after that one") — both tools return id/received_at on the matched message so you can chain since= into the next call on that same inbox.
send_test_code does not go through the mail server, so the code is already in the inbox when the tool returns. Take a cutoff first: the id from get_latest (or since=0 if the inbox is empty), or the current time. Then call send_test_code(inbox_id), then wait_for_otp(inbox_id, since= ). Without since the wait only sees mail that arrives during the wait, so it would miss the test code.
POST /api/v1/agents/register.No install needed with uv:
uvx mailsocket-mcp
Or install with pip:
pip install mailsocket-mcp
mailsocket-mcp
Either way, it reads MAILSOCKET_API_KEY (and optional MAILSOCKET_BASE_URL) from the environment. If the key is missing it exits with a clear message and status 2; the key is never logged.
Add this to your client's MCP config file — claude_desktop_config.json for Claude Desktop, ~/.cursor/mcp.json for Cursor:
{
"mcpServers": { "mailsocket": { "command": "uvx", "args": ["mailsocket-mcp"], "env": { "MAILSOCKET_API_KEY": "ms_live_..." } } } }
claude mcp add mailsocket -e MAILSOCKET_API_KEY=ms_live_... -- uvx mailsocket-mcp
Any other MCP-compatible client works the same way: point it at the mailsocket-mcp executable (or uvx mailsocket-mcp) over stdio and pass the key through the environment.
The same tools are hosted at `https://mcp.mailsocket.app/mcp` over Streamable HTTP. Send your key on every request as a header: Authorization: Bearer ms_live_.... Never put the key in the URL; a ?api_key= request is rejected.
claude mcp add --transport http mailsocket https://mcp.mailsocket.app/mcp \
--header "Authorization: Bearer ms_live_..."
~/.cursor/mcp.json){
"mcpServers": { "mailsocket": { "url": "https://mcp.mailsocket.app/mcp", "headers": { "Authorization": "Bearer ms_live_..." } } } }
.vscode/mcp.json){
"servers": { "mailsocket": { "type": "http", "url": "https://mcp.mailsocket.app/mcp", "headers": { "Authorization": "Bearer ms_live_..." } } } }
Any client that can set a custom HTTP header works the same way (OpenAI Agents SDK, the n8n MCP Client node, your own code).
Things to know:
wait_for_otp / wait_for_link wait at most 55s per call, which keeps each response under proxy timeouts. On a timeout, call the tool again.mailsocket-mcp-http runs the same server (see mailsocket_mcp/remote.py for its env vars).| Variable | Required | Description |
|---|---|---|
MAILSOCKET_API_KEY | yes (secret) | Your mailsocket API key (ms_live_...). |
MAILSOCKET_BASE_URL | no | Override the API base URL. Defaults to https://dash.mailsocket.app/api/v1. |
pip install -e ".[dev]"
pytest
Tests make no external or live-API requests. The SDK client is faked, and the remote-transport tests talk to a local fake upstream on 127.0.0.1.
mailsocket>=0.3.1: wait_for_otp / wait_for_link called without since no longer miss a message that lands between the SDK's internal long-poll calls (each follow-up call sends the cutoff the server reported in Mailsocket-Wait-Since). No tool signature changes.send_test_code(inbox_id) tool (stdio and the hosted remote server, under the same per-key caps as the other non-wait tools): puts one sample OTP email into your own inbox without going through the mail server. Requires mailsocket>=0.3.0 (Client.send_test_code).mailsocket>=0.2.0): wait_for_otp / wait_for_link now omit since by default instead of forwarding 0 ("any message already in the inbox"). The old default could return a STALE OTP/link already sitting in a reused inbox; the new default matches only messages arriving after the call. Pass since=0 explicitly to keep the old behaviour. Hosted server (mcp.mailsocket.app, deployed from the repo, no new PyPI release): per-key concurrent waits raised 3 → 10 (= the Pro plan cap; the API still enforces each plan's own cap) and the shared wait pool 16 → 32, following the backend's raised wait capacity (global 64).wait_for_otp / wait_for_link accept an optional since (ISO8601, unix seconds or a message id) so a reused inbox returns the NEW code; results include the message id and received_at.mailsocket>=0.1.3 (stricter _seg id validation in the underlying Python SDK).