Your Claude agent can browse, code, and call APIs — but the moment a service asks for an email verification, it's stuck. This guide adds myagentinbox as an MCP server so Claude can create a disposable inbox, read incoming mail, and grab verification codes on its own.
create_inbox, check_inbox, read_message, download_attachment — wired into Claude Code, Claude Desktop, or the Claude Agent SDK. No accounts, no API keys, inboxes auto-delete after 24 hours.
1Add the MCP server. From your project directory, run:
claude mcp add myagentinbox npx mcp-remote https://myagentinbox.com/mcp
That registers the server for the current project. Use --scope user to make it available across every project on your machine:
claude mcp add --scope user myagentinbox npx mcp-remote https://myagentinbox.com/mcp
2Verify it loaded. Start Claude Code and run /mcp. You should see myagentinbox listed with four tools.
3Use it. Just ask:
> sign me up for the example.com newsletter using a throwaway email,
then read the welcome message and tell me what's in it
Claude will call create_inbox, use the returned address in the signup form, poll check_inbox, and read the message back to you.
1Open the config file.
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json2Add the server under mcpServers:
{
"mcpServers": {
"myagentinbox": {
"command": "npx",
"args": ["mcp-remote", "https://myagentinbox.com/mcp"]
}
}
}
3Restart Claude Desktop. Look for the tools icon in the chat input — myagentinbox should appear in the connected servers list.
npx? Install Node.js first. The mcp-remote shim is what lets desktop clients (which speak stdio MCP) talk to a remote HTTP MCP server.
The Claude Agent SDK lets you build long-running agents in TypeScript or Python. MCP servers are passed in via mcpServers.
import { query } from "@anthropic-ai/claude-agent-sdk";
const result = query({
prompt: "Sign up for service X with a throwaway email and report back the verification code.",
options: {
mcpServers: {
myagentinbox: {
type: "http",
url: "https://myagentinbox.com/mcp",
},
},
allowedTools: [
"mcp__myagentinbox__create_inbox",
"mcp__myagentinbox__check_inbox",
"mcp__myagentinbox__read_message",
],
},
});
for await (const msg of result) {
console.log(msg);
}
from claude_agent_sdk import query, ClaudeAgentOptions
options = ClaudeAgentOptions(
mcp_servers={
"myagentinbox": {
"type": "http",
"url": "https://myagentinbox.com/mcp",
},
},
allowed_tools=[
"mcp__myagentinbox__create_inbox",
"mcp__myagentinbox__check_inbox",
"mcp__myagentinbox__read_message",
],
)
async for message in query(
prompt="Sign up for service X and read the verification email.",
options=options,
):
print(message)
type: "http") means there's no local process to manage and no npx on the critical path — the SDK talks directly to myagentinbox.com/mcp.
@myagentinbox.com address. Expires in 24 h.Here's the typical loop your agent will run, narrated for clarity:
create_inbox → receive a7k2m9x4bp@myagentinbox.com.check_inbox. If empty, wait and retry — most providers send within 30 seconds.read_message with its id. Extract the code or magic link from the body.That's the whole setup. If something doesn't work, the landing page has a one-click "create inbox" button you can use to confirm the service is reachable from your network before debugging the MCP layer.
Questions or feedback: hello@myagentinbox.com.