send_email
Send an outbound email via the company's Resend connection. Resolves the per-company Resend API key + from identity, then sends to a single recipient. Honors the do_not_contact suppression list (crm_leads): if the recipient is marked do_not_contact, the send is refused. RECIPIENT RULE: when emailing a CRM LEAD, do NOT type their address yourself — draft with draft_lead_email/draft_outreach and deliver with send_lead_draft, which reads the lead's real email from the database. Only pass to directly for a non-lead recipient whose exact address the operator literally provided in this conversation. NEVER guess, infer, or fabricate an email address — a wrong guess sends a real email to a stranger. Use when the operator gives you an exact non-lead recipient address to email; for CRM leads use send_lead_draft instead.
Routing: Send an outbound email to an operator-given address → use this; for CRM leads use send_lead_draft (DB-derived recipient, respects do_not_contact)
[outbound-tier — EVERY call needs a manager's approval (per-send human rail): each request queues its own approval card and sends exactly once on approve. There is no standing grant for this tool.]
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address (single recipient). | |
| from | No | Optional explicit from address (e.g. "Jane <jane@acme.com>"). If omitted, defaults to no-reply@<resolved from_domain>. | |
| html | No | HTML body of the email. Provide html and/or text (at least one is required). | |
| text | No | Plain-text body of the email. Provide text and/or html (at least one is required). | |
| lead_id | No | Optional UUID of the crm_leads row this email targets. Used for telemetry/linking; the do_not_contact check is keyed on (company_id, to) regardless. | |
| subject | Yes | Email subject line. | |
| draft_id | No | Optional UUID of the lead_drafts row being sent. If provided, the Resend email id returned by the send is recorded onto that draft (resend_email_id) so engagement webhook events (opens/clicks/replies via /resend-events) correlate back to it. | |
| reply_to | No | Optional Reply-To address. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| company_id | No | Company UUID. Optional — defaults to the caller's company context. Used to resolve the Resend key and scope the do_not_contact check. | |
| sequence_id | No | Optional UUID of the outreach_sequences row backing an autonomous warm send. Required ONLY on the outreach-autosend path (executionSource=autonomous_warm); the warm-send gate verifies the sequence is ACTIVE and the lead is enrolled, and authorizes when the sequence is live (send_mode=auto) OR the enrollment is verifiably human-made (enrollment_source=manual — the human-enrolled lane, 2026-07-22). Ignored on the human path. |