Skip to main content
Glama

ox-mcp

npm npm downloads license: MIT node

ox-mcp MCP server

An MCP server for Open-Xchange and standards-based mail platforms — read & search email, send & reply, manage server-side filters, calendar events and invitations, contacts, and other people's availability (free/busy), across one or many accounts.

It speaks standard IMAP + SMTP + ManageSieve + CalDAV + CardDAV with RFC 6638 free/busy, so it works with any Open-Xchange deployment or standards-compliant host. Authenticate with your email + app password (the same credential DAVx5 uses) or OAuth2/OIDC.

No affiliation with Open-Xchange.

Install / run

npx -y @rheopyrin/ox-mcp
# or with a custom config location:
npx -y @rheopyrin/ox-mcp --config /path/to/config.json

MCP client config (Claude Desktop / Claude Code):

{
  "mcpServers": {
    "ox": {
      "command": "npx",
      "args": ["-y", "@rheopyrin/ox-mcp"],
      "env": {
        "OX_MCP_MAIL_SERVER": "mail.example.com",
        "OX_MCP_MAIL_USER": "you@yourdomain.com",
        "OX_MCP_MAIL_APP_PASSWORD": "xxxx-xxxx-xxxx-xxxx",
        "OX_MCP_CALDAV_SERVER": "dav.example.com",
        "OX_MCP_CALDAV_USER": "you@yourdomain.com",
        "OX_MCP_CALDAV_APP_PASSWORD": "yyyy-yyyy-yyyy-yyyy"
      }
    }
  }
}

On first run (without --config) it creates ~/.ox-mcp/config.json (permissions 0600) with every feature flag listed — reads enabled, writes disabled — and empty hosts for you to fill in.

--config

--config <file> (or env OX_MCP_CONFIG; the flag wins) loads an explicit config file instead of ~/.ox-mcp/config.json. The file must exist — nothing is auto-created when the override is used.

Related MCP server: mcp-email

Tools

Tools are grouped by protocol domain. A group's tools appear only when enabled, and the group's server host must be configured (see Validation).

Group

Read (enabled by default)

Write (disabled by default)

email_* (IMAP/SMTP/Sieve — mail section)

email_list_folders, email_list, email_read, email_search, email_filter_list

email_send, email_save_draft, email_reply, email_reply_all, email_delete, email_move, email_flag, email_mark_read, email_mark_unread, email_mark_spam, email_archive, email_create_folder, email_delete_folder, email_filter_create, email_filter_update

calendar_* (CalDAV — calDav section)

calendar_list, calendar_list_events, calendar_free_busy

calendar_create_event, calendar_update_event, calendar_delete_event, calendar_accept_event, calendar_decline_event, calendar_tentative_event

contact_* (CardDAV — cardDav section)

contact_list, contact_find

contact_create

meta

list_servers (always on)

  • Every tool (except list_servers) accepts an optional server argument to target a specific account. A tool is hidden from the tool list unless its flag is enabled for at least one account.

  • email_search searches all folders by default; pass folder to narrow it. On the ox-api transport, body/text match only the subject and addresses of recent messages — use transport: "imap" for true full-text search.

  • email_mark_spam / email_archive find the Junk/Archive folder via IMAP special-use attributes, with name-based fallbacks.

  • email_reply / email_reply_all preserve threading (In-Reply-To/References) and exclude your own address from reply-all recipients.

  • The three RSVP tools (calendar_accept_event / calendar_decline_event / calendar_tentative_event) share one feature flag: respondEvent (calDav section). They rewrite your PARTSTAT on the invitation; the server notifies the organizer.

  • contact_find searches contacts server-side (CardDAV addressbook-query, RFC 6352) with automatic fallback to client-side filtering; fields narrows the match to name/email/phone/org (default name + email). Handy for resolving a name to an email before calendar_free_busy. contact_list is plain enumeration.

Mail filters

email_filter_create / email_filter_update manage server-side sieve filters over ManageSieve (port 4190, STARTTLS; requires basic/app-password auth). Rules support conditions on from/to/subject/any header (AND or OR) and actions fileinto (move to folder), discard, markRead, redirect.

Backend depends on mail.transport: with ox-api (default), filters go through the OX mailfilter/v2 module and operate on the account's real webmail rules (rules with tests/actions beyond this model are listed read-only as other). With imap, ox-mcp manages its own sieve script over ManageSieve (port 4190) and activates it — filters from other scripts become inactive while it is active.

Configuration: per-protocol sections

Each account is made of up to three self-contained sectionsmail, calDav, cardDav — each with its own server, auth (incl. its own login user), and features. This matches servers (like Open-Xchange) that scope app passwords per protocol: your Mail password, CalDAV password, and CardDAV password can all differ.

{
  "defaultServer": "default",
  "timeoutSeconds": 300,                                     // optional; request timeout, default 300
  "servers": {
    "default": {
      "mail": {
        "server": "webmail.example.com",                    // OX HTTP API host (default transport)
        "transport": "ox-api",                              // optional; "imap" for direct IMAP/SMTP
        "imap": { "host": "imap.example.com", "port": 993 }, // optional overrides
        "smtp": { "host": "smtp.example.com", "port": 587, "secure": false }, // secure optional; 993/465 = TLS, else STARTTLS
        "auth": { "type": "basic", "user": "me@example.com", "appPassword": "mail-scoped-pw" },
        "features": { "search": true, "send": false /* per-tool flags */ }
      },
      "calDav": {
        "server": "dav.example.com",
        "auth": { "type": "basic", "user": "me@example.com", "appPassword": "caldav-scoped-pw" },
        "features": { "respondEvent": false /* … */ }
      },
      "cardDav": {
        "server": "dav.example.com",
        "auth": { "type": "basic", "user": "me@example.com", "appPassword": "carddav-scoped-pw" }
      }
    }
  }
}
  • A section you don't configure = its tools are disabled. A calDav-only config is perfectly valid.

  • mail.transport is optional and defaults to "ox-api" — the Open-Xchange HTTP API (the webmail backend, https://<server>/appsuite/api). OX deployments validate app passwords at this middleware, so it works even where raw IMAP rejects them; server is the webmail host. Filter tools use the OX mailfilter/v2 module — they list and edit the account's actual webmail rules. Caveat: search matches subject/addresses (not full bodies).

  • Set transport: "imap" for direct IMAP/SMTP against generic (non-OX) mail hosts — then server is the mail host, with optional split imap/smtp endpoints.

  • enabled: false on a section is a config master switch for all its tools.

  • There is no global features block — flags live only inside sections (env vars remain global).

Feature flags

Resolution precedence — env always beats config, first defined wins:

  1. per-account env, tool — OX_MCP_<ID>_ENABLE_EMAIL_SEND

  2. per-account env, group — OX_MCP_<ID>_ENABLE_MAIL

  3. global env, tool — OX_MCP_ENABLE_EMAIL_SEND

  4. global env, group — OX_MCP_ENABLE_MAIL / _CALDAV / _CARDDAV

  5. section config, tool — servers.<id>.mail.features.send

  6. section config, master — servers.<id>.mail.enabled

  7. default — true for reads, false for writes

# enable sending on all accounts
OX_MCP_ENABLE_EMAIL_SEND=true
# turn off the whole calendar section
OX_MCP_ENABLE_CALDAV=false
# enable event creation only on the "work" account
OX_MCP_WORK_ENABLE_CALENDAR_CREATE_EVENT=true
# enable all three RSVP tools at once
OX_MCP_ENABLE_CALENDAR_RESPOND_EVENT=true

Booleans accept true/1/yes/on and false/0/no/off.

Connection & credentials (env)

Every section field is settable via env: OX_MCP_[ID_]<SECTION>_<FIELD> with SECTION ∈ MAIL | CALDAV | CARDDAV. The default account uses the non-indexed form.

Env var

Meaning

OX_MCP_MAIL_SERVER / OX_MCP_CALDAV_SERVER / OX_MCP_CARDDAV_SERVER

section host

OX_MCP_MAIL_USER / OX_MCP_CALDAV_USER / OX_MCP_CARDDAV_USER

section login user

OX_MCP_MAIL_APP_PASSWORD / OX_MCP_CALDAV_APP_PASSWORD / …

section app password (basic auth)

OX_MCP_MAIL_IMAP_HOST / _IMAP_PORT / _SMTP_HOST / _SMTP_PORT

mail transport overrides (Gmail-style split hosts)

OX_MCP_MAIL_IMAP_SECURE / _SMTP_SECURE

force TLS (true) or STARTTLS (false) on a non-standard port

OX_MCP_MAIL_AUTH_TYPE, _CLIENT_ID, _REFRESH_TOKEN, …

per-section OAuth/OIDC fields

OX_MCP_TIMEOUT_SECONDS

request timeout for all HTTP/IMAP/SMTP operations (default 300)

Default ports: IMAP 993, SMTP 465, DAV 443, ManageSieve 4190. TLS mode derives from the port (993/465 implicit TLS; 143/587 STARTTLS) unless secure is set explicitly.

Validation

Configuration is validated strictly at startup: every present section with enabled tools must have a server (or split imap/smtp hosts for mail) and a login user, or the server exits with an error naming the exact field. Accounts with zero sections error too. Absent sections are simply disabled — no error.

Authentication types

basic (app password) is the default. Other Open-Xchange-aligned mechanisms are supported per section via auth.type / OX_MCP_[ID_]<SECTION>_AUTH_TYPE:

Type

Extra fields (env: OX_MCP_[ID_]<SECTION>_…)

basic

APP_PASSWORD

xoauth2

ACCESS_TOKEN

oauth2-refresh

CLIENT_ID, CLIENT_SECRET, REFRESH_TOKEN, TOKEN_URL, SCOPE

oauth2-password

CLIENT_ID, CLIENT_SECRET, PASSWORD, TOKEN_URL, SCOPE

oidc

ISSUER, CLIENT_ID, CLIENT_SECRET, REFRESH_TOKEN or PASSWORD, SCOPE

Tokens are cached and refreshed automatically. Note: mail filters (ManageSieve) require basic auth.

Multiple accounts

OX_MCP_ACCOUNTS=work,personal
OX_MCP_WORK_MAIL_SERVER=mail.work.com
OX_MCP_WORK_MAIL_USER=me@work.com
OX_MCP_WORK_MAIL_APP_PASSWORD=...
OX_MCP_PERSONAL_CALDAV_SERVER=dav.personal.com
OX_MCP_PERSONAL_CALDAV_USER=me@personal.com
OX_MCP_PERSONAL_CALDAV_APP_PASSWORD=...
OX_MCP_DEFAULT_SERVER=work

Or define them in ~/.ox-mcp/config.json under servers (keyed by id). list_servers shows what's configured (never secrets); env values override config field-by-field. Feature flags can differ per account (e.g. sending enabled only on work).

Free/busy caveat

calendar_free_busy returns availability windows only (busy/free), via the CalDAV scheduling outbox — no calendar sharing needed. It does not reveal event details, and requires the server to advertise a schedule-outbox-URL. To read a colleague's full calendar, they must share it with your account; shared calendars then appear in calendar_list / calendar_list_events.

Docker

docker build -t ox-mcp .
docker run -i --rm \
  -e OX_MCP_MAIL_SERVER=mail.example.com \
  -e OX_MCP_MAIL_USER=you@yourdomain.com \
  -e OX_MCP_MAIL_APP_PASSWORD=xxxx \
  ox-mcp

Development

npm install
npm run dev          # run from source
npm test             # vitest
npm run test:coverage
npm run build        # bundle to dist/ (tsup)

License

MIT

Available Tools

28 tools
calendar_accept_eventAccept event invitationA

Accept a calendar event invitation as this account (sets your PARTSTAT to ACCEPTED; the server notifies the organizer).

ParametersJSON Schema
NameRequiredDescriptionDefault
serverNoServer/account id to target. Defaults to the configured default server.
calendarYesCalendar URL or display name containing the event.
objectUrlYesCalendar object URL (from calendar_list_events).

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the description's mention of setting PARTSTAT and notifying the organizer adds useful context. It does not cover edge cases like duplicate acceptance or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the core action and includes key details without excess. Every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple action tool with no output schema, the description provides sufficient information. It could mention prerequisites (e.g., event must be an invitation), but overall it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with descriptions for all three parameters. The description adds no further parameter details, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs and resources: 'Accept a calendar event invitation' and explains the technical effect (sets PARTSTAT to ACCEPTED, notifies organizer). It clearly distinguishes from sibling tools like decline and tentative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states when to use the tool (to accept an invitation) but does not explicitly mention when not to use it or provide alternatives. However, the context of sibling tools makes the usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calendar_create_eventCreate calendar eventC

Create a calendar event (VEVENT) in a calendar.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesISO 8601 end.
startYesISO 8601 start.
allDayNo
serverNoServer/account id to target. Defaults to the configured default server.
summaryYes
calendarYesCalendar URL or display name.
locationNo
attendeesNo
descriptionNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool is not read-only and not destructive, and the description merely restates 'Create' without adding behavioral details (e.g., permissions, duplicate handling, side effects).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is easy to parse. However, it could be slightly more informative without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 9 parameters and no output schema, but the description does not explain what the tool returns (e.g., event ID) or provide context about required fields or constraints like time format. This is insufficient for effective usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter details beyond the schema, which has only 44% coverage. For many parameters like 'summary' or 'location', the description does not clarify meaning or format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action ('Create') and resource ('calendar event (VEVENT)') and distinguishes from sibling tools like calendar_update_event and calendar_delete_event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., calendar_update_event for modifying existing events). The description does not provide usage context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calendar_decline_eventDecline event invitationA

Decline a calendar event invitation as this account (sets your PARTSTAT to DECLINED; the server notifies the organizer).

ParametersJSON Schema
NameRequiredDescriptionDefault
serverNoServer/account id to target. Defaults to the configured default server.
calendarYesCalendar URL or display name containing the event.
objectUrlYesCalendar object URL (from calendar_list_events).

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the effect on PARTSTAT and side effect of notifying the organizer, which goes beyond annotations (readOnlyHint=false, destructiveHint=false). No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence that is front-loaded with the action. It is concise but could be slightly shorter without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 3 parameters and no output schema, the description covers the core behavior. However, it lacks discussion of error conditions or what happens if the event is not an invitation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add extra meaning beyond the schema definitions for the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (decline), the resource (calendar event invitation), and adds protocol detail (sets PARTSTAT to DECLINED, notifies organizer). It distinguishes from siblings like calendar_accept_event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for declining invitations but provides no explicit guidance on when to use this tool versus alternatives (e.g., accept, tentative). No preconditions or context are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calendar_delete_eventDelete calendar eventB
Destructive

Delete a calendar event by its object URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
etagNo
serverNoServer/account id to target. Defaults to the configured default server.
objectUrlYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true, indicating the tool is destructive. The description confirms the delete action and specifies the required identifier (object URL). However, it does not disclose additional behavioral details such as whether deletion is irreversible or if it triggers cascade effects like deleting notifications or recurring event instances. The annotation covers the core safety trait, so the bar is lower.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with no redundancy. It front-loads the essential action and input requirement, making it quick to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete tool with no output schema and a low parameter count, the description covers the core purpose and key parameter. However, the absence of explanation for etag and server leaves potential gaps, especially when considering concurrency or multi-account scenarios. The agent may not know how to handle the optional etag parameter, reducing completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only 33% of parameters have schema descriptions (server), but the tool description mentions only objectUrl, ignoring etag and server. The description adds no explanation for etag (likely for concurrency control) or server (defaults to configured server). For a low-coverage schema, the description should compensate but fails to cover most parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete a calendar event') and the resource ('calendar event'), along with the required input method ('by its object URL'). It effectively distinguishes from sibling tools like calendar_update_event or calendar_create_event, though it doesn't explicitly differentiate from calendar_tentative_event or calendar_accept_event which are also event-modifying tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like calendar_update_event or calendar_accept_event. There is no mention of prerequisites, such as having the event's object URL or the need for write permissions. The agent receives no context about scenarios where deletion might be inappropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calendar_free_busyGet free/busyA
Read-only

Query attendees' availability (busy/free windows only) via the CalDAV scheduling outbox. No calendar sharing required.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesISO 8601 range end.
startYesISO 8601 range start.
serverNoServer/account id to target. Defaults to the configured default server.
attendeesYesEmail addresses to check.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. The description adds that it returns 'busy/free windows only' and uses the 'CalDAV scheduling outbox', providing useful behavioral context beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary purpose, no extraneous information. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with no output schema, the description explains the mechanism (CalDAV outbox) and the result type (busy/free windows). It could mention the response format, but is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. The description does not add significant new meaning beyond the schema, warranting the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action ('Query attendees' availability') and the resource ('busy/free windows'), and distinguishes this read-only check from sibling event mutation tools like calendar_accept_event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the tool queries availability via CalDAV scheduling outbox and notes no sharing required, implying use before scheduling. However, it lacks explicit when-not or alternative tool guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calendar_listList calendarsA
Read-only

List CalDAV calendars (own and any shared with the account).

ParametersJSON Schema
NameRequiredDescriptionDefault
serverNoServer/account id to target. Defaults to the configured default server.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond the readOnlyHint annotation by specifying that it lists both own and shared calendars. This informs the agent about the scope of data returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the key action and resource, no superfluous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description adequately covers the tool's purpose for a simple list operation. While pagination or formatting details are not mentioned, the lack of output schema and simple nature make this sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description does not add additional meaning beyond what the schema already provides for the 'server' parameter. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List', the resource 'CalDAV calendars', and the scope 'own and any shared with the account'. This distinguishes it from sibling tools like calendar_list_events.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the intended use is implied, there is no explicit guidance about when to use this tool over alternatives, or any exclusions. The context signals and sibling list provide enough for an AI to infer usage, but no direct instruction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calendar_list_eventsList calendar eventsB
Read-only

List events in a calendar within a time range.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesISO 8601 range end.
startYesISO 8601 range start.
serverNoServer/account id to target. Defaults to the configured default server.
calendarYesCalendar URL or display name (see calendar_list).

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, signaling a safe read operation. The description adds no behavioral insight beyond that, such as pagination, ordering, or handling of empty results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence. It is efficient but borders on underspecification for a list tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of a readOnly annotation and complete schema, the description lacks details on return format, ordering, or performance implications.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, all parameters are described in the schema. The description does not add new meaning, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' and identifies the resource 'events in a calendar within a time range', clearly distinguishing it from sibling tools like calendar_create_event or calendar_delete_event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool over alternatives. The description does not mention exclusion criteria, prerequisites, or context where another listing tool might be preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calendar_tentative_eventTentatively accept event invitationA

Tentatively accept a calendar event invitation as this account (sets your PARTSTAT to TENTATIVE; the server notifies the organizer).

ParametersJSON Schema
NameRequiredDescriptionDefault
serverNoServer/account id to target. Defaults to the configured default server.
calendarYesCalendar URL or display name containing the event.
objectUrlYesCalendar object URL (from calendar_list_events).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the description adds meaningful context: it sets PARTSTAT to TENTATIVE and notifies the organizer. It does not cover all behavioral details (e.g., conflicts or triggers), but adds sufficient value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that front-loads the action and includes essential details. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks information about the return value or success/failure indicators, which is relevant for a mutation tool with no output schema. However, given the tool's simplicity and the presence of sibling context, it still provides an adequate baseline understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters. The description does not add additional parameter-specific details, but it provides high-level context about the action, earning a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'tentatively accept' and the resource 'calendar event invitation', with the specific action of setting PARTSTAT to TENTATIVE and notifying the organizer. It effectively distinguishes from sibling tools like calendar_accept_event and calendar_decline_event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly indicates when to use this tool (for tentative acceptance) through the name and context, but lacks explicit guidance on when to use alternatives or when not to use it. However, sibling tool names provide enough context for an AI agent to differentiate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calendar_update_eventUpdate calendar eventB

Replace an existing calendar event by its object URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
uidNo
etagNo
startYes
allDayNo
serverNoServer/account id to target. Defaults to the configured default server.
summaryYes
locationNo
attendeesNo
objectUrlYesCalendar object URL (from calendar_list_events).
descriptionNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint=false, destructiveHint=false), the description only adds 'Replace' to indicate mutation. It does not disclose whether changes are reversible, require specific permissions, or affect other attendees. The term 'replace' suggests full overwrite, but this is not explicitly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently conveys the core purpose. However, it omits important details that could be added without significant length increase, such as usage context or parameter hints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 11 parameters, no output schema, and no explanation of update semantics (full replacement vs partial), the description is insufficient. Key details like date-time formats, required fields, and return value are missing, leaving large gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 18% schema description coverage, the description adds minimal parameter insight. Only objectUrl is mentioned ('from calendar_list_events'). No explanation for required fields like start, end, summary, or their formats. The description does not compensate for the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Replace an existing calendar event by its object URL.' The verb 'replace' distinguishes it from siblings like calendar_create_event (create) and calendar_delete_event (delete). The method 'by its object URL' specifies a unique input requirement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for updating existing events when you have the object URL, but it does not explicitly state when to use this tool vs alternatives like calendar_create_event or calendar_tentative_event. No guidance on prerequisites or exclusions is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

contact_createCreate contactB

Create a CardDAV contact (vCard) in an address book.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFull display name.
emailsNo
phonesNo
serverNoServer/account id to target. Defaults to the configured default server.
addressBookNoAddress book URL or display name; defaults to the first one.
organizationNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate it's not read-only and not destructive. The description adds 'create' context but lacks details like idempotency or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no wasted words, front-loaded with key action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema or return value described, important for a creation tool. Lacks error handling or success indicators.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% and description adds no extra meaning beyond schema field descriptions. Does not compensate for undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Create' and the resource 'CardDAV contact (vCard)' within an address book, distinguishing it from list and find tools among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives, no prerequisites or exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

contact_findFind contactsA
Read-only

Search CardDAV contacts by a case-insensitive substring (server-side where supported). Useful for resolving a name to an email address, e.g. before calendar_free_busy.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYesText to match.
fieldsNoFields to search (default: name + email).
serverNoServer/account id to target. Defaults to the configured default server.
addressBookNoAddress book URL or display name; omit for all.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true. Description adds that search is case-insensitive and substring-based, and server-side where supported, providing behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff. First sentence defines purpose, second provides usage guidance. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description adequately covers purpose, search behavior, and usage context. Missing return format details, but acceptable for a simple search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80% (4 of 5 parameters have descriptions). The description does not add significant per-parameter guidance beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool searches CardDAV contacts by a case-insensitive substring, specifying the resource and action. It distinguishes itself from sibling tools like contact_create and contact_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides a concrete use case: 'resolving a name to an email address, e.g. before calendar_free_busy.' This gives clear context, though it does not explicitly state when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

contact_listList contactsA
Read-only

List all CardDAV contacts. Reads all address books unless one is given. To search, use contact_find instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
serverNoServer/account id to target. Defaults to the configured default server.
addressBookNoAddress book URL or display name; omit for all.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds valuable behavioral context: 'Reads all address books unless one is given,' clarifying the scope of the operation beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. It front-loads the core action and immediately provides the key behavioral detail and alternative tool reference.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (list operation with two optional parameters, clear annotations, and explicit sibling documentation), the description is fully sufficient. It covers purpose, behavior, and usage boundaries.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description briefly mentions the address book behavior ('Reads all address books unless one is given'), which is already stated in the schema's parameter description for 'addressBook'. No new meaning is added beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all CardDAV contacts', using a specific verb and resource. It distinguishes from the sibling 'contact_find' by noting the difference in behavior (list all vs. search).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: 'To search, use contact_find instead.' This tells the user when not to use this tool and directs to the appropriate alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_archiveArchive emailB

Move an email to the account's archive folder (special-use aware).

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYes
folderNoINBOX
serverNoServer/account id to target. Defaults to the configured default server.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes the action (move to archive) and special-use awareness, but lacks details on side effects, permissions, or error conditions. Annotations indicate non-read-only and non-destructive, consistent with the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no superfluous words. Effective front-loading of the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple archive action, the description covers the basic operation but lacks usage guidelines and parameter details. Could be more helpful given the presence of sibling tools like email_move.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only the server parameter has a schema description. The description does not explain the uid or folder parameters, leaving their semantics unclear despite low schema coverage (33%).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool archives an email by moving it to the archive folder, with special-use awareness. This verb+resource pair distinguishes it from siblings like email_move.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like email_move. The description does not mention when not to use it or provide context for selecting this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_create_folderCreate mail folderA

Create a new IMAP folder. Use the delimiter of the account (usually "/") for nesting, e.g. "Projects/Acme".

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFolder path to create.
serverNoServer/account id to target. Defaults to the configured default server.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds the behavioral detail of folder path delimiter convention, which is beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences. The first defines the purpose, the second adds critical usage detail. No redundant or unnecessary text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two parameters and no output schema, the description covers the core purpose and parameter format (nesting). It does not mention edge cases or prerequisites, but the tool's simplicity does not require extensive detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter having a description. The description adds nesting semantics for the 'path' parameter (delimiter usage), which goes beyond the schema's literal definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a new IMAP folder' with a specific verb and resource. It distinguishes from sibling folder tools like email_delete_folder which deletes rather than creates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains how to use the delimiter for nesting folders with an example ('Projects/Acme'). While it lacks explicit alternatives or when-not-to-use, the context of sibling tools implies this is the only folder creation tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_deleteDelete emailA
Destructive

Delete an email by UID (moves to Trash or expunges per server policy).

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYes
folderNoINBOX
serverNoServer/account id to target. Defaults to the configured default server.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds context beyond annotations by noting that deletion moves to Trash or expunges per server policy. This clarifies the potential irreversibility and server-dependent behavior, which is helpful for agent decisions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that conveys the core purpose and key behavior with no extraneous words. It is appropriately front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive action with 3 parameters and no output schema, the description is incomplete. It lacks parameter explanations, usage guidance, and what the agent can expect as a result (e.g., success indication). More details are needed for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is low (33%), with only 'server' having a description. The tool description mentions 'by UID' but does not explain the 'folder' and 'server' parameters, their defaults, or how they affect the operation. Agents lack critical context for correct parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Delete', the resource 'email', and the method 'by UID'. It also indicates the behavior (move to Trash or expunge), which distinguishes it from related tools like email_archive and email_move.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives (e.g., archive, move). The description does not mention conditions, prerequisites, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_delete_folderDelete mail folderA
Destructive

Delete an IMAP folder. The folder and its messages are removed — this cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFolder path to delete.
serverNoServer/account id to target. Defaults to the configured default server.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint true, so the destructive nature is known. The description adds detail that both the folder and its messages are removed, and clearly states irreversibility, which is valuable beyond the annotation flag.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that front-load the main purpose and critical caution. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple destructive operation with no output schema. However, lacks mention of prerequisites (e.g., folder existence) or typical use cases, which would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds no additional parameter meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: delete an IMAP folder and its messages. It distinguishes from sibling tools like email_create_folder and email_delete by specifying the resource (folder) and the irreversible removal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives like email_archive or moving messages. The description implies caution with 'cannot be undone' but does not provide context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_filter_createCreate mail filterA

Create a server-side mail filter (sieve). Note: ox-mcp manages its own sieve script and activates it.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable rule name.
stopNoStop processing further rules after this one matches.
actionYes
serverNoServer/account id to target. Defaults to the configured default server.
matchAllNotrue = all conditions must match (AND); default any (OR).
conditionsYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate the tool is not read-only and not destructive. The description adds value by noting that ox-mcp manages its own sieve script and activates it, giving insight into side effects and lifecycle beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with purpose, and a concise note. No unnecessary elaboration. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with 6 parameters, nested objects, and no output schema, the description covers the key behavioral note (script management). However, it omits what the tool returns (e.g., confirmation, filter ID). Slightly incomplete but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67%, and the description does not add further parameter-specific details. While the schema itself documents parameters well (e.g., 'Human-readable rule name', 'Stop processing further rules'), the tool description does not enhance understanding beyond that. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it creates a server-side mail filter (sieve), which is a specific verb+resource. It distinguishes from sibling tools like email_filter_update and email_filter_list by specifying creation. The mention of ox-mcp managing its script adds context without muddying purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool vs alternatives (e.g., email_filter_update). It does not state prerequisites or conditions under which to create a filter. The note about script management hints at automation but lacks explicit usage directives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_filter_listList mail filtersA
Read-only

List server-side mail filters managed by ox-mcp (sieve).

ParametersJSON Schema
NameRequiredDescriptionDefault
serverNoServer/account id to target. Defaults to the configured default server.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is clear. Description adds context about server-side filters and sieve management, but beyond that, no additional behavioral details (e.g., pagination, response structure) are provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no extraneous words. Every part is necessary and front-loaded with the key action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one optional parameter and no output schema, the description is complete enough. It states the purpose and scope without needing further elaboration.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter 'server'. Description does not add meaning beyond what the schema already provides, warranting a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly specifies verb 'list', resource 'mail filters', and context 'server-side' and 'managed by ox-mcp (sieve)'. Distinguishes from sibling tools like email_filter_create and email_filter_update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives. Usage is implied by the verb 'list' and sibling tools for other operations, but lacks when-not-to-use or explicit alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_filter_updateUpdate mail filterA

Replace an existing ox-mcp mail filter by id (see email_filter_list).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFilter id from email_filter_list.
nameYesHuman-readable rule name.
stopNoStop processing further rules after this one matches.
actionYes
serverNoServer/account id to target. Defaults to the configured default server.
matchAllNotrue = all conditions must match (AND); default any (OR).
conditionsYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description says 'Replace', which implies full overwrite, but does not elaborate on behavioral traits like whether it performs a complete replacement or merge, or what happens to omitted fields. The annotations (readOnlyHint=false, destructiveHint=false) are present but the description adds minimal context beyond the verb.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the purpose and includes a helpful cross-reference. No waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex update tool with nested objects and 7 parameters, the description adequately explains the replacement nature and references the listing tool. It lacks detail on return values (no output schema) and confirmation of full replacement behavior, but is still mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 71%, so the schema provides good parameter descriptions. The tool description does not add additional meaning beyond the schema, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Replace' and the resource 'existing mail filter', and references the sibling 'email_filter_list' for obtaining the id. This distinguishes it from create and list tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to use an existing filter id from email_filter_list, providing clear context for when to use this tool. However, it does not mention when not to use it or alternatives beyond the listing tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_flagFlag emailC

Flag or unflag (star/unstar) an email.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYes
folderNoINBOX
serverNoServer/account id to target. Defaults to the configured default server.
flaggedNotrue = flag, false = unflag.

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds no behavioral traits beyond what annotations show, such as side effects, permissions, or error cases. It does not contradict annotations but offers no additional transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. However, it could be slightly more structured (e.g., listing parameters briefly) without losing conciseness. It is efficient but minimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters, no output schema, and annotations with minimal context, the description is too brief. It does not explain the required 'uid' parameter, the role of 'folder' or 'server', or the return value. For a mutation tool, this is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (only 'server' and 'flagged' have descriptions). The tool description itself does not add any parameter explanations; it repeats the simple 'flag/unflag' semantics already in the schema. It fails to compensate for the missing parameter descriptions for 'uid' and 'folder'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (flag or unflag) and resource (email) with synonyms (star/unstar). It is specific but does not explicitly differentiate from sibling tools like email_mark_read or email_mark_spam, though the verb 'flag' distinctively conveys starring.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as email_mark_read or email_archive. It merely states the action without context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_mark_readMark email as readC

Mark an email as read (sets the \Seen flag).

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYes
folderNoINBOX
serverNoServer/account id to target. Defaults to the configured default server.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate mutability and non-destructiveness. The description adds that it sets the \Seen flag, which is useful behavioral detail. However, it doesn't discuss reversibility, side effects, or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no unnecessary words. Efficient and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and lack of output schema, the description omits essential parameter details and usage context, making it insufficient for an agent to invoke correctly without additional inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 33% schema description coverage, the description adds no explanation for the uid, folder, or server parameters. It fails to compensate for the lack of parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool marks an email as read and mentions the \Seen flag, which is specific. It distinguishes from siblings like email_mark_unread, though not explicitly. However, it doesn't elaborate on scope or context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as email_mark_unread or email_flag. The description provides no use cases or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_mark_spamMark as spamA

Move an email to the account's spam/junk folder (special-use aware).

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYes
folderNoINBOX
serverNoServer/account id to target. Defaults to the configured default server.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the description adds value by noting 'special-use aware', which informs the agent that the tool handles special mailbox semantics. This is beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the key action and resource. No superfluous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of annotations, the description is mostly complete. However, it lacks details about return values (no output schema) and the exact behavior of 'special-use aware', which could be important for edge cases. Still, it is sufficient for basic use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at only 33%, the description does not compensate by explaining the parameters (uid, folder, server). The schema itself lacks descriptions for uid and folder, and the description adds no additional meaning, leaving the agent without guidance on parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Move an email') and the target ('spam/junk folder'), and includes 'special-use aware' which adds context. It distinguishes this tool from siblings like email_move or email_delete by specifying the spam specific folder.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used for reporting spam but does not explicitly state when to use it versus alternatives like email_move or email_flag. There are no exclusions or comparisons to other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_mark_unreadMark email as unreadC

Mark an email as unread (clears the \Seen flag).

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYes
folderNoINBOX
serverNoServer/account id to target. Defaults to the configured default server.

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-destructive write (readOnlyHint=false, destructiveHint=false). Description adds the flag-clearing detail, but lacks behavioral context such as permissions, side effects, or behavior on already-unread emails.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise single sentence that conveys the core purpose. Could be expanded slightly to include parameter defaults or usage hints without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has three parameters and siblings, the description is too minimal. It omits crucial context like how to obtain the uid, the effect of default folder/server, and what happens if the email is already unread.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not discuss any of the three parameters. With only 33% schema coverage and no parameter descriptions in the text, the agent must rely solely on the schema, which lacks descriptions for uid and folder.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (mark as unread) and the underlying mechanism (clears \Seen flag). It implicitly distinguishes from email_mark_read, though it could explicitly contrast with email_flag or similar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance provided. The description does not indicate when to use this tool over email_mark_read, email_flag, or other siblings, nor mention prerequisites like needing the UID.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_moveMove emailA

Move an email by UID to another folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYes
folderNoINBOX
serverNoServer/account id to target. Defaults to the configured default server.
destinationYesTarget folder path.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=false and destructiveHint=false. The description adds that it moves an email, but does not disclose additional behavioral traits like permissions or what happens to the original. It is adequate but does not add significant value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and front-loaded. However, it could be slightly more structured (e.g., breaking down parameters) without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, but the description omits context about return values, error handling, or prerequisites (e.g., whether destination folder must exist). It is minimally adequate for a straightforward operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (2 of 4 parameters have descriptions). The description adds no parameter information, leaving uid and folder without explanation. For a tool with moderate parameter count, this is insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (move), resource (email), and method (by UID to folder). It effectively distinguishes from sibling tools like email_delete or email_archive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (to move an email), but lacks explicit guidance on when not to use or alternatives. For a simple operation, it is adequate but not exemplary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_replyReplyB

Reply to the sender of an email, threading preserved.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesUID of the message to reply to.
htmlNoHTML reply body.
textNoPlain-text reply body.
folderNoINBOX
serverNoServer/account id to target. Defaults to the configured default server.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool modifies state (readOnlyHint=false) and is not destructive. The description adds 'threading preserved' but does not disclose other behaviors (e.g., whether original email is flagged, sent folder behavior).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no waste, but could benefit from a slightly more detailed explanation of threading preservation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Five parameters and no output schema; description is too minimal. It does not explain 'threading preserved' in practical terms, nor does it mention reply construction conventions (subject prefix, attachments).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 80%, meaning most parameters have descriptions. The tool description adds no extra parameter meaning beyond the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Reply to the sender of an email, threading preserved,' which identifies the specific action and resource. It also implicitly distinguishes from 'email_reply_all' by limiting to the original sender.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'email_reply_all' or 'email_send.' Lacks exclusions or conditions for use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_reply_allReply allA

Reply to all recipients of an email (sender + To/Cc, excluding yourself), threading preserved.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesUID of the message to reply to.
htmlNoHTML reply body.
textNoPlain-text reply body.
folderNoINBOX
serverNoServer/account id to target. Defaults to the configured default server.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate not read-only and not destructive. Description adds 'threading preserved' and 'excluding yourself', which are useful behavioral details beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: one sentence that fully captures the tool's purpose and key behavioral notes without any fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the core reply-all behavior well. No output schema or auth details needed given the tool's nature. Optional parameters (folder, server) are not mentioned but schema covers them. Simple tool, adequate completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 80%, so baseline is 3. The description does not add detail about parameters beyond what schema provides; 'threading preserved' is behavioral, not parameter-specific.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it replies to all recipients (sender + To/Cc, excluding self) with threading. Distinguishes from sibling email_reply (which likely only replies to sender) and email_send (new email).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies when to use vs. alternatives: use for reply-all, not for reply-to-sender or new email. However, no explicit 'when not to use' or direct mention of alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_save_draftSave draftA

Compose a message and save it to the Drafts folder (does not send).

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toNo
htmlNo
textNo
folderNoDrafts
serverNoServer/account id to target. Defaults to the configured default server.
subjectYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate mutation (readOnlyHint: false) and non-destructiveness (destructiveHint: false). The description adds that saving occurs to the Drafts folder, but lacks details on overwriting behavior, authentication, or rate limits. It adds some value beyond annotations but not significant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no redundancy. Front-loaded with the core action and key constraint. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters with no descriptions, no output schema, and no behavioral details beyond the basic purpose, the description is insufficient for an agent to correctly construct and invoke the tool. It lacks guidance on required fields (subject), optional fields, and expected output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 14% schema coverage, most parameters lack descriptions. The description does not explain any parameters, leaving the agent to rely on schema names alone, which may be insufficient for complex fields like 'to' (accepts string or array), 'folder' default, or 'server' optionality.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action ('Compose a message and save it to the Drafts folder') and explicitly distinguishes from sending ('does not send'), making it easy for an agent to understand the tool's purpose relative to siblings like email_send.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (to save a draft without sending), but does not mention alternatives or when not to use it compared to other email manipulation tools like email_reply or email_flag.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_sendSend emailC

Send an email via SMTP.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toYes
bccNo
htmlNo
textNo
serverNoServer/account id to target. Defaults to the configured default server.
subjectYes
inReplyToNo
referencesNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false, but the description does not explain behavioral traits such as side effects, return value, or error conditions. Given no annotations beyond safety hints, the description should provide more context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (one sentence), but it lacks substance. It is front-loaded, but the brevity means it does not convey enough information to be useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 9 parameters, low schema coverage, no output schema, and minimal description, the tool definition is incomplete. The agent lacks essential information to correctly invoke the tool for various use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has only 11% description coverage (only 'server' field has a description). The tool description does not explain any parameters, so meaning beyond schema names is absent. Many parameters (e.g., html, text, inReplyTo) require additional context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'send' and resource 'email', indicating a generic send operation. However, it does not differentiate from sibling tools like email_reply or email_save_draft, which could cause confusion about when to use this tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There are no hints about prerequisites, context, or comparisons to other email-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 19 tool updatesv0.1.1
    • Addedcalendar_create_event
    • Addedcalendar_free_busy
    • Addedcalendar_list
    • Addedcalendar_list_events
    • Addedcalendar_update_event
    • Addedemail_archive
    • Addedemail_create_folder
    • Addedemail_delete_folder
    • Addedemail_filter_create
    • Addedemail_filter_list
    • Addedemail_filter_update
    • Addedemail_flag
    • Addedemail_mark_read
    • Addedemail_mark_spam
    • Addedemail_mark_unread
    • Addedemail_move
    • Addedemail_reply_all
    • Addedemail_save_draft
    • Addedemail_send
  2. 9 tool updatesv0.1.0
    • First observedcalendar_accept_event
    • First observedcalendar_decline_event
    • First observedcalendar_delete_event
    • First observedcalendar_tentative_event
    • First observedcontact_create
    • First observedcontact_find
    • First observedcontact_list
    • First observedemail_delete
    • First observedemail_reply

TDQS

B3.4/5.0

Scored across 28 tools

Disambiguation5/5

Each tool targets a distinct action: calendar tools cover event CRUD and invitation responses, contacts cover create/find/list, and email tools cover folder and message operations with no overlap.

Naming Consistency5/5

All tools follow a consistent `domain_verb_noun` pattern using underscores (e.g., calendar_accept_event, email_mark_read), with no deviations or mixed conventions.

Tool Count4/5

28 tools is slightly high but justified by the three domains (calendar, contacts, email) and the breadth of email operations. No redundant tools exist.

Completeness2/5

Notable gaps: contacts lack update/delete, email lacks a tool to fetch or read an email's content and no folder listing. These omissions hinder common workflows.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A self-hosted MCP server for managing email, calendar, and cloud storage across Microsoft 365, Google Workspace, and IMAP accounts, enabling natural language interaction through any MCP client.
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server that enables email management (send, read, search, delete, etc.) via IMAP/SMTP, compatible with Gmail, Outlook, Yahoo, iCloud, and other standard mail servers.
    11
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for reading and sending emails via IMAP and SMTP, designed for Zimbra and any standard mail host.
    4 npm
    1
    ISC
  • A
    license
    Not graded
    quality
    D
    maintenance
    Local MCP server for macOS Mail reads plus visible unsent compose, reply, and forward drafts, and constrained single-message moves.
    MIT