PluginWorld
Pi

Pidgeon

MCP✓ SPEC VERIFIED✓ REGISTRY

Email inbox for your AI agent: its own addresses, threads, sending, replies and arriving mail.

@pidgeon-ai · v0.15.0 · MIT · updated today

SECURITY

A+

SCORE

79

STARS

▲ 0

PLUG IN

claude mcp add pidgeon -- npx -y @pidgeon-ai/mcp

README

Pidgeon for JavaScript and TypeScript

Mailboxes for AI agents. 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.

pidgeon.ai · Documentation

npm install @pidgeon-ai/sdk

Create an address, send from it, wait for the answer, and reply in the thread:

import {
  client,
  identitiesCreate,
  messagesAwait,
  messagesReply,
  messagesSend,
} from '@pidgeon-ai/sdk';

client.setConfig({ auth: () => process.env.PIDGEON_API_KEY! });

// 1. An address of its own. Any free name on pidgeon.email works with no DNS.
const { data: address } = await identitiesCreate({
  body: { address: 'scout@pidgeon.email', type: 'agent' },
  throwOnError: true,
});

// 2. Send from it.
await messagesSend({
  body: {
    from: address.data.email,
    to: 'ops@example.com',
    subject: 'Staging access',
    text: 'Could you send me the access code?',
  },
  throwOnError: true,
});

// 3. Receive: one held-open request until the answer arrives, up to 60 seconds.
const { data: awaited } = await messagesAwait({
  query: { identity_id: address.data.id, timeout: 60 },
  throwOnError: true,
});

// 4. Reply into the same conversation. Recipients and subject come off the original.
if (awaited.data.message) {
  console.log(awaited.data.message.extracted.codes);
  await messagesReply({
    path: { id: awaited.data.message.id },
    body: { text: 'Thanks, that worked.' },
    throwOnError: true,
  });
}

PIDGEON_API_KEY is a pgn_live_… key. Make one at pidgeon.ai/app/developers/keys, or let your agent sign itself up: pidgeon.ai/skill.md.

The packages

Package Install What it is
@pidgeon-ai/sdk npm install @pidgeon-ai/sdk The TypeScript client, one function per operation
@pidgeon-ai/cli npm install -g @pidgeon-ai/cli Every endpoint as a command
@pidgeon-ai/mcp npx -y @pidgeon-ai/mcp init The MCP server, run on your machine
@pidgeon-ai/ai-sdk npm install @pidgeon-ai/ai-sdk ai zod The same tools, for the Vercel AI SDK
@pidgeon-ai/openclaw openclaw plugins install @pidgeon-ai/openclaw Email as an OpenClaw channel: mail starts a conversation, the reply goes in the thread

examples/openai-agents is an OpenAI Agents SDK agent on the hosted server, which needs no package of ours.

An MCP client needs no package at all. Point it at https://pidgeon.ai/api/mcp and it signs you in with OAuth:

claude mcp add --transport http pidgeon https://pidgeon.ai/api/mcp

The plugin for Claude Code, Codex, Cursor and Gemini CLI is pidgeon-ai/pidgeon-plugins.

Contributing

The SDK and the CLI are generated from openapi.json, which is the contract the API validates against and is published at https://pidgeon.ai/openapi.json. The application that serves it is closed source; these clients are not, and this is where they are readable. This repository is copied from that one on every release.

So a pull request against generated code cannot be merged as written — the fix belongs in the schema it came from. Open an issue instead and say what is wrong; that is the faster route either way, because a wrong field here is a wrong field in the published contract and in the Python client too.

Issues and questions: open one, or email support@pidgeon.ai.

MIT licensed.

SIMILAR PLUGINS