Reference data
Label colors, view icons, the filter grammar, AI label rule and auto-forward options, icon names, folders and scheduling rules used by the MCP tools.
The facts on this page are the ones the server itself serves to the assistant with get_reference (one topic, or all) and as MCP resources maylee://reference/<topic>. They are generated from the same data, so they always match what the tools accept.
Label colors
Labels and AI labels use one of seven color names, case-sensitive. The MCP server refuses hex values and other names: the app would show them without color.
PinkBlueRedYellowGreenPurpleOrangeA new manual label gets Pink in the app, and new AI labels rotate through the list in this order.
View icons
A view icon is exactly one emoji, not an icon name or text. These are the 48 emojis of the app picker. Most other single emojis are accepted too, but long combined emojis (several emojis joined, such as â¤ī¸âđĨ or đŠđŊâđģ) cannot be stored and are refused.
Smileys
Objects
Symbols
A new view gets đ in the app.
Filter grammar
The grammar of view filters (create_view, update_view) and of the filters parameter of list_emails. It differs from the REST filter tree: conditions use field, operator and value, and groups add one level of nesting. Unlike the REST API, invalid dates are rejected, never ignored.
FilterSpec = {
match: 'all' | 'any'
conditions: Condition[]
groups?: { match: 'all' | 'any'; conditions: Condition[] }[]
}
Condition = { field, operator, value? }| Field | Operators | Value | Meaning |
|---|---|---|---|
mailbox | isis_not | mailbox id (from list_mailboxes) | The email belongs (is) or does not belong (is_not) to that mailbox. |
label | containsnot_contains | MANUAL label id (from list_labels, isAiLabel false) | The email has (contains) or does not have (not_contains) that manual label. An AI label id here matches nothing: use ai_label. |
ai_label | containsnot_contains | AI label id (from list_labels, isAiLabel true) | The email has or does not have that AI label. |
keyword_subject | containsnot_contains | text | The subject contains (or does not contain) the text, ignoring case. |
sender_address | equalscontains | email address or fragment | Compares the sender ADDRESS only (not the display name), ignoring case. |
sender_domain | equalscontains | domain such as acme.com | equals: the sender address ends with @domain (subdomains do not match). contains: the text appears anywhere in the sender address, local part included. |
date | beforeafterbetween | ISO 8601 date-time; for between, "start|end" (both inclusive) | Email date. before and after are strict (the instant itself is excluded); between includes both ends. A bare date such as 2026-09-30 means 00:00 UTC that day, so end a range with T23:59:59.999Z. Invalid dates are rejected. |
read_status | is_trueis_false | none (omit value) | is_true = read, is_false = unread. |
has_attachment | is_trueis_false | none (omit value) | The email has attachments (is_true) or not (is_false). |
- match all = every condition and group must hold; match any = at least one.
- groups add one level of nesting: each group has its own match and conditions.
- There is no folder field: choose the folder with list_emails folder (views show INBOX by default).
- Only label, ai_label and keyword_subject have a negative operator (not_contains); a sender cannot be excluded with this grammar.
- Label conditions take label ids, never names.
- At most 50 conditions in total, 500 characters per value.
- Queries are stopped after 10 seconds (QUERY_TIMEOUT).
Newsletters from two domains
{
"match": "any",
"conditions": [
{
"field": "sender_domain",
"operator": "equals",
"value": "substack.com"
},
{
"field": "sender_domain",
"operator": "equals",
"value": "mailchimp.com"
}
]
}Unread invoices received in September 2026
{
"match": "all",
"conditions": [
{
"field": "ai_label",
"operator": "contains",
"value": "<id of the Invoices AI label>"
},
{
"field": "read_status",
"operator": "is_false"
},
{
"field": "date",
"operator": "between",
"value": "2026-09-01T00:00:00.000Z|2026-09-30T23:59:59.999Z"
}
]
}Emails with attachments from client-a.com or client-b.com, except newsletters
{
"match": "all",
"conditions": [
{
"field": "has_attachment",
"operator": "is_true"
},
{
"field": "keyword_subject",
"operator": "not_contains",
"value": "newsletter"
}
],
"groups": [
{
"match": "any",
"conditions": [
{
"field": "sender_domain",
"operator": "equals",
"value": "client-a.com"
},
{
"field": "sender_domain",
"operator": "equals",
"value": "client-b.com"
}
]
}
]
}AI label rules
An AI label rule is an AI label plus a plain-language condition. Maylee reads each new incoming email and applies the label when the condition matches. A rule can also prepare a reply draft (Auto-Draft), send it automatically (Auto-Reply) and hide matching emails from the main inbox.
| Field | Type | Default | Meaning |
|---|---|---|---|
name | string, 1 to 50 characters | required | Name of the AI label, unique among all labels (manual and AI). A duplicate fails with DUPLICATE_RULE. |
color | one of Pink, Blue, Red, Yellow, Green, Purple, Orange | required | Color of the AI label chip. |
condition | string, 1 to 500 characters | required | Plain-language criterion that Maylee's AI reads for every new incoming email, for example "Invoices, receipts or payment reminders from suppliers". |
autoDraftEnabled | boolean | false | Auto-Draft: Maylee writes a reply draft (Magic Reply) for matching INBOX emails less than 24 hours old. Premium or Expert plan. |
autoReplyEnabled | boolean | false | Auto-Reply: Maylee also SENDS that draft automatically. Requires autoDraftEnabled, a Premium or Expert plan, the Send permission and confirm true. |
autoReplyConfidenceThreshold | integer 0 to 100 | 85 | The draft is sent only if Maylee's confidence is at least this value; otherwise it stays in Drafts for review. When several rules match one email, the lowest threshold wins. The app's slider starts at 50. |
autoReplyDelayMinutes | integer 0 to 15 | 0 | Wait before sending, so the user can cancel (cancel_auto_reply). |
autoReplyNotifyOnSend | boolean | true | Saved with the rule and shown in the app, but it has no effect today: notifications about automatic replies follow the user notification settings (event autoReply, see get_notification_settings). |
hideFromInbox | boolean | false | Keep matching emails out of the main inbox. They stay in the INBOX folder and are listed with list_emails systemView hidden_by_filters and in views. |
- Classification is available on every plan and applies to INBOX emails synced after the rule exists. Each classified email uses the workspace monthly AI allowance, shared with Magic Reply and Auto-Draft; when it runs out, AI features pause until the 1st of the month.
- Maylee has no notification that fires when a label is applied. The labels entries of update_notification_settings only mute or allow notifications about emails that carry an AI label.
- classify_existing_emails applies the rules to emails already in the inbox (labels only: it never drafts, replies or forwards).
- Deleting a rule deletes its AI label, which is removed from every email (emails are not deleted).
- AI labels cannot be renamed or recolored with the label tools: use update_ai_label_rule.
Auto-forward rules
A rule forwards every new matching inbox email to another address, automatically.
| conditionField | conditionValue | Note |
|---|---|---|
label | exact NAME of an AI label, ignoring case | Rules run once, when an email arrives, right after AI labeling: only AI labels trigger them, a manual label added later never does. Renaming the label breaks the rule; changing its AI rule changes what is forwarded. |
sender_contains | text | Checked against the sender address and the sender display name, ignoring case. |
sender_equals | address or display name | Full match against the sender address or display name, ignoring case. |
subject_contains | text | The subject contains the text, ignoring case. |
subject_equals | text | The subject equals the text, ignoring case. |
| mode | Meaning |
|---|---|
normal | Standard forward: subject prefixed with "Fwd:", original quoted below a forwarded-message header. |
invisible | The email is passed on unchanged (same subject and body, attachments included) with Reply-To set to the original sender, so the recipient answers the sender directly. |
- Rules run on new INBOX emails received less than 24 hours ago, from the moment the rule exists.
- Forwarding to one of the workspace's own mailboxes or back to the original sender is ignored.
- When several rules target the same destination, the first matching rule wins.
- Failed forwards are not retried. get_auto_forward_logs shows the last 50 attempts of a rule.
- Creating or changing a rule needs the Send permission and confirm true: it sends the user's email to a third party automatically and continuously.
Inbox filters
| type | value |
|---|---|
sender | exact email address (stored lowercased) |
domain | domain such as acme.com (a leading @ is removed; subdomains do not match) |
subject | text contained in the subject, ignoring case |
label | label id (manual or AI) |
- Inbox filters hide matching emails from the main inbox only; they are not moved or deleted.
- Filters are evaluated when the inbox is displayed, so they apply to past emails too and deleting a filter brings the emails back.
- Custom views and other folders are never reduced by inbox filters.
- Hidden emails are listed with list_emails systemView hidden_by_filters.
Snippet icons
Snippets (called smart links in the app) use one of these icon names, exactly as written:
CalendarPhoneAt SignLinkFileMessageBookmarkHashClockLocationStarHeartBriefcaseUsersShieldIdeaSendZapSparklesPen
Signature icons
PencilSignatureUsersShieldIdeaSendZapSparklesPen
Folders and system views
| Folder | Meaning |
|---|---|
INBOX | Received emails. |
SENT | Sent emails. |
DRAFTS | Drafts, including scheduled drafts (list them with systemView scheduled). |
SPAM | Spam. |
TRASH | Trash. move_emails with destination INBOX restores emails from here. |
- There is no Archive in Maylee. Provider folders such as Archive or custom Gmail labels are reported as folder OTHER.
- Emails can be moved to INBOX or SPAM, and sent to TRASH with trash_emails. Drafts cannot be moved.
- list_emails folder ALL covers every folder including spam and trash.
| systemView | Meaning |
|---|---|
waiting_for_reply | Sent emails that Maylee thinks still expect an answer, oldest first. dismiss_waiting_for_reply removes emails from it. |
scheduled | Drafts scheduled to be sent, oldest first. |
hidden_by_filters | INBOX emails hidden from the main inbox by inbox filters or by AI labels with hideFromInbox. |
Scheduling
sendAt is YYYY-MM-DDTHH:mm, local wall-clock time in the workspace timezone, without offset, for example 2026-10-01T09:30. Allowed from 60 seconds to 365 days ahead.
| Status | Meaning |
|---|---|
PENDING | Waiting for its time. |
QUEUED | Picked up for sending. |
SENDING | Being sent; it can no longer be cancelled. |
FAILED | Sending failed; the draft stays in Drafts and can be rescheduled. |
- The workspace timezone must be set once before scheduling (set_workspace_timezone). get_workspace tells whether it is set.
- Once sent, a scheduled draft leaves Drafts and appears in Sent.
- Daylight saving time: an ambiguous local time uses its first occurrence; a local time that does not exist is moved forward.
- cancel_scheduled_send turns it back into an ordinary draft.
Resources
The same reference, one Markdown resource per topic, for clients that read MCP resources:
| Resource | Content |
|---|---|
maylee://reference/overview | What a Maylee workspace contains and how the tools are organized. |
maylee://reference/label_colors | The seven label color names accepted by Maylee and how they render. |
maylee://reference/view_icons | A view icon is one emoji; the 48 emojis offered by the app picker. |
maylee://reference/view_filters | The filter grammar used by create_view, update_view and list_emails filters. |
maylee://reference/ai_label_rules | Every option of an AI label rule: condition, Auto-Draft, Auto-Reply, threshold, delay, notifications, hide from inbox. |
maylee://reference/auto_forward_rules | Condition fields and modes of auto-forward rules, and when they run. |
maylee://reference/inbox_filters | Inbox filter types (sender, domain, subject, label) and their effect. |
maylee://reference/snippet_icons | Icon names accepted for snippets (smart links). |
maylee://reference/signature_icons | Icon names accepted for email signatures. |
maylee://reference/folders_and_views | Maylee folders and built-in lists (waiting for reply, scheduled, hidden by filters). |
maylee://reference/scheduling | How scheduled sends work: local time format, allowed range, statuses. |
maylee://reference/limits | Rate limits, monthly quotas, bulk sizes, hourly safety budgets and field sizes. |
maylee://reference/permissions | Read, write and send permissions and how to get them. |
maylee://reference/security | How to handle untrusted email content and irreversible actions. |