# Nylas CLI > Nylas CLI is a free, open-source command-line tool that provides unified access to email, calendar, and contacts across Gmail, Outlook, Exchange, Yahoo, iCloud, and IMAP providers. It includes a built-in MCP server for AI agent integration, GPG encryption, webhook management, and JSON output for scripting. Released under the MIT license, it runs on macOS, Linux, and Windows. Last updated: 2026-06-06 Contact: limitless@nylas.com | Issues: https://github.com/nylas/cli/issues Markdown access: Append `.md` to the homepage, guide index, command index, guide URLs, or command URLs to get Markdown for agent consumption. Examples: `https://cli.nylas.com/index.md`, `https://cli.nylas.com/guides.md`, `https://cli.nylas.com/docs/commands.md`, `https://cli.nylas.com/guides/ai-agent-email-mcp.md`, and `https://cli.nylas.com/docs/commands/mcp-install.md` ## Guides - [Twilio vs Nylas: Email API Comparison](https://cli.nylas.com/guides/twilio-vs-nylas): Twilio is CPaaS sending infrastructure (SMS via Messages.json, OTP via Verify, email via SendGrid at $19.95/mo for 50K sends); Nylas connects bidirectionally to users' existing inboxes and calendars over OAuth 2.0. Covers nylas email send --track-opens, nylas email search "*" --json, nylas calendar availability find, and nylas webhook create --triggers message.created, plus a 10-row comparison table and a pattern for running both. - [Aurinko vs Nylas: Email API Comparison](https://cli.nylas.com/guides/aurinko-vs-nylas): Compares Aurinko's unified mailbox API and BrightSync CRM sync against Nylas's Yahoo/IMAP coverage, 27 webhook triggers, and flat per-account pricing. Shows the 2-minute Nylas evaluation path with nylas auth login, nylas email list --json, and nylas webhook server --no-tunnel. - [EmailEngine vs Nylas: Self-Hosted vs Managed](https://cli.nylas.com/guides/emailengine-vs-nylas): Compares EmailEngine's self-hosted IMAP bridge ($995/year license, Redis dependency, single-instance scaling, your own Google/Microsoft OAuth apps and annual security assessment) with the managed Nylas API. Shows `nylas auth login`, `nylas email list/send`, and `nylas calendar events list` replacing the bridge with zero servers. - [Unified.to vs Nylas: Unified API Comparison](https://cli.nylas.com/guides/unified-to-vs-nylas): Compares Unified.to's 465-integration, 28-category pass-through unified API with the deep Nylas email, calendar, and contacts API. Covers data models, native vs virtual webhooks, and AI agent paths, with `nylas webhook triggers`, `nylas webhook create`, `nylas email list`, and `nylas calendar events list` examples. - [Truto vs Nylas: Unified API Comparison](https://cli.nylas.com/guides/truto-vs-nylas): Truto proxies 500+ integrations across 45+ SaaS categories in real time; Nylas syncs email, calendar, and contacts with webhook change events. Covers sync-model trade-offs and proof commands like `nylas email list --json`, `nylas webhook create`, and `nylas calendar events list --days 7`. - [OnSched vs Nylas: Scheduling API Comparison](https://cli.nylas.com/guides/onsched-vs-nylas): OnSched stores bookings in its own database of locations, resources, and services; Nylas reads and writes users' real Google and Outlook calendars. Compare availability models and booking flows, then prototype with nylas calendar availability find and nylas calendar events create. - [Acuity Scheduling API Alternatives](https://cli.nylas.com/guides/acuity-scheduling-api-alternative): Acuity's API manages an existing Acuity account, not booking embedded in your product. Compares Cal.com, the Calendly API, and building on a calendar API with nylas calendar availability find, nylas calendar events create, and nylas webhook create for reschedule sync. - [Kloudless Alternatives for Unified APIs](https://cli.nylas.com/guides/kloudless-alternative): Kloudless sunset its 6 unified APIs (Cloud Storage, Calendar, CRM, Email, Chat, Accounting) after Netskope acquired it in August 2021. Maps each category to a live successor (Nylas for email/calendar/contacts, Apideck or Merge for CRM, accounting, and storage) and shows the migration with nylas auth login, nylas email list --json, nylas calendar events list --days 7 --json, and nylas webhook create. - [Fireflies vs Nylas Notetaker: Meeting Bots](https://cli.nylas.com/guides/fireflies-vs-nylas-notetaker): Compares the read-focused Fireflies GraphQL transcript API with Nylas Notetaker bot infrastructure. Covers nylas notetaker create/list/media/delete, the notetaker.media webhook trigger, and per-seat vs per-session pricing. - [Email API Free Tiers Compared](https://cli.nylas.com/guides/email-api-free-tiers-compared): Side-by-side comparison of SendGrid, Mailgun, Postmark, Resend, Brevo, and Nylas free tiers — send caps, trial expiry, credit-card rules, and sandbox restrictions sourced from live pricing pages. Tests the Nylas free sandbox from the terminal with nylas init, nylas auth list, and nylas email send. - [CPaaS Providers Compared for Developers](https://cli.nylas.com/guides/cpaas-providers-compared): Defines CPaaS, then compares Twilio, Vonage, Sinch, and Bird for SMS and voice. Shows the pairing pattern where `nylas calendar availability find` books a slot, `nylas email send --track-opens` confirms from the user's own mailbox, and the CPaaS fires the SMS reminder. - [High-Volume Email APIs Compared](https://cli.nylas.com/guides/high-volume-email-api-compared): Compares SendGrid, Mailgun, and Amazon SES on throughput, dedicated IPs, and rate limits against contextual email APIs. Explains why inbox workloads (reading, threading, replying as a user) hit Gmail and Microsoft Graph per-user quotas instead, and how to prototype them with nylas email list, nylas email search "*" --json, and nylas email send. - [Email APIs with Webhook Support Compared](https://cli.nylas.com/guides/email-apis-with-webhooks-compared): Compares SendGrid, Mailgun, and Postmark delivery-event webhooks with Nylas mailbox triggers (message.created, message.opened, message.link_clicked, thread.replied). Shows `nylas webhook create --url --triggers`, local testing with `nylas webhook server --no-tunnel`, and HMAC-SHA256 signature checks with `nylas webhook verify`. - [Soft Bounce vs Hard Bounce Explained](https://cli.nylas.com/guides/soft-bounce-vs-hard-bounce): Soft bounces are transient 4xx SMTP failures retried for up to 4-5 days per RFC 5321; hard bounces are permanent 5xx failures that earn immediate suppression. Find bounce notifications with nylas email search "*" --from mailer-daemon and classify each by its RFC 3463 Status: code using nylas email read --mime. - [Send and Parse Email with One API](https://cli.nylas.com/guides/send-and-parse-email-one-api): Run both email directions on one grant: nylas email send delivers outbound and nylas email search reads replies as structured JSON, while nylas webhook create pushes message.created and thread.replied events. Replaces the SendGrid-plus-Inbound-Parse two-product stack with one OAuth connection. - [Send Email in Go: net/smtp, APIs, and CLI](https://cli.nylas.com/guides/send-email-go): Four ways to send email from Go with runnable code: the frozen net/smtp stdlib package, the maintained wneessen/go-mail library, a raw Gmail REST API call with net/http, and a CLI subprocess running `nylas email send --to --subject --body --yes --json` via os/exec. Compares maintenance status, auth method, provider coverage, and setup time across all four. - [Send Email in PHP: mail(), PHPMailer, CLI](https://cli.nylas.com/guides/send-email-php): Compares PHP's mail() function, PHPMailer over SMTP, and an exec() wrapper around `nylas email send --to --subject --body --yes --json`. Explains why mail() returns true without confirming delivery and how the CLI subprocess returns a JSON message ID with OAuth token refresh handled automatically. - [Send Email in Java: Jakarta Mail and APIs](https://cli.nylas.com/guides/send-email-java): Compare four ways to send email from Java: Jakarta Mail over SMTP, Spring Boot's spring-boot-starter-mail, the Gmail REST API Java client, and a ProcessBuilder subprocess calling nylas email send --json --yes. Runnable code for each plus a setup-time, auth, and provider comparison table. - [Send Email in Ruby: Net::SMTP, Mail Gem, CLI](https://cli.nylas.com/guides/send-email-ruby): Compares Net::SMTP from the Ruby standard library, the mail gem with ActionMailer in Rails, and shelling out to `nylas email send` via Open3.capture3 for OAuth-backed sending without app passwords. Includes runnable code for all three and a 6-dimension comparison table. - [Send Email in C#: MailKit, Graph API, CLI](https://cli.nylas.com/guides/send-email-csharp): Microsoft's docs recommend against SmtpClient for new .NET code. Compares MailKit over SMTP port 587, the Microsoft Graph SDK sendMail endpoint, and a Process.Start subprocess running `nylas email send --to --subject --body --json --yes`, plus an ASP.NET Core minimal-API endpoint that emails a 6-digit 2FA OTP. - [Send Email in Rust: lettre and Email APIs](https://cli.nylas.com/guides/send-email-rust): Three ways to send email in Rust: the lettre crate over SMTP with an app password, reqwest POSTing base64url payloads to the Gmail REST API, and std::process::Command spawning `nylas email send --to --subject --body --yes --json` for OAuth-backed sending across 6 providers. Includes runnable Rust code for each and a 6-dimension comparison table. - [Fix Garbled Email Encoding (Mojibake)](https://cli.nylas.com/guides/fix-garbled-email-encoding): Diagnose garbled email text (mojibake) from raw headers with `nylas email read --headers` and `--mime`, apply the xxd 2-byte vs 4-byte test to detect double-encoded UTF-8 (C3 A9 vs C3 83 C2 A9), and reverse it with iconv. Covers quoted-printable =C3=A9 artifacts per RFC 2045/2047 and clean UTF-8 sending with `nylas email send`. - [Mailx Alternative: Send Mail Without an MTA](https://cli.nylas.com/guides/mailx-alternative): Replace mailx/mail(1) with `nylas email send` — OAuth through your real account, no Postfix or smtp= settings. Includes a 9-row mailx-flag-to-CLI migration table (-s/--subject, -c/--cc, -b/--bcc, stdin to --body), headless `nylas auth config --api-key` setup with `nylas auth list` + NYLAS_GRANT_ID grant selection, and cron-safe sends with --yes. - [Exchange Server Calendar API Options](https://cli.nylas.com/guides/exchange-server-calendar-api): Compares EWS (which Microsoft starts blocking for Exchange Online on October 1, 2026), Microsoft Graph (cloud mailboxes only), and a unified API for Exchange calendar access, with a decision matrix by deployment type. Shows `nylas calendar events list`, `nylas calendar events create --participant`, and `nylas calendar availability check` replacing GetUserAvailability and getSchedule. - [Test Email Flows with Playwright](https://cli.nylas.com/guides/playwright-email-testing): End-to-end test signup confirmation, password reset, and OTP emails in Playwright by polling a real inbox. Wraps nylas email search "*" --json in expect.poll (3-second intervals, 60-second timeout), reads bodies with nylas email read --json, and provisions an isolated mailbox per suite with nylas agent account create. Includes a GitHub Actions setup with NYLAS_API_KEY, NYLAS_GRANT_ID, and NYLAS_DISABLE_KEYRING. - [Google Calendar API Quotas and Limits](https://cli.nylas.com/guides/google-calendar-api-quotas): Google Calendar API quota reference for projects created on or after May 1, 2026: 10,000 requests per minute per project, 600 per minute per user, and a 1,000,000-request daily billing threshold. Explains 403 rateLimitExceeded vs 429 usageLimits errors and Google's truncated exponential backoff formula, and shows quota-free calendar reads with nylas calendar events list and nylas calendar availability check. - [Calendar API Time Zone Handling Explained](https://cli.nylas.com/guides/calendar-api-timezone-handling): How calendar APIs encode time zones — Google requires IANA zone IDs while Microsoft Graph natively uses Windows names. Covers all-day events without zones, DST drift in recurring series, pinning events with nylas calendar events create --lock-timezone, and converting display zones with nylas calendar events list --timezone. - [Send Email Alerts to Microsoft Teams](https://cli.nylas.com/guides/email-to-teams-notifications): Forward matching email into a Teams channel after Microsoft retired Office 365 connectors in May 2026. Pull mail with nylas email search "*" --json, wrap each message in an Adaptive Card with jq, and POST it to a Power Automate Workflows webhook; de-duplicate with nylas email mark read or go real-time with nylas webhook create --triggers message.created. - [AI Agent Email Bounce Detection and Retry](https://cli.nylas.com/guides/ai-agent-email-bounce-retry): Deterministic bounce retry rules that live outside an AI agent's decision loop. Detect failures with nylas webhook create --triggers message.bounce_detected,message.send_failed, classify soft vs hard by the RFC 3463 class digit, schedule backoff retries with nylas email send --schedule, and suppress hard bounces permanently. - [Automate Scheduling and Email Follow-Ups](https://cli.nylas.com/guides/automate-scheduling-and-followups): Automate the schedule-then-follow-up loop in one script. nylas calendar availability find picks a shared slot, events create sends the invite, and email send --schedule queues chasers; a cron job detects non-responders with email search and caps the sequence at 2 follow-ups. - [Save Email Attachments to OneDrive](https://cli.nylas.com/guides/email-to-onedrive): Find messages with `nylas email search "*" --has-attachment --json`, list files with `nylas email attachments list`, and download them with `nylas email attachments download`. Then PUT each file to the Microsoft Graph `/me/drive` content endpoint, using a resumable upload session for files over 4 MB. - [Create Confluence Pages from Email](https://cli.nylas.com/guides/email-to-confluence-pages): Pull messages with `nylas email search "*" --json`, resolve a numeric space ID via the v2 /spaces endpoint, then POST to the Confluence Cloud REST API /wiki/api/v2/pages with jq-built XHTML storage bodies. Covers Basic auth tokens, daily cron de-duplication, and real-time intake via `nylas webhook create` on message.created. - [Index Email into Elasticsearch (CLI)](https://cli.nylas.com/guides/email-to-elasticsearch): Pull messages with nylas email search "*" --json, reshape each into a _bulk index action with jq keyed on the message ID, and POST the NDJSON to the Elasticsearch _bulk endpoint. Then run relevance-ranked match queries with highlighting. - [Load Email into SQLite from the CLI](https://cli.nylas.com/guides/email-to-sqlite): Export messages with `nylas email search "*" --json`, shape them with `jq`, and `INSERT OR REPLACE` into a SQLite table that keeps the full message in a JSON column. Query senders, dates, and any nested field offline with the `->>` operator. - [Push Email into a Coda Doc (CLI)](https://cli.nylas.com/guides/email-to-coda): Pull messages with `nylas email search "*" --json`, map each with jq, and POST to the Coda API `/docs/{docId}/tables/{tableId}/rows` endpoint with a token. Upsert on the Nylas message ID via `keyColumns` to prevent duplicate rows, and drive real-time inserts from a `nylas webhook create --triggers message.created` hook. - [Relay Inbound Email to a Webhook](https://cli.nylas.com/guides/email-to-webhook-relay): Forward inbound email to any HTTP endpoint as JSON. Pull messages with `nylas email search "*" --json` and curl each to your URL, or fire on a `message.created` trigger via `nylas webhook create`. Sign each request with an HMAC-SHA256 `X-Signature` header and verify with `nylas webhook verify`. - [Load Email into MySQL from the CLI](https://cli.nylas.com/guides/email-to-mysql): Pull messages with `nylas email search "*" --json`, shape rows with `jq -r ... | @tsv`, and load them into MySQL with `LOAD DATA LOCAL INFILE` or `INSERT ... ON DUPLICATE KEY UPDATE`. Store the raw message in a `JSON` column plus typed columns for fast filters. - [Build an Agency Swarm Email Agent](https://cli.nylas.com/guides/agency-swarm-email-agent): Define an Agency Swarm tool as a BaseTool subclass whose async run() shells out to `nylas email list --json` or `nylas email search` and returns the raw JSON. One tool covers six providers; keep sends behind `nylas email drafts create`. - [Build a Julep Email Agent](https://cli.nylas.com/guides/julep-email-agent): Expose the Nylas CLI as a client-side tool in a Julep YAML task. A Python function shells out to `nylas email list --json` and `nylas email search`, returning structured output across six providers. Keep sends behind `nylas email drafts create`. - [Build a Lyzr Email Agent](https://cli.nylas.com/guides/lyzr-email-agent): Register the Nylas CLI as a Lyzr Automata Tool that shells out to nylas email list --json and nylas email search, returning structured output. Keep sends behind nylas email drafts create so mail never goes out unreviewed. - [Build a Langflow Email Agent](https://cli.nylas.com/guides/langflow-email-agent): Wrap the Nylas CLI in a Langflow custom component that subclasses Component, declares an Output, and shells out to `nylas email list --json`, `nylas email search`, or `nylas email drafts create`. One component covers Gmail, Outlook, and four more providers with no OAuth code. - [Set Up an MCP Contacts Server](https://cli.nylas.com/guides/mcp-contacts-server-setup): Expose address-book tools to an AI client over MCP. Run `nylas mcp install` to register the server, then verify with `nylas mcp status`. The contact tools map to `nylas contacts list`, `contacts search`, and `contacts show`. - [Give an AI Agent Calendar Access](https://cli.nylas.com/guides/give-agent-calendar-access): Wrap `nylas calendar availability check/find` and `nylas calendar events list/show` as read-only agent tools, route `events create` through a human-approved draft, and lock the OAuth scope with `nylas auth scopes`. One CLI subprocess per action, JSON in and out. - [Run a Meeting Time Poll from the CLI](https://cli.nylas.com/guides/meeting-poll-cli): Run a Doodle-style poll from the terminal. Propose slots, screen each with `nylas calendar availability check`, email the shortlist via `nylas email send --track-opens`, tally replies with `nylas email search`, then book the winner with `nylas calendar events create`. - [Track Calendar Attendee Responses](https://cli.nylas.com/guides/calendar-attendee-tracking-cli): Read each attendee's RSVP from participants[].status (yes/no/maybe/noreply) with nylas calendar events show --json piped to jq, count each bucket with group_by, then email the noreply addresses via nylas email send. - [IMAP SEARCH Syntax Reference](https://cli.nylas.com/guides/imap-search-syntax-reference): Reference for RFC 9051 IMAP SEARCH keys (FROM, SUBJECT, SINCE, UNSEEN, HEADER, TEXT, BODY) and how nylas email search flags (--from, --subject, --after, --unread, --in, --json) map onto them. Covers combining keys with implicit AND and provider differences on BODY/TEXT across Gmail, Outlook, and generic IMAP. - [Validate Email Addresses from the CLI](https://cli.nylas.com/guides/email-address-validation-cli): Validate a recipient before sending with an RFC 5322 syntax regex plus a `dig MX` DNS lookup, then gate `nylas email send --yes` on both checks. Reconcile mailbox failures with `nylas email search "*" --from mailer-daemon --json` to build a suppression list. - [Microsoft Graph Batch Requests Explained](https://cli.nylas.com/guides/graph-api-batch-requests-explained): How Microsoft Graph $batch packs up to 20 requests into one POST to /v1.0/$batch, why the outer call returns 200 while items fail with per-item 429s, how dependsOn forces order, and the 4 MB cap. Shows why the Nylas CLI removes raw batching with nylas email list, nylas auth status, and nylas doctor. - [Bulk-Archive Old Emails from the CLI](https://cli.nylas.com/guides/archive-old-emails-cli): Select aged mail with `nylas email search "*" --before YYYY-MM-DD --json`, pull IDs with jq, then archive each message via a guarded loop. Uses a ledger file for idempotency and `sleep` pacing to stay under provider rate limits; verify with a follow-up `--in INBOX` search. - [Send Yourself Follow-Up Reminders](https://cli.nylas.com/guides/follow-up-reminder-email-cli): Find threads with no reply using `nylas email threads list --json` and `nylas email search "*" --from --after`, then email yourself a reminder with `nylas email send --schedule`. Includes a cron script that scans open threads daily and queues a nudge only for cold ones. - [Save Email Attachments to Google Drive](https://cli.nylas.com/guides/email-to-google-drive): Find messages with `nylas email search "*" --has-attachment --json`, list files with `nylas email attachments list`, download each with `nylas email attachments download`, then upload to the Google Drive API `/upload/drive/v3/files` endpoint as multipart/related. Tag each upload with email provenance in appProperties and run it on a cron. - [Save Email Attachments to Dropbox](https://cli.nylas.com/guides/email-to-dropbox): Find files with `nylas email search "*" --has-attachment`, enumerate parts with `nylas email attachments list`, download via `nylas email attachments download`, then POST each file to the Dropbox `/2/files/upload` endpoint with a bearer token. Covers path routing by sender and cron scheduling. - [Create GitHub Issues from Email (CLI)](https://cli.nylas.com/guides/email-to-github-issues): Pull inbound mail with `nylas email search "*" --json`, shape a title and body with jq, and POST to the GitHub REST API `/repos/{owner}/{repo}/issues` endpoint using a fine-grained token. Covers token scope, deduping with a message-ID ledger, and webhook-driven real-time intake. - [Create Asana Tasks from Email (CLI)](https://cli.nylas.com/guides/email-to-asana-tasks): Pull messages with `nylas email search "*" --json`, then POST to the Asana API `/api/1.0/tasks` endpoint with a project GID and personal access token. Covers field mapping with jq, due dates, dedupe by message ID, and webhook-driven real-time filing. - [Create monday.com Items from Email](https://cli.nylas.com/guides/email-to-monday-items): Pull messages with `nylas email search "*" --json`, resolve a board_id with a `boards` query, then POST a GraphQL `create_item` mutation to `https://api.monday.com/v2`. Covers jq variable-safe mapping, dedupe ledgers, and webhook-driven creation via the `message.created` trigger. - [Load Email into Snowflake (CLI)](https://cli.nylas.com/guides/email-to-snowflake): Export messages with `nylas email search "*" --json`, split to NDJSON with `jq -c`, stage with `PUT`, and `COPY INTO` a Snowflake `VARIANT` column via the snowsql CLI or the SQL API. Includes a `MERGE` on the message ID so daily re-runs stay idempotent. - [Export Contacts to CSV from the CLI](https://cli.nylas.com/guides/export-contacts-to-csv-cli): Pull contacts with `nylas contacts list --json` and pipe to `jq -r` with `@csv` for RFC 4180 rows. Use `// ""` and `// empty` for ragged fields, and filter with `nylas contacts search --source address_book --has-email`. - [Deduplicate Contacts from the Terminal](https://cli.nylas.com/guides/dedupe-contacts-cli): Pull every record with `nylas contacts list --json --limit 5000`, group them by lowercased email using `jq` `group_by` and `ascii_downcase` to surface duplicate clusters, score each record by filled fields to pick the keeper, and remove the extra IDs with `nylas contacts delete --force` in a loop. - [Export an Email to PDF from the CLI](https://cli.nylas.com/guides/email-to-pdf-cli): Read a message with nylas email read --json, pull the .body field with jq -r, and render the HTML to an archival PDF using wkhtmltopdf or headless Chromium --print-to-pdf. Batch-export many messages and fix broken cid: inline images with nylas email attachments download. - [Send Email from Buildkite Pipelines](https://cli.nylas.com/guides/buildkite-email-notifications): Send build failure email from a self-hosted Buildkite agent with no SMTP host or mail plugin. Store NYLAS_API_KEY and a grant ID as pipeline secrets, run nylas auth config --api-key, and call nylas email send --yes from a failure branch or pre-exit hook using BUILDKITE_BUILD_URL and --metadata. - [Send Grafana Alert Emails without SMTP](https://cli.nylas.com/guides/grafana-alert-emails-cli): Route Grafana alert emails through a webhook contact point that POSTs to a small HTTP handler running nylas email send, skipping the grafana.ini SMTP block. Covers webhook contact point provisioning, a Python handler, severity routing via notification policies, and returning 5xx on send failure so Grafana retries. - [Send Sentry Issue Alerts by Email (CLI)](https://cli.nylas.com/guides/sentry-email-alerts-cli): Point a Sentry issue alert at a webhook handler that parses the JSON payload for the issue title, level, and web_url permalink, then calls nylas email send. Route by severity with a case statement, tag sends with --track-label, and send HTML bodies with --html. - [Send Email from Google Cloud Build](https://cli.nylas.com/guides/google-cloud-build-email): Add a final build step that installs the CLI, reads NYLAS_API_KEY and the grant ID from Secret Manager via secretEnv, and runs nylas email send when a sentinel file is missing. Replaces Cloud Build's SMTP relay, Pub/Sub topic, and Cloud Run notifier with one container step. - [Microsoft Graph Delta Query Explained](https://cli.nylas.com/guides/graph-api-delta-query-explained): How Graph delta query turns full mailbox reads into incremental sync via the skipToken cursor and persisted @odata.deltaLink, how a 410 Gone forces a resync, and how `nylas email list` and `nylas webhook create` remove raw cursor handling. - [Email Bounce Codes Reference (DSN)](https://cli.nylas.com/guides/email-bounce-codes-reference): Decode bounce DSNs and RFC 3463 enhanced status codes. The class digit splits hard bounces (5.x.x, suppress) from soft bounces (4.x.x, retry); 5.1.1 is no such user, 5.2.2 is mailbox full. Find DSNs with `nylas email search "*" --from mailer-daemon@... --json` and read the Status: line with `nylas email read --mime`. - [Analyze Email Headers from the Terminal](https://cli.nylas.com/guides/analyze-email-headers-cli): Dump any message's headers with `nylas email read --headers` or the raw RFC822 source with `--mime`. Read the Received chain bottom-up to trace delivery, then check Authentication-Results for SPF, DKIM, and DMARC verdicts to spot spoofing. - [OAuth PKCE for Email, Explained](https://cli.nylas.com/guides/oauth-pkce-for-email-explained): How PKCE (RFC 7636) hardens the OAuth authorization-code flow for public email clients with a code_verifier and S256 code_challenge. Shows the four-step flow and how `nylas auth login` runs the whole exchange, verified with `nylas auth status` and `nylas auth scopes`. - [Get Alerts for VIP Sender Emails](https://cli.nylas.com/guides/vip-sender-email-alerts-cli): Alert instantly when a VIP emails you. Register a message.created webhook with nylas webhook create, match the sender from the message's from[].email against an allowlist, then notify with nylas email send. Includes a cron fallback using nylas email search "*" --from --unread --json and nylas webhook verify for signature checks. - [Auto-Organize Incoming Email by Rule](https://cli.nylas.com/guides/auto-label-incoming-email-cli): Auto label incoming email from the terminal. A `message.created` webhook fires on each new message, a script classifies it with deterministic rules, and `nylas email mark` plus folder IDs from `nylas email folders list` sort it. Covers rule priority, signature verification with `nylas webhook verify`, and local testing with `nylas webhook server`. - [Set Up an MCP Calendar Server](https://cli.nylas.com/guides/mcp-calendar-server-setup): Register the Nylas calendar MCP server with `nylas mcp install`, start the STDIO proxy with `nylas mcp serve`, and confirm it with `nylas mcp status`. The server exposes `availability`, `list_events`, `create_event`, and `update_event` tools backed by `nylas calendar availability check` and `nylas calendar events create`. - [Create Jira Issues from Email (CLI)](https://cli.nylas.com/guides/email-to-jira-issues): Pull inbound mail with nylas email search "*" --json, shape the payload with jq, and POST to the Jira REST API /rest/api/3/issue with a project key and issue type. Covers the Atlassian Document Format description field that returns 400 as a plain string. - [Turn Emails into Trello Cards (CLI)](https://cli.nylas.com/guides/email-to-trello-cards): Pull messages with `nylas email search "*" --json`, reshape each into name/desc/idList with jq, then POST to the Trello `/1/cards` API using your key and token. Includes message-ID de-duplication so a daily cron never creates duplicate cards. - [Send Email to Telegram (CLI)](https://cli.nylas.com/guides/email-to-telegram-notifications): Forward email to a Telegram chat from the terminal. Pull messages with `nylas email search "*" --json`, shape the text with `jq`, and POST to the Telegram Bot API `sendMessage` method with `curl`. Covers chat ID setup, the 4,096-character limit, cron scheduling, and webhook-driven real-time delivery. - [Create Zendesk Tickets from Email (CLI)](https://cli.nylas.com/guides/email-to-zendesk-tickets): Pull inbound support mail with nylas email search "*" --json, map subject, sender, and snippet to a Zendesk ticket object, and POST to /api/v2/tickets.json. Dedupe with external_id and trigger in real time via nylas webhook create message.created. - [File Linear Issues from Email (CLI)](https://cli.nylas.com/guides/email-to-linear-issues): Pull bug-report email as JSON with `nylas email search "*" --json`, resolve a `teamId` with a `teams` GraphQL query, then POST an `issueCreate` mutation to `https://api.linear.app/graphql`. Covers GraphQL variables, ID-based dedupe, and a `message.created` webhook trigger. - [Load Email into BigQuery (CLI)](https://cli.nylas.com/guides/email-to-bigquery): Export messages with `nylas email search "*" --json`, reshape each into a flat row with `jq -c` as NDJSON, then batch-load with `bq load --source_format=NEWLINE_DELIMITED_JSON` or stream via the `tabledata.insertAll` API for sub-minute freshness. - [Send Email to Mattermost (CLI)](https://cli.nylas.com/guides/email-to-mattermost-notifications): Post emails to a Mattermost channel from the terminal. Pull messages with `nylas email search "*" --json`, shape the payload with `jq`, and `curl` an incoming webhook. Covers scoping with `--from`/`--unread`/`--after`, deduping with `nylas email mark read`, and running on a 5-minute cron. - [Create ClickUp Tasks from Email (CLI)](https://cli.nylas.com/guides/email-to-clickup-tasks): Pull messages with `nylas email search "*" --json`, then POST each to the ClickUp API `/api/v2/list/{list_id}/task` endpoint with a personal token. Map subject and sender to task fields, set priority and due_date, and dedupe on the message ID to stay idempotent on cron. - [Send Email from CircleCI Pipelines](https://cli.nylas.com/guides/circleci-email-notifications): Send CircleCI email notifications on failed builds with Nylas CLI. Store NYLAS_API_KEY and NYLAS_GRANT_ID in a context, install the CLI in a job, set NYLAS_DISABLE_KEYRING=true, and call nylas email send --yes from a when: on_fail step. No SMTP host or orb required. - [Send Email from Azure Pipelines](https://cli.nylas.com/guides/azure-pipelines-email-notifications): Add an Azure DevOps job that installs the Nylas CLI, runs `nylas auth config --api-key` from a secret variable, and sends with `nylas email send`. Gate it with `condition: failed()` to alert only on pipeline failure — no SMTP server. - [Send Argo CD Email Notifications](https://cli.nylas.com/guides/argocd-email-notifications): Email on Argo CD sync and health changes by running `nylas email send` from a notifications-controller trigger or a sidecar. Mounts NYLAS_API_KEY from a Kubernetes Secret, uses `oncePer` to dedupe, and sends HTML alerts with `--html` — no SMTP relay. - [Email Prometheus Alerts without SMTP](https://cli.nylas.com/guides/prometheus-alertmanager-email): Point an Alertmanager webhook_config receiver at a small HTTP handler that parses the alert JSON and calls nylas email send, skipping smtp_smarthost, app passwords, and TLS config. Covers severity routing through the route tree and returning 5xx on send failure so Alertmanager retries. - [Send Incident Emails from the CLI](https://cli.nylas.com/guides/pagerduty-email-notifications): Gate incident email on severity with a shell case statement, then send with nylas email send. Stamp the PagerDuty incident ID via --metadata key1/key2, add --track-opens, and run it as a parallel record-keeping sink alongside PagerDuty with no SMTP host. - [Build a Griptape Email Agent](https://cli.nylas.com/guides/griptape-email-agent): Subclass Griptape's BaseTool and decorate methods with @activity to shell out to `nylas email list --json`, `nylas email search`, and `nylas email drafts create`. One Tool class covers six providers with no SDK; the send path stays behind a human-reviewed draft. - [Build a CAMEL-AI Email Agent](https://cli.nylas.com/guides/camel-ai-email-agent): Wrap the Nylas CLI as a CAMEL-AI FunctionTool — shell out to `nylas email list --json` and `nylas email search`, pass `FunctionTool(...)` to a `ChatAgent(tools=[...])`, and keep sends behind `nylas email drafts create` so mail never leaves unreviewed. - [Build a Marvin Email Agent](https://cli.nylas.com/guides/marvin-email-agent): Give a Marvin (Prefect) agent email by passing a plain Python function to marvin.Agent tools=[] that shells out to nylas email list --json and nylas email search. Run with marvin.run(agents=[agent]); keep sends behind nylas email drafts create so mail never goes out unreviewed. - [Give an AutoGPT Agent Email](https://cli.nylas.com/guides/autogpt-email-agent): Add an AutoGPT Block that extends `Block` and runs `nylas email list --json` or `nylas email search` as a subprocess, yielding JSON across six providers. Keep outbound mail behind a draft Block running `nylas email drafts create` so nothing sends unreviewed. - [Batch Modify Gmail Labels (API + CLI)](https://cli.nylas.com/guides/gmail-api-batch-modify-labels): Apply label changes to up to 1,000 messages with the Gmail API batchModify endpoint using addLabelIds and removeLabelIds. Covers the per-message modify fallback, 429 rate-limit backoff, and the cross-provider equivalent with nylas email mark and nylas email folders. - [IMAP IDLE Explained (RFC 2177)](https://cli.nylas.com/guides/imap-idle-explained): What IMAP IDLE is under RFC 2177, the 29-minute re-issue rule, and why it needs one persistent socket per mailbox. Shows the webhook push alternative with `nylas webhook create --triggers message.created`, `nylas webhook server`, and on-demand `nylas email read`. - [SMTP Reply Codes Explained](https://cli.nylas.com/guides/smtp-reply-codes-explained): Decode SMTP reply codes by first digit — 2xx accepted, 4xx retry, 5xx fix. Read a bounce DSN's enhanced status code (like 5.1.1), then confirm delivery from the terminal with nylas email list --folder SENT and nylas email search. - [Manage Virtual Calendars from the CLI](https://cli.nylas.com/guides/manage-virtual-calendars-cli): Create provider-independent calendars for conference rooms, equipment, and contractors with nylas calendar virtual create|list|show|delete. Each is a Nylas-hosted grant with no connected mailbox; book against it by passing its grant ID to nylas calendar events create. - [Set and Respect Calendar Working Hours](https://cli.nylas.com/guides/set-calendar-working-hours-cli): Keep bookings inside working hours with the Nylas CLI. `events create` validates each booking against the account's working hours and rejects out-of-hours times; `availability find` returns the free slots within the `--start`/`--end` window you search (bound it to your workday); `--ignore-working-hours` overrides for intentional after-hours events. - [AI Calendar Assistant from the Terminal](https://cli.nylas.com/guides/calendar-ai-assistant-cli): Build an AI calendar assistant with the Nylas CLI. Schedule in plain English with `nylas calendar schedule ai`, protect deep work with `calendar ai focus-time`, catch overlaps with `conflicts check`, and pull meeting context from threads with `analyze-thread`. - [Manage Email Signatures from the CLI](https://cli.nylas.com/guides/manage-email-signatures-cli): Store reusable HTML signatures with nylas email signatures create, list, show, update, and delete, then append one to any message by passing --signature-id to nylas email send. Signatures are scoped per grant. - [Tag and Filter Emails with Metadata](https://cli.nylas.com/guides/tag-emails-with-metadata-cli): Attach custom key-value email metadata at send time with `nylas email send --metadata key=value` (up to 50 pairs, only key1-key5 indexed). Filter later with `nylas email list --metadata key1:value`, and inspect every pair with `nylas email metadata show`. - [Send Email with Hosted Templates (CLI)](https://cli.nylas.com/guides/send-email-with-templates-cli): Render and send Nylas-hosted email templates with `nylas email send --template-id --template-data` (or `--template-data-file`). Variables fill server-side; preview the merge with `--render-only` and scope with `--template-scope app|grant`. - [Build a Haystack Email Agent](https://cli.nylas.com/guides/haystack-email-agent): Wrap the Nylas CLI as a Haystack `@component` class or a `Tool` for an `Agent`. Each call shells out to `nylas email list --json` or `nylas email search` and returns structured JSON across six providers. Keeps sends behind `nylas email drafts create` for human review. - [Build a Spring AI Email Agent](https://cli.nylas.com/guides/spring-ai-email-agent): Register the Nylas CLI as a Spring AI @Tool method in Java. A ProcessBuilder call runs `nylas email list --json` and `nylas email search`, returning structured output the model reads. Register on a ChatClient with .tools(emailTools) and keep sends behind `nylas email drafts create`. - [Build a LangChain4j Email Agent](https://cli.nylas.com/guides/langchain4j-email-agent): Expose the Nylas CLI to a LangChain4j Java agent as a @Tool-annotated method that shells out to `nylas email list --json` and `nylas email search`, registered via AiServices.builder(...).tools(...). Keep sends behind `nylas email drafts create` for human review across six providers. - [Give an AWS Bedrock Agent Email](https://cli.nylas.com/guides/bedrock-agents-email): Back a Bedrock action group with a Lambda that shells out to `nylas email list --json` and `nylas email search`. Bedrock sends the function name and parameters as a JSON event; the Lambda returns a JSON body. Keep the send path a `nylas email drafts create` guardrail. - [Azure AI Agent Service: Email Tools](https://cli.nylas.com/guides/azure-ai-agent-service-email): Register the Nylas CLI as an Azure AI Agent Service function tool. The agent emits a function_call, your dispatcher runs `nylas email list --json` or `nylas email search`, and you return the JSON as a function_call_output. Keep sends behind `nylas email drafts create` — no Microsoft Entra app registration or Graph permissions. - [Build a watsonx Email Agent](https://cli.nylas.com/guides/watsonx-email-agent): Give an IBM watsonx.ai agent email by wrapping the Nylas CLI as a Python tool. Bind list_inbox and search_inbox to ChatWatsonx with bind_tools(), dispatch tool_calls to run nylas email list --json and nylas email search, and keep sends behind nylas email drafts create across six providers. - [Build a DSPy Email Agent](https://cli.nylas.com/guides/dspy-email-agent): Wrap the Nylas CLI as a dspy.Tool and pass it to a dspy.ReAct module. Each tool shells out to nylas email list --json or nylas email search and returns JSON across six providers, with sends kept behind nylas email drafts create for human review. - [Build a CopilotKit Email Agent](https://cli.nylas.com/guides/copilotkit-email-agent): Expose the Nylas CLI to a CopilotKit copilot through useCopilotAction hooks. Each handler runs nylas email list, nylas email search, or nylas email drafts create in one server-side execFile subprocess that returns JSON, reaching six providers with no per-provider SDK. - [Build an Inngest AgentKit Email Agent](https://cli.nylas.com/guides/inngest-email-agent): Define an AgentKit createTool whose handler calls step.run() to shell out to nylas email list, search, and drafts create. Pass the tools to createAgent, run with agent.run(), and let Inngest retry each subprocess step. - [Automate Sales Follow-Up Emails (CLI)](https://cli.nylas.com/guides/sales-followup-email-cli): Build a sales follow-up cadence with the Nylas CLI. Send each tracked touch with `nylas email send --track-opens --track-links`, queue the next touch with `--schedule`, poll replies via `nylas email search`, and stop the sequence in real time by subscribing to the `thread.replied` webhook with `nylas webhook create`. - [Automate Customer Onboarding Emails](https://cli.nylas.com/guides/customer-onboarding-emails-cli): Trigger a multi-day welcome sequence from a signup hook with nylas email send --schedule and hosted templates (--template-id, --template-data). Queue day-0, day-2, and day-5 messages in one call, tag them with --metadata key1, and cancel churned users with nylas email scheduled cancel. - [Send Payment Reminder Emails from CLI](https://cli.nylas.com/guides/payment-reminder-emails-cli): Schedule dunning emails with nylas email send --schedule, gated on a live invoice status check in a bash script. Cancel queued reminders with nylas email scheduled cancel when payment arrives — no billing-platform email add-on. - [Email Yourself a Daily Calendar Agenda](https://cli.nylas.com/guides/daily-agenda-email-cli): Pull today's events with `nylas calendar events list --days 1 --json`, format them with jq's strftime and sort_by, and send the summary via `nylas email send --yes`. Drop the script on a cron to deliver a morning agenda to yourself or a team. - [Track Event RSVPs from the Terminal](https://cli.nylas.com/guides/event-rsvp-tracking-cli): Create an event and invite guests with `nylas calendar events create --participant`, read each guest's RSVP status from `events show --json`, count responses with jq, and email everyone still on `noreply` via `nylas email send --track-opens`. - [Gmail API Eventual Consistency Explained](https://cli.nylas.com/guides/gmail-api-eventual-consistency): The Gmail API is eventually consistent — a write (send, label, delete) may not be visible in the next read. Don't build read-after-write logic assuming instant propagation; retry reads with backoff (most converge in 2–5s). A 404 on history.list means your stored historyId is older than Gmail's ~1-week window — stop incremental sync and full-resync from current state with `nylas email list`. Confirm deletes by targeting the ID with `nylas email read`, not re-listing. The CLI gives one read model across 6 providers so you write the backoff once. - [Are Gmail Attachment IDs Stable?](https://cli.nylas.com/guides/gmail-attachment-id-stability): A Gmail attachmentId is scoped to a single message and is NOT globally unique — the same file forwarded twice gets two different IDs. attachments.get requires both messageId and id. Never cache attachmentId as a long-term key; store messageId + filename + a SHA-256 you compute for real dedup. List fresh with `nylas email attachments list --json`, then `nylas email attachments download `. Gmail caps send attachments at 25 MB. The CLI normalizes the attachment model across all 6 providers. - [Microsoft Graph Mailbox Agent Best Practices](https://cli.nylas.com/guides/microsoft-graph-mailbox-agent-best-practices): Give an AI agent the narrowest Graph scope (Mail.Read for triage; add Mail.Send only to reply). Graph throttles Outlook at 10,000 requests / 10 min / app / mailbox with max 4 concurrent — obey the 429 Retry-After exactly. Subscribe to change notifications instead of polling (message subscriptions expire under 3 days / 4,230 min — renew). A read-and-send mailbox agent hits the lethal trifecta (private data + untrusted content + external comms); containment lives outside the agent's decision loop. The CLI removes the Azure app registration; check grants with `nylas auth scopes`. - [Send OTP and 2FA Codes by Email](https://cli.nylas.com/guides/send-otp-email-cli): Email a one-time code with `nylas email send --to --subject --body --yes` — no SMTP host. Generate it from an OS CSPRNG, not $RANDOM: `CODE=$(python3 -c "import secrets;print(f'{secrets.randbelow(1000000):06d}')")` (6 digits, RFC 4226). Test the round trip by sending then reading back with `nylas otp get --raw`. Honest limit: NIST SP 800-63B does not recognize email as an approved out-of-band channel — use it for low-risk verification and testing, with short expiry, attempt limits, and per-recipient rate limiting. - [Track Email Opens, Clicks, and Replies](https://cli.nylas.com/guides/track-email-opens-replies-cli): Send with `nylas email send --track-opens --track-links --track-label`, then `nylas webhook create --triggers message.opened,message.link_clicked,thread.replied` to receive events. Verify every payload with `nylas webhook verify --payload-file --signature --secret` (HMAC-SHA256). Open rates overcount: Apple Mail Privacy Protection pre-fetches the pixel since 2021. Replies (thread.replied) are the reliable signal — they can't be faked by a pre-fetch. Test locally with `nylas webhook server --port 9000`. - [Calendar Availability API for a Booking Page](https://cli.nylas.com/guides/calendar-availability-booking-page): Generate open slots with `nylas calendar availability find --participants --duration --interval --json` (defaults: 30-min duration, 15-min interval, 7-day window), serve the JSON to your frontend, and book with `nylas calendar events create`. Prevent double-booking by re-checking the exact window at booking time (availability find returns 0 slots if taken) — calendars are eventually consistent. Lock the event timezone with `--lock-timezone`. CLI for prototypes and low volume; graduate the hot path to the Nylas Scheduler/Calendar API. - [Automate Interview Scheduling from the CLI](https://cli.nylas.com/guides/automate-interview-scheduling-cli): Pass the candidate plus every interviewer to `nylas calendar availability find --participants` to get the slots they all share, book with `nylas calendar events create --participant` (repeat per attendee, sends invites), send a confirmation now and a reminder with `nylas email send --schedule "1d"`. Reschedule by updating the event (`nylas calendar events update --start --end`) so the invite thread is preserved. Full bash loop included; exits cleanly when a tight panel has zero overlap that week. - [Schedule Healthcare Appointments from the CLI](https://cli.nylas.com/guides/healthcare-appointment-scheduling-cli): Offer slots with `availability find`, book with `events create` (patient as participant), and queue 24-hour and 2-hour reminders with `nylas email send --schedule`. Keep PHI out: send only date/time/location and a neutral subject — never a diagnosis, procedure, or reason for visit in any subject, body, calendar title, or log. The minimum necessary standard is 45 CFR 164.502(b); a covered entity needs a signed BAA with any vendor handling PHI. A daily cron over `nylas calendar events list` sends each attendee a neutral reminder. - [Sync Contacts Across Gmail and Outlook](https://cli.nylas.com/guides/sync-contacts-gmail-outlook): Contact access in Nylas v3 is passthrough with provider-native IDs — no stored sync, always current. List each account with `nylas auth switch` + `nylas contacts list --json`, then dedupe on lowercased email with jq (IDs differ across providers, so key on email). Change notifications differ: Microsoft is real-time via Graph; Google contact changes are polled ~every 5 minutes (API limit) — build for the slower path. `nylas webhook create --triggers contact.created,contact.updated`. Cache locally; don't store Nylas sync state. - [Add Email Sync to Your App Without IMAP](https://cli.nylas.com/guides/add-email-sync-without-imap): Don't run an IMAP IDLE socket per mailbox (RFC 2177 requires re-issuing IDLE every ~29 min — 10k users = 10k long-lived sockets, OAuth refresh, reconnect storms). Replace it with push-plus-pull: a `message.created` webhook notifies you, and you fetch on demand with `nylas email read --json`. Backfill with `nylas email search "*" --after --json`. Prototype the whole pattern with `nylas webhook create` + `nylas webhook server`. IMAP is still right only for mailboxes with no modern API (legacy/self-hosted). - [Gmail API Error Codes and How to Fix Them](https://cli.nylas.com/guides/gmail-api-error-codes): Reference for the Gmail API errors devs hit most. 401 = access token expired (refresh); 403 = usually rate-limit/quota, NOT permissions (check the reason field: rateLimitExceeded vs insufficientPermissions); 412 = stale historyId (full resync); 429 = throttled (honor Retry-After + backoff); 5xx = transient (jittered backoff). Default quota 1B units/day, 250 units/user/sec. The Nylas CLI auto-refreshes tokens and manages sync, so the 401/412 classes disappear; diagnose with `nylas auth status` / `nylas doctor`. - [Microsoft Graph Error Codes and Fixes](https://cli.nylas.com/guides/graph-api-error-codes): Reference for Microsoft Graph mail/calendar errors (status + error.code in the body). 401 InvalidAuthenticationToken (refresh); 403 = missing consent / conditional access, not throttling; 404 = missing resource or hidden permission; 429 = throttling with a mandatory Retry-After (obey it exactly); 503 = transient. Graph throttles per app and per mailbox. The Nylas CLI auto-refreshes tokens and skips the Azure app registration behind much 403 consent pain; diagnose with `nylas auth status` / `nylas doctor`. - [Fix 'OAuth Token Expired' (401) for Email](https://cli.nylas.com/guides/fix-oauth-token-expired): A 401 "token expired" means the short-lived access token aged out (~3,600s) — fix by refreshing the refresh token (RFC 6749 §5), no user needed. Distinguish from invalid_grant on the refresh call, which means the refresh token itself is dead (revoked/password-changed/disuse) and needs fresh consent — opposite fix. The Nylas CLI auto-refreshes access tokens so this 401 never fires on long jobs; `nylas auth status` tells you which problem you have. - [Fix 429 Rate-Limit Errors on Email APIs](https://cli.nylas.com/guides/email-api-429-rate-limit-fix): A 429 Too Many Requests (RFC 6585) means throttled. If Retry-After is present, sleep exactly that long; else exponential backoff with random jitter (avoid the thundering herd). Never retry immediately — it extends the window. Then cut volume: batch reads, $select fewer fields, delta sync. Gmail = 250 units/user/sec; Graph throttles per app+mailbox. The Nylas CLI gives one rate-limit model across providers; pace bulk loops with a small sleep. - [Debug Email Delivery from the Terminal](https://cli.nylas.com/guides/debug-email-delivery-cli): Debug "sent but didn't arrive" in order: (1) confirm it sent with `nylas email list --folder Sent --json`; (2) check for a bounce (`search from:mailer-daemon`), reading the SMTP code (5xx permanent, 4xx transient); (3) if sent and no bounce, it's spam filtering — verify SPF, DKIM, DMARC (RFC 7489). Google/Yahoo require all three for bulk senders since Feb 2024. Each step rules out a layer so you stop guessing. - [Mark Emails Read, Unread, or Starred (CLI)](https://cli.nylas.com/guides/mark-emails-read-unread-cli): Set state per message with `nylas email mark read|unread|starred ` (or the alias `nylas email mark-read --id`). Read maps to the IMAP \\Seen flag (RFC 9051) / Gmail / Graph equivalent; starred to Gmail's star or the Outlook/Exchange flag. Bulk: pipe `nylas email list --unread --json` through `jq -r '.[].id'` and loop. Mark a whole conversation with `nylas email threads mark --read`. Works across 5 providers. - [Draft Email with Smart Compose (CLI)](https://cli.nylas.com/guides/smart-compose-email-cli): Generate a draft from a prompt with `nylas email smart-compose --prompt "..."`, or a context-aware reply by adding `--message-id MSG_ID` (it reads the original). Output is draft text, not a sent message — keep prompts specific. Review before sending: save with `nylas email drafts create`, edit, and send yourself. The draft-and-approve pattern is the core guardrail, especially inside an agent that reads untrusted content (a reply could carry a prompt injection). - [Log Email to Google Sheets from the Terminal](https://cli.nylas.com/guides/email-to-google-sheets): Pipe email into a Google Sheet in three steps: pull with `nylas email search "*" --json`, map each message to a row array with jq (null-safe via // ""), and append with the Sheets API values.append endpoint (valueInputOption=RAW). The CLI handles the inbox across 6 providers; jq the shape; the Sheets API the write. Run on a schedule with no add-on and no per-row automation fee. - [Send Email to a Notion Database (CLI)](https://cli.nylas.com/guides/email-to-notion): Turn email into Notion pages: pull with `nylas email search "*" --json` and POST to the Notion API /v1/pages with a database_id and a properties object (subject → title array, sender → email property). Create an internal integration for the token and share the database with it (share-based perms, else 404). Build the properties with jq; match property names exactly. De-dupe on message ID or scope to newer_than:1d; or trigger from a webhook for real time. - [Send Email to Airtable from the Terminal](https://cli.nylas.com/guides/email-to-airtable): Create Airtable records from email: pull with `nylas email search "*" --json`, map each to a {fields: {...}} object with jq, and POST to the Airtable Web API records endpoint (up to 10 records per request — batch with jq _nwise(10)). Needs a personal access token and base/table IDs; field names must match columns exactly. Avoid duplicates by storing the message ID or scoping to newer_than:1d. No Zapier, no per-record fee. - [Load Email into Postgres from the Terminal](https://cli.nylas.com/guides/email-to-postgres): Load email into PostgreSQL with a hybrid schema — a JSONB column for the raw message plus typed columns (sender, subject, received) for fast filters, message ID as PRIMARY KEY. Pull with `nylas email search "*" --json`, stage as JSONB via COPY, and INSERT ... ON CONFLICT (id) DO UPDATE so re-runs upsert idempotently. GIN index on raw, btree on received. Then query: top senders, date ranges, joins — what a mailbox can't do. - [Sync Email to Amazon S3 from the Terminal](https://cli.nylas.com/guides/sync-email-to-s3): Archive email to S3: export with `nylas email search "*" --json`, write one JSON object per message, and `aws s3 cp` into a date-partitioned prefix (email/YYYY/MM/DD/.json). Store attachments beside the JSON via `nylas email attachments list --json` then `attachments download `. Run incrementally with newer_than; grant an IAM role scoped to s3:PutObject (least privilege). S3 standard ~$0.023/GB-month; enable encryption + Object Lock for tamper-evident archives. - [Export Email to CSV from the Terminal](https://cli.nylas.com/guides/email-to-csv-export): Export email to a clean CSV: pull with `nylas email list --json` and pipe to `jq -r` with the @csv operator, which implements RFC 4180 quoting so commas/quotes/newlines inside a subject don't break the file. Echo a header row first; keep the header and the jq array in lockstep; use // "" fallbacks for equal column counts. Convert epoch dates with gmtime|strftime for Excel; prepend a UTF-8 BOM if subjects garble. - [Send Email to Discord with a Webhook (CLI)](https://cli.nylas.com/guides/email-to-discord-notifications): Post email to a Discord channel via an incoming webhook (one URL, no bot to host): pull with `nylas email search "*" --json` and curl each message to the webhook as plain content or a rich embed (title=subject, description=snippet, fields=from), built with jq for correct escaping. Up to 10 embeds per message. Scope the search tightly (e.g. subject:incident newer_than:1h) to avoid noise; trigger from a real-time webhook for instant alerts. The webhook URL is a secret. - [Send Email from GitLab CI Pipelines](https://cli.nylas.com/guides/gitlab-ci-email-notifications): Add a GitLab CI job that installs the CLI (`curl -fsSL https://cli.nylas.com/install.sh | bash`), authenticates with `nylas auth config --api-key "$NYLAS_API_KEY"` from a masked/protected CI/CD variable, and sends with `nylas email send --yes`. Gate on `when: on_failure` or `rules` so it fires only when the pipeline breaks; enrich with $CI_PIPELINE_URL, $CI_COMMIT_SHA. No SMTP host, no mail daemon — survives provider auth changes. - [Send Email from Jenkins Pipelines](https://cli.nylas.com/guides/jenkins-email-notifications): In a declarative Jenkinsfile, add a `post { failure { ... } }` block that runs `nylas email send` over API — no Email Extension plugin, no global SMTP. Bind the API key from a Jenkins credential via `credentials('nylas-api-key')` (masked) and `nylas auth config --api-key`. Use post conditions failure/fixed/unstable; put $JOB_NAME, $BUILD_NUMBER, $BUILD_URL in the message. - [Send Email from a Kubernetes CronJob](https://cli.nylas.com/guides/kubernetes-cronjob-email): Run a CronJob whose container has the CLI baked into a slim image, pull the API key from a Secret via secretKeyRef, and run `nylas auth config --api-key` then `nylas email send --yes` on schedule. Harden the pod: runAsNonRoot, readOnlyRootFilesystem, drop ALL capabilities, resource requests/limits, restartPolicy Never, bounded backoffLimit. No SMTP sidecar, no password in the manifest. Full manifest included. - [Send Email Alerts from Terraform](https://cli.nylas.com/guides/terraform-email-alerts): Notify on `terraform apply` with a null_resource + local-exec provisioner running `nylas email send`. Read the API key from $NYLAS_API_KEY (export from Vault/CI) — never a tfvars file or variable, which can land in plaintext state. Use a triggers map so it fires only when named resources change. A lightweight apply-time notifier; use a monitoring stack for runtime alerting/escalation. - [Send Email from a Bash Script](https://cli.nylas.com/guides/send-email-from-bash-script): Send from a shell script with `nylas email send --to --subject --body --yes` (the --yes flag skips the prompt for unattended runs). Authenticate once with `nylas auth login` or `nylas auth config --api-key` on a server. Gate sends on exit codes for conditional alerts (backup failed, disk >85%); add a bounded retry loop and `set -euo pipefail`. Replaces mailx + a local MTA, which broke after Google killed app passwords (Sept 2024) and Microsoft retired Basic Auth (Oct 2022). - [OAuth Scopes for Email, Explained](https://cli.nylas.com/guides/oauth-scopes-for-email-explained): A scope is a named permission a user grants at consent. Request least privilege: read-only for triage (gmail.readonly / Mail.Read), send for replies (gmail.send / Mail.Send), modify for labels (gmail.modify / Mail.ReadWrite). Google restricted scopes trigger a security assessment. Nylas requests the right scopes during `nylas auth login`; check the active grant with `nylas auth whoami` / `auth status`. Adding a capability requires fresh consent. - [OAuth Refresh Token Management for Email](https://cli.nylas.com/guides/refresh-token-management): Access tokens are short-lived (~3,600s); a refresh token exchanges for new ones without user interaction (RFC 6749 §6). Unmanaged integrations 401 an hour after they start. Refresh tokens break on revocation, password change, long inactivity, or admin removal — then the next refresh returns invalid_grant and only fresh consent fixes it. Nylas stores and refreshes tokens behind the grant, so `nylas email` commands work for months; check with `nylas auth status`. - [Google Domain-Wide Delegation, Explained](https://cli.nylas.com/guides/google-domain-wide-delegation): Domain-wide delegation authorizes a Google service account to impersonate any Workspace user with no per-user consent — powerful for backend jobs, but one key can read every inbox. Use it only when no user is present (compliance archiver, pre-login provisioning). Prefer per-user OAuth (the Nylas model) when users connect their own accounts: each grant is scoped to one mailbox, revocable, across 6 providers, with no admin-level key to guard. - [Service Account vs OAuth for Email Access](https://cli.nylas.com/guides/service-account-vs-oauth-email): A service account is the app's own identity (a key, no user) — Microsoft calls it application permissions; user OAuth acts on a consenting person's behalf (delegated permissions). Service accounts fit no-user-present backend jobs; user OAuth fits products where each user connects their inbox. Most apps want user OAuth (the Nylas model): one consent per user, one revocable grant, no app-wide key. Headless: `nylas auth config --api-key`. - [Fix the OAuth invalid_grant Error (Email)](https://cli.nylas.com/guides/fix-invalid-grant-error): invalid_grant (RFC 6749 §5.2) means the refresh token can't be exchanged — causes: user revoked access, password changed, token expired from disuse, auth code reused, or server clock skew. Only clock skew is fixable without the user (sync NTP); the rest need fresh consent. Retrying never helps. Diagnose with `nylas auth status` / `nylas doctor --json`; recover by reconnecting with `nylas auth login`. - [Cancel a Calendar Event from the Terminal](https://cli.nylas.com/guides/cancel-calendar-event-cli): Cancel a calendar event in one command: find the ID with `nylas calendar events list --json`, then `nylas calendar events delete --id EVENT_ID --yes`. Deleting an event with attendees sends an iCalendar cancellation (RFC 5546 METHOD:CANCEL) through the provider — no manual email. Works across Google, Outlook, Exchange, iCloud, Yahoo. Script bulk cancels with a jq filter; deleting a recurring master cancels the whole series. - [RSVP to Calendar Invites from the Terminal](https://cli.nylas.com/guides/rsvp-to-calendar-invites-cli): Respond to an invite with `nylas calendar events rsvp EVENT_ID yes|no|maybe` (statuses map to RFC 5545 ACCEPTED/DECLINED/TENTATIVE); add `--comment` to send a note. The provider relays your status to the organizer. Find invites with `nylas calendar events list --json`; verify with `events show --json` checking your participant status. Works across Google, Outlook, Exchange, iCloud, Yahoo. - [Find a Meeting Time from the Terminal](https://cli.nylas.com/guides/find-meeting-time-cli): Find open slots for all attendees with `nylas calendar find-time --participants a@x,b@x --duration 30m --days 7 --json`, or raw free/busy with `nylas calendar availability check --participants ... --start ... --end ... --json` (and `availability find --duration`). Reads across 5 providers with no per-provider setup; book the slot with `nylas calendar events create`. JSON feeds a scheduler or agent directly. - [Reschedule a Meeting from the Terminal](https://cli.nylas.com/guides/reschedule-meeting-cli): Move an event with `nylas calendar events update --id EVENT_ID --start NEW_START --end NEW_END` — updating in place keeps attendees, title, and conferencing link and sends the updated invite via the provider. Find a conflict-free slot first with `nylas calendar find-time`. Keep the same event ID so RSVPs survive (don't delete + recreate). Works across Google, Outlook, Exchange, iCloud, Yahoo. - [Generate an ICS File from the Terminal](https://cli.nylas.com/guides/generate-ics-file-cli): Read an event with `nylas calendar events show --id EVENT_ID --json` and wrap its fields in a BEGIN:VCALENDAR / VEVENT block — .ics is plain text from RFC 5545 (UID, DTSTART, DTEND, SUMMARY, DTSTAMP; times as YYYYMMDDTHHMMSSZ). Keep UID stable per event so imports update not duplicate. Skip the file if you only need to invite people — `nylas calendar events create --participants` already sends an iCalendar invite. - [Add Video Conferencing to Calendar Events](https://cli.nylas.com/guides/add-conferencing-to-events-cli): Add a video link by passing `--meeting-link` to `nylas calendar events create` — the provider generates a Google Meet / Microsoft online meeting link, attaches it, and includes it in the invite. Read it back from `conferencing.details.url` via `nylas calendar events show --json`. One flag normalizes Google conferenceData and Graph onlineMeeting. Capture the URL for confirmations; treat it like a credential. - [Round-Robin Scheduling from the Terminal](https://cli.nylas.com/guides/round-robin-scheduling-cli): Build round-robin meeting distribution on the CLI: keep a rotation, find the next free member with `nylas calendar availability check --participants rep@x --start ... --end ... --json`, book on their calendar with `nylas calendar events create --meeting-link`, and advance the pointer. The fairness rule (strict rotation, least-loaded via `events list --json` counts, or first-available) is your code — a per-seat-free Calendly-style alternative across 5 providers. - [OpenAI Assistants Email Tools (CLI)](https://cli.nylas.com/guides/openai-assistants-email-tools): Give an OpenAI assistant email with function calling — declare tool schemas (list_unread, search_email, draft), and when the model returns tool_calls, a thin dispatcher maps each name to a Nylas CLI command (`nylas email list --json`) and returns JSON. One dispatcher covers all 6 providers, no SDK, no OAuth code. Loop until the model answers. Expose a draft tool (`nylas email drafts create`), not a send tool, to keep sends behind a human. - [Semantic Kernel Email Agent (CLI Plugin)](https://cli.nylas.com/guides/semantic-kernel-email-agent): Give a Semantic Kernel agent email by wrapping the Nylas CLI in a native plugin — decorate functions with @kernel_function so they run `nylas email list --json` / `email search` and return JSON, add the plugin to the kernel, and enable FunctionChoiceBehavior.Auto. One plugin covers all 6 providers with no Microsoft Graph/Azure setup. Microsoft's May 2026 Semantic Kernel finding shows why sends stay behind a human via `nylas email drafts create`. - [Anthropic Tool Use for Email (CLI)](https://cli.nylas.com/guides/anthropic-tool-use-email): Give Claude email with Anthropic tool use — declare tools with input_schema, and when a response has stop_reason "tool_use", run the matching Nylas CLI command and reply with a tool_result, looping until end_turn. Use a current model like claude-sonnet-4-6. The CLI returns JSON across all 6 providers, no SDK. A lighter alternative to MCP for a few actions. Expose a draft tool (`nylas email drafts create`), not a send tool. - [RAG Over Email: Index & Query the Inbox](https://cli.nylas.com/guides/rag-over-email): Build retrieval-augmented generation over a mailbox in four steps — pull scoped messages with `nylas email search "*" --json` (and full bodies with `email read`), chunk and embed the bodies (store message_id metadata for citations), store vectors in any DB (Chroma/FAISS/pgvector), and at query time retrieve 4-6 chunks to ground the answer. The CLI is the provider-agnostic ingest source across 6 providers. Treat retrieved email as untrusted content, not instructions. - [How to Evaluate an Email AI Agent](https://cli.nylas.com/guides/evaluate-email-agents): Evaluate an email agent offline — export 200-500 real messages with `nylas email list --json`, label the correct action per message, run the agent, and score classification (precision/recall per label, confusion matrix) plus action accuracy, latency, and cost. Run a separate prompt-injection guardrail suite (zero unauthorized actions allowed). Re-run on every prompt/model change. Maps failures to the lethal trifecta; reliable defense is connector-level containment. - [Build a LangGraph Email Agent (CLI Tool)](https://cli.nylas.com/guides/langgraph-email-agent): Give a LangGraph agent email by wrapping the Nylas CLI as a tool — a Python function decorated with @tool that shells out to `nylas email list --json` / `email search` and returns JSON into graph state. Bind tools with ToolNode + tools_condition; one tool reaches all 6 providers, no SDK, no OAuth code (tokens refresh automatically). Keep sends behind a human via `nylas email drafts create` and a checkpoint interrupt. - [Build a LlamaIndex Email Agent (CLI Tool)](https://cli.nylas.com/guides/llamaindex-email-agent): Give a LlamaIndex FunctionAgent email by wrapping the Nylas CLI in a FunctionTool — a typed Python function that runs `nylas email list --json` / `email search` and returns JSON. One tool reaches all 6 providers, no SDK, no OAuth code. Pairs with LlamaIndex RAG: pull mail with `email search "*" --json`, index it, answer over it. Keep sends behind a draft-and-review step via `nylas email drafts create`. - [Build a Pydantic AI Email Agent (CLI Tool)](https://cli.nylas.com/guides/pydantic-ai-email-agent): Give a Pydantic AI agent email by wrapping the Nylas CLI with @agent.tool — typed parameters validated before the subprocess runs, returning JSON you can parse into a Pydantic model. Set output_type to a model for a validated triage verdict (message_id, priority, reason). One tool reaches all 6 providers, no SDK. Keep sends behind a human via `nylas email drafts create`. - [Pipedream vs Nylas for Email Automation](https://cli.nylas.com/guides/pipedream-vs-nylas): Pipedream is a hosted workflow platform connecting 3,000+ apps with event-driven workflows and code steps, trusted by over 1 million developers. Nylas is a native email and calendar API with a CLI you run in cron, CI, or agents without a hosted runtime. Pick Pipedream for internal SaaS glue; pick Nylas when email is a feature you ship to customers. The two often run side by side: Pipedream orchestrates internal events, Nylas handles per-user mailboxes. - [Make.com vs Nylas: Email & Calendar](https://cli.nylas.com/guides/make-vs-nylas): Make.com is a visual no-code automation platform with 3,511 app connectors, billed per credit (free to 1,000 credits/month), rated 4.7/5 on G2 — built for non-developers gluing existing SaaS tools together. Nylas is a developer email and calendar API with real-time webhooks (sub-1-second delivery), two-way sync, and an MIT-licensed CLI for scripts and CI. Polling latency of 15 minutes on Make's free tier vs sub-second webhooks is the operational fork. Non-developer team building internal workflows → Make; developer shipping email/calendar features into a product → Nylas. - [Zapier Email vs Nylas: When to Use Each](https://cli.nylas.com/guides/zapier-email-vs-nylas): Zapier is no-code automation linking 7,000+ apps by trigger and action, billed per task, ideal for internal workflows you assemble without code (polling can add minutes of latency; a Zap can't be embedded in software you ship). Nylas is a developer API for building email/calendar features into a product you sell, with real-time webhooks and one schema across 6 providers. Internal glue → Zapier; an email feature inside your own app at scale → Nylas. - [Front vs Nylas: When to Use Each](https://cli.nylas.com/guides/front-vs-nylas): Front is a shared-inbox SaaS product your team logs into, billed per seat — its platform API extends Front (conversations, channels, tags), not arbitrary user mailboxes. Nylas is the email/calendar API you build your own multi-tenant inbox features on, where each customer connects their own mailbox across 6 providers. Buy a team inbox → Front; build inbox/scheduling into a product you ship → Nylas. - [Nango vs Nylas: Build vs Buy Email](https://cli.nylas.com/guides/nango-vs-nylas): Nango is open-source managed OAuth + a sync engine for 400+ APIs — it removes auth plumbing but hands you raw provider responses to model yourself. Nylas ships the normalization done: one schema for email, calendar, and contacts across 6 providers. Build a wide integrations layer → Nango; ship a finished email/calendar feature now → Nylas. The hard part of email isn't OAuth, it's the modeling. - [SparkPost vs Nylas: When to Use Each](https://cli.nylas.com/guides/sparkpost-vs-nylas): SparkPost (acquired by MessageBird/Bird in 2021) is a high-volume sender built for deliverability analytics, suppression, and engagement events from your domain. Nylas reads and sends from a user's own inbox across 6 providers over OAuth. SparkPost can't read a reply; Nylas isn't a bulk sender. Mass mail from your domain → SparkPost; working inside a user's inbox → Nylas. - [Knock vs Nylas: Notifications vs Email API](https://cli.nylas.com/guides/knock-vs-nylas): Knock is notifications-as-a-service — a workflow engine that routes a trigger event across email, SMS, push, Slack, and in-app feeds with user-preference management. Nylas is bidirectional communications: read and send from a user's own mailbox, sync calendars and contacts across 6 providers. Knock can't read an inbox; Nylas isn't a notification router. Product notification infrastructure → Knock; two-way mailbox or calendar access → Nylas. They can coexist in the same stack. - [Loops vs Nylas: When to Use Each](https://cli.nylas.com/guides/loops-vs-nylas): Loops (launched 2022) is a modern SaaS email platform unifying transactional and marketing sends from your domain, with a polished editor. Nylas reads and sends from a user's own inbox across 6 providers over OAuth. Loops can't read an inbox; Nylas isn't a campaign tool. Product + marketing email from your domain → Loops; acting inside a user's inbox → Nylas. - [Mandrill vs Nylas: When to Use Each](https://cli.nylas.com/guides/mandrill-vs-nylas): Mandrill is Mailchimp's transactional add-on — fast sending from your domain, but it requires a paid Mailchimp account and bills in transactional blocks with no free tier. Nylas reads and sends from a user's own inbox across 6 providers over OAuth. Mandrill can't read an inbox. Transactional mail tied to Mailchimp → Mandrill; working inside a user's inbox → Nylas. - [Nodemailer vs Nylas: When to Use Each](https://cli.nylas.com/guides/nodemailer-vs-nylas): Nodemailer is a Node.js library (14M+ weekly npm downloads) that sends mail through an SMTP server you supply — send-only, no inbox. Nylas is a hosted API that reads and sends from a user's own inbox across 6 providers over OAuth, with automatic token refresh and no SMTP server. Use Nodemailer with an existing SMTP relay; use Nylas when you need to read mail, calendar, or multi-provider OAuth. - [Microsoft Graph vs Nylas: Email & Calendar](https://cli.nylas.com/guides/microsoft-graph-vs-nylas): Microsoft Graph is the first-party API for Microsoft 365 (Outlook mail/calendar, Teams, SharePoint) — Microsoft-only, requires an Entra app registration, scopes, admin consent, and MSAL. Nylas wraps Graph plus Gmail, iCloud, Yahoo, and IMAP behind one OAuth login and one schema. Microsoft-only and deep → Graph; multi-provider and fast → Nylas. - [Gmail API vs Nylas: When to Use Each](https://cli.nylas.com/guides/gmail-api-vs-nylas): The Gmail API is Google's free first-party API — Gmail-only, with OAuth, a 1B quota-units/day budget, pageToken pagination, historyId sync, and 7-day watch renewal you manage. Nylas wraps the Gmail API plus 5 providers behind one login, hiding pagination and sync. Gmail-only and deep → Gmail API; multi-provider and fast → Nylas. - [Apideck vs Nylas: Unified API Compared](https://cli.nylas.com/guides/apideck-vs-nylas): Apideck is a multi-category unified API — one schema per category covering CRM, HRIS, ATS, accounting, file storage, and 9+ other categories. Nylas is a single-domain communications API covering email, calendar, and contacts across Google, Microsoft, iCloud, and IMAP, with Agent Accounts, MCP server, and an open-source CLI. Breadth across business-software categories → Apideck; depth on the inbox/calendar layer with agent containment → Nylas. Many products need both. - [Composio vs Nylas: Agent Tools Compared](https://cli.nylas.com/guides/composio-vs-nylas): Composio (1,000+ app catalog, usage-priced tool calls) vs Nylas (deep email/calendar/contacts with deterministic outbound agent rules) — pick Composio for broad multi-app agents, Nylas when email or calendar is the core surface and auditable containment matters. - [Paragon vs Nylas: Embedded Integrations](https://cli.nylas.com/guides/paragon-vs-nylas): Compares Paragon (embedded iPaaS with 130+ connectors) and Nylas (email, calendar, and contacts API) across scope, pricing, AI agent support, and CLI tooling. Embedded integration marketplace across many app categories → Paragon; communications depth with agent containment → Nylas. - [Build a Google ADK Email Agent](https://cli.nylas.com/guides/google-adk-email-agent): Wrap the Nylas CLI as a Google ADK FunctionTool to give an ADK agent email across Gmail, Outlook, and four more providers — one subprocess per action, JSON in and out, no provider SDK required. - [OpenAI Agents SDK Email Tools](https://cli.nylas.com/guides/openai-agents-sdk-email): Add email to an OpenAI Agents SDK agent by wrapping the Nylas CLI as a @function_tool; each subprocess call returns JSON from Gmail, Outlook, and 4 more providers with no per-provider SDK. Sends stay behind a draft for human review. - [Build a Mastra Email Agent](https://cli.nylas.com/guides/mastra-email-agent): Give a Mastra TypeScript agent email by wrapping the Nylas CLI as a createTool with a Zod schema and execFileSync — one subprocess, JSON in and out, across Gmail, Outlook, and four more, no provider SDK. - [Build a Letta (MemGPT) Email Agent](https://cli.nylas.com/guides/letta-email-agent): Register a Python custom tool that shells out to the Nylas CLI so a stateful Letta agent reads Gmail threads in JSON and remembers senders across sessions; sends stay behind a draft step. - [Build an Agno Email Agent](https://cli.nylas.com/guides/agno-email-agent): Give an Agno agent email by passing the Nylas CLI as a plain Python function in tools=[], shelling out to nylas email list --json and nylas email drafts create; reaches Gmail, Outlook, and 4 more with no provider SDK. - [Build a smolagents Email Agent](https://cli.nylas.com/guides/smolagents-email-agent): Give a smolagents CodeAgent or ToolCallingAgent email by wrapping the Nylas CLI with the @tool decorator — subprocess calls return JSON, no provider SDK, across Gmail, Outlook, Exchange, Yahoo, iCloud, and IMAP. - [Build a Flowise Email Agent](https://cli.nylas.com/guides/flowise-email-agent): Flowise Custom Tools run in a Node VM with no child_process, so call a thin local HTTP wrapper around the Nylas CLI (execFileSync, no shell) to read, search, and draft email across Gmail and 5 more providers. - [Build a Dify Email Agent](https://cli.nylas.com/guides/dify-email-agent): Expose the Nylas CLI behind a small HTTP server and register it as a Dify custom tool via an OpenAPI schema, giving a low-code Dify agent read, search, and draft email across Gmail, Outlook, and 4 more. - [Cloudflare Agents Email Tools](https://cli.nylas.com/guides/cloudflare-agents-email): Workers can't spawn subprocesses, so connect a Cloudflare Agent to the Nylas MCP server (nylas mcp serve) over HTTP/SSE and call email tools in TypeScript; sends stay behind a human draft-review loop. - [Build a Strands Email Agent](https://cli.nylas.com/guides/strands-email-agent): Give a Strands Agents SDK agent email by wrapping the Nylas CLI as a @tool with subprocess.run, passed into Agent(tools=[...]); one function reaches Gmail, Outlook, and 4 more, with nylas mcp as an alternative path. - [Calendar Analytics from the Terminal](https://cli.nylas.com/guides/calendar-analytics-cli): Count total meeting hours, recurring vs one-off events, and your busiest day of the week from the terminal using nylas calendar events list --json piped through jq. - [Block Focus Time on Your Calendar (CLI)](https://cli.nylas.com/guides/block-focus-time-cli): Check calendar availability and create busy focus-time blocks from the terminal with nylas calendar find-time and nylas calendar events create, protecting deep-work windows from meeting overload via cron. - [Detect Calendar Conflicts from the CLI](https://cli.nylas.com/guides/detect-calendar-conflicts-cli): Find double-booked meetings and overlapping calendar events using nylas calendar ai-conflicts and a jq time-range overlap script, with a daily cron report that emails the conflicts. - [Export Calendar Events to CSV & JSON (CLI)](https://cli.nylas.com/guides/export-calendar-events-cli): Export calendar events to CSV or JSON from the terminal using nylas calendar events list --json with jq's @csv operator for backups, reports, and spreadsheets. - [Build an Expense-Approval Email Agent](https://cli.nylas.com/guides/expense-approval-agent-account): An AI agent reads expense-submission emails, extracts amount and category with a model, applies threshold routing in code, replies with an auto-approval, or escalates over-threshold items to a human via draft. - [Build an Onboarding Email Agent](https://cli.nylas.com/guides/employee-onboarding-agent-account): An onboarding agent on a dedicated inbox sends the day-0 welcome email, books orientation on the calendar, watches for confirmation replies, and escalates non-responders to HR after 24 hours. - [Build a Renewal-Reminder Email Agent](https://cli.nylas.com/guides/renewal-reminder-agent-account): A renewal agent on a dedicated inbox sends staged T-30, T-7, and T-1 contract reminder emails, classifies customer replies as renew/cancel/question, and routes hot renewals to an account manager. - [Build an Appointment-Reminder Agent](https://cli.nylas.com/guides/appointment-reminder-agent-account): A cron-driven agent polls the calendar for T-24h and T-1h windows, sends reminder emails, reads attendee replies, and updates event status to cut no-shows — containment lives outside the agent's decision loop. - [Build a Waitlist Notification Agent](https://cli.nylas.com/guides/waitlist-notification-agent-account): Manage a first-come waitlist on a dedicated agent inbox — time-boxed spot offers, model-based reply classification, auto-roll on no-reply, and prompt-injection containment via outbound rules. - [Build a Feedback-Request Email Agent](https://cli.nylas.com/guides/feedback-request-agent-account): Send post-purchase feedback requests from a dedicated agent inbox, classify replies as positive, negative, or feature request with a model, and route negatives to a human fast. - [Merge.dev vs Nylas: Which Unified API?](https://cli.nylas.com/guides/merge-dev-vs-nylas): Merge.dev is a unified API for back-office SaaS — HRIS, ATS, CRM, accounting, ticketing, file storage. Nylas is a unified API for the inbox — email, calendar, contacts across 6 providers. They cover non-overlapping categories. Need back-office records → Merge; need live mail/calendar from a user's account → Nylas. Many products use both. - [Customer.io vs Nylas: Email Compared](https://cli.nylas.com/guides/customerio-vs-nylas): Customer.io is a behavioral lifecycle messaging platform — Journeys, Broadcasts, Transactional sends from your domain, with behavioral segmentation across email, SMS, and push. Nylas reads and sends from a user's own inbox across 6 providers over OAuth, plus calendar, contacts, Agent Accounts, and MCP. Customer.io can't read an inbox. noreply@yourapp.com → Customer.io; user@theircompany.com → Nylas. Many teams run both. - [Brevo vs Nylas: When to Use Each](https://cli.nylas.com/guides/brevo-vs-nylas): Brevo (formerly Sendinblue, rebranded May 2023) is an all-in-one marketing and transactional sender with a free tier of 300 emails/day, sending from a domain you verify. Nylas is contextual — reads and sends from a user's own inbox across 6 providers over OAuth, plus calendar, contacts, Agent Accounts, and MCP. Brevo can't read an inbox. noreply@yourapp.com → Brevo; user@theircompany.com → Nylas. - [Mailgun vs Nylas: When to Use Each](https://cli.nylas.com/guides/mailgun-vs-nylas): Mailgun (Sinch-owned) sends and routes email from a domain you own — high-volume outbound plus inbound routing rules and email validation. Nylas is contextual: reads and sends from a user's own inbox across 6 providers over OAuth. Overlap is send only. noreply@yourapp.com → Mailgun; user@theircompany.com → Nylas. Use both for outbound + inbox access. - [Postmark vs Nylas: When to Use Each](https://cli.nylas.com/guides/postmark-vs-nylas): Postmark (ActiveCampaign-owned) is a transactional sender built for speed, with message streams that isolate transactional and broadcast reputations. Nylas reads and sends from a user's own inbox across 6 providers. Postmark can't read an inbox; Nylas isn't a bulk sender. Use both — Postmark for outbound, Nylas for inbox access. - [Cal.com vs Nylas: Build vs Buy Scheduling](https://cli.nylas.com/guides/cal-com-vs-nylas): Cal.com is an open-source, self-hostable scheduling product (booking pages, availability rules). Nylas is the calendar API you build on when scheduling is a custom feature inside your own app, with raw event/free-busy access plus email and contacts. Buy Cal.com for booking pages; build on Nylas with `calendar events list` + `timezone find-meeting` for custom scheduling. - [Gmail Push Notifications (watch + Pub/Sub)](https://cli.nylas.com/guides/gmail-push-notifications): Gmail's users.watch publishes new-mail events to a Cloud Pub/Sub topic (not a direct webhook); the payload carries emailAddress + historyId, and you call users.history.list to learn what changed. Requires a topic, the gmail-api-push@system.gserviceaccount.com Publisher IAM grant, a subscription, and weekly renewal (watch expires in 7 days). `nylas webhook create --triggers message.created` delivers HMAC-signed (x-nylas-signature) webhooks directly, no Pub/Sub. - [Outlook Calendar Change Notifications](https://cli.nylas.com/guides/outlook-calendar-notifications): Microsoft Graph delivers calendar changes via a subscription (POST /subscriptions, changeType, notificationUrl). You must echo the validationToken as text/plain within 10 seconds and verify clientState on each delivery; calendar subscriptions expire in under 3 days and need renewal plus lifecycle-notification handling. `nylas webhook create --triggers event.created,event.updated,event.deleted` on an Outlook grant handles the subscription, handshake, and renewal, signed with x-nylas-signature. - [Verify Webhook Signatures (HMAC Guide)](https://cli.nylas.com/guides/webhook-signature-verification): A webhook URL is public, so verify the signature before acting. Compute HMAC-SHA256 over the raw body keyed by the secret and compare constant-time (hmac.compare_digest / timingSafeEqual), never ==. Hash the exact raw bytes, not re-serialized JSON. `nylas webhook verify --payload-file --secret --signature` checks a Nylas x-nylas-signature; `nylas webhook server --tunnel --secret` verifies live. Reject stale timestamps to block replays; rotate the secret with `nylas webhook rotate-secret`. Schemes: Nylas (x-nylas-signature), Stripe (Stripe-Signature t=,v1=), GitHub (X-Hub-Signature-256), SendGrid (ECDSA). - [Gmail App Passwords: Setup and Gotchas](https://cli.nylas.com/guides/gmail-app-password-setup): A Gmail app password is a 16-character credential for IMAP/POP/SMTP clients that can't do OAuth, created at myaccount.google.com/apppasswords (2-Step Verification required). Google removed Less Secure Apps (plain-password SMTP) on Sept 30, 2024, so app passwords are now mandatory for those clients. They're revoked when you change your main password, and Workspace admins can disable them. 535-5.7.8 = wrong/missing app password. Skip them entirely with OAuth: `nylas auth login --provider google`. - [CalDAV Explained: Protocol and Pitfalls](https://cli.nylas.com/guides/caldav-explained): CalDAV (RFC 4791) is calendar access over WebDAV/HTTPS — discover a calendar home via /.well-known/caldav and PROPFIND, then REPORT to read events and PUT iCalendar (.ics, RFC 5545) to write. iCloud (only programmatic option), Fastmail, and Yahoo use it; Google supports it but prefers its API. Pain: verbose XML, no push (poll with sync-token/ETag), per-server quirks (iCloud partition redirects, app passwords). `nylas auth login --provider icloud` + `calendar events list` reaches it without the protocol. - [Microsoft Graph Calendar API Quickstart](https://cli.nylas.com/guides/microsoft-graph-calendar-quickstart): Read/create Outlook events with Graph — register an Azure AD app, request Calendars.Read or Calendars.ReadWrite, GET /me/events to list and POST /me/events to create. Use /me/calendarView with a date range to expand recurring instances (/me/events returns only the series master), and follow @odata.nextLink for pages; 429 + Retry-After for throttling. `nylas auth login --provider microsoft` then `calendar events list` / `calendar events create` skips the app registration. - [Connect Claude to Your Email with MCP](https://cli.nylas.com/guides/connect-claude-to-email): Claude has no built-in multi-provider email connector — it gets email through MCP (Model Context Protocol). `nylas mcp install --assistant claude-desktop` (or claude-code) writes the config pointing Claude at `nylas mcp serve`; after `nylas auth login`, Claude can read, search, and send across Gmail, Outlook, Exchange, Yahoo, iCloud, and IMAP — yes, including Yahoo and iCloud, which have no native Claude connector. Keep sends human-in-the-loop; treat email bodies as untrusted. - [n8n Email Automation Across Providers](https://cli.nylas.com/guides/n8n-email-automation): n8n's native Gmail/Outlook nodes each need a separate OAuth app. An Execute Command node running `nylas email list --json` or `nylas email send` gives a workflow email across 6 providers from one authenticated tool, with uniform JSON. Trigger on new mail with an n8n Webhook node + `nylas webhook create --triggers message.created` (verify x-nylas-signature). For agentic workflows, n8n's MCP Client node can call `nylas mcp serve`. - [Build a CrewAI Email Agent](https://cli.nylas.com/guides/crewai-email-agent): Wrap the Nylas CLI in a CrewAI @tool — the function runs `nylas email list --json` / `email search` via subprocess and returns JSON the agent reasons over. One tool gives any crew member email across 6 providers, no provider SDK. Build a triage crew (Agent + Task) scoped to read and classify; keep sends behind a human by giving a draft tool (`nylas email drafts create`) instead of send. Treat email bodies as untrusted input. - [Email Tools for the Vercel AI SDK](https://cli.nylas.com/guides/vercel-ai-sdk-email-tools): Define an AI SDK tool() with a Zod schema whose execute() runs the Nylas CLI via Node child_process (execFile) and returns parsed JSON; pass it to generateText with maxSteps and the model calls it. One tool reaches 6 providers, server-only. Make sends a separate guarded tool or a draft step (`nylas email drafts create`). Validate inputs with Zod, log each call, treat message bodies as untrusted. - [Build an AutoGen Email Agent](https://cli.nylas.com/guides/autogen-email-agent): Register a Python function with AutoGen agents (register_for_llm + register_for_execution) that runs `nylas email list --json` via subprocess; the assistant proposes the call, the user-proxy executes it. One function gives the conversation email across 6 providers, no SDK. Register a draft function (`nylas email drafts create`), not send, and require human approval on consequential turns. Email bodies are untrusted input. - [Email Mail Merge from the Command Line](https://cli.nylas.com/guides/email-mail-merge-cli): A CLI mail merge loops a CSV through `nylas email send` per row, substituting fields. For clean templating use `--template-id` + `--template-data`, and `--render-only` to preview before sending. Throttle the loop (sleep) and respect caps — Gmail personal accounts send to ~500 recipients/24h, Workspace 2,000; 5,000+/day needs SPF/DKIM/DMARC. Dry-run by echoing, or compose drafts with `nylas email drafts create` for review; guard against blank rows. - [Schedule Meetings Across Time Zones (CLI)](https://cli.nylas.com/guides/schedule-across-timezones-cli): `nylas timezone find-meeting --zones "America/New_York,Europe/London,Asia/Tokyo" --duration 1h` returns overlapping working-hour slots, computed offline against the IANA database. `timezone convert` translates one time, `timezone dst --zone --year` lists DST transitions (regions change on different dates; most of Asia doesn't). Book with `calendar events create --start --end --lock-timezone --participant` so the time displays correctly for every attendee (RFC 5545). - [Handle Email Bounces from the CLI](https://cli.nylas.com/guides/email-bounce-handling-cli): A hard bounce (5.x.x permanent — no such address) must be suppressed and never retried; a soft bounce (4.x.x temporary — mailbox full) gets bounded retries with backoff. DSN format is RFC 3464, status codes RFC 3463. Detect with `nylas webhook create --triggers message.bounce_detected,message.send_failed,message.send_success` (verify x-nylas-signature), then check a suppression store before every `nylas email send`. Repeated hard bounces hurt reputation; Gmail/Yahoo enforce <0.3% spam since Feb 2024. - [Email Search Operators Compared](https://cli.nylas.com/guides/email-search-operators-compared): Three incompatible dialects: Gmail operators (from:, subject:, has:attachment, after:, is:unread), Microsoft Graph (relevance $search vs structured OData $filter — hasAttachments eq true, receivedDateTime ge, ConsistencyLevel: eventual), and IMAP SEARCH keys (FROM, SUBJECT, SINCE, UNSEEN; RFC 3501, returns sequence numbers, no has-attachment key). `nylas email search "from:alice@example.com subject:invoice" --json` runs one syntax server-side on whichever provider is connected. - [Email API vs SMTP: Which to Use](https://cli.nylas.com/guides/email-api-vs-smtp): SMTP (RFC 5321) is a send-only socket protocol — app passwords, ports 587/465 (often blocked on cloud VMs), no read/search/webhooks. An email API is HTTP: send + read + search + drafts + webhooks, OAuth, JSON, over port 443. Use plain SMTP for a one-off send from a script; use an API the moment you need to read replies, track, search, or trigger on incoming mail. The CLI is the API path: `nylas email send` plus `email list`/`search` from one `nylas init`. - [Reply to an Email from the Command Line](https://cli.nylas.com/guides/reply-to-email-cli): Reply in-thread with `nylas email send --reply-to ` — the flag attaches the In-Reply-To and References headers (RFC 5322) that join the conversation; without them a reply is just a new message. Find the id with `nylas email list --json` / `email search` + `jq -r '.[0].id'`. Reply-all by adding `--cc`. Compose a draft first (`nylas email drafts create`) for review on automated replies. - [SPF, DKIM, and DMARC Explained](https://cli.nylas.com/guides/email-spf-dkim-dmarc-explained): The three DNS records that authenticate email — SPF (RFC 7208, 10-lookup limit), DKIM (RFC 6376, selector._domainkey signature), DMARC (RFC 7489, p=none/quarantine/reject + alignment). Gmail and Yahoo require all three for bulk senders (5,000+/day) since February 2024, spam rate under 0.3%. With `nylas email send` the user's provider applies its own SPF/DKIM; you own the records only on custom domains. `nylas doctor` confirms the send path. - [Send Email with curl from the Terminal](https://cli.nylas.com/guides/send-email-with-curl): curl has spoken SMTP since 2010 — `curl --ssl-reqd --url smtps://smtp.gmail.com:465 --user you@gmail.com:app-password --mail-from --mail-rcpt --upload-file mail.txt`. Gmail needs an app password (Less Secure Apps removed Sept 2024) and port 465/587 (25 is blocked). Breaks on attachments (hand-built MIME), token rotation, and provider port blocks. `nylas email send` sends over OAuth with no SMTP config; `nylas email drafts create --attach` adds files. - [neomutt vs aerc: Terminal Email Clients](https://cli.nylas.com/guides/neomutt-vs-aerc-terminal-email): neomutt (2016 mutt fork, one muttrc, synchronous IMAP) vs aerc (2019, Go, asynchronous, embedded terminal). Both speak IMAP and need a Gmail app password or an XOAUTH2/oauthbearer helper script. `nylas tui` is a k9s-style client backed by the Nylas API over HTTPS — OAuth built in, no IMAP config — and every command also runs headless with `--json`. - [Outlook CLI: Manage Mail and Calendar](https://cli.nylas.com/guides/outlook-cli): Run Outlook from the terminal with `nylas auth login --provider microsoft`, then `nylas email list`, `nylas email send`, and `nylas calendar events list` — no Azure AD app registration, no Graph scopes, cross-platform. Basic Auth for Exchange Online was deprecated October 2022, so IMAP/SMTP no longer work for most accounts; Graph needs an Azure app. Works on Microsoft 365 and Outlook.com. - [Unipile vs Nylas: Messaging & Email APIs](https://cli.nylas.com/guides/unipile-vs-nylas): Unipile unifies LinkedIn, WhatsApp, and email under one API (sales-engagement and outreach tools). Nylas goes deep on email, calendar, and contacts across 6 providers, adds Agent Accounts and an MCP server, and ships an open-source CLI. Overlap is email; Unipile has no calendar/Agent Accounts/CLI and Nylas has no LinkedIn/WhatsApp. Pick by channel: social messaging → Unipile; inbox/calendar depth → Nylas. - [AWS SES vs Nylas: When to Use Each](https://cli.nylas.com/guides/aws-ses-vs-nylas): Amazon SES is a send-first transactional platform at $0.10/1,000 emails from verified domains; new accounts are sandboxed (200/24h to verified addresses) until production access is granted. Nylas is contextual — `nylas auth login` then read, search, and send from the user's own inbox across 6 providers over OAuth, no domain to verify. SES sends from noreply@yourapp.com; Nylas from user@theircompany.com. Use both: SES for system mail, Nylas for inbox access. - [Resend vs Nylas: When to Use Each](https://cli.nylas.com/guides/resend-vs-nylas): Resend (founded 2023 by Zeno Rocha, React Email templates, free tier 3,000/month at 100/day) is a developer-first transactional sender from your domain. Nylas is contextual — reads and sends from a user's own inbox across 6 providers over OAuth, with Agent Accounts and MCP for AI. Both say "email API" but only Nylas reads an inbox. noreply@yourapp.com → Resend; user@theircompany.com → Nylas. - [Google Calendar Push Notifications](https://cli.nylas.com/guides/google-calendar-push-notifications): Google's `events.watch` channels POST a bare "something changed" ping to a verified HTTPS endpoint; you then incremental-sync with a syncToken. "Channel token does not match stored channel token" means the X-Goog-Channel-Token header isn't the value you stored (stale channel, re-created token, or wrong scope) — fix the stored token, don't weaken the check. `nylas webhook create --triggers event.created,event.updated,event.deleted` delivers HMAC-signed (x-nylas-signature) calendar webhooks with event data and managed renewal; `nylas webhook server --tunnel` and `nylas webhook verify` test locally. - [Email API for SaaS Startups](https://cli.nylas.com/guides/email-api-for-saas-startups): SaaS email is two decisions. Transactional APIs (Resend, SES, Postmark, SendGrid) send system mail from your domain, per-message, from day one. Contextual APIs (Nylas) read and send from a user's own inbox over OAuth, per connected account — for CRM logging, inbox triage, AI agents, scheduling. Decide direction first: outbound-from-you vs inside-the-user's-inbox. Prototype the contextual side in ~2 minutes with `nylas init` + `nylas email list --json`. - [Migrate Off SendGrid: A Decision Guide](https://cli.nylas.com/guides/migrate-from-sendgrid): SendGrid did two jobs — outbound sends and Inbound Parse receiving — that move to different homes. Outbound goes to Resend (free 3,000/month), SES ($0.10/1,000), or Postmark; re-verify the domain (SPF/DKIM), port templates, export suppression lists, run in parallel. Inbound Parse goes to SES receiving rules (your domain) or a contextual API like Nylas (`nylas email list`, `nylas webhook create --triggers message.created`) for real user mailboxes. 8-step checklist; the free tier became a 60-day trial. - [Calendar Invite Prompt Injection Defense](https://cli.nylas.com/guides/calendar-invite-prompt-injection): Calendar invites enter an AI agent's context without any click — SafeBreach's "Invitation Is All You Need" research hijacked Gemini this way. Defenses: organizer-domain triage that redacts descriptions from unapproved organizers (`nylas calendar events list --json` + jq), human-run RSVPs via `nylas calendar events rsvp`, and audit logging that surfaces read-then-send sequences. - [New-MgUserMessage: Create Outlook Drafts](https://cli.nylas.com/guides/new-mgusermessage-powershell): New-MgUserMessage creates a Graph draft (201 Created, Mail.ReadWrite scope), Send-MgUserMessage dispatches it (202 Accepted, Mail.Send scope), and Send-MgMessage doesn't exist. Hashtable params, New-MgUserMessageAttachment for files, and the 2-command CLI equivalent: `nylas email drafts create` then `nylas email drafts send`. - [AI Agent Audit Dashboard from the CLI](https://cli.nylas.com/guides/ai-agent-audit-dashboard): Turn audit logs into a dashboard: `nylas audit logs summary --days 7` for the zero-setup view, jq group_by(.source) for per-agent command counts and error rates, --since/--until plus sort_by(.timestamp) for deterministic session replay, and a cron'd `nylas audit export` for daily snapshots. Label custom agents with NYLAS_CLI_SOURCE. - [Password Reset Emails: Choosing an API](https://cli.nylas.com/guides/password-reset-email-api): Password resets are latency-critical transactional sends — use SES ($0.10/1,000), Postmark (from $15/month), or SendGrid, not a contextual API. Meet Gmail's sender rules (SPF+DKIM for everyone, DMARC above 5,000/day, spam rate under 0.3%), isolate resets on a dedicated subdomain, and test the loop with `nylas email search` polling plus link extraction. - [Gmail API Sandbox: Test Email Integrations](https://cli.nylas.com/guides/email-api-sandbox-testing): Gmail has no API sandbox — every call hits a real mailbox. The 4 substitutes: `nylas demo email list` (sample data, zero credentials), a dedicated test account on the free 5-account tier, the Amazon SES sandbox (200 messages/24h to verified addresses, send-only), and fake SMTP inboxes for dev environments. - [caldav.icloud.com: iCloud CalDAV Settings](https://cli.nylas.com/guides/icloud-caldav-settings): iCloud's CalDAV server is caldav.icloud.com on HTTPS port 443 — Apple publishes Mail settings but no CalDAV page. Auth needs an app-specific password (2FA required, 25 max, all revoked when the primary password changes). Principal discovery via PROPFIND lands on per-account partition hosts (pXX-caldav.icloud.com). CLI alternative: `nylas auth login` then `nylas calendar events list --json`. - [Recurring Calendar Events: RRULE Explained](https://cli.nylas.com/guides/recurring-calendar-events-api): RRULE grammar from RFC 5545 (FREQ required; UNTIL and COUNT mutually exclusive). Google expands server-side with singleEvents=true, Microsoft Graph stores a patternedRecurrence object, CalDAV makes the client expand. The CLI returns ready-expanded instances with master_event_id linking back to the series; `calendar events create` takes no recurrence flag. - [Extract Email Data from JSON with jq](https://cli.nylas.com/guides/extract-email-data-jq): Email JSON recipes: senders via `.[].from[0].email`, addresses buried anywhere via `[.. | strings | scan(...)] | unique`, domain grouping with split("@")[1] + group_by, CSV export with @csv and todate, and the `[ -z "$DATA" ]` guard that keeps cron pipelines from dying on empty jq input. - [Email Read Receipts: API Options Compared](https://cli.nylas.com/guides/email-read-receipts-api): The Gmail API has no read-receipt endpoint (Workspace receipts are work/school only), RFC 8098 MDNs are voluntary, Outlook's isReadReceiptRequested can be declined. The working mechanism: `nylas email send --track-opens --track-links` plus a message.opened webhook — with Apple Mail Privacy Protection inflating opens, so trust clicks over opens. - [Cronofy vs Nylas: Calendar API Compared](https://cli.nylas.com/guides/cronofy-vs-nylas): Cronofy is scheduling-first (embedded Scheduler, UI elements, recruitment integrations, scheduling-scoped MCP server); Nylas covers email + calendar + contacts in one integration, calendar-only from $10/month including 5 accounts, with an open-source CLI. Pick by scope: booking-is-the-product → Cronofy; multi-surface communications → Nylas. - [SavvyCal vs Nylas: Scheduling Compared](https://cli.nylas.com/guides/savvycal-vs-nylas): SavvyCal is a finished scheduling SaaS (2,000+ customers, $10/user/month Basic, $17/user/month Premium) with calendar overlay, ranked times, and round-robin team modes — no code required. Nylas is the scheduling API and open-source CLI for building scheduling into your own product across Google, Microsoft, iCloud, and IMAP/CalDAV providers. Decision: use SavvyCal when scheduling is the tool; use Nylas when scheduling is a feature you're shipping. - [Gmail API: List Spam and Trash Messages](https://cli.nylas.com/guides/gmail-api-spam-trash): messages.list excludes SPAM and TRASH by default. Three documented ways to read them — includeSpamTrash=true, labelIds=["SPAM"], q="in:spam" — plus `nylas email list --folder SPAM` from the terminal and the 30-day trash recovery window. - [Gmail API batchDelete: Bulk Delete Messages](https://cli.nylas.com/guides/gmail-api-batch-delete): batchDelete permanently removes up to 1,000 message IDs per request (50 quota units) and requires the full https://mail.google.com/ scope. Recoverable alternative: batchModify with the TRASH label. CLI pipeline: `nylas email list --json` + jq + xargs `nylas email delete --yes`. - [Gmail API Categories: Tabs, Labels, and Search](https://cli.nylas.com/guides/gmail-categories-api): Gmail's 5 CATEGORY_* labels map to inbox tabs (Primary = CATEGORY_PERSONAL). labelIds is an AND filter, so two categories at once return nothing — use q="category:promotions OR category:social". Search has 7 category operators including reservations and purchases. CLI: `nylas email list --folder CATEGORY_PROMOTIONS`. - [Outlook OAuth for AI Agents: Graph Setup](https://cli.nylas.com/guides/outlook-oauth-ai-agents): OAuth decisions for unattended Outlook email agents: Mail.Send is the least-privileged Graph permission, application permissions reach every tenant mailbox until scoped via Exchange RBAC for Applications, and access tokens last 60-90 minutes. CLI alternative: `nylas auth login --provider microsoft` then `nylas email send`. - [Python smtplib Wrapper: Build or Skip It](https://cli.nylas.com/guides/python-smtplib-wrapper): A 35-line wrapper around smtplib.SMTP with ssl.create_default_context() TLS, send_message(), one retry on SMTPServerDisconnected, and connection reuse for batches. What it can't fix: per-provider app passwords, blocked SMTP ports, reading mail. The 8-line subprocess alternative calls `nylas email send`. - [Email API SLAs: Uptime vs Success Rate](https://cli.nylas.com/guides/email-api-sla-explained): What a 99.99% SLA guarantees, why success rate (successful calls ÷ total calls) beats uptime as a metric, downtime math per tier, and CLI checks to verify reliability with `nylas doctor` and audit logs. - [Build Reliable Email Automation: 5 Patterns](https://cli.nylas.com/guides/build-reliable-email-automation): Five patterns for email scripts that don't fail silently: exit-code checks, bounded retries, idempotency via --metadata and Sent-folder checks, draft safety nets, and audit logging. - [Handle Email API Outages: Backoff and Queues](https://cli.nylas.com/guides/handle-email-api-outages): Classify outages with `nylas doctor --json` and status.nylas.com, retry with exponential backoff and jitter, spool unsent mail to disk, and flush the spool after recovery. - [Email API Pricing Models: Predict Your Costs](https://cli.nylas.com/guides/email-api-pricing-models): Per-message vs per-connected-account vs usage-based pricing. Worked examples at 5, 100, and 1,000 accounts, free tier limits, and hidden costs like SLA eligibility and support tiers. - [Monitor Email Integration Health from Terminal](https://cli.nylas.com/guides/monitor-email-integration-health-cli): Scheduled `nylas doctor --json` checks in cron, error-rate tracking from audit logs, webhook endpoint tests with `nylas webhook test send`, and alerting through a second channel. - [Attendee vs Recall.ai: Meeting Bots Compared](https://cli.nylas.com/guides/attendee-vs-recall-ai-meeting-bots): Compare Attendee, Recall.ai, and Nylas Notetaker for meeting recording. Platform support, pricing, API access, transcript quality, and CLI integration. - [Back Up Email to JSON from Terminal](https://cli.nylas.com/guides/backup-emails-to-json): Export your entire mailbox to JSON from the terminal. Automatic pagination, date range filters, folder selection, and cron-based daily incremental backups. - [Email to Slack Alerts from Terminal](https://cli.nylas.com/guides/email-to-slack-notifications): Forward important emails to Slack channels automatically. Poll for unread messages, filter by sender, and post formatted alerts via incoming webhooks. - [Manage a Shared Mailbox from Terminal](https://cli.nylas.com/guides/shared-mailbox-cli): Read, send, and manage shared mailbox email from the CLI. Add shared grants, switch between accounts, and script team mailbox operations. - [Email Auth: OAuth vs API Key vs App Password](https://cli.nylas.com/guides/email-api-authentication-methods): Compare OAuth 2.0, API keys, and app passwords for email. Token lifetimes, provider support, scope control, and CI/CD compatibility. - [Send Email from Node.js](https://cli.nylas.com/guides/send-email-nodejs): Compare Nodemailer SMTP, Gmail API client library, and CLI subprocess for sending email from Node.js. Setup time, authentication, and provider coverage for each method. - [Outlook SMTP Settings: Server, Port, TLS](https://cli.nylas.com/guides/outlook-smtp-settings): Outlook SMTP server smtp.office365.com on port 587 with STARTTLS. Modern Auth OAuth 2.0, Basic Auth removal, sending limits, and common error codes. - [Microsoft Graph Email API Quick Start](https://cli.nylas.com/guides/microsoft-graph-email-quickstart): Send and read email with Microsoft Graph API. Azure AD app registration, OAuth 2.0 scopes, delegated vs app-only auth, and error fixes for 403 and 401 codes. - [Best Email API for Developers](https://cli.nylas.com/guides/best-email-api-for-developers): Compare SendGrid, Mailgun, Amazon SES, Resend, Postmark, and Nylas across pricing, features, deliverability, and use cases. Transactional vs contextual email API decision matrix. - [SendGrid vs Nylas: When to Use Each](https://cli.nylas.com/guides/sendgrid-vs-nylas): SendGrid sends transactional email from your domain. Nylas reads, sends, and syncs from user inboxes across 6 providers. Feature comparison and decision guide. - [MailerSend vs Nylas: Email Compared](https://cli.nylas.com/guides/mailersend-vs-nylas): MailerSend sends transactional email from verified domains (500 emails/month free, Hobby at $5.60/month). Nylas reads and syncs user inboxes across 6 providers via OAuth. Different jobs; 7-dimension feature table; when to use each and when to run both. - [Email Forwarding Rules: API Guide](https://cli.nylas.com/guides/email-forwarding-rules-api): Compare Gmail filters API, Microsoft Graph inbox rules, and `nylas agent rule create` for programmatic email routing. Working code for each approach. - [Delete and Archive Email from CLI](https://cli.nylas.com/guides/delete-emails-from-terminal): Delete individual messages, bulk-delete old emails with jq pipelines, archive threads, and manage trash retention across Gmail, Outlook, and IMAP. - [Schedule Emails from Terminal](https://cli.nylas.com/guides/schedule-email-from-terminal): Schedule email sends for future delivery with `--schedule 2h`, `--schedule "tomorrow 9am"`, or absolute timestamps. List, inspect, and cancel pending sends. - [Move Emails Between Folders from CLI](https://cli.nylas.com/guides/move-emails-between-folders): Create, list, rename, and delete email folders from the command line. Lists folder contents, compares Gmail labels vs Outlook folders, and normalizes both. - [Manage Contacts from Terminal](https://cli.nylas.com/guides/manage-contacts-from-terminal): List, search, create, and update contacts from the command line. Export to CSV, manage contact groups, and sync address books across Gmail and Outlook. - [Email Templates from the CLI](https://cli.nylas.com/guides/email-templates-cli): Create, manage, and send reusable email templates with variable substitution, HTML rendering, and bulk outbound from the command line. - [Gmail Labels API: Create and Manage](https://cli.nylas.com/guides/gmail-labels-api): Manage Gmail labels with the Gmail API. Create, list, modify, and apply labels to messages. Batch operations, system vs user labels, and CLI folder alternatives. - [Build an AI Email Auto-Responder](https://cli.nylas.com/guides/ai-email-auto-responder): Fetch unread email, draft context-aware replies with an LLM, and send only after human approval. Full Python + CLI pipeline with safety gates. - [Email Threads from Terminal: List, Read, Reply](https://cli.nylas.com/guides/email-threads-cli): List, read, and reply to email threads from the terminal. Group conversations by subject, navigate replies with jq, and mark threads as read in one command. - [Calendar API Compared: Google, Microsoft, CalDAV](https://cli.nylas.com/guides/calendar-api-comparison): Compare Google Calendar API, Microsoft Graph, and CalDAV for calendar integrations. Authentication, events CRUD, recurring events, availability queries, and rate limits. - [Contacts API: Google vs Microsoft vs CardDAV](https://cli.nylas.com/guides/contacts-api-comparison): Compare Google People API, Microsoft Graph Contacts, and CardDAV (RFC 6352). Auth, CRUD, search, sync, rate limits, and a decision matrix for choosing. - [Email Webhook Events: Developer Reference](https://cli.nylas.com/guides/email-webhook-events-reference): Trigger types, payload shapes, retry behavior, and HMAC signature verification for email, calendar, contact, and grant webhook events. - [Manage Email Drafts from Terminal](https://cli.nylas.com/guides/manage-email-drafts-cli): Create, list, inspect, and send email drafts from the terminal. Draft lifecycle management as a safety net before sending. - [Summarize Email Threads with AI](https://cli.nylas.com/guides/summarize-email-threads-ai): Summarize long email threads with an LLM from the command line. Extract action items, decisions, and deadlines from threaded conversations. - [Automate Meeting Notes to Email](https://cli.nylas.com/guides/automate-meeting-notes): Record meetings with a notetaker bot, generate AI summaries from transcripts, and email notes to attendees automatically. - [Search Email from Terminal](https://cli.nylas.com/guides/search-email-from-terminal): Compare Gmail search operators, Graph $filter, IMAP SEARCH, and one unified CLI command for searching email across providers from the terminal. - [Sync Calendars Across Providers](https://cli.nylas.com/guides/sync-calendars-across-providers): Compare ICS export, CalDAV, Google Calendar API sync, and Graph delta queries. One CLI command lists events across Google, Outlook, iCloud, and Exchange. - [Automate Email Reports from Terminal](https://cli.nylas.com/guides/automate-email-reports-terminal): Build daily and weekly email reports with cron, JSON output, jq, and shell scripts. Schedule inbox summaries and alert notifications from the terminal. - [Build a Human-in-the-Loop Email Agent](https://cli.nylas.com/guides/build-human-in-loop-email-agent): Build an AI email agent with human approval gates. Classify messages, draft replies, queue for review, and send only after explicit confirmation. - [Best CLI Calendar Tools Compared](https://cli.nylas.com/guides/best-cli-calendar-tools-compared): Compare gcalcli, khal, calcurse, remind, vdirsyncer, and Nylas CLI for terminal calendar management. Provider support, sync, features, and install. - [How Apple's New CEO Can Automate iCloud Email](https://cli.nylas.com/guides/apple-ceo-ai-email-agents): John Ternus becomes Apple CEO September 2026. Connect iCloud to AI agents that triage email, draft replies, optimize calendar, and protect focus time from the terminal. - [Getting Started with the CLI](https://cli.nylas.com/guides/getting-started): Install and set up in under 2 minutes. New users run nylas init for guided signup that connects your first email; with an existing API key run nylas auth config to log in, then nylas auth login to connect mailboxes (up to 5 on the free tier). - [Authenticate Gmail on a Headless Server or VM](https://cli.nylas.com/guides/gmail-headless-server-auth): Authenticate Gmail from a headless server or VM with no browser. `nylas auth login` needs a browser; instead set `NYLAS_API_KEY`, `NYLAS_GRANT_ID`, and `NYLAS_DISABLE_KEYRING=true` and run the CLI with nothing on disk. Covers the official `ghcr.io/nylas/cli:latest` Docker image, secrets injection, key rotation, the EU endpoint, verifying with `nylas email list`, and a 4-method comparison. - [Send Email from Linux Command Line Without SMTP Server or Postfix](https://cli.nylas.com/guides/send-email-from-terminal): Send email from Linux, Ubuntu, macOS, or Windows without an SMTP server, Postfix, or sendmail. One command for Gmail, Outlook, Exchange, Yahoo, iCloud, and IMAP. - [Send Email with Attachments from CLI](https://cli.nylas.com/guides/send-email-with-attachments-cli): Send file attachments from the command line without MIME encoding, mutt, or Postfix. Create a draft with `nylas email drafts create --attach`, then send it. Covers single files, multiple attachments, bash scripts, cron jobs, and provider size limits. - [Parse and Download Email Attachments](https://cli.nylas.com/guides/parse-email-attachments): Parse email attachments with Python imaplib, Node.js Gmail API, or a single CLI command. Compare MIME tree walking, base64url decoding, and provider-specific gotchas across Gmail, Outlook, Yahoo, and IMAP. - [Email API Rate Limits: Every Provider](https://cli.nylas.com/guides/email-api-rate-limits-compared): Gmail API quota units, Microsoft Graph throttling, Yahoo IMAP, Exchange EWS, and iCloud rate limits in one comparison table. Retry strategies, SMTP error codes, and batch operation limits. - [IMAP vs Gmail API vs Graph API](https://cli.nylas.com/guides/imap-vs-gmail-api-vs-graph-api): Compare IMAP, Gmail API, and Microsoft Graph for email integration. Auth, search, push notifications, rate limits, and code examples for each protocol. - [Give Your AI Coding Agent an Email Address](https://cli.nylas.com/guides/give-ai-agent-email-address): Connect Claude Code, Cursor, OpenAI Codex CLI, Windsurf, and OpenClaw to a real email account via MCP. - [Agent Rules and Policies: Complete Guide](https://cli.nylas.com/guides/agent-rules-and-policies): Every trigger, condition field, operator, action, and policy setting for agent email rules. Inbound/outbound filtering, priority ordering, send limits, spam detection, and real-world rule patterns. - [Getting Started with Agent Accounts](https://cli.nylas.com/guides/getting-started-agent-accounts): How Agent Account works — the 5-entity architecture from Application to Workspace, inbound and outbound email flows, and why managed email replaces self-hosted SMTP. - [Give Your AI Agent a Managed Calendar](https://cli.nylas.com/guides/agent-account-calendar): An agent account's grant carries calendar access alongside email. Check availability, find meeting times across participant timezones, book events, and read the agent's own schedule from the CLI — no second OAuth flow. - [Build a Meeting-Booking Assistant Agent](https://cli.nylas.com/guides/meeting-booking-agent-account): A scheduling agent on one agent account reads a request email, surfaces ranked times across timezones with find-time, guards the slot with an availability check (exit 0 free / 2 busy), books the event, and emails a confirmation. Includes a cron-ready loop and an outbound guardrail rule. - [Give Your AI Agent a Contacts Directory](https://cli.nylas.com/guides/agent-account-contacts): An agent account's grant carries contacts alongside email and calendar. Add contacts, resolve a name to an address before sending, group recipients for batch outreach, dedupe the list, and use the directory as the allow-list of who the agent may email. - [Build an AI Customer-Support Inbox](https://cli.nylas.com/guides/ai-support-inbox-agent-account): A support agent on a dedicated agent account reads tickets as JSON, routes known senders with inbound rules, lets a model classify the rest, replies in-thread with email send --reply-to, escalates hard cases to humans, and stays contained by outbound workspace rules a prompt injection can't disable. - [Manage the Agent Account Lifecycle](https://cli.nylas.com/guides/agent-account-lifecycle): The full lifecycle of an agent account from the CLI — create and inspect (get/list/status), rotate the IMAP/SMTP app password with update --app-password, pause an agent by attaching a block-all outbound rule, and decommission with delete --yes (account ID from get --quiet). Plus a fleet audit that flags any account not in the valid state. - [Build an Order-Status Reply Agent](https://cli.nylas.com/guides/order-status-reply-agent-account): An agent on a dedicated orders@ account answers "where's my order?" emails. Reads with email list --unread --json, a model extracts the order ID from noisy free text, your fulfillment lookup returns status + owner email, and the agent verifies the requester owns the order (sender == owner) BEFORE revealing status — the deterministic gate that prevents a broken-object-level-authorization leak from guessable order IDs. Replies in-thread with email send --reply-to to the verified sender only, then marks read. Outbound rule + minimal reply body for defense in depth. - [Build a Personal Assistant Inbox Agent](https://cli.nylas.com/guides/personal-assistant-agent-account): Delegate an overflow inbox to an AI assistant on a dedicated agent account. It triages forwarded mail with email list --unread --json, drafts replies with email drafts create --reply-to (threaded, never sent), and the person reviews with drafts list --json and approves with drafts send — the native drafts queue IS the approval gate. Also sends a daily brief (the one message sent without approval, to yourself only). Drafts-only design removes the dangerous send leg; outbound rule for defense in depth. - [Build a Signup & Verification Bot](https://cli.nylas.com/guides/signup-otp-bot-agent-account): An agent that registers for services and completes the email-verification step itself. An agent account gives the bot a real deliverable inbox (passes the disposable-domain checks services run), the bot signs up with that address, and the CLI pulls the code with nylas otp get --raw --no-copy (under a second, cross-provider, no regex) or blocks for it with nylas otp watch. Signup loop: your automation submits the form + the code; the CLI reads the OTP in the middle. Includes a clear note to respect each service's terms (no mass account creation / CAPTCHA bypass) and treat the emailed code as a one-time secret (NIST 800-63B). - [Custom Domains for Agent Accounts](https://cli.nylas.com/guides/agent-account-custom-domain): Send and receive agent email from your own domain instead of *.nylas.email. Covers why (brand/trust, DKIM aligned to your domain for deliverability and DMARC alignment), the DNS records needed (MX routes inbound, DKIM TXT/CNAME signs outbound, SPF TXT authorizes Nylas, DMARC TXT policy), dashboard configuration (domain verification + per-domain DKIM keys — not CLI), then creating the account on the verified domain with the same nylas agent account create / email send commands (sender from the active grant, no --from). When to skip: prototypes, internal, test, agent-to-agent stay on the managed domain. - [Use Agent Accounts with LangChain](https://cli.nylas.com/guides/agent-accounts-langchain): Give a LangChain/LangGraph agent email and calendar via the subprocess tool pattern — wrap each nylas command in a @tool that calls subprocess.run(["nylas", ...], check=True) (list args, never a shell string, so the model can't inject), parse --json into projected dicts, and bind the tools to a LangGraph create_react_agent. No provider SDK or OAuth in the Python; the agent account holds the credential. Contained by a workspace outbound rule the Python can't override. Includes a LangChain-tools vs MCP comparison. - [Build a Recruiting Interview Coordinator](https://cli.nylas.com/guides/recruiting-coordinator-agent-account): An interview-scheduling agent on one agent account. Computes the multi-person intersection with nylas calendar find-time across the whole panel (every interviewer as a --participant with timezones), emails the candidate the top ranked options, reads the reply, re-verifies the chosen slot with availability check (exit 0 free / 2 busy), and books one event with the candidate + all panelists as attendees via events create. Contained with an outbound rule and policy send cap. - [Deploy Agent Accounts in Docker & CI](https://cli.nylas.com/guides/deploy-agent-accounts-docker): Run an agent-account agent headlessly in a container or CI pipeline (no OAuth browser flow). Dockerfile installs the CLI with install.sh and adds ~/.config/nylas/bin to PATH; the entrypoint authenticates at runtime with nylas auth config --api-key from an injected secret (a :? guard fails fast if missing) — never nylas auth login, never a key baked into a layer or --build-arg. Inject with docker run -e at run time; in GitHub Actions the key comes from secrets.NYLAS_API_KEY per step. Key-safety rules: runtime-not-build-time, secret-store-not-plaintext, fail-closed; pair with workspace controls so a leaked key still hits containment. - [Migrate from SMTP to Agent Accounts](https://cli.nylas.com/guides/migrate-smtp-to-agent-accounts): Migration playbook from a self-hosted SMTP server (Postfix/Exim daemon, MX records, TLS certs, SpamAssassin, MIME parser — 5 systems) to one managed agent account. Maps a sendmail/relay send to a single nylas email send, replaces your MX with managed *.nylas.email inbound (read with email list or react with a webhook), and gives a 4-step cutover (provision, dual-send safety net, flip, decommission). Includes a 5-row SMTP feature-parity table and an honest list of what doesn't map 1:1 (custom MTA routing, own-domain sending, high-volume marketing relays). - [Build an Email Digest Agent](https://cli.nylas.com/guides/newsletter-digest-agent-account): A scheduled opt-in digest sender on a dedicated agent account. Resolves the current subscriber list from a contacts group with nylas contacts search --group --has-email, drops opted-out addresses against a suppression list (grep -qxF, honors CAN-SPAM), renders a stored template per recipient with email send --template-id/--template-data, and runs from cron. A workspace policy send cap stops a loop bug from mailing the list twice; DKIM-signed delivery. - [Trigger Agents on Inbound Email with Webhooks](https://cli.nylas.com/guides/agent-account-webhooks): The real-time alternative to cron polling. Register a message.created webhook with nylas webhook create --url --triggers, receive it locally with nylas webhook server --port, verify every payload against the x-nylas-signature HMAC header with nylas webhook verify (reject forged input), then run the agent on the message id from .data.object.id with a single email read instead of an inbox scan. Also covers grant.expired webhooks for real-time account-health paging. Webhooks vs polling comparison; resilient pattern uses both. - [Build a Transactional Email Agent](https://cli.nylas.com/guides/transactional-email-agent-account): Send event-triggered receipts, confirmations, and alerts from a dedicated agent account — DKIM-signed (RFC 6376) on the managed domain with no SMTP relay. Render hosted templates with email send --template-id/--template-data, make sends idempotent with a sent-log keyed on the event id (record only after success), cap volume with a policy daily send limit, schedule with --schedule, and skip open-tracking on functional mail. - [Build an Invoice-Intake Agent](https://cli.nylas.com/guides/invoice-intake-agent-account): An AP-intake agent on a dedicated invoices@ inbox reads inbound mail, finds the PDF with email attachments list filtered by content_type (application/pdf), downloads it with attachments download, a model extracts vendor/amount/due date, and email send routes a summary to a FIXED accounting address. Includes a cron loop, mark-read dedup, and outbound guardrails against invoice-fraud redirection. - [Monitor Agent Account Health](https://cli.nylas.com/guides/monitor-agent-account-health): Probe agent account health from the CLI — nylas agent status --json reports connector_configured, account_count, and per-account grant_status. Flag any account whose grant_status isn't valid with jq, run the probe on a 5-minute cron with distinct exit codes (0 healthy / 1 connector down / 2 account broken), alert oncall with email send only when something's broken, and log the valid-ratio over time. - [Build a Lead-Capture & Qualification Agent](https://cli.nylas.com/guides/lead-capture-agent-account): An AI lead agent on a dedicated inbox reads inbound mail with email list --unread --json, a model qualifies it (qualified/nurture/spam), qualified leads are saved with contacts create, and the owning rep is notified with email send. Includes a 1-minute cron loop and outbound guardrails — built for the HBR finding that contacting a lead within an hour qualifies it ~7x more often. - [Provision Agent Accounts at Scale](https://cli.nylas.com/guides/provision-agent-accounts-at-scale): One application holds hundreds of agent accounts. Bulk-create from a tenant list with a stable naming convention, make provisioning idempotent (get-before-create), apply a shared policy (agent policy create --data) across the fleet, inventory with account list --json, and tear down on churn with delete --yes. Includes the isolation trade-offs of one-account-per-tenant vs shared accounts. - [Create an AI Agent Email Identity](https://cli.nylas.com/guides/create-ai-agent-email-identity): Stand up a managed `provider=nylas` email identity an AI agent can both send from and receive at — no OAuth, no third-party mailbox. - [Install Nylas Skills for AI Coding Agents](https://cli.nylas.com/guides/nylas-agent-skills): One command installs `nylas-cli` and `nylas-api` skills in Claude Code, Cursor, Codex CLI, Windsurf, and 30+ other agents. - [Agent-to-Agent Email Communication](https://cli.nylas.com/guides/agent-to-agent-email): Create two managed agent accounts and exchange structured JSON messages over email. No shared database, no message queue — each agent owns its inbox. - [Set Up an MCP Email Server in 5 Minutes](https://cli.nylas.com/guides/mcp-email-server-setup): Install, configure, and verify an MCP email server for Claude Code, Cursor, Windsurf, VS Code Copilot, and Claude Desktop. One command registers 16 email and calendar tools across 6 providers. - [MCP vs API for AI Agents](https://cli.nylas.com/guides/mcp-vs-api-ai-agents): Compare MCP, direct API calls, and agent skills for AI integrations. Benchmarks show 33% token efficiency gaps and 30x batch speed differences. Includes a decision matrix. - [Gmail SMTP Settings 2026: Ports, TLS, Auth](https://cli.nylas.com/guides/gmail-smtp-settings): Gmail SMTP server smtp.gmail.com on port 587 (STARTTLS) or port 465 (SSL). App password setup, OAuth 2.0 requirements, sending limits (500/day personal, 2,000/day Workspace), common error codes, and a zero-config CLI alternative. - [Google Workspace CLI: Limits and Alternative](https://cli.nylas.com/guides/google-workspace-cli-alternative): Google's gws CLI covers 8+ Workspace services but is Google-only, pre-1.0, and caps unverified OAuth apps at ~25 scopes. Compare with a multi-provider email and calendar CLI set up with one `nylas init` command. - [Google Workspace MCP for AI Agents](https://cli.nylas.com/guides/google-workspace-mcp-vs-nylas): Compare Google's public-preview Workspace MCP servers with CLI command pages and Agent Accounts for user mail or app-owned inboxes. - [Gmailify and POP3 Alternatives](https://cli.nylas.com/guides/gmailify-pop3-alternative): Gmailify and Gmail POP fetching are ending for new users after Q1 2026. Compare forwarding, IMAP, mobile Gmail, and CLI inbox access. - [ChatGPT Gmail Connector vs MCP](https://cli.nylas.com/guides/chatgpt-gmail-connector-vs-mcp): Compare ChatGPT Gmail apps, custom MCP apps, and local CLI MCP for Gmail workflows. Pick the right path for search, sync, and write actions. - [Outlook MCP Server for AI Agents](https://cli.nylas.com/guides/outlook-mcp-server-ai-agents): Compare Outlook MCP options for AI agents: Microsoft 365 connectors, Graph API tools, and local CLI MCP for email and calendar workflows. - [MCP Email Server Security Checklist](https://cli.nylas.com/guides/mcp-email-server-security-checklist): Secure MCP email servers with least privilege, token boundaries, webhook verification, local server checks, and write-action controls. - [Test Email Webhooks Locally](https://cli.nylas.com/guides/test-email-webhooks-locally): Test Nylas email webhooks locally with tunnel setup, signed payload checks, trigger discovery, and replayable fixtures before shipping handlers. - [Cypress Email Testing](https://cli.nylas.com/guides/cypress-email-testing): Test password resets, magic links, and OTP emails in Cypress with a real inbox, `cy.task`, `nylas email read`, and `nylas otp watch`. - [Check Calendar Availability from Terminal](https://cli.nylas.com/guides/check-calendar-availability-cli): Run `nylas calendar availability check` for free/busy windows before creating meetings or booking rooms. - [Create Calendar Invites from the CLI](https://cli.nylas.com/guides/create-calendar-invites-cli): Create calendar invites with `nylas calendar events create`, attendee `--participant` flags, busy status, and provider-sent notifications. - [Parse Inbound Email Webhooks](https://cli.nylas.com/guides/parse-inbound-email-webhooks): Register `message.created`, verify signed payloads with `nylas webhook verify`, and route inbound email webhook events. - [GitHub Actions Email Notifications](https://cli.nylas.com/guides/github-actions-email-notifications): Send CI failure alerts with `NYLAS_API_KEY`, `nylas email send`, and `if: failure()` workflow steps. - [Mailtrap Alternative for Real Inbox Testing](https://cli.nylas.com/guides/mailtrap-alternative-real-inbox-testing): Compare Mailtrap, Mailosaur, and Nylas Agent Accounts for real inbox E2E email tests. - [Email Signature Extraction from the CLI](https://cli.nylas.com/guides/email-signature-extraction-cli): Manage stored email signatures with `nylas email signatures create`, send with `--signature-id`, and parse received signatures. - [Calendly Alternative for Developers](https://cli.nylas.com/guides/calendly-alternative-developer-scheduling): Build developer-owned scheduling with `nylas calendar find-time`, availability checks, event creation, and webhooks. - [iCloud Mail API Alternative](https://cli.nylas.com/guides/icloud-mail-api-alternative): Compare iCloud Mail access options for developers: IMAP settings, app-specific passwords, aliases, and a CLI path for search and send workflows. - [Secure OpenClaw Email Access](https://cli.nylas.com/guides/secure-openclaw-email-access): Secure OpenClaw email access with plugin allowlists, scoped Nylas credentials, policy rules, send approvals, and local MCP or exec boundaries. - [Gmail API Quotas in 2026](https://cli.nylas.com/guides/gmail-api-quotas-2026): Gmail API quotas changed May 1, 2026. Covers method costs, bounded CLI loops, command references, and when Agent Accounts avoid Gmail quota. - [Send Email from Python: SMTP, API, and CLI](https://cli.nylas.com/guides/send-email-python): Compare three Python email methods: smtplib with app passwords, Gmail API with OAuth 2.0, and CLI subprocess calls. Working code, setup time, and a decision matrix. - [Send Email from Python Without SMTP](https://cli.nylas.com/guides/send-email-python-without-smtp): Call `nylas email send` from Python instead of SMTP. Includes auth links, failure handling, CSV sends, and Agent Account sender patterns. - [EWS Retirement Checklist](https://cli.nylas.com/guides/ews-retirement-checklist): Inventory EWS scripts, test Exchange email and calendar access, and pick Graph API, CLI, or Agent Account migration paths before 2027. - [Send-MgUserMail: Graph Email in PowerShell](https://cli.nylas.com/guides/send-mgusermail-powershell): Full Send-MgUserMail walkthrough: delegated auth, app-only auth, attachments, shared mailboxes, troubleshooting, and a 1-command CLI alternative. - [Send-MgUserMail vs Send-MailMessage](https://cli.nylas.com/guides/send-mgusermail-vs-send-mailmessage): Compare obsolete SMTP, Graph PowerShell setup, one CLI send command, auth checks, wrappers, and Agent Account senders. - [Best Email Infrastructure for AI Agents](https://cli.nylas.com/guides/best-email-infrastructure-ai-agents): Compare Agent Accounts, provider APIs, IMAP, SMTP, MCP, and CLI tools for agent reads, sends, audits, calendar, rules, and scale. - [Email Prompt Injection Defense](https://cli.nylas.com/guides/email-prompt-injection-defense): Defend AI email agents against prompt injection with four layers: input/output separation via `nylas email list --json` metadata-first triage, capability sandboxing via `nylas agent policy create` and `nylas agent rule create`, human-in-the-loop draft approvals, and anomaly detection via `nylas audit logs show`. - [AgentMail vs Nylas vs Cloudflare Email](https://cli.nylas.com/guides/agentmail-vs-nylas-vs-cloudflare-email): Compare AgentMail, Cloudflare Email for Agents, and Nylas Agent Accounts for AI agent email infrastructure. Feature matrix, MCP support, pricing, and decision guide. - [Cron Job Email Without Postfix](https://cli.nylas.com/guides/cron-job-email-without-postfix): Send email alerts from cron jobs without Postfix, msmtp, or ssmtp. One `nylas email send` command replaces MAILTO plus a local MTA. Disk space, backup monitoring, and scheduled delivery examples. - [Calendar CLI Tools Compared](https://cli.nylas.com/guides/best-calendar-cli-tools-compared): Compare gcalcli, Google Workspace CLI, khal, calcurse, and Nylas CLI for terminal calendar management. Feature matrix, provider coverage, and setup time benchmarks. - [Read Email from Your Terminal](https://cli.nylas.com/guides/read-email-from-terminal): Compare NeoMutt, aerc, and Nylas CLI for reading email in the terminal. Setup time, IMAP config, search, multi-provider support, and JSON scripting. - [Stop Your AI Agent From Going Rogue](https://cli.nylas.com/guides/stop-ai-agent-going-rogue): Terminate rogue AI agent sessions at the connector layer. `nylas agent policy` and `nylas agent rule` block phishing senders, kill auto-reply loops, hard-block exfiltration targets, and use `in_list` to scope dozens of recipient domains in a single rule. - [Email MCP Server for AI Agents](https://cli.nylas.com/guides/ai-agent-email-mcp): Set up an email MCP server for Claude, Cursor, VS Code, and other AI agents to read, send, and schedule email and calendar events. - [AI Agent CLI for Email and Calendar](https://cli.nylas.com/guides/build-email-agent-cli): Build an AI agent CLI for email and calendar using Nylas CLI subprocess commands, JSON output, and no provider-specific API clients. - [Email CLI Tools Compared](https://cli.nylas.com/guides/best-cli-email-tools-compared): Compare 7 email CLI tools — Nylas CLI, Himalaya, aerc, NeoMutt, msmtp, mailx, swaks — on OAuth, JSON output, send without SMTP, and AI agents. - [Recall.ai vs Nylas for AI Agent Email](https://cli.nylas.com/guides/nylas-vs-recall-ai-agent-email): Recall.ai handles meeting recordings and transcripts. Nylas CLI handles email, calendar, and contacts. Feature comparison and when to use each. - [Build an AI Email Triage Agent](https://cli.nylas.com/guides/build-ai-email-triage-agent): Build an AI agent that classifies emails by urgency, drafts replies, and archives noise. Python + Nylas CLI + any LLM. - [Manage Calendar Events from Terminal](https://cli.nylas.com/guides/manage-calendar-from-terminal): DST-aware event creation, timezone locking, AI scheduling, and break time protection. - [Send GPG Encrypted Email from CLI](https://cli.nylas.com/guides/gpg-encrypted-email-cli): Sign, encrypt, and verify email with GPG from the CLI. - [E2E Email Testing with Playwright](https://cli.nylas.com/guides/e2e-email-testing): Test transactional emails with Playwright and Nylas CLI. - [Secure Email Handling from the CLI](https://cli.nylas.com/guides/secure-email-handling-cli): API key rotation, audit logging, SOC 2 compliance patterns, GPG encryption, and command injection prevention. - [Email Deliverability from the CLI](https://cli.nylas.com/guides/email-deliverability-cli): Run SPF/DKIM/DMARC checks from your terminal, inspect authentication headers, and verify DNS records. - [Why AI Agents Need Email](https://cli.nylas.com/guides/why-ai-agents-need-email): Authentication, OTP verification, two-way communication, audit trails, and multi-threaded conversations. - [Gmail API Limits for AI Agents](https://cli.nylas.com/guides/why-gmail-api-breaks-ai-agents): 6,000 quota units/min/user/project for new projects, exponential backoff, OAuth consent screens, token refresh complexity, and how to handle each one. - [Agent-First Email Design](https://cli.nylas.com/guides/agent-first-email-design): Design machine-readable email templates and agent-friendly headers with JSON output and subprocess composability. - [Audit AI Agent Activity (Claude, Copilot, MCP)](https://cli.nylas.com/guides/audit-ai-agent-activity): Audit logs for AI agent actions across Claude Code, GitHub Copilot, and MCP. Filter by source, export for compliance, and surface commands run by agents. - [Gmail CLI: List Gmail Emails from Terminal](https://cli.nylas.com/guides/list-gmail-emails): List, search, and read Gmail emails from your terminal. No Google API setup required. - [Gmail CLI: Send Gmail from Command Line](https://cli.nylas.com/guides/send-gmail-email-cli): Send Gmail from command line without Gmail API client code, SMTP passwords, Postfix, or sendmail. Supports CC/BCC, scheduling, tracking, and JSON. - [Outlook CLI: List Emails from Terminal (No Graph API)](https://cli.nylas.com/guides/list-outlook-emails): List, search, and read Outlook and Microsoft 365 email from terminal without Graph API setup. - [Exchange CLI: Read Emails from Terminal](https://cli.nylas.com/guides/list-exchange-emails): List, search, and read Exchange Online or on-prem email from terminal without EWS, PowerShell, or Graph API setup. - [Fix Google API 412 Errors (ETag, If-Match)](https://cli.nylas.com/guides/if-match-gmail-api): Why Google Calendar returns 412 Precondition Failed on stale ETags and what Gmail does instead. Exact answers for ETag, If-Match, If-None-Match, 304, history.list, and syncToken across both Google APIs. - [Gmail API Search Query Examples](https://cli.nylas.com/guides/gmail-api-search-query): Gmail API q examples for from, subject, labels, categories, date filters, attachments, rfc822msgid, pagination, and supported CLI filter equivalents. - [Gmail API Pagination and Sync Explained](https://cli.nylas.com/guides/gmail-api-pagination-sync): Gmail API pagination with nextPageToken, incremental sync with historyId, threads vs messages, label scoping, multi-account loops, headless CI auth, webhooks vs polling, cross-provider differences, and benchmarks. - [Google Calendar API Pagination and Sync](https://cli.nylas.com/guides/google-calendar-api-pagination): Google Calendar pagination with nextPageToken on events.list, incremental sync with syncToken, recurring-event expansion, multi-calendar fan-out, 410 Gone recovery, webhooks, and cross-provider differences. - [Connect Voice Agents to Email and Calendar](https://cli.nylas.com/guides/voice-agents-email-cli): Integrate voice agents (LiveKit, Vapi, ElevenLabs) with email and calendar. - [PowerShell Email: Every Method Compared](https://cli.nylas.com/guides/powershell-email-guide): Hub guide comparing 5 PowerShell email methods after Send-MailMessage deprecation: Send-MgUserMail, Graph REST, MailKit, CLI, and legacy SMTP. Decision matrix included. - [Send-MailMessage Deprecated: PowerShell 7 Fix](https://cli.nylas.com/guides/replace-send-mailmessage): Send-MailMessage is deprecated and obsolete in PowerShell 7. Side-by-side migration to nylas email send for every common pattern, plus Basic Auth shutdown fixes. - [Replace Send-MgUserMessage](https://cli.nylas.com/guides/replace-send-mgusermessage): Migrate from Microsoft Graph PowerShell cmdlets (Send-MgUserMessage, New-MgMessage) to Nylas CLI. Side-by-side before/after examples. - [Send Gmail with OAuth2 in PowerShell](https://cli.nylas.com/guides/gmail-oauth-powershell): Send Gmail from PowerShell with OAuth2. Nylas CLI handles refresh tokens, service accounts, and Workspace consent — one command to authenticate and send. - [Read and Search Email in PowerShell](https://cli.nylas.com/guides/read-email-powershell): List unread, search by sender or date, extract bodies, pipe through Where-Object, and export to CSV. - [Download Email Attachments in PowerShell](https://cli.nylas.com/guides/download-attachments-powershell): Download and process email attachments from any provider using Nylas CLI in PowerShell. - [Automated Email Reports with PowerShell](https://cli.nylas.com/guides/powershell-email-reports): Query emails, aggregate with Group-Object, generate HTML reports, schedule with Task Scheduler. - [Automate Email and Calendar in PowerShell](https://cli.nylas.com/guides/email-calendar-powershell): Cross-provider email and calendar automation in PowerShell using Nylas CLI. - [Office 365 Email from PowerShell](https://cli.nylas.com/guides/office365-email-powershell): Manage Office 365 email from PowerShell without Microsoft Graph API complexity. - [Monitor Your Inbox with PowerShell](https://cli.nylas.com/guides/powershell-email-monitoring): Inbox monitoring and alerting scripts with PowerShell and Nylas CLI. - [CI/CD Email Alerts with PowerShell](https://cli.nylas.com/guides/powershell-email-cicd): Send build notifications, deployment reports, and test failure alerts from GitHub Actions, Azure DevOps, and Jenkins. - [iCloud Mail CLI: Read Emails from Terminal](https://cli.nylas.com/guides/list-icloud-emails): List, search, and read iCloud Mail from terminal without raw IMAP setup or app-specific passwords. - [IMAP CLI: Read Emails from Any Server](https://cli.nylas.com/guides/list-imap-emails): List, search, and read email from Fastmail, ProtonMail Bridge, Zoho, Dovecot, Zimbra, and corporate IMAP. - [Email as Memory for AI Agents](https://cli.nylas.com/guides/email-as-memory-for-ai-agents): Use email as persistent memory for AI agents — semantic, episodic, and procedural. Search and retrieve with Nylas CLI. - [Create a Manus Skill: Email & Calendar Workflow](https://cli.nylas.com/guides/manus-ai-skills): Create a Manus Skill that installs Nylas CLI in the sandbox and teaches your agent email and calendar workflows via SKILL.md and setup scripts. - [Install the OpenClaw Nylas Plugin](https://cli.nylas.com/guides/install-openclaw-nylas-plugin): Install the OpenClaw Nylas plugin, configure the API key, discover grants, and compare plugin vs exec. - [Install OpenClaw CLI for the Nylas Plugin](https://cli.nylas.com/guides/openclaw-cli-setup): Install OpenClaw, fix PATH issues, and add the @nylas/openclaw-nylas-plugin package for email, calendar, and contacts. - [Fix OpenClaw CLI Errors](https://cli.nylas.com/guides/troubleshoot-openclaw-cli): Troubleshoot openclaw not found, npm EACCES, Windows PATH, and Node.js version errors. - [Export Email Data to HubSpot](https://cli.nylas.com/guides/export-email-to-hubspot): Map email and contacts to HubSpot Contacts, Companies, and Engagements. CSV and API v3 sync. - [Export Email Data to Pipedrive](https://cli.nylas.com/guides/export-email-to-pipedrive): Map email and contacts to Pipedrive Persons, Organizations, Deals, and Activities. - [Export Email Data to Zoho CRM](https://cli.nylas.com/guides/export-email-to-zoho-crm): Map email and contacts to Zoho CRM Leads, Contacts, and Accounts. CSV and REST API v2. - [Export Email Data to Dynamics 365](https://cli.nylas.com/guides/export-email-to-dynamics-365): Sync inbox data to Dynamics 365 Contacts, Accounts, and Activities via CSV or Web API. - [Group Inbox by Corporate Email Domain](https://cli.nylas.com/guides/organize-emails-by-company): Organize email by sender domain, filter freemail, map subsidiaries, export to CSV. - [Reconstruct Org Charts from Email CC Patterns](https://cli.nylas.com/guides/contact-hierarchy-from-email): Infer reporting lines, detect managers, and estimate seniority from email response patterns. - [Parse Email Signatures for Contact Enrichment](https://cli.nylas.com/guides/enrich-contacts-from-email): Extract job titles, phone numbers, and LinkedIn URLs from email signatures. - [Visualize Communication Patterns Between Organizations](https://cli.nylas.com/guides/map-organization-contacts): Map inter-org communication networks, identify stakeholders, and score relationship strength. - [Build Shell-Integrated Email Autocomplete](https://cli.nylas.com/guides/email-autocomplete-cli): Fuzzy email autocomplete for bash, zsh, and fish using fzf and contact frequency ranking. - [CLI Mail Merge: Variable Substitution and Send-Time Optimization](https://cli.nylas.com/guides/personalize-outbound-email-cli): Mail merge from your terminal with variable substitution and timezone-aware scheduling. - [Model Email as a Graph: Neo4j and Network Analysis](https://cli.nylas.com/guides/import-email-graph-database): Import email relationships into Neo4j or NetworkX for shortest paths and community detection. - [Automate Email Draft Creation with Review Workflows](https://cli.nylas.com/guides/auto-create-email-drafts): Generate pre-filled drafts from templates, batch-create follow-ups, route for review. - [Mail Manus: Automate Email from CLI](https://cli.nylas.com/guides/mail-manus-email-automation): Forward emails to your Manus agent for action. Multi-provider inbox access and smart compose. - [Reach Inbox Zero with Manus AI](https://cli.nylas.com/guides/manus-inbox-zero): Triage unread email, categorize by urgency, draft replies, and archive with Manus AI. - [Build an Email Support Agent with Manus AI](https://cli.nylas.com/guides/manus-email-support-agent): Poll inbox, match against a knowledge base, draft replies, and send with human approval. - [Manus AI vs Claude Code for Email Automation](https://cli.nylas.com/guides/manus-vs-claude-code-email): Side-by-side comparison of Manus AI Skills and Claude Code MCP for email and calendar. - [Sync Email to CRM with Manus AI](https://cli.nylas.com/guides/manus-ai-crm-email): Extract contacts from inbox, enrich, and sync to Salesforce, HubSpot, or Pipedrive. - [Draft Personalized Emails with Manus AI](https://cli.nylas.com/guides/manus-email-drafter): Draft personalized emails at scale, review AI-generated drafts, then send in one command. - [Manus AI Email Research Agent](https://cli.nylas.com/guides/manus-email-research): Deep-search inbox, summarize threads, extract decisions, and compile research with Manus AI. - [Email Analytics with Manus AI](https://cli.nylas.com/guides/manus-email-analytics): Analyze email volume by sender, response times, busiest hours, and weekly reports. - [Manus AI Meeting Scheduler](https://cli.nylas.com/guides/manus-ai-meeting-scheduler): Schedule meetings with natural language. Check availability and create calendar events. - [Send Email from Linux/Manus Sandbox Without SMTP](https://cli.nylas.com/guides/send-email-manus-sandbox): Send email from a Linux or Manus sandbox over HTTPS when SMTP ports 25, 465, and 587 are blocked. No Postfix or sendmail needed. - [Add Nylas as a Manus MCP Server (manus-mcp-cli)](https://cli.nylas.com/guides/manus-mcp-cli-setup): Add Nylas to manus-mcp-cli as an MCP server. Step-by-step config so Manus agents can send email and manage calendars in the sandbox. - [Extract OTP Codes from Email](https://cli.nylas.com/guides/extract-otp-codes-from-email): Pull 2FA verification codes from email without opening your inbox. One command copies the code to your clipboard. - [Record Meetings from the CLI](https://cli.nylas.com/guides/record-meetings-from-terminal): Send a notetaker bot to any Zoom, Google Meet, or Teams call. Get the recording and transcript back. - [Receive Inbound Email](https://cli.nylas.com/guides/receive-inbound-email-cli): Create a managed email address and process incoming messages via webhooks. No SMTP server required. - [Best Email API for AI Agents: 6 Compared (2026)](https://cli.nylas.com/guides/email-apis-for-ai-agents-compared): Gmail API vs Microsoft Graph vs SendGrid vs IMAP vs Nylas CLI. 14-criteria comparison for AI agent email access. - [EWS to Microsoft Graph Migration](https://cli.nylas.com/guides/ews-to-graph-migration): EWS blocked Oct 2026. Timeline, auth changes (NTLM to OAuth 2.0), feature parity gaps, and three migration paths. - [Google Calendar Ownership Changes](https://cli.nylas.com/guides/google-calendar-ownership-changes): Personal accounts start Apr 27, 2026; Workspace starts Oct 5, 2026. New transfer API in June and a developer checklist. ## Commands - [Full command index markdown](https://cli.nylas.com/docs/commands.md): AI-readable index for the complete command reference, including command groups and every command page. - [nylas init](https://cli.nylas.com/docs/commands/init): Guided setup wizard — creates account, application, API key, and syncs email in one flow. - [nylas email send](https://cli.nylas.com/docs/commands/email-send): Send email with scheduling, GPG encryption, hosted templates, custom metadata, and tracking across 6 providers. - [nylas email list](https://cli.nylas.com/docs/commands/email-list): List emails with filtering by folder, sender, read status, and starred status; date-range filters live on email search. - [nylas email search](https://cli.nylas.com/docs/commands/email-search): Full-text search across your mailbox with provider-native query syntax. - [nylas email read](https://cli.nylas.com/docs/commands/email-read): Read a single email by ID with full headers, body, and attachment metadata. - [nylas email smart-compose](https://cli.nylas.com/docs/commands/email-smart-compose): AI-powered email drafting from a natural language prompt. - [nylas auth login](https://cli.nylas.com/docs/commands/auth-login): Authenticate with Gmail, Outlook, Exchange, Yahoo, iCloud, or IMAP via OAuth browser flow. - [nylas auth config](https://cli.nylas.com/docs/commands/auth-config): Configure API key credentials for headless or CI/CD environments. - [nylas mcp install](https://cli.nylas.com/docs/commands/mcp-install): Install MCP server for Claude Code, Cursor, Windsurf, or VS Code in one command. - [nylas mcp serve](https://cli.nylas.com/docs/commands/mcp-serve): Start the MCP server that exposes 16 email, calendar, and contacts tools to AI assistants. - [nylas calendar events list](https://cli.nylas.com/docs/commands/calendar-events-list): List calendar events with date range, calendar, and status filters. - [nylas calendar events create](https://cli.nylas.com/docs/commands/calendar-events-create): Create calendar events with attendees, location, reminders, and recurrence. - [nylas calendar find-time](https://cli.nylas.com/docs/commands/calendar-find-time): Find mutual free time across multiple calendars and timezones. - [nylas contacts list](https://cli.nylas.com/docs/commands/contacts-list): List contacts from your address book with search and filtering. - [nylas contacts search](https://cli.nylas.com/docs/commands/contacts-search): Search contacts by name, email, company, or phone number. - [nylas webhook create](https://cli.nylas.com/docs/commands/webhook-create): Create a webhook to receive real-time email, calendar, or contact change notifications. - [nylas chat](https://cli.nylas.com/docs/commands/chat): Launch an AI chat interface for natural language email and calendar interaction. ## Reference - [Guide Index](https://cli.nylas.com/guides.md): Markdown guide index for AI crawlers and coding agents. - [Command Reference](https://cli.nylas.com/docs/commands.md): Complete Markdown reference for 72+ commands across email, calendar, contacts, webhooks, MCP, Slack, and more. ## About - [About Nylas CLI](https://cli.nylas.com/about): Who builds Nylas CLI, our mission, values, editorial process, and how to get in touch. ## Optional - [Send Email from PowerShell](https://cli.nylas.com/guides/send-email-powershell): 10 PowerShell guides covering Send-MailMessage replacement, OAuth, HTML bodies, reports, Office 365, CI/CD, and inbox monitoring. - [CRM Email Workflows](https://cli.nylas.com/guides/crm-email-workflows): 8 guides to extract companies, contacts, org charts, and relationship graphs from email data. - [Export Email Data to Salesforce](https://cli.nylas.com/guides/export-email-to-salesforce): 5 CRM export guides covering Salesforce, HubSpot, Pipedrive, Zoho CRM, and Dynamics 365. - [Automate Email with Manus AI](https://cli.nylas.com/guides/manus-ai-email-tutorial): 11 Manus AI guides covering email automation, inbox zero, CRM sync, drafting, research, and analytics. - [OpenClaw + Nylas CLI](https://cli.nylas.com/guides/nylas-openclaw-personal-assistant): 4 OpenClaw guides covering the exec approach, native plugin installation, Nylas-specific CLI setup, and secure email access. - [Yahoo Mail CLI: Read Emails from Terminal](https://cli.nylas.com/guides/list-yahoo-emails): List, search, and read Yahoo Mail from terminal without IMAP setup or app-specific passwords. - [Outlook CLI: Send Email from Terminal](https://cli.nylas.com/guides/send-outlook-email-cli): Send Outlook and Microsoft 365 email from terminal without Graph API, Azure AD, MSAL, or SMTP config. - [Yahoo Mail CLI: Send Email from Terminal](https://cli.nylas.com/guides/send-yahoo-email-cli): Send Yahoo Mail from terminal without SMTP config or app passwords. Supports scheduled sends and CC/BCC. - [iCloud Mail CLI: Send Email from Terminal](https://cli.nylas.com/guides/send-icloud-email-cli): Send iCloud Mail from terminal. Works with custom domains and Hide My Email aliases. - [Outlook Calendar CLI: Manage Events](https://cli.nylas.com/guides/manage-outlook-calendar-cli): Create, list, and update Outlook calendar events. Book rooms and check availability from terminal. - [Google Calendar CLI: Manage Events from Terminal](https://cli.nylas.com/guides/manage-google-calendar-cli): Create, list, and update Google Calendar events from terminal without Google Calendar API setup. - [Yahoo Calendar CLI: Manage Events](https://cli.nylas.com/guides/manage-yahoo-calendar-cli): Create, list, and update Yahoo Calendar events from terminal. No CalDAV config required. - [iCloud Calendar CLI: Manage Events](https://cli.nylas.com/guides/manage-icloud-calendar-cli): Create, list, and update iCloud Calendar events from terminal. Skip CalDAV and app passwords. - [Exchange Calendar CLI: Manage Events](https://cli.nylas.com/guides/manage-exchange-calendar-cli): Create, list, and update Exchange calendar events. Book rooms without EWS, Graph API, or PowerShell. - [Email as Identity for AI Agents](https://cli.nylas.com/guides/email-as-identity-for-ai-agents): Conceptual guides on agent identity and email as persistent memory. - [Debugging Invisible Characters in Email](https://cli.nylas.com/guides/debugging-invisible-characters-email): Detect zero-width chars, BOM markers, and MIME encoding issues. - [Courier vs Nylas: Notifications vs Email](https://cli.nylas.com/guides/courier-vs-nylas): Courier.com is outbound multi-channel notification infrastructure (email, SMS, push, Slack); Nylas reads real mailboxes, syncs calendars, and supports AI agents bidirectionally. Scope comparison and use-case decision guide. - [GitHub Repository](https://github.com/nylas/cli): Source code, issues, and releases (MIT license). - [Nylas Agent Skills](https://github.com/nylas/skills): Drop-in skills for Claude Code, Cursor, GitHub Copilot, Codex CLI, and 30+ other AI coding agents. Bundles `nylas-cli` and `nylas-api` skill packs (MIT license). - [Nylas Developer Docs](https://developer.nylas.com): Full API documentation for the Nylas platform. - [Nylas Dashboard](https://dashboard-v3.nylas.com/register?utm_source=https%3A%2F%2Fcli.nylas.com%2F&utm_medium=website&utm_campaign=cli&utm_id=cli): Manage grants, applications, and API keys.