agmail
by shveik.dev · remote · no sign-in to list tools · v1.0.0 · published by dev.shveik
Email inboxes for agents by the hour: wait for a mail, get the code or link. Pay per call.
9 tools: 1 can delete or cancel things, 4 change things and 4 only read.
Scanned Oct 21, 2026
- Deletes or cancels1Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things4Claude Code: ask: see these tools
- Only reads4Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http agmail https://agmail.shveik.dev/mcpFindings
Matches of fixed checks, with the text they matched.
- Warndelete_inbox
The server marks "delete_inbox" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "delete_inbox" says "delete": a word for removing or ending something.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
9 tools
Deletes or cancels 1Claude Code: deny
delete_inboxDelete an inbox and all its mail now.1 finding
Why it is in this group
- The name "delete_inbox" says "delete": a word for removing or ending something.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Warn
The server marks "delete_inbox" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "delete_inbox" says "delete": a word for removing or ending something.
Description, as the server wrote it Delete an inbox and all its mail now. There is no refund. Free; needs the inbox id and secret.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
Changes things 4Claude Code: ask
check_nameCheck whether a name is free to use as the local part of an address, before buying an inbox.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Check whether a name is free to use as the local part of an address, before buying an inbox. Free.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: true
create_inboxBuy an email address for an hour, four hours or a day: name@agmail.shveik.dev with the name you choose (or a random one).No findings
Why it is in this group
- The name "create_inbox" says "create": a word for a change.
Description, as the server wrote it Buy an email address for an hour, four hours or a day: name@agmail.shveik.dev with the name you choose (or a random one). Paid in stablecoins with x402: call it without a payment to get the quote, then again with the signed payment in _meta. The result has the inbox id and the secret (shown once, keep it); the inbox takes mail once the payment has settled.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
extend_inboxExtend an inbox you own by one, four or twenty-four hours, keeping its address and its mail.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Extend an inbox you own by one, four or twenty-four hours, keeping its address and its mail. Paid in stablecoins with x402 like create_inbox. Needs the inbox id and its secret. An inbox cannot be paid for more than 72 hours ahead.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
feedbackFree.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Free. Tell the people who run this service what worked, what failed or what you miss: a bug, an idea or a thanks. A person reads it. No payment, no account; limited to a few messages an hour.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
Only reads 4Claude Code: allow
get_otpWait for a message that carries a verification code or link and return only the code and the link.No findings
Why it is in this group
- The name "get_otp" says "get": a word for reading.
Description, as the server wrote it Wait for a message that carries a verification code or link and return only the code and the link. Free; needs the inbox id and secret.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: true
list_messagesList the messages of an inbox (sender, subject, size) after a sequence number.No findings
Why it is in this group
- The name "list_messages" says "list": a word for reading.
Description, as the server wrote it List the messages of an inbox (sender, subject, size) after a sequence number. Free; needs the inbox id and secret.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: true
read_messageRead one message of an inbox: its text, codes, links and attachment names.No findings
Why it is in this group
- The name "read_message" says "read": a word for reading.
Description, as the server wrote it Read one message of an inbox: its text, codes, links and attachment names. Free; needs the inbox id and secret.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: true
wait_for_messageWait until a message arrives in an inbox (up to 55 seconds) and return it with its text, codes and links.No findings
Why it is in this group
- The name "wait_for_message" says "wait": a word for reading.
Description, as the server wrote it Wait until a message arrives in an inbox (up to 55 seconds) and return it with its text, codes and links. Returns at once if a matching message is already there. Free; needs the inbox id and secret.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http agmail https://agmail.shveik.dev/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__agmail__wait_for_message",
"mcp__agmail__get_otp",
"mcp__agmail__list_messages",
"mcp__agmail__read_message"
],
"ask": [
"mcp__agmail__check_name",
"mcp__agmail__create_inbox",
"mcp__agmail__extend_inbox",
"mcp__agmail__feedback"
],
"deny": [
"mcp__agmail__delete_inbox"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as agmail. Review it before you use it.