CLI Commands

Complete reference for all PortEden CLI commands.

Calendar Commands

CommandDescription
porteden calendar calendarsList all accessible calendars
porteden calendar eventsList or search events
porteden calendar event <id>Get a single event
porteden calendar createCreate a new event
porteden calendar update <id>Update an existing event
porteden calendar delete <id>Delete an event
porteden calendar respond <id>Respond to an invitation
porteden calendar freebusyCheck free/busy availability
porteden calendar by-contactFind events by contact

Email Commands

CommandDescription
porteden email messagesList or search emails
porteden email message <id>Get a single email
porteden email thread <id>Get an email thread
porteden email sendSend a new email
porteden email reply <id>Reply to an email
porteden email forward <id>Forward an email
porteden email modify <id>Modify email properties
porteden email delete <id>Delete an email

List Calendars

Returns all calendars accessible to your account, including their IDs (needed for creating events).

porteden calendar calendars

List Events

List events with convenient time range shortcuts or custom date ranges.

# Today
porteden calendar events --today
# Tomorrow
porteden calendar events --tomorrow
# This week
porteden calendar events --week
# Next N days
porteden calendar events --days 14
# Custom date range
porteden calendar events --from 2026-03-01 --to 2026-03-31
# Filter by calendar
porteden calendar events --today --calendar 12345
# Include cancelled events
porteden calendar events --today --include-cancelled

Use the -q flag to search event titles, descriptions, and locations:

porteden calendar events -q "standup" --today
porteden calendar events -q "budget review" --week
porteden calendar events -q "offsite" --from 2026-03-01 --to 2026-06-30

Filter by attendee:

porteden calendar events -q "sync" --week --attendees "jane@acme.com"

Get a Single Event

porteden calendar event <eventId>

Create an Event

porteden calendar create \
--calendar 1 \
--summary "Team Standup" \
--from "2026-02-10T10:00:00Z" \
--to "2026-02-10T10:30:00Z" \
--description "Daily sync" \
--location "Conference Room A" \
--attendees "alice@acme.com,bob@acme.com"

All-day event:

porteden calendar create \
--calendar 1 \
--summary "Company Offsite" \
--from "2026-03-15T00:00:00Z" \
--to "2026-03-16T00:00:00Z" \
--all-day
FlagRequiredDescription
--calendarYesCalendar ID to create the event in
--summaryYesEvent title
--fromYesStart time (ISO 8601)
--toYesEnd time (ISO 8601)
--descriptionNoEvent description
--locationNoEvent location
--attendeesNoComma-separated email addresses
--all-dayNoMark as all-day event
--recurrenceNoRecurrence rule

Update an Event

All fields are optional — only specify what you want to change:

# Change the title
porteden calendar update <eventId> --summary "New Title"
# Reschedule
porteden calendar update <eventId> \
--from "2026-02-10T14:00:00Z" \
--to "2026-02-10T15:00:00Z"
# Change location
porteden calendar update <eventId> --location "Room B"
# Add or remove attendees
porteden calendar update <eventId> --add-attendees "new@acme.com" --notify
porteden calendar update <eventId> --remove-attendees "old@acme.com"

Delete an Event

porteden calendar delete <eventId>
# Skip attendee notifications
porteden calendar delete <eventId> --no-notify

Respond to an Invitation

porteden calendar respond <eventId> accepted
porteden calendar respond <eventId> declined
porteden calendar respond <eventId> tentative

Check Free/Busy

porteden calendar freebusy --today
porteden calendar freebusy --week
porteden calendar freebusy --from 2026-02-10 --to 2026-02-14
# Check specific calendars
porteden calendar freebusy --week --calendars 123,456

Find Events by Contact

Look up all events shared with a specific person:

# By email
porteden calendar by-contact "jane@acme.com"
# By name
porteden calendar by-contact --name "Jane Smith"
# Partial match (everyone at a domain)
porteden calendar by-contact "@acme.com"

List / Search Emails

List emails with time range shortcuts, filters, and keyword search.

# Recent emails
porteden email messages
# Today's emails
porteden email messages --today
# This week
porteden email messages --week
# Last N days
porteden email messages --days 30
# Specific date range
porteden email messages --after 2026-02-01 --before 2026-02-07
# Filter by sender
porteden email messages --from boss@example.com
# Filter by recipient
porteden email messages --to team@example.com
# Filter by subject
porteden email messages --subject "invoice"
# Search with keyword
porteden email messages -q "project update"
# Unread only
porteden email messages --unread
# Emails with attachments
porteden email messages --has-attachment
# Filter by label
porteden email messages --label IMPORTANT
# Include full email body
porteden email messages --include-body
# Combine filters
porteden email messages --from boss@example.com --unread --today

Pagination

# Fetch all pages automatically
porteden email messages --week --all
# Manual pagination (limit per page)
porteden email messages --limit 10

Get a Single Email

porteden email message <emailId>
# Without body content
porteden email message <emailId> --include-body=false

Get Email Thread

porteden email thread <threadId>

Send Email

# Basic send
porteden email send --to user@example.com --subject "Hello" --body "Hi there"
# With CC/BCC
porteden email send \
--to user@example.com \
--cc team@example.com \
--bcc manager@example.com \
--subject "Update" \
--body "Here's the update"
# With named recipients
porteden email send --to "John Doe <john@example.com>" --subject "Hi" --body "Hello John"
# Read body from file
porteden email send --to user@example.com --subject "Report" --body-file report.html
# Plain text body
porteden email send --to user@example.com --subject "Note" --body "Plain text" --body-type text
# High importance
porteden email send --to user@example.com --subject "Urgent" --body "Please review" --importance high
# Send from specific connection
porteden email send --to user@example.com --subject "Hi" --body "Hello" --connection-id 42
FlagRequiredDescription
--toYesRecipient email address
--subjectYesEmail subject line
--bodyYes*Email body content (*or use --body-file)
--ccNoCC recipient(s)
--bccNoBCC recipient(s)
--body-fileNoRead body content from a file
--body-typeNoBody type: html (default) or text
--importanceNoEmail importance: low, normal, or high
--connection-idNoSend from a specific email connection

Reply to Email

# Reply to sender
porteden email reply <emailId> --body "Thanks for the update"
# Reply all
porteden email reply <emailId> --body "Noted, thanks everyone" --reply-all
# Reply with body from file
porteden email reply <emailId> --body-file reply.html

Forward Email

# Forward to one recipient
porteden email forward <emailId> --to colleague@example.com
# Forward with a message
porteden email forward <emailId> --to colleague@example.com --body "FYI - see below"
# Forward to multiple recipients with CC
porteden email forward <emailId> --to user1@example.com --cc user2@example.com

Delete Email

porteden email delete <emailId>

Modify Email Properties

# Mark as read
porteden email modify <emailId> --mark-read
# Mark as unread
porteden email modify <emailId> --mark-unread
# Add labels
porteden email modify <emailId> --add-labels IMPORTANT,STARRED
# Remove labels
porteden email modify <emailId> --remove-labels INBOX
# Combine modifications
porteden email modify <emailId> --mark-read --add-labels IMPORTANT

Need help with a command?

Run porteden <command> --help for detailed usage information on any command.