Vexa
Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.
Description from the maker (original English)
Email inbox and verifiable ID for your agent: addresses, threads, sending and replies.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
PIDGEON_API_KEY, AuthorizationValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"pidgeon": {
"command": "npx",
"args": [
"-y",
"@pidgeon-ai/mcp"
],
"env": {
"PIDGEON_API_KEY": "your-value"
}
}
}
}Run this in your terminal
claude mcp add --transport http pidgeon https://pidgeon.ai/api/mcp --header 'Authorization: Bearer {pidgeon_api_key}'claude mcp add pidgeon --env PIDGEON_API_KEY=your-value -- npx -y @pidgeon-ai/mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"pidgeon": {
"url": "https://pidgeon.ai/api/mcp",
"headers": {
"Authorization": "Bearer {pidgeon_api_key}"
}
}
}
}Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"pidgeon": {
"command": "npx",
"args": [
"-y",
"@pidgeon-ai/mcp"
],
"env": {
"PIDGEON_API_KEY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"pidgeon": {
"type": "http",
"url": "https://pidgeon.ai/api/mcp",
"headers": {
"Authorization": "Bearer {pidgeon_api_key}"
}
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"pidgeon": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@pidgeon-ai/mcp"
],
"env": {
"PIDGEON_API_KEY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Your choice stays on this device in a cookie; no account needed.
Authorization secret required HTTP headerThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
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 7, 2026
The registry name was verified against the domain pidgeon.ai (the registry checks domain ownership)
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Responded in 1790 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
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 3 of 3 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: PIDGEON_API_KEY, Authorization
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed –, and the latest version (0.28.1) reached the registry yesterday.
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 in developer mode.
In the same category: Vexa, emailmd, MCP WhatsApp Cloud
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.
Render markdown into email-safe HTML, lint drafts for deliverability problems, and preview emails.
MCP server for WhatsApp Cloud API (Meta) — messages, media, and templates via Graph API
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 gives your AI agent its own email inbox. Pidgeon is the email inbox API for AI agents. It gives agents their own inboxes so they can work with emails just like a human.
Over Model Context Protocol an agent can create addresses, send, wait for a reply with its verification codes already pulled out, answer in the thread, and hand a conversation to a person. There are two ways in, and they are the same server.
claude mcp add --transport http pidgeon https://pidgeon.ai/api/mcp
The first call answers 401, and the client sends you to Pidgeon to sign in with OAuth. You choose what it can do — read, read and send, or full access — and which addresses it can reach. Claude's custom connectors, ChatGPT, Cursor, Codex and VS Code take the same URL and sign in the same way. Nothing to install.
For an agent with nobody there to sign in, send a key instead:
claude mcp add --transport http pidgeon https://pidgeon.ai/api/mcp \
--header "Authorization: Bearer $PIDGEON_API_KEY"
The Claude Code, Codex, Cursor and Gemini CLI plugin installs the hosted server with a skill that teaches the agent to use it: pidgeon-ai/pidgeon-plugins.
For a client that runs MCP servers as local processes.
PIDGEON_API_KEY=pgn_live_… npx -y @pidgeon-ai/mcp init
That checks the key against the API and tells you which addresses it reaches — the one question a block of JSON cannot answer, and the one that otherwise surfaces as a model quietly getting an error you never see. Then it writes .mcp.json in the current directory and prints what it wrote.
--print to see the config without writing it, which is what you want if your client keeps its own somewhere else. --force to replace an entry that is already there.
For Codex, VS Code and Gemini CLI, --client writes the hosted server into that client's own file instead:
npx -y @pidgeon-ai/mcp init --client codex # ~/.codex/config.toml
npx -y @pidgeon-ai/mcp init --client vscode # .vscode/mcp.json npx -y @pidgeon-ai/mcp init --client gemini # .gemini/settings.json
With no PIDGEON_API_KEY it writes the URL alone and the client signs you in (codex mcp login pidgeon, /mcp auth pidgeon in Gemini CLI, a browser prompt in VS Code). With a key it checks the key first and has the client read it from the variable, or ask for it once in VS Code, so it is never in the file. It keeps everything already in the file, comments included, backs a changed file up to .bak, and is a no-op the second time. --scope user|project picks the other file; --sign-in ignores a key that is set.
The key is referenced from the environment rather than written into the file, so the config can be committed and the credential cannot:
{
"mcpServers": { "pidgeon": { "command": "npx", "args": ["-y", "@pidgeon-ai/mcp"], "env": { "PIDGEON_API_KEY": "${PIDGEON_API_KEY}" } } } }
A pgn_live_… key comes from pidgeon.ai/app/developers/keys. No account yet? An agent can sign itself up by reading pidgeon.ai/skill.md; the only thing it needs from a person is a six-digit code.
PIDGEON_BASE_URL points it somewhere else, which is how you run it against a local checkout.
Documentation: pidgeon.ai/docs/mcp.
| Tool | What it does |
|---|---|
get_setup | Call this first. |
list_addresses | The addresses this credential can reach. |
create_address | Create an address for an agent to use. |
get_address | One address, by id. |
list_threads | Conversations in one address, newest first. |
get_thread | One conversation, by id. |
list_messages | The messages of one conversation, oldest first — the text to read before replying. |
search_messages | Full-text search across every address this credential can reach, ranked by relevance. |
send_message | Send from an address this credential may send as. |
check_message | Asks whether send_message with these arguments would go, and sends nothing. |
verify_sender | Checks a raw message, or its headers, and answers whether an AI agent sent it, on whose behalf, and whether the signatures on it hold: the signed agent declaration (Agent-of) and the Post-Envelope, from Pidgeon or any other signer using the same formats. |
get_message | One message, by id, with its body, the headers we keep, and what the sending domain’s records proved — authentication.spf, .dkim, .dmarc, where null means not reported rather than failed, and .signature: "pass" when another Pidgeon address sent it, signed and checked before it was stored. |
await_message | Waits until a message arrives at an address — after you submit a sign-up form, say — and returns it with extracted.codes and extracted.links: verification codes and confirm links, most likely first. |
reply_to_message | The recipients, the subject and the thread are read off the message being answered, so you bring the words and nothing else. |
forward_message | Sends one message on to somebody it was not addressed to, with its attachments, from the address that received it. |
create_draft | Writes a message without sending it, for a human to read and send — use it when you are asked to prepare replies for sign-off. |
get_draft_approval | Where a held send stands, by its draft_id: pending until a person approves or rejects it in the dashboard, then approved (it was sent, and message_id is the message), rejected, or expired after 24 hours with nobody deciding. |
list_drafts | Every draft at one address, newest first, with its recipients and body — so you can come back to one and finish it. |
get_draft | One draft by id: its sender, recipients, subject, text and attachments. |
update_draft | Changes the fields you pass and leaves the rest; null clears the subject or text. |
delete_draft | Deletes one draft, and cancels its send if it was scheduled. |
schedule_draft | Sends one draft later, from Pidgeon’s side, with no further call: it goes even if you and the person are offline. |
unschedule_draft | Takes a scheduled draft off the schedule. |
| read_attachment | The text of one attachment — a CSV, a log, JSON, a calendar file, or a PDF, a Word .docx or an Excel .xlsx.
Only the beginning is shown; read the rest in the repo