--- name: ravi-email-send description: Send, compose, reply, reply-all, or forward emails with HTML formatting and attachments. Do NOT use for reading incoming email (use ravi-inbox) or for credentials (use ravi-passwords or ravi-secrets). --- # Ravi Email — Send Compose new emails, reply to existing ones, or forward them from your Ravi email address. > **Cursor:** Skills are the live surface. A Connect card is shipping and is **not live** — do not tap Connect as if it authenticates. Remote MCP is not live. Working auth is the CLI (one identity per machine): if `ravi` is missing, `curl -fsSL https://raw.githubusercontent.com/ravi-hq/ravi-skills/main/scripts/install-cli.sh | bash` then `export PATH="$HOME/.ravi/bin:$PATH"`. Then `ravi auth login` (human visits https://ravi.id/device). > **Writing quality matters.** Before drafting email content, see the **ravi-email-writing** skill for subject lines, HTML formatting, tone, and anti-spam best practices. ## Resolving Recipients by Name If you have the recipient's name but not their email address (e.g. "email Alice"), **use ravi-contacts first**: ```bash # Search contacts by name ravi contacts search "Alice" # → Returns matches with email, phone, display_name # If one match → use the email from the result # If multiple matches → confirm with the user which Alice they mean # If no matches → ask the user for the email address directly ``` ## Compose a new email ```bash ravi email compose --to "recipient@example.com" --subject "Subject" --body "
HTML content
" ``` **Arguments:** - `--to` (required): Recipient email address - `--subject` (required): Email subject line - `--body` (required): Email body (HTML supported — use tags like ``, `
Key findings:
Reply content
" # Reply to all recipients (reply-all) ravi email reply-allReply content
" ``` ## Forward an email ```bash ravi email forwardFYI — see below.
" ``` **Arguments:** - `--to` (required): Recipient email address - `--body` (required): Email body (HTML supported) ## Rate Limits Email sending is rate-limited **per inbox** (each identity's inbox has its own daily budget), by plan: - **Free:** 100 emails/day per inbox - **Paid:** 500 emails/day per inbox There is no hourly cap — the daily budget is the only send limit. On hitting a rate limit, you'll get a 429 response with a `retry_after_seconds` value. Wait that many seconds before retrying. **Best practices for agents:** - Avoid tight loops of email sends — batch work where possible - On 429: parse `retry_after_seconds` from the response body, wait, then retry - For bulk operations, add a 1-2 second delay between sends ## Important Notes - **HTML email bodies** — the `--body` argument accepts HTML. Use tags for formatting: ``, `