Vexa
Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.
Description from the maker (original English)
Use WhatsApp from AI apps through the Kaption extension. OAuth 2.1 relay that cannot read messages.
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.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://mcp.kaptionai.com/mcpRun this in your terminal
claude mcp add --transport http extension-remote https://mcp.kaptionai.com/mcpPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"extension-remote": {
"url": "https://mcp.kaptionai.com/mcp"
}
}
}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": {
"extension-remote": {
"type": "http",
"url": "https://mcp.kaptionai.com/mcp"
}
}
}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.
ChatGPT connects only to servers on the internet:
https://mcp.kaptionai.com/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
We have not read this server’s tool list yet; we check endpoints in rotation.
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 with the GitHub account Kaption-AI, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Not checked yet; we check endpoints in rotation
Not checked yet; we check endpoints in rotation
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 1 of 1 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.
The registry does not list a required key, though some servers ask you to sign in on first use.
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 –, and the latest version (1.0.0) reached the registry 34 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 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.
Cloud MCP relay for WhatsApp — lets AI assistants (Claude, ChatGPT, Cursor, etc.) interact with your WhatsApp conversations through the Model Context Protocol.
Setup guide: kaptionai.com/mcp — connect WhatsApp to Claude, ChatGPT or Cursor.
Live at: mcp.kaptionai.com (canonical) and mcp-ext.kaptionai.com (backward-compatible alias for existing connections)
The relay cannot read your messages. It forwards MCP tool calls between the AI client and the Kaption browser extension, which processes everything locally in your browser. Its source code is public (BUSL-1.1), so you can verify it yourself.
AI Client (Claude/ChatGPT/Cursor)
│ │ OAuth 2.1 + SSE/Streamable HTTP ▼ ┌─────────────────────────────────────┐ │ Cloudflare Worker │ │ mcp.kaptionai.com │ │ │ │ ┌────────────┐ ┌──────────────┐ │ │ │ OAuthProv │ │ Next.js │ │ │ │ /sse /mcp │ │ /authorize │ │ │ │ /token │ │ /ext-auth │ │ │ │ /register │ │ / (landing) │ │ │ └─────┬──────┘ └──────────────┘ │ │ │ │ │ ┌─────▼──────┐ ┌──────────────┐ │ │ │ RelayMCP │ │ Deployment │ │ │ │ (DO) │ │ ChainDO │ │ │ └─────┬──────┘ └──────────────┘ │ │ │ │ │ ┌─────▼──────┐ │ │ │ RelayRoom │ ◄── WebSocket ──┐ │ │ │ (DO/accountRef) │ │ │ │ └────────────┘ │ │ └─────────────────────────────────┼──┘ │ Browser Extension (WhatsApp Web tab)
| DO | Keyed By | Purpose |
|---|---|---|
| RelayMCP | OAuth session | McpAgent — registers tools, relays JSON-RPC to RelayRoom |
| RelayRoom | Opaque accountRef | WebSocket bridge to extension, auth handshake, request/response matching |
| DeploymentChainDO | "main" | Append-only hash chain for deployment transparency |
/.well-known/oauth-authorization-serverPOST /register (RFC 7591)/authorize/token/sse) or Streamable HTTP (/mcp)| Path | Method | Auth | Handler |
|---|---|---|---|
/ | GET | — | Next.js landing page |
/authorize | GET | — | Next.js OTP form (HMAC-signed oauthReqInfo) |
/authorize/send-otp | POST | — | Next.js API route → rest-api |
/authorize/verify | GET/POST | — | Next.js OTP verify → OAuthProvider completeAuthorization |
/authorize/reviewer-login | POST | Static review credentials | Password completion for the configured synthetic review phone |
/register | POST | — | OAuthProvider (RFC 7591 dynamic client registration) |
/token | POST | — | OAuthProvider (token exchange) |
/sse | GET | OAuth token | RelayMCP DO (SSE transport) |
/mcp | POST | OAuth token | RelayMCP DO (Streamable HTTP) |
/ws/ext | GET | JWT/token in auth msg | RelayRoom DO (WebSocket upgrade) |
/ext-auth/* | Various | — | Next.js extension auth pages + API |
/transparency | GET | — | DeploymentChainDO (chain history) |
/transparency/latest | GET | — | DeploymentChainDO (latest entry) |
/transparency/verify | GET | — | DeploymentChainDO (chain integrity) |
/transparency/gaps | GET | CF token | Cross-reference CF deploys with chain |
/transparency/append | POST | DEPLOY_API_KEY | Append entry (CI only) |
26 public tools are forwarded to the extension (the relay does not execute them). Reads and writes are separate tools: every read-only tool carries readOnlyHint: true, and the manage_* tools only write. The read tools for reminders, scheduled messages, chat lists and contact notes reach the extension as the matching manage_* call (TOOL_ROUTES in src/tools.ts), so every Kaption version answers them.
| Tool | Kind | Description |
|---|---|---|
query | read | Query conversations, contacts, messages, transcriptions, labels, communities, sessions |
summarize_conversation | write (private cache) | Get or generate a conversation summary |
download_media | read | Download image/video/audio/document from a message |
list_contacts, get_contact, get_contact_groups | read | Read contacts and their group memberships |
list_groups, get_group | read | Read cached or live group metadata |
export_contacts | read | Export contacts as CSV or JSON |
get_analytics | read | Analyze WhatsApp activity, rankings, response times, and exports |
call_recordings | read | List, read and search call recordings and transcripts |
list_reminders, get_reminder | read | Read personal reminders |
list_scheduled_messages, get_scheduled_message | read | Read scheduled messages (both modes) |
list_chat_lists, get_chat_list | read | Read personal chat lists |
get_contact_note | read | Read a contact's note (Business accounts) |
manage_labels | write | Add/remove/create/delete WhatsApp Business labels |
manage_notes | write | Set a contact's note (Business accounts) |
manage_chat | write | Archive, pin, mute, mark read/unread, set/clear draft |
manage_reminders | write | Create/update/complete/delete personal reminders |
manage_scheduled_messages | write | Schedule, change or cancel messages — from Kaption's number (bot, default) or from your own number on this computer (mode: "local", also to groups) |
manage_lists | write | Create/edit/delete personal chat lists and their chats |
send_message | write | Queue a message from your own number (needs sending from this computer turned on and consent in Kaption) |
create_attachment_upload | write | One-time upload slot for an attachment to send or schedule |
The square brand icon for directory listings and consent screens is served at /brand/kaption-mcp-icon.svg.
get_api_info is local-only and is deliberately excluded from the cloud surface because it returns private REST connection credentials.
Every deployment is cryptographically signed and recorded in a tamper-evident transparency chain. See SECURITY.md for full details.
GitHub Actions (push to main)
│ ├─ 1. Run tests ├─ 2. Build worker (OpenNext + wrap) ├─ 3. SHA-256 manifest every generated code and asset file ├─ 4. Pre-deploy: Sigstore sign the manifest → Rekor log ├─ 5. Deploy to Cloudflare ├─ 6. Post-deploy: verify hash unchanged, sign attestation → Rekor └─ 7. Append to transparency chain (hash-linked)
Daily heartbeat redeploys (6am UTC) ensure the chain stays active even without code changes.
wrangler deploy locallyAll production deploys go through GitHub Actions. Multiple layers enforce this:
wrangler.jsonc is gitignored; scripts/build-config.mjs renders it from wrangler.template.jsonc and refuses to run unless GITHUB_ACTIONS=true + GITHUB_RUN_ID are set (or KAPTIONAI_LOCAL_DEV=1 for dev).npm run predeploy aborts unless those same CI env vars are present.main is branch-protected: requires a reviewed PR + green test, deploy, and verify checks.To ship a change: open a PR → review + CI green → merge to main → Actions builds, signs (Sigstore), deploys, and appends to the transparency chain. npx wrangler deploy from a laptop will fail at step 1 because there is no wrangler.jsonc to deploy.
# 1. Check the transparency chain
curl -s https://mcp.kaptionai.com/transparency/latest | jq .
curl -s https://mcp.kaptionai.com/transparency/verify | jq .
COMMIT=$(curl -s https://mcp.kaptionai.com/transparency/latest | jq -r '.event.commitSha') cosign verify-blob \ --bundle build-manifest.sigstore.json \ --certificate-identity-regexp "https://github.com/Kaption-AI/mcp-extension-remote/.*" \ --certificate-oidc-issuer "https://token.actions.githubusercontent.com" \ build-manifest.json
# Full chain history (paginated)
GET /transparency?limit=50&offset=0
GET /transparency/latest
GET /transparency/verify
# SSE transport (for Claude Code, Cursor)
GET /sse
POST /mcp
# Install dependencies
npm install
npm test
npm run dev
npm run build:worker
src/
index.ts # Worker entry — Hono routing, OAuthProvider composition relay-mcp.ts # RelayMCP Durable Object (McpAgent) relay-room.ts # RelayRoom Durable Object (WebSocket bridge) deployment-chain.ts # DeploymentChainDO (transparency log) otp.ts # OTP generation, verification, JWT, HMAC, rate limiting schemas.ts # Zod schemas for API request validation tools.ts # MCP tool definitions (forwarded, not executed) types.ts # TypeScript interfaces (Env, DeploymentEvent, etc.) app/ page.tsx # Landing page (multilingual, client-side i18n) layout.tsx # Root layout i18n.ts # i18next init (8 languages) locales/ # Translation JSON files authorize/ # OAuth OTP flow pages + API routes ext-auth/ # Extension auth pages + API routes scripts/ wrap-worker.mjs # Post-build: wraps OpenNext output with custom routing
| Variable | Description |
|---|---|
INTERNAL_API_BASE_URL | Backend API base URL |
BUILD_HASH | SHA-256 of worker bundle (set by CI) |
COMMIT_SHA | Git commit SHA (set by CI) |
wrangler secret put)| Secret | Description |
|---|---|
INTERNAL_API_KEY | API key for rest-api OTP endpoint |
DEPLOY_API_KEY | API key for transparency chain append |
JWT_SECRET | Shared JWT signing secret (same as rest-api, schedule, metadata workers) |
PHONE_REF_SECRET | HMAC secret used to derive opaque durable account references from phone numbers |
EPHEMERAL_STATE_SECRET | Encryption secret for short-lived login hints, verify tickets, and encrypted session phone payloads |
OPENAI_APPS_CHALLENGE_TOKEN | Exact domain-verification token issued by the OpenAI plugin portal |
OPENAI_REVIEW_PASSWORD_SHA256 | Lowercase SHA-256 hex digest of the high-entropy reviewer password |
OPENAI_REVIEW_PHONE | Phone number used as the dedicated review username and to derive the synthetic account's opaque reference |
The three OPENAI_* values are also configured as GitHub Actions repository secrets. Add all three together, then run the manual Test, Build & Deploy workflow. CI writes them to an ephemeral mode-0600 file and passes that file to wrangler deploy --secrets-file, so the review configuration ships in the same signed, attested Worker version as the code. The workflow fails closed if only part of the three-value set is present and deletes the temporary file immediately after deployment. Existing Worker
Only the beginning is shown; read the rest in the repo