Skip to main content
Glama

envoi-mcp

Give any AI agent a real email address. MCP server for Envoi.work.

Quick Start

npx envoi-mcp

No install required. Just add it to your AI client's MCP configuration.

Related MCP server: Email MCP Server

Setup

1. Get an API Key

Register your agent at envoi.work to get an API key and an @envoi.work email address.

2. Configure Your AI Client

Claude Code

claude mcp add envoi-mcp -e ENVOI_API_KEY=your-key-here -- npx envoi-mcp

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "envoi": {
      "command": "npx",
      "args": ["envoi-mcp"],
      "env": {
        "ENVOI_API_KEY": "your-key-here"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "envoi": {
      "command": "npx",
      "args": ["envoi-mcp"],
      "env": {
        "ENVOI_API_KEY": "your-key-here"
      }
    }
  }
}

Windsurf

Add to ~/.windsurf/mcp.json:

{
  "mcpServers": {
    "envoi": {
      "command": "npx",
      "args": ["envoi-mcp"],
      "env": {
        "ENVOI_API_KEY": "your-key-here"
      }
    }
  }
}

Tools

register_agent

Register a new AI agent on Envoi and get a real email address.

Input:  { name, email, skills[], bio? }
Output: { api_key, email_address, profile_url, handle }

send_email

Send an email from your agent's @envoi.work address.

Input:  { to, subject, body }
Output: { success, message_id }

check_inbox

List recent emails in the agent's inbox.

Input:  { limit? }
Output: [{ id, from, subject, preview, date, read }]

read_email

Read the full content of a specific email.

Input:  { email_id }
Output: { from, to, subject, body, date, thread_id }

reply_to_email

Reply to an email, maintaining the conversation thread.

Input:  { email_id, body }
Output: { success, message_id }

Environment Variables

Variable

Required

Description

ENVOI_API_KEY

Yes*

Your Envoi API key (*not required for register_agent)

ENVOI_BASE_URL

No

API base URL (default: https://envoi.work)

Development

git clone https://github.com/yourusername/envoi-mcp.git
cd envoi-mcp
npm install
npm run build

Test locally:

ENVOI_API_KEY=your-key node dist/index.js

License

MIT

Available Tools

5 tools
check_inboxC

List recent emails in the agent's inbox

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of emails to return (default: 20)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it lists emails but doesn't describe what 'recent' means, whether it's read-only, if it requires authentication, how results are ordered, or what the output format looks like. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded, with zero waste, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'recent' entails, the structure of returned emails, or any behavioral constraints. For a tool that interacts with an inbox, more context on permissions, data format, or scope would be needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'limit' parameter fully documented in the schema itself. The description adds no additional parameter information beyond what the schema provides, so it meets the baseline of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and target resource ('recent emails in the agent's inbox'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'read_email' or 'reply_to_email', but the verb 'List' versus 'read' or 'reply' provides some implicit distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'read_email' or 'send_email'. It doesn't mention prerequisites, context for use, or exclusions, leaving the agent to infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_emailC

Read the full content of a specific email

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idYesThe ID of the email to read

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action but lacks details on permissions required, rate limits, whether it's idempotent, or what happens if the email_id is invalid. For a read operation with zero annotation coverage, this leaves significant gaps in understanding tool behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It front-loads the core purpose ('read the full content') and efficiently specifies the target ('a specific email'), making it easy to parse and understand immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete for a tool that performs a read operation. It doesn't explain what 'full content' includes (e.g., headers, body, attachments) or the return format, leaving the agent uncertain about the tool's output and behavioral nuances.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the single parameter 'email_id' well-documented in the schema. The description adds no additional parameter semantics beyond implying that 'email_id' identifies a specific email, which is already covered by the schema. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('read') and resource ('full content of a specific email'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'check_inbox' or 'reply_to_email' beyond the basic verb, missing an opportunity to clarify scope distinctions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'check_inbox' for listing emails or 'reply_to_email' for responding. The description implies usage for reading a specific email but offers no context about prerequisites, error conditions, or appropriate scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_agentB

Register a new AI agent on Envoi.work and get a real email address (@envoi.work)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name for the agent
emailYesDesired email handle (e.g. 'myagent' for myagent@envoi.work)
skillsYesList of skills/capabilities the agent has
bioNoShort bio describing what the agent does

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. While it indicates this is a registration/create operation, it doesn't describe authentication requirements, rate limits, error conditions, or what happens if an agent with the same email already exists. For a creation tool with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that communicates the core purpose and outcome. Every word earns its place, with no redundant information or unnecessary elaboration. It's appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the registration process entails, what permissions are needed, what the response looks like, or potential error scenarios. Given the complexity of agent registration and the lack of structured metadata, more behavioral context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description doesn't add any meaningful parameter semantics beyond what's in the schema - it doesn't explain format constraints, provide examples beyond the email handle example (which is already in the schema), or clarify relationships between parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Register a new AI agent') and resource ('on Envoi.work'), and explicitly mentions the outcome ('get a real email address'). It distinguishes this from sibling tools which focus on email operations rather than agent registration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, timing considerations, or how this relates to the sibling email tools. It simply states what the tool does without contextual usage information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reply_to_emailB

Reply to an email, maintaining the conversation thread

ParametersJSON Schema
NameRequiredDescriptionDefault
email_idYesThe ID of the email to reply to
bodyYesReply body (plain text or HTML)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions thread maintenance but doesn't disclose behavioral traits like required permissions, whether replies are sent immediately or saved as drafts, rate limits, or error conditions. The description is minimal beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and includes the key behavioral detail about thread maintenance, making it appropriately sized for its purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a mutation tool with 2 parameters, the description is adequate but has clear gaps. It covers the basic purpose but lacks details on permissions, response format, or error handling, making it minimally viable but incomplete for safe agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear parameter descriptions in the schema. The description doesn't add any meaning beyond what the schema provides, such as explaining email_id format or body content constraints, so it meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Reply to an email') and resource ('an email'), specifying it maintains the conversation thread. However, it doesn't explicitly differentiate from sibling tools like 'send_email' beyond the thread maintenance aspect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for replying within an existing thread, but doesn't provide explicit guidance on when to use this versus 'send_email' for new emails or 'check_inbox' for reading. No exclusions or alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_emailC

Send an email from your agent's @envoi.work address

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient email address
subjectYesEmail subject line
bodyYesEmail body (plain text or HTML)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the sender address but fails to cover critical aspects such as authentication needs, rate limits, error handling, or whether the email is sent immediately or queued. This leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of an email-sending tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits, error cases, response format, and how it differs from sibling tools, making it incomplete for effective agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all three parameters (to, subject, body) with clear descriptions. The description adds no additional semantic details beyond what the schema provides, resulting in a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('send') and resource ('email'), specifying it originates from the agent's @envoi.work address. However, it does not explicitly differentiate from sibling tools like 'reply_to_email' or 'check_inbox', which reduces clarity in distinguishing use cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'reply_to_email' or 'check_inbox', nor does it mention any prerequisites or exclusions. It simply states the basic function without contextual usage advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv0.1.0
    • First observedcheck_inbox
    • First observedread_email
    • First observedregister_agent
    • First observedreply_to_email
    • First observedsend_email

TDQS

A3.5/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: check_inbox lists emails, read_email reads a specific email, register_agent sets up the agent, reply_to_email replies within a thread, and send_email sends new emails. The descriptions make it easy to distinguish between them, preventing misselection.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case (e.g., check_inbox, read_email, register_agent). The naming is predictable and readable throughout, with no deviations or mixed conventions.

Tool Count5/5

With 5 tools, the server is well-scoped for email management on Envoi.work. Each tool earns its place by covering core email operations (inbox, reading, sending, replying) and agent setup, without being too thin or bloated.

Completeness4/5

The toolset provides strong coverage for basic email workflows: agent registration, inbox listing, reading, sending, and replying. A minor gap is the lack of tools for managing emails (e.g., delete_email or archive_email), but agents can still handle core tasks effectively.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides an AI agent with its own email address to send, receive, and manage emails via MCP. No email server setup required.
    33
    12
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Give AI agents their own email inboxes. Create, send, receive, and manage email entirely via MCP tools.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Connects any IMAP/SMTP mailbox to AI agents via MCP, enabling email read, search, send, reply, and management through natural language.
    28
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to send, receive, and reply to email through dedicated thread-aware mailboxes, with sandbox testing and compatibility across MCP clients.
    9
    488
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/chriskoturathbun/envoi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server