REA
Reverse engineer anything from your terminal or agent with one CLI and MCP server.
Send transactional email and manage domains, templates and webhooks in UniOne from AI agents.
Pick the AI app you use, then copy the settings.
Passed 4/4 checks · What you ask goes through the maker’s server (mcp.unione.io) · ✓ Commands checked Nov 13, 2026
First: which AI do you use?
Pick your app and the steps appear below.
Works with Claude · about 5 min
You need a UniOne 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
UniOnehttps://mcp.unione.io/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
+ConnectorsUniOne
Use UniOne and tell me what you can do for me, then show me one thing✓ If Claude says it is using UniOne or shows a UniOne 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 UniOne yet
UniOne 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 UniOne
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 UniOne 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 unione https://mcp.unione.io/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 UniOne listed as connected
Use UniOne and tell me what you can do for me, then show me one thing✓ If Claude Code says it is using UniOne or shows a UniOne 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 UniOne 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 UniOne 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 UniOne and tell me what you can do for me, then show me one thing✓ If Cursor says it is using UniOne or shows a UniOne 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 UniOne 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 UniOne 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 UniOne and tell me what you can do for me, then show me one thing✓ If VS Code says it is using UniOne or shows a UniOne 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.unione.io/mcpJSON settings are under “For developers” below
Claude Code
claude mcp add --transport http --scope user unione https://mcp.unione.io/mcp --header 'Authorization: Bearer your-value'Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"unione": {
"url": "https://mcp.unione.io/mcp",
"headers": {
"Authorization": "Bearer your-value"
}
}
}
}VS Code (mcp.json)
{
"servers": {
"unione": {
"type": "http",
"url": "https://mcp.unione.io/mcp",
"headers": {
"Authorization": "Bearer your-value"
}
}
}
}These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Based 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
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 unione.io (the registry checks domain ownership)
Code last changed 8 days ago
Not applicable: a cloud server run by the owner of unione.io; you don't run code from the repo
Responded in 235 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 4 of 4 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
It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.
The GitHub repo last changed 8 days ago, and the latest version (1.0.2) reached the registry 8 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.
The official Model Context Protocol server for UniOne (https://docs.unione.io). It lets AI assistants — Claude, ChatGPT, Cursor, Windsurf, VS Code, Cline and any other MCP client — work with your UniOne account: send email, manage sender domains, templates, webhooks, suppressions, event dumps, tags and projects. 32 tools, each one a call of the public UniOne Web API.
Two ways to use it:
https://mcp.unione.io/mcp. Nothing to install: add the URL to your client and sign in to UniOne through OAuth.UNIONE_API_KEY.URL: `https://mcp.unione.io/mcp`
The client opens the UniOne sign-in page on first use; you approve the access and the client keeps the token. Revoke it at any time in your UniOne account.
Claude Code
claude mcp add --transport http unione https://mcp.unione.io/mcp
Claude Desktop / claude.ai — Settings → Connectors → Add custom connector, URL https://mcp.unione.io/mcp.
Cursor, Windsurf, Cline, VS Code and other clients with an mcpServers config:
{
"mcpServers": { "unione": { "type": "http", "url": "https://mcp.unione.io/mcp" } } }
A client that cannot do OAuth can send an API key instead: add the header Authorization: Bearer .
Get an API key in your UniOne account: an account key reaches the whole account, a project key only its project. The server reads it from UNIONE_API_KEY.
npx (Node.js 18+; downloads the binary for your platform on first run):
{
"mcpServers": { "unione": { "command": "npx", "args": ["-y", "unione-mcp"], "env": { "UNIONE_API_KEY": " " } } } }
Docker:
{
"mcpServers": { "unione": { "command": "docker", "args": ["run", "-i", "--rm", "-e", "UNIONE_API_KEY", "ghcr.io/unione-repo/unione-mcp", "stdio"], "env": { "UNIONE_API_KEY": " " } } } }
Binary — download unione-mcp- - from Releases, make it executable and put it on your PATH (or go install github.com/unione-repo/unione-mcp/cmd/unione-mcp@latest):
{
"mcpServers": { "unione": { "command": "unione-mcp", "args": ["stdio"], "env": { "UNIONE_API_KEY": " " } } } }
Claude Code, in one line:
claude mcp add unione --env UNIONE_API_KEY=<your API key> -- npx -y unione-mcp
Check the connection by asking *"show my UniOne account"*: the assistant calls get_account.
Every tool has a class, sent to the client as MCP annotations:
readOnlyHint);destructiveHint: false);destructiveHint: true). Clients ask you before such a call.| Area | Tool | What it does | Class |
|---|---|---|---|
| Account | get_account | Get UniOne account | read |
| Domains | list_domains | List sender domains | read |
| Domains | get_dns_records | Add domain / get its DNS records | write |
| Domains | validate_domain | Check domain DNS records | read |
| Domains | delete_domain | Delete sender domain | dangerous |
| Domains | get_sandbox_domain | Get sandbox domain | write |
| Confirmed emails | list_confirmed_emails | List confirmed emails | read |
| Confirmed emails | add_confirmed_email | Add confirmed email | write |
| Confirmed emails | delete_confirmed_email | Delete confirmed email | dangerous |
| Sending | send_email | Send email (billed) | dangerous |
| Templates | list_templates | List templates | read |
| Templates | get_template | Get template | read |
| Templates | set_template | Create or overwrite template | dangerous |
| Templates | delete_template | Delete template | dangerous |
| Webhooks | list_webhooks | List webhooks | read |
| Webhooks | get_webhook | Get webhook | read |
| Webhooks | set_webhook | Create or overwrite webhook | dangerous |
| Webhooks | delete_webhook | Delete webhook | dangerous |
| Suppressions | get_suppression | Get suppression of an address | read |
| Suppressions | list_suppressions | List suppressions | read |
| Suppressions | set_suppression | Block an address | dangerous |
| Suppressions | delete_suppression | Unblock an address | dangerous |
| Validation | validate_email | Validate an email address (billed) | write |
| Event dumps | request_event_dump | Request event dump | write |
| Event dumps | get_event_dump | Get event dump | read |
| Event dumps | delete_event_dump | Delete event dump | dangerous |
| Tags | list_tags | List tags | read |
| Tags | delete_tag | Delete tag | dangerous |
| Projects | list_projects | List projects | read |
| Projects | create_project | Create project | write |
| Projects | update_project | Update project | dangerous |
| Projects | delete_project | Delete project | dangerous |
send_email sends real mail and cannot be recalled. validate_email is billed per address. The tools that reach beyond your account — send_email and add_confirmed_email mail an address, set_webhook points UniOne at a URL, validate_email probes a mailbox — say so with openWorldHint: true.
Two switches narrow the tool list of a local server:
| Variable | Effect |
|---|---|
MCP_READ_ONLY=1 | only the read tools are listed: the assistant cannot change the account |
MCP_DISABLE_SEND=1 | send_email is not listed: the assistant cannot send mail |
"env": { "UNIONE_API_KEY": "<your API key>", "MCP_READ_ONLY": "1" }
With Docker, env reaches only the docker process: pass the switch into the container with its own -e, before the image name.
"args": ["run", "-i", "--rm", "-e", "UNIONE_API_KEY", "-e", "MCP_READ_ONLY", "ghcr.io/unione-repo/unione-mcp", "stdio"],
"env": { "UNIONE_API_KEY": " ", "MCP_READ_ONLY": "1" }
They guard against mistakes of the model, not against the key's owner: the same key works in the Web API directly. For a hard limit use a project API key.
Everything is an environment variable; a .env file in the working directory is read too. .env.example lists them all. Every value is validated at start-up.
| Variable | Purpose |
|---|---|
UNIONE_API_KEY | local mode: the API key every tool acts with |
UNIONE_API_URL | Web API base, default https://api.unione.io/en/transactional/api/v1 |
MCP_TRANSPORT | http (default) or stdio; unione-mcp stdio sets it too |
MCP_READ_ONLY, MCP_DISABLE_SEND | see above |
AUTH_MODE | self-hosted http mode: api_key (default) or oauth |
AUTHORIZATION_SERVER_URL, OAUTH_SCOPES, OAUTH_TOKEN_PREFIX, MCP_PUBLIC_URL | self-hosted oauth mode. OAUTH_TOKEN_PREFIX defaults to uoat_. |
LISTEN_HOST, PORT | self-hosted http mode listener (default: every interface, first free port from 3000) |
UPSTREAM_TIMEOUT, UPSTREAM_MAX_BODY_BYTES, MCP_MAX_REQUEST_BYTES | Web API call limits and the /mcp body cap |
LOG_LEVEL, LOG_FORMAT | debug, info, warn, error; text or json, always to stderr |
The API key, the Authorization header and Web API response bodies are never logged.
go build -o bin/unione-mcp ./cmd/unione-mcp
go test ./internal/... ./cmd/... # unit tests, no network
docker run -d --rm -p 8081:8081 wiremock/wiremock:3.4.1 --local-response-templating --port 8081 E2E_WIREMOCK_URL=http://localhost:8081 go test -tags=integration ./tests/...