Task Prompt
Check my emails from the past day. If any mention the COML conference main-track camera-ready deadline, schedule a calendar reminder for me three hours before that deadline.
Check the past day's email for a change to the COML main-track camera-ready deadline, and put a calendar reminder three hours before it.
Check my emails from the past day. If any mention the COML conference main-track camera-ready deadline, schedule a calendar reminder for me three hours before that deadline.
---
name: workspace-filesystem
description: The virtual filesystem layout of this workspace.
---
# Virtual Filesystem
You work in a terminal over a virtual filesystem. Read files with shell
commands; service operations are listed in SKILL.md.
| Path | Description |
|---|---|
| `/workspace` | Agent workspace; current directory and home (`~`). |
| `/tmp` | Temporary files. |
| `/dev` | Device files: `null` and `zero` (mounted automatically). |
| `/mail` | Mailbox, read-only. Directories are IMAP folders; change them with the `emails` CLI. |
## `/mail` layout
```
/mail/<folder>/<yyyy-mm-dd>/<subject>__<uid>.email.json
/mail/<folder>/<yyyy-mm-dd>/<subject>__<uid>/<attachment>
```
Folders include `INBOX`, `Sent`, `Drafts`. Read message JSON and attachments
with shell commands. Subjects are sanitized; list directories to find paths.| name | workspace-filesystem |
|---|---|
| description | The virtual filesystem layout of this workspace. |
Virtual Filesystem
You work in a terminal over a virtual filesystem. Read files with shell commands; service operations are listed in SKILL.md.
| Path | Description |
|---|---|
/workspace | Agent workspace; current directory and home (~). |
/tmp | Temporary files. |
/dev | Device files: null and zero (mounted automatically). |
/mail | Mailbox, read-only. Directories are IMAP folders; change them with the emails CLI. |
/mail layout
/mail/<folder>/<yyyy-mm-dd>/<subject>__<uid>.email.json
/mail/<folder>/<yyyy-mm-dd>/<subject>__<uid>/<attachment>Folders include INBOX, Sent, Drafts. Read message JSON and attachments with shell commands. Subjects are sanitized; list directories to find paths.
---
name: workspace-commands
description: The shell commands, task tools, and python3 interpreter available in this workspace.
---
# Available commands
Standard Unix commands, among them:
cat head tail ls find grep wc sort uniq cut tr sed awk
diff tee xargs jq unzip curl
with pipes, `>` redirection, `$(...)` substitution and `$'...'`.
The task CLIs below are registered with this shell rather than installed
as files; do not inspect them with `which`, `file` or `/usr/bin`.
## emails
Use `emails <command> '<JSON arguments>'`. Run `emails <command> --help` to
get more information.
| Command | Arguments | Description |
|---|---|---|
| `emails get-emails` | `{folder?: str = "INBOX", page?: int = 1, page_size?: int = 20}` | Get paginated list of emails from specified folder Args: folder: Email folder name (default: INBOX) page: Page number starting from 1 (default: 1) page_size: Number of emails per page (default: 20) |
| `emails read-email` | `{email_id: str}` | Read full content of a specific email Args: email_id: Email ID to read |
| `emails search-emails` | `{query: str, folder?: str = "INBOX", page?: int = 1, page_size?: int = 20}` | Search emails with query string (sorted by date descending) Args: query: Search query (subject, from, body content) folder: Folder to search in (default: INBOX) page: Page number starting from 1 (default: 1) page_size: Number of results per page (default: 20) |
| `emails send-email` | `{to: str, subject: str, body: str, html_body?: str = null, cc?: str = null, bcc?: str = null, attachments?: list[str] = null}` | Send an email with optional HTML body, CC, BCC, and attachments Args: to: Recipient email address(es), comma-separated subject: Email subject body: Plain text body html_body: HTML body content (optional) cc: CC recipients, comma-separated (optional) bcc: BCC recipients, comma-separated (optional) attachments: List of file paths to attach (optional) |
| `emails reply-email` | `{email_id: str, body: str, html_body?: str = null, cc?: str = null, bcc?: str = null, reply_all?: bool = false}` | Reply to an email Args: email_id: ID of email to reply to body: Reply message body (plain text) html_body: Reply message body (HTML, optional) cc: Additional CC recipients (optional) bcc: BCC recipients (optional) reply_all: Whether to reply to all recipients (default: False) |
| `emails forward-email` | `{email_id: str, to: str, body?: str = null, html_body?: str = null, cc?: str = null, bcc?: str = null}` | Forward an email to other recipients Args: email_id: ID of email to forward to: Recipients to forward to body: Additional message body (optional) html_body: Additional HTML message body (optional) cc: CC recipients (optional) bcc: BCC recipients (optional) |
| `emails delete-email` | `{email_id: str}` | Delete an email Args: email_id: Email ID to delete |
| `emails move-email` | `{email_id: str, target_folder: str}` | Move email to another folder Args: email_id: Email ID to move target_folder: Target folder name |
| `emails mark-emails` | `{email_ids: list[str], status: str}` | Mark multiple emails with status (read/unread/important/not_important) Args: email_ids: List of email IDs to mark status: Status to set (read, unread, important, not_important) |
| `emails move-emails` | `{email_ids: list[str], target_folder: str}` | Move multiple emails to another folder with improved ID synchronization Args: email_ids: List of email IDs to move target_folder: Target folder name |
| `emails delete-emails` | `{email_ids: list[str]}` | Delete multiple emails with improved ID synchronization Args: email_ids: List of email IDs to delete |
| `emails get-folders` | `{}` | Get list of available email folders |
| `emails create-folder` | `{folder_name: str}` | Create new email folder Args: folder_name: Name of folder to create |
| `emails delete-folder` | `{folder_name: str}` | Delete email folder Args: folder_name: Name of folder to delete |
| `emails get-mailbox-stats` | `{folder_name?: str = null}` | Get mailbox statistics Args: folder_name: Specific folder name (optional, defaults to all folders) |
| `emails get-unread-count` | `{folder_name?: str = null}` | Get unread message count Args: folder_name: Specific folder name (optional, defaults to all folders) |
| `emails check-connection` | `{}` | Check email server connection status |
| `emails get-email-headers` | `{email_id: str}` | Get complete email headers for technical analysis Args: email_id: Email ID to get headers for |
| `emails save-draft` | `{subject: str, body: str, html_body?: str = null, to?: str = null, cc?: str = null, bcc?: str = null}` | Save email draft Args: subject: Email subject body: Plain text body html_body: HTML body content (optional) to: Recipient email address(es) (optional) cc: CC recipients (optional) bcc: BCC recipients (optional) |
| `emails get-drafts` | `{page?: int = 1, page_size?: int = 20}` | Get list of saved drafts Args: page: Page number starting from 1 (default: 1) page_size: Number of drafts per page (default: 20) |
| `emails update-draft` | `{draft_id: str, subject?: str = null, body?: str = null, html_body?: str = null, to?: str = null, cc?: str = null, bcc?: str = null}` | Update existing draft Args: draft_id: Draft ID to update subject: Email subject (optional) body: Plain text body (optional) html_body: HTML body content (optional) to: Recipient email address(es) (optional) cc: CC recipients (optional) bcc: BCC recipients (optional) |
| `emails delete-draft` | `{draft_id: str}` | Delete draft Args: draft_id: Draft ID to delete |
| `emails export-emails` | `{folder?: str = null, export_path?: str = "emails_export.json", max_emails?: int = null, export_all_folders?: bool = false}` | Export emails to file for backup Args: folder: Specific folder to export (mutually exclusive with export_all_folders) export_path: Path where to save the export file max_emails: Maximum number of emails to export (optional, exports all if not specified) export_all_folders: Export from all folders instead of just one (default: False) |
| `emails import-emails` | `{import_path: str, target_folder?: str = null, preserve_folders?: bool = true}` | Import emails from backup file to IMAP server Args: import_path: Path to import file (.json or .eml) or a directory target_folder: Target folder for imported emails (if preserve_folders=False) preserve_folders: Whether to preserve original folder structure (default: True) |
| `emails download-attachment` | `{email_id: str, attachment_filename: str}` | Download email attachment to configured download path Args: email_id: Email ID containing the attachment attachment_filename: Name of attachment to download |
## google-calendar
Use `google-calendar <command> '<JSON arguments>'`. Run
`google-calendar <command> --help` to get more information.
| Command | Arguments | Description |
|---|---|---|
| `google-calendar create-event` | `{summary: str, start: {dateTime: str, timeZone?: str}, end: {dateTime: str, timeZone?: str}, description?: str, location?: str}` | Creates a new event in Google Calendar — `summary`: Event title; `start.dateTime`: Start time (ISO format); `start.timeZone`: Time zone; `end.dateTime`: End time (ISO format); `end.timeZone`: Time zone; `description`: Event description; `location`: Event location |
| `google-calendar get-event` | `{eventId: str}` | Retrieves details of a specific event — `eventId`: ID of the event to retrieve |
| `google-calendar update-event` | `{eventId: str, summary?: str, start?: {dateTime: str, timeZone?: str}, end?: {dateTime: str, timeZone?: str}, description?: str, location?: str}` | Updates an existing event — `eventId`: ID of the event to update; `summary`: New event title; `start.dateTime`: New start time (ISO format); `start.timeZone`: Time zone; `end.dateTime`: New end time (ISO format); `end.timeZone`: Time zone; `description`: New event description; `location`: New event location |
| `google-calendar delete-event` | `{eventId: str}` | Deletes an event from the calendar — `eventId`: ID of the event to delete |
| `google-calendar list-events` | `{timeMin: str, timeMax: str, maxResults?: number, orderBy?: "startTime" \| "updated"}` | Lists events within a specified time range — `timeMin`: Start of time range (ISO format); `timeMax`: End of time range (ISO format); `maxResults`: Maximum number of events to return; `orderBy`: Sort order |
## python3
Execute Python code directly under the agent workspace and return stdout
and stderr. Code can be pasted into a `.py` file and run with `python3`.
Python cannot launch subprocesses or make direct network requests. Run the
documented service commands directly in the shell. Use Python for local
file processing and generating JSON arguments.| name | workspace-commands |
|---|---|
| description | The shell commands, task tools, and python3 interpreter available in this workspace. |
Available commands
Standard Unix commands, among them:
cat head tail ls find grep wc sort uniq cut tr sed awk
diff tee xargs jq unzip curlwith pipes, > redirection, $(...) substitution and $'...'.
The task CLIs below are registered with this shell rather than installed as files; do not inspect them with which, file or /usr/bin.
emails
Use emails <command> '<JSON arguments>'. Run emails <command> --help to get more information.
| Command | Arguments | Description |
|---|---|---|
emails get-emails | {folder?: str = "INBOX", page?: int = 1, page_size?: int = 20} | Get paginated list of emails from specified folder Args: folder: Email folder name (default: INBOX) page: Page number starting from 1 (default: 1) page_size: Number of emails per page (default: 20) |
emails read-email | {email_id: str} | Read full content of a specific email Args: email_id: Email ID to read |
emails search-emails | {query: str, folder?: str = "INBOX", page?: int = 1, page_size?: int = 20} | Search emails with query string (sorted by date descending) Args: query: Search query (subject, from, body content) folder: Folder to search in (default: INBOX) page: Page number starting from 1 (default: 1) page_size: Number of results per page (default: 20) |
emails send-email | {to: str, subject: str, body: str, html_body?: str = null, cc?: str = null, bcc?: str = null, attachments?: list[str] = null} | Send an email with optional HTML body, CC, BCC, and attachments Args: to: Recipient email address(es), comma-separated subject: Email subject body: Plain text body html_body: HTML body content (optional) cc: CC recipients, comma-separated (optional) bcc: BCC recipients, comma-separated (optional) attachments: List of file paths to attach (optional) |
emails reply-email | {email_id: str, body: str, html_body?: str = null, cc?: str = null, bcc?: str = null, reply_all?: bool = false} | Reply to an email Args: email_id: ID of email to reply to body: Reply message body (plain text) html_body: Reply message body (HTML, optional) cc: Additional CC recipients (optional) bcc: BCC recipients (optional) reply_all: Whether to reply to all recipients (default: False) |
emails forward-email | {email_id: str, to: str, body?: str = null, html_body?: str = null, cc?: str = null, bcc?: str = null} | Forward an email to other recipients Args: email_id: ID of email to forward to: Recipients to forward to body: Additional message body (optional) html_body: Additional HTML message body (optional) cc: CC recipients (optional) bcc: BCC recipients (optional) |
emails delete-email | {email_id: str} | Delete an email Args: email_id: Email ID to delete |
emails move-email | {email_id: str, target_folder: str} | Move email to another folder Args: email_id: Email ID to move target_folder: Target folder name |
emails mark-emails | {email_ids: list[str], status: str} | Mark multiple emails with status (read/unread/important/not_important) Args: email_ids: List of email IDs to mark status: Status to set (read, unread, important, not_important) |
emails move-emails | {email_ids: list[str], target_folder: str} | Move multiple emails to another folder with improved ID synchronization Args: email_ids: List of email IDs to move target_folder: Target folder name |
emails delete-emails | {email_ids: list[str]} | Delete multiple emails with improved ID synchronization Args: email_ids: List of email IDs to delete |
emails get-folders | {} | Get list of available email folders |
emails create-folder | {folder_name: str} | Create new email folder Args: folder_name: Name of folder to create |
emails delete-folder | {folder_name: str} | Delete email folder Args: folder_name: Name of folder to delete |
emails get-mailbox-stats | {folder_name?: str = null} | Get mailbox statistics Args: folder_name: Specific folder name (optional, defaults to all folders) |
emails get-unread-count | {folder_name?: str = null} | Get unread message count Args: folder_name: Specific folder name (optional, defaults to all folders) |
emails check-connection | {} | Check email server connection status |
emails get-email-headers | {email_id: str} | Get complete email headers for technical analysis Args: email_id: Email ID to get headers for |
emails save-draft | {subject: str, body: str, html_body?: str = null, to?: str = null, cc?: str = null, bcc?: str = null} | Save email draft Args: subject: Email subject body: Plain text body html_body: HTML body content (optional) to: Recipient email address(es) (optional) cc: CC recipients (optional) bcc: BCC recipients (optional) |
emails get-drafts | {page?: int = 1, page_size?: int = 20} | Get list of saved drafts Args: page: Page number starting from 1 (default: 1) page_size: Number of drafts per page (default: 20) |
emails update-draft | {draft_id: str, subject?: str = null, body?: str = null, html_body?: str = null, to?: str = null, cc?: str = null, bcc?: str = null} | Update existing draft Args: draft_id: Draft ID to update subject: Email subject (optional) body: Plain text body (optional) html_body: HTML body content (optional) to: Recipient email address(es) (optional) cc: CC recipients (optional) bcc: BCC recipients (optional) |
emails delete-draft | {draft_id: str} | Delete draft Args: draft_id: Draft ID to delete |
emails export-emails | {folder?: str = null, export_path?: str = "emails_export.json", max_emails?: int = null, export_all_folders?: bool = false} | Export emails to file for backup Args: folder: Specific folder to export (mutually exclusive with export_all_folders) export_path: Path where to save the export file max_emails: Maximum number of emails to export (optional, exports all if not specified) export_all_folders: Export from all folders instead of just one (default: False) |
emails import-emails | {import_path: str, target_folder?: str = null, preserve_folders?: bool = true} | Import emails from backup file to IMAP server Args: import_path: Path to import file (.json or .eml) or a directory target_folder: Target folder for imported emails (if preserve_folders=False) preserve_folders: Whether to preserve original folder structure (default: True) |
emails download-attachment | {email_id: str, attachment_filename: str} | Download email attachment to configured download path Args: email_id: Email ID containing the attachment attachment_filename: Name of attachment to download |
google-calendar
Use google-calendar <command> '<JSON arguments>'. Run google-calendar <command> --help to get more information.
| Command | Arguments | Description | |
|---|---|---|---|
google-calendar create-event | {summary: str, start: {dateTime: str, timeZone?: str}, end: {dateTime: str, timeZone?: str}, description?: str, location?: str} | Creates a new event in Google Calendar — summary: Event title; start.dateTime: Start time (ISO format); start.timeZone: Time zone; end.dateTime: End time (ISO format); end.timeZone: Time zone; description: Event description; location: Event location | |
google-calendar get-event | {eventId: str} | Retrieves details of a specific event — eventId: ID of the event to retrieve | |
google-calendar update-event | {eventId: str, summary?: str, start?: {dateTime: str, timeZone?: str}, end?: {dateTime: str, timeZone?: str}, description?: str, location?: str} | Updates an existing event — eventId: ID of the event to update; summary: New event title; start.dateTime: New start time (ISO format); start.timeZone: Time zone; end.dateTime: New end time (ISO format); end.timeZone: Time zone; description: New event description; location: New event location | |
google-calendar delete-event | {eventId: str} | Deletes an event from the calendar — eventId: ID of the event to delete | |
google-calendar list-events | `{timeMin: str, timeMax: str, maxResults?: number, orderBy?: "startTime" \ | "updated"}` | Lists events within a specified time range — timeMin: Start of time range (ISO format); timeMax: End of time range (ISO format); maxResults: Maximum number of events to return; orderBy: Sort order |
python3
Execute Python code directly under the agent workspace and return stdout and stderr. Code can be pasted into a .py file and run with python3.
Python cannot launch subprocesses or make direct network requests. Run the documented service commands directly in the shell. Use Python for local file processing and generating JSON arguments.
| Model | VFS | MCP | VFS Tokens | MCP Tokens | Token Reduction Rate |
|---|---|---|---|---|---|
| Claude Opus 5.5 | 1/1 | 1/1 | 54.7k | 74.8k | 27% |
| GPT-6.1 Sol | 1/1 | 1/1 | 26.0k | 45.2k | 42% |
| GPT-5.6 Luna | 1/1 | 1/1 | 57.5k | 27.7k | −107% |
| Claude Haiku 5.5 | 1/1 | 1/1 | 235k | 173k | −35% |
| Gemini 3.8 Flash | 1/1 | 0/1 | 2.22M | 5.39M | 59% |