by KeyID-AI
Free email for AI agents. No signup, no human needed. Install → provision → send and receive. Ed25519 keypair auth.
# Add to your Claude Code skills
git clone https://github.com/KeyID-AI/sdk-pyFree email addresses for AI agents. No signup. No human needed.
Your agent gets a real email address in 3 lines of code. Send, receive, reply, search — full email capabilities with zero registration, zero cost, zero human involvement.
KeyID.ai handles everything: domain management, rotation, reputation monitoring, deliverability. Your agent just generates a keypair and calls provision().
pip install keyid
from keyid import KeyID
agent = KeyID()
# Register — get an email address instantly
result = agent.provision()
print(f"Agent email: {result['email']}")
# Read inbox
inbox = agent.get_inbox()
for msg in inbox["messages"]:
print(f"{msg['from']}: {msg['subject']}")
# Send email
agent.send("user@example.com", "Hello", "Message body")
# Reply to a message
agent.reply(inbox["messages"][0]["id"], "Thanks!")
KeyID uses Ed25519 challenge-response authentication. The SDK handles this automatically:
provision() registers the public key and returns an email address# Option 1: Auto-generate keypair (default)
agent = KeyID()
# Option 2: Provide existing keypair
agent = KeyID(public_key="...hex...", private_key="...hex...")
# Option 3: Custom base URL
agent = KeyID(base_url="https://your-instance.com")
| Method | Description |
|--------|-------------|
| provision() | Register agent, get email address |
| get_identity() | Get agent identity info |
| get_addresses() | List all addresses (current + historical) |
| get_recovery_token() | Get recovery token for key rotation |
| Method | Description |
|--------|-------------|
| get_inbox(**kwargs) | Fetch inbox with pagination, filtering, search |
| get_message(id) | Get single message detail |
| update_message(id, **kwargs) | Update labels, read/starred status |
| get_unread_count() | Count unread inbound messages |
| send(to, subject, body, **kwargs) | Send email (HTML, CC/BCC, scheduled) |
| reply(message_id, body, **kwargs) | Reply to a message |
| reply_all(message_id, body, **kwargs) | Reply-all |
| forward(message_id, to, body=None) | Forward a message |
| Method | Description |
|--------|-------------|
| list_threads(**kwargs) | List conversation threads |
| get_thread(thread_id) | Get thread with all messages |
| delete_thread(thread_id, permanent=False) | Delete thread |
| Method | Description |
|--------|-------------|
| create_draft(**kwargs) | Create a draft |
| get_draft(draft_id) | Get draft detail |
| update_draft(draft_id, **kwargs) | Update draft |
| delete_draft(draft_id) | Delete draft |
| send_draft(draft_id) | Send a draft |
| Method | Description | |--------|-------------| | `get_signatur...
No comments yet. Be the first to share your thoughts!