SKILL.md
Email (IMAP/SMTP via curl)
Send and receive email from the terminal. Just curl. Works with any provider — AgentMail, Gmail, Outlook, Fastmail, self-hosted, anything with IMAP/SMTP.
By default uses the agent's own inbox (env vars below). Can also target any arbitrary SMTP/IMAP server by swapping the credentials.
Default Credentials (agent's inbox)
These env vars are pre-configured:
USER="$KORTIX_AGENT_EMAIL_INBOX_USER_NAME"
PASS="$KORTIX_AGENT_EMAIL_INBOX_PASSWORD"
SMTP="smtps://$KORTIX_AGENT_EMAIL_INBOX_SMTP_HOST:$KORTIX_AGENT_EMAIL_INBOX_SMTP_PORT"
IMAP="imaps://$KORTIX_AGENT_EMAIL_INBOX_IMAP_HOST:$KORTIX_AGENT_EMAIL_INBOX_IMAP_PORT"
FROM="$KORTIX_AGENT_EMAIL_INBOX_FROM_NAME <$KORTIX_AGENT_EMAIL_INBOX_FROM_EMAIL>"
EMAIL="$KORTIX_AGENT_EMAIL_INBOX_FROM_EMAIL"
To use a different mailbox, just swap those values.
Never print credentials.
Send
TMPFILE=$(mktemp)
cat > "$TMPFILE" <<EOF
From: $FROM
To: recipient@example.com
Subject: Hello
Date: $(date -R)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Your message body here.
EOF
curl -sS "$SMTP" --user "$USER:$PASS" \
--mail-from "$EMAIL" \
--mail-rcpt "recipient@example.com" \
--upload-file "$TMPFILE"
rm -f "$TMPFILE"
Multiple recipients: add more --mail-rcpt flags. CC: add Cc: header in the file AND a --mail-rcpt per CC address.
List Folders
curl -sS "$IMAP/" --user "$USER:$PASS" | tr -d '\r'
Inbox Count
curl -sS "$IMAP/INBOX" --user "$USER:$PASS" -X "EXAMINE INBOX" | tr -d '\r'
* N EXISTS = total messages.
List Messages
curl -sS "$IMAP/INBOX" --user "$USER:$PASS" \
-X "FETCH 1:* (FLAGS BODY.PEEK[HEADER.FIELDS (FROM SUBJECT DATE)])" | tr -d '\r'
Read a Message
curl -sS "$IMAP/INBOX" --user "$USER:$PASS" \
-X "FETCH 3 BODY.PEEK[]" | tr -d '\r'
BODY.PEEK[] = read without marking seen. BODY[] = mark as read.
Search
curl -sS "$IMAP/INBOX" --user "$USER:$PASS" -X "SEARCH UNSEEN" | tr -d '\r'
curl -sS "$IMAP/INBOX" --user "$USER:$PASS" -X 'SEARCH FROM "bob@example.com"' | tr -d '\r'
curl -sS "$IMAP/INBOX" --user "$USER:$PASS" -X 'SEARCH SUBJECT "meeting"' | tr -d '\r'
curl -sS "$IMAP/INBOX" --user "$USER:$PASS" -X 'SEARCH SINCE 01-Jan-2026' | tr -d '\r'
curl -sS "$IMAP/INBOX" --user "$USER:$PASS" -X 'SEARCH UNSEEN FROM "bob"' | tr -d '\r'
Returns * SEARCH 1 4 7 — matching sequence numbers.
Mark Read / Unread
curl -sS "$IMAP/INBOX" --user "$USER:$PASS" -X 'STORE 3 +FLAGS (\Seen)' | tr -d '\r'
curl -sS "$IMAP/INBOX" --user "$USER:$PASS" -X 'STORE 3 -FLAGS (\Seen)' | tr -d '\r'
Delete
curl -sS "$IMAP/INBOX" --user "$USER:$PASS" -X 'STORE 3 +FLAGS (\Deleted)' | tr -d '\r'
curl -sS "$IMAP/INBOX" --user "$USER:$PASS" -X 'EXPUNGE' | tr -d '\r'
Reply
- FETCH original to get
From,Subject,Message-ID - Compose reply with
In-Reply-To:andReferences:set to originalMessage-ID - Prefix subject with
Re: - Send via SMTP as above
Rules
- Act, don't ask. Send/read when instructed.
- Never print credentials.
- Human language. Say "I sent the email" not "curl smtps://..."
- Always
tr -d '\r'on IMAP output. - Identity: when sending from the agent's own inbox, always use the configured FROM_NAME/FROM_EMAIL.
Weekly Installs
3
Repository
kortix-ai/korti…registryGitHub Stars
2
First Seen
11 days ago
Security Audits
Installed on
cline3
gemini-cli3
github-copilot3
codex3
kimi-cli3
cursor3