EVEMAIL is a full EVE Online mail client in your browser. Read, compose, label, bulk-delete, and send mail from every connected character without leaving your MelTuc dashboard. Persistent drafts, contacts, keyboard shortcuts, CSV export — and a one-click Claude Haiku rewrite pass that polishes corp comms before they ever hit the wire. Interactive only, no schedulers, no background jobs — you open it, you act, you close it.
No background jobs, no scheduler — everything happens the moment you click it. EVEMAIL proxies CCP's ESI in real time and writes an audit entry for every action.
eve_sso module with four mail scopes. EVEMAIL reads active_char_id from evemail_prefs on every request, falling back to the platform's main character.GET /characters/{id}/mail/. Sender and recipient IDs are batch-resolved to names via a single POST /universe/names/ call — no numeric IDs ever shown in the UI.PUT /characters/{id}/mail/{mid}/ if evemail_prefs.auto_mark_read is on. Compose modal auto-saves keystrokes into evemail_drafts keyed by (user_id, character_id).evemail_rewrite_log.evemail_events with user_id, character_id, kind, detail JSON, and created_at — a fully auditable trail.
A clean three-column layout: labels down the left, header list in the middle, selected body on
the right. Sender and recipient IDs are resolved to names in a single batch through the public
/universe/names/ endpoint, so you never see numeric IDs. Opening a mail auto-marks it
read when you have that preference enabled. Switch characters from the header and the whole view
re-queries against that alt's mailbox — no reloads, no duplicate tabs.
The compose modal auto-saves every keystroke into evemail_drafts, keyed by character,
so you never lose a mail to a closed tab. Recipients autocomplete against exact-name ESI lookups
(characters, corps, alliances, mailing lists). When your first pass feels rough, hit Rewrite
— the draft goes to Claude Haiku via OpenRouter, returns polished in one of five tones, and
renders side-by-side so you can accept, re-run, or discard before firing. Every call is logged to
evemail_events for a full audit trail.
EVEMAIL pulls your full contacts list via esi-characters.read_contacts.v1, resolves
every ID to a name in a single batched call, and displays them with their current standing. Use
the contacts page to find recipients fast, filter by standing, or export your book for off-site
backup. Corps, alliances, and mailing lists all resolve the same way — one unified directory.
A single settings page controls how EVEMAIL behaves for you. Set a default signature that gets
appended to every outgoing body, pick the tone Claude should default to when you hit Rewrite,
and flip auto-mark-read on or off. Everything lives in evemail_prefs, one row per user,
upserted on save. No server-side mutation happens anywhere else — this page is the whole control
surface.
Every EVE mail operation you actually do, in one place, with the rough edges smoothed over. No scheduler, no background workers — everything happens the moment you click it, logged the moment it finishes.
evemail_prefs.active_char_id so you land in the same mailbox next session. No re-auth, no reload.esi.evetech.net API through the shared eve_sso token module. Zero scraping, zero third-party mirrors — it's the same endpoint the in-game client uses.evemail_events for token accounting.evemail_prefs that gets appended to outgoing bodies, and a default tone for Claude rewrite. Change either from /evemail/settings at any time.(user_id, character_id). Close the tab, reboot, come back later — the compose body is exactly where you left it, per alt.evemail_events with user, character, action, and timestamp. Fully auditable, nothing silent./evemail/api/export.csv or export.json. Useful for diplomatic archives, corp compliance, or off-site backups./universe/ids/ for the To field. Three-character minimum. Works for characters, corps, alliances, and mailing lists in a single unified box.
EVEMAIL borrows tokens from the shared eve_sso module — connect your character once
in your MelTuc account settings and every EVE app on the platform reuses the same grant. Four scopes
cover the whole feature set; the app redirects you to re-authorise if any are missing.
POST /characters/{id}/mail/./api/contacts endpoint. Optional — the rest of the app works without it.
EVEMAIL's persistence layer is deliberately thin. Mail itself lives on CCP's servers — we never
cache bodies, we just proxy ESI calls and render results. Locally, only preferences and the audit
log are stored, both in Postgres through the shared db helper.
user_id, default_signature, ai_rewrite_tone, auto_mark_read, active_char_id, updated_at. Upserted on every settings save via ON CONFLICT.user_id, character_id, action, payload, and created_at.(user_id, character_id). Auto-saved on every keystroke, cleared on successful send. The only other local state besides prefs.eve_sso module. EVEMAIL never touches refresh tokens directly — it just asks for an access token and uses it.Every EVE mail operation you actually need — in one place, with the rough edges smoothed over.
evemail_prefs.active_char_id via POST /api/characters/switch so you land in the same mailbox next session without re-auth.POST /api/mail/rewrite, result shown side-by-side. Token usage logged to evemail_rewrite_log per call.evemail_drafts keyed by (user_id, character_id). Close the tab, come back — the subject, body, and recipients list are exactly where you left them.POST /api/mail/bulk-delete or bulk-label via POST /api/mail/bulk-label. Each operation loops individually so partial failures don't block the rest — failed IDs returned in the response.evemail_events with kind and detail JSON. Index on created_at DESC so the audit log is fast even after months of activity.esi-characters.read_contacts.v1, resolved via POST /universe/names/. Compose To field uses POST /universe/ids/ for exact-name lookup across characters, corps, alliances, and mailing lists.evemail_list_mails), list labels (evemail_list_labels), and send mail (evemail_send) on your active character. Agent calls run through the same scope checks and audit logging as the UI.One inbox for every alt, AI polish for every draft, keyboard shortcuts for every power-user reflex. All running on your MelTuc account, all sharing one EVE SSO grant, all fully audited.
Launch EVE MailRequires a MelTuc account. Create one free.