Skip to main content
Glama

ews-outlook-mcp

Personal MCP server that lets Claude read and manage an on-prem Outlook/Exchange mailbox via EWS (Exchange Web Services) with NTLM authentication — no dependency on OAuth or Microsoft 365, built for pure on-prem Exchange (no Microsoft 365/Graph).

Exposed tools

  • ews_list_inbox — lists the most recent Inbox messages

  • ews_search_inbox — searches the Inbox by subject

  • ews_get_message — fetches the full body of a message

  • ews_reply_message — replies (or reply-all) to an existing message

  • ews_send_message — composes and sends a new email

  • ews_move_message — moves a message to another folder (archive, etc.)

  • ews_list_calendar — calendar events between two dates

  • ews_create_event — creates a calendar event/meeting, with optional attendees

  • ews_update_event — reschedules/edits the time, subject, or location of an existing event

  • ews_add_attendee — adds an attendee to an existing event without touching the rest

  • ews_accept_event / ews_decline_event — responds to received meeting invitations

  • ews_delete_event — deletes a calendar event (sends a cancellation to attendees by default)

  • ews_resolve_contact — looks up a name in the GAL (corporate address book) to get their email before inviting them

  • ews_today_summary — unread messages + today's events, at a glance

  • ews_forward_message — forwards a message to new recipients with an optional comment

  • ews_flag_message — flags/unflags/completes the follow-up flag on a message

  • ews_list_folders — lists mailbox folders (including custom ones) with their unread counts

Related MCP server: Claude-Read-Outlook-Attachments

Installation

git clone git@github.com:devsergioherrera/Outlook-Exchange-MCP-Server.git
cd Outlook-Exchange-MCP-Server
npm install
npm run build

Installing for a non-technical user (with Claude Desktop)

To hand this server to another person (not a copy of the same credentials — each user needs their own), the only requirement is having Node.js installed (https://nodejs.org, LTS version — an officially signed installer, which usually clears corporate policies without issue) and Claude Desktop having been opened at least once.

Steps:

  1. Copy this whole folder (without node_modules, without .env, without dist) to the target machine — zip, USB, whatever works. node_modules and dist regenerate on their own; .env gets written locally with that person's own credentials.

  2. Double-click Instalar.bat.

  3. The script (setup.ps1):

    • Verifies Node.js is installed (if not, it warns and stops).

    • Runs npm install and npm run build.

    • Interactively asks for the Exchange URL, username, and password, and saves them to a local .env file (never sent anywhere — it just stays on that machine's disk).

    • Automatically registers the server in %APPDATA%\Claude\claude_desktop_config.json (creates the mcpServers.ews-outlook entry pointing at dist\index.js with the --openssl-legacy-provider flag), with no manual JSON editing required.

  4. Claude Desktop needs to be fully quit (including the system tray icon) and reopened afterward.

None of this requires admin rights or running an unsigned .exe — just Node.js (signed, standard installer) and a local PowerShell script, which tends to sail through corporate IT policies that do block loose executables.

Setting up credentials

The .env file needs to be created manually (never paste a password into a chat with an AI assistant):

cp .env.example .env
notepad .env

Fill in EWS_PASSWORD with the account's domain password. The .env file is in .gitignore and must never be pushed to any repository.

Registering the server in Claude Code

Add this to the MCP server config (claude mcp add or the corresponding config file). Requires the --openssl-legacy-provider flag (see "Technical notes" below — without it, NTLMv2 authentication fails on Node 17+ because of the MD4 hash being disabled in OpenSSL 3.x):

{
  "mcpServers": {
    "ews-outlook": {
      "command": "node",
      "args": ["--openssl-legacy-provider", "C:\\path\\to\\Outlook-Exchange-MCP-Server\\dist\\index.js"]
    }
  }
}

Or, from an interactive Claude Code session:

claude mcp add ews-outlook -- node --openssl-legacy-provider C:\path\to\Outlook-Exchange-MCP-Server\dist\index.js

Restart Claude Code so it picks up the new server.

.env credentials format

  • EWS_HOST: only the base host of the on-prem Exchange, e.g. https://mail.yourcompany.com — without a trailing /EWS/Exchange.asmx (node-ews builds that path internally; adding it manually makes calls fail with HTTP 400: Bad Request).

  • EWS_USERNAME: only the Windows/domain username, e.g. jdoe — no domain prefix (yourcompany.com\jdoe produces an incorrect NTLMv2 hash and Exchange responds with HTTP 401: Unauthorized; the domain is negotiated automatically, coming from the server's own NTLM challenge).

  • EWS_PASSWORD: the account's domain password, as-is.

Technical notes (fixes already applied — leave alone unless the reason is clear)

  • Patch to ntlm-client (patches/ntlm-client+0.1.1.patch, applied automatically by npm install via postinstall: patch-package): the library (unmaintained) has two compatibility bugs with IIS 10 / modern Exchange:

    1. decodeType2Message received the entire response object instead of the WWW-Authenticate header string, and hasOwnProperty('headers') silently failed on that object → every NTLM auth attempt failed with the generic message "The server didnt respond properly".

    2. The regex extracting the NTLM token required the header to start with NTLM (/^NTLM .../), but IIS returns WWW-Authenticate with several schemes together (NTLM <token>, Negotiate or Negotiate, NTLM <token>), so the anchored rule failed depending on order. The ^ was removed.

  • --openssl-legacy-provider: NTLMv2 depends on MD4, which OpenSSL 3.x (shipped with Node 17+) disables by default. Without this flag, the final handshake step (createType3Message) blows up with error:0308010C:digital envelope routines::unsupported.

Security notes

  • The EWS endpoint is usually https://<exchange-server>/EWS/Exchange.asmx, over HTTPS/443 — not to be confused with other ports the organization might use for SMTP or other services on the same server.

  • If the Exchange certificate is self-signed, the HTTPS connection may fail certificate validation. If that happens, confirmation is needed before disabling TLS verification — it's not a default fix to apply.

  • ews_reply_message sends a real email immediately (SendAndSaveCopy). There's no additional confirmation at this server's level — the confirmation happens in the Claude chat before the tool is invoked.

Available Tools

18 tools
ews_accept_eventAceptar invitación a reuniónA

Acepta una invitación de reunión recibida (por ItemId del mensaje de invitación).

ParametersJSON Schema
NameRequiredDescriptionDefault
commentNoComentario opcional para el organizador
eventIdYesItemId de la invitación/reunión a aceptar

TDQS

A3.5/5.0
Behavior2/5

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

Annotations already indicate this is not read-only and not destructive, so the description adds no extra behavioral context. It does not mention side effects (e.g., sending a response to the organizer or updating the calendar), missing an opportunity to enrich the agent's understanding.

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, front-loaded sentence with no redundant information. It efficiently communicates the purpose and the input mechanism.

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 two-parameter accept action, the description, schema, and annotations provide a basic functional picture. However, it lacks usage differentiation and behavioral side-effect context, leaving some gaps for a fully self-contained 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 coverage is 100% with both eventId and comment described. The description mentions the ItemId input but adds no additional semantic value beyond the schema, so the baseline 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 tool accepts a received meeting invitation using the ItemId, which is a specific verb+resource combination. It distinguishes from sibling tools like ews_decline_event (declines) and ews_update_event (updates).

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 by indicating it operates on a received invitation, but it does not explicitly state when to use this tool versus alternatives like accept vs decline. No exclusions or alternative references are provided.

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

ews_add_attendeeAgregar invitado a un evento existenteA

Agrega un asistente requerido a una reunión ya creada (UpdateItem) y le envía la invitación, sin tocar al resto de invitados.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIdYesId del evento, devuelto por ews_create_event o ews_list_calendar
attendeeEmailYesCorreo del nuevo invitado

TDQS

A4/5.0
Behavior4/5

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

The description goes beyond the annotations by disclosing that it sends an invitation to the new attendee and does not modify existing attendees, which are important side effects. It also reveals the underlying UpdateItem call, providing technical transparency.

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?

It is a single, well-structured sentence that packs all key information: the action, the API method, the side effect, and the guarantee about other attendees. No wasted 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?

For a tool with two simple parameters and no output schema, the description covers the action, the side effects, and the constraint on other attendees. It could optionally mention error cases or return value, but the tool's simplicity and schema descriptions make the current description 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?

The schema already fully describes both parameters, and the description adds only the nuance that the attendee is added as 'requerido' (required). This adds minor semantic value beyond the schema, so it meets the baseline for 100% coverage without needing to compensate.

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 adds a required attendee to an existing meeting, specifying it uses UpdateItem and sends the invitation, while not affecting other attendees. This distinguishes it from siblings like ews_update_event or ews_create_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 the tool is for adding an attendee to an existing meeting, but it does not explicitly state when to use it over alternatives or provide exclusions. The context is clear but lacks the explicitness of naming alternative tools, so it gets an implied-use score.

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

ews_create_eventCrear evento de calendarioA

Crea un evento en el calendario (CreateItem CalendarItem). Si se pasan attendees, envía invitaciones de reunión.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesFecha/hora fin en ISO 8601, ej. 2027-08-03T15:30:00-05:00
bodyNoDescripción/agenda del evento, texto plano
startYesFecha/hora inicio en ISO 8601, ej. 2027-08-03T14:30:00-05:00
subjectYesAsunto/título del evento
locationNoLugar/sala de la reunión
attendeesNoCorreos de invitados requeridos; si se omite, el evento queda solo en tu calendario

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false, so the agent knows it's a write operation. The description adds the behavioral trait that passing attendees sends meeting invitations, which is beyond the schema and annotations, providing useful side-effect context without contradiction.

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, front-loaded with the primary purpose and a behavioral condition. No unnecessary words or repetition.

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 create tool with 6 parameters and no output schema, the description provides essential behavior (create event, optionally send invites) and distinguishes it among 18 siblings. It doesn't describe return values, but the schema covers parameter details adequately.

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 explicitly mentions the attendees condition, reinforcing the schema's note, but does not add new parameter-level semantics for subject/start/end beyond what the schema already 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 'Crea un evento en el calendario' (Creates an event in the calendar), specifying the action and resource. It also mentions 'CreateItem CalendarItem' which anchors the EWS operation, distinguishing it from siblings like ews_update_event, ews_delete_event, and ews_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?

The description implies the tool is for creating calendar events, which differentiates it from update/delete/accept/decline siblings. However, it does not explicitly state when not to use it or point to alternative tools; the condition about attendees is a behavioral note rather than an alternative guide.

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

ews_decline_eventRechazar invitación a reuniónA

Rechaza una invitación de reunión recibida (por ItemId del mensaje de invitación).

ParametersJSON Schema
NameRequiredDescriptionDefault
commentNoComentario opcional para el organizador
eventIdYesItemId de la invitación/reunión a rechazar

TDQS

A4/5.0
Behavior3/5

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

Annotations provide baseline safety info (readOnlyHint=false, destructiveHint=false). The description adds the detail that it operates on the invitation message's ItemId, but it does not disclose behavioral traits such as whether a decline response is sent to the organizer or what happens to the calendar event. With annotations present, this is adequate but not rich.

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, direct sentence with no filler or redundancy. It communicates the action, resource, and input method efficiently, earning the maximum score.

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 low complexity (2 params, full schema coverage, annotations present), the description provides sufficient context. It lacks explicit details about return values or side effects, but these are not strictly necessary for such a simple mutation tool. Slight elevation from 3 because the description clarifies the specific input identifier type, making it more complete than a generic 'declines 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%, with both parameters already described in the schema. The description only minimally reinforces the meaning of eventId (por ItemId del mensaje de invitación) without adding substantial new information, so the 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 a specific verb ('Rechaza') and resource ('invitación de reunión'), clearly distinguishing it from sibling tools like accept_event, delete_event, and update_event. It also specifies the input method (por ItemId del mensaje de invitación), making the tool's purpose unambiguous.

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 implies usage context (declining a received meeting invitation) and specifies the required identifier type (ItemId of the invitation message). However, it does not explicitly differentiate from accept_event or delete_event, nor does it mention any preconditions or when not to use this tool, which would merit a 5.

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

ews_delete_eventEliminar evento de calendarioA
Destructive

Elimina un evento del calendario (DeleteItem). Si tiene invitados, les envía cancelación por defecto.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIdYesId del evento a eliminar
notifyAttendeesNoSi es true (default), envía cancelación a los invitados; si es false, elimina en silencio

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds valuable behavioral context: that attendees receive cancellation by default, which is not inferable from the annotations. 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.

Conciseness5/5

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

Two short sentences, front-loaded with the main action, no unnecessary words. Efficient and clear.

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 delete tool with two parameters and no output schema, the description plus annotations provide sufficient context. The attendee-notification behavior is a key extra. Irreversibility is covered by destructiveHint.

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?

The schema covers 100% of parameters with descriptions. The description restates the default of notifyAttendees ('por defecto') but does not add significant new semantics beyond the schema. 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 a specific verb 'Elimina' (delete) with a clear resource 'evento del calendario' (calendar event), and includes the EWS operation name (DeleteItem). This clearly distinguishes it from sibling tools like ews_update_event or ews_create_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 context is clear: this is the tool for deleting calendar events, with an additional note about notifyAttendees default behavior. However, it does not explicitly mention alternatives or when not to use it, but the deletion purpose is evident.

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

ews_flag_messageMarcar/desmarcar un correo para seguimientoA

Pone, quita o completa la bandera de seguimiento ('flag') de un correo, equivalente a la banderita de Outlook para marcar pendientes.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesItemId del mensaje a marcar
statusNo'flagged' = marcar pendiente, 'complete' = marcar como resuelto, 'clear' = quitar la banderaflagged

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false, signaling a write operation. The description goes further by explicitly enumerating the three possible actions (set, complete, clear) and their outcomes, which is meaningful behavioral context beyond the raw schema enum. It also clarifies the semantic equivalence to Outlook's flag feature. No contradictions with 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 sentence that is highly efficient and directly to the point. It conveys the action, scope, and semantic reference without unnecessary elaboration. Both title and description are concise and well-structured.

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?

For a simple, two-parameter tool with no output schema, the description combined with the schema provides complete information. The tool's behavior is fully explained, and no additional context about return values or edge cases is needed. The Outlook analogy aids understanding for users familiar with email clients.

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 both parameters (itemId, status) having descriptive text and the status parameter including an enum with clear meanings. The description itself does not add parameter-specific detail, but the baseline of 3 applies because the schema fully explains the parameters, so the description does not need to compensate.

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 a specific verb+resource structure: 'Pone, quita o completa la bandera de seguimiento' (sets, removes, or completes the follow-up flag). This clearly states the tool's function and is unique among siblings, as no other tool handles flags. The Outlook analogy provides additional concrete context.

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 clearly implies when to use this tool: to manage follow-up flags on emails. Since no sibling tool performs flag operations, the intended usage is unambiguous. However, it lacks explicit 'use this when' language or explicit exclusions, though these are not necessary given the tool's uniqueness.

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

ews_forward_messageReenviar un correoA

Reenvía un correo existente (por ItemId) a nuevos destinatarios, con un comentario opcional, y lo envía inmediatamente. Distinto de responder: el hilo original no lleva a los destinatarios anteriores salvo que los repitas en 'to'.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesCorreos destinatarios del reenvío
itemIdYesItemId del mensaje a reenviar
commentNoComentario opcional que se agrega antes del mensaje original

TDQS

A4.6/5.0
Behavior4/5

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

Discloses that the message is sent immediately and that previous recipients are not carried unless repeated in 'to', adding behavioral context beyond the annotations. Could further mention outcome details like sent item creation, but the current coverage is strong.

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 core action in the first sentence and a clarifying distinction in the second. No extraneous content, 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 mutation tool with full schema coverage and no output schema, the description sufficiently covers the main behavior and key differentiator. It might optionally note prerequisites or side effects like sent copy, but the current description is adequate for correct invocation.

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?

The input schema already has 100% coverage with descriptions for all three parameters. The tool description adds the nuance that recipients are 'nuevos' (new) and reinforces the optionality of the comment, providing a small but meaningful semantic increment over 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 uses the specific verb 'Reenvía' (forwards) and clearly identifies the resource as an existing email by ItemId, with optional comment. It also distinguishes from replying by stating the original thread does not carry previous recipients unless repeated, making it unambiguous 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 Guidelines5/5

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

Explicitly contrasts with 'responder' (reply) and explains the difference in thread behavior, providing clear guidance on when to forward vs reply. This directly addresses the most similar sibling tool, ews_reply_message.

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

ews_get_messageObtener un correo completoA
Read-only

Obtiene el contenido completo (cuerpo, remitente, destinatarios) de un mensaje dado su ItemId (obtenido de ews_list_inbox o ews_search_inbox).

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesItemId del mensaje

TDQS

A4.5/5.0
Behavior4/5

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

The readOnlyHint annotation already marks this as read-only; the description adds value by specifying exactly which parts of the message are returned (body, sender, recipients), which is useful behavioral context beyond the schema. 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.

Conciseness5/5

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

A single, focused sentence that front-loads the action and resource, then adds the essential sourcing information. No filler.

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?

For a simple read tool with one parameter and no output schema, the description covers what it returns (body, sender, recipients), how to get the ID, and is a read operation. It's sufficiently complete for an agent to invoke correctly.

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?

The schema already provides a description for itemId, but the tool description enriches it by explaining the ItemId's provenance (obtained from ews_list_inbox or ews_search_inbox), which helps agents know how to acquire a valid value.

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 a specific verb 'Obtiene' and specifies the resource 'contenido completo (cuerpo, remitente, destinatarios)' and the identifier 'ItemId'. It also references sibling tools for obtaining the ID, making it clear this is the fetch-full-message tool, distinct from reply/forward etc.

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 clearly indicates the prerequisite: the ItemId comes from ews_list_inbox or ews_search_inbox, implying this tool is used after those list/search operations to retrieve full content. It doesn't explicitly contrast with alternatives, but the context is strong enough.

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

ews_list_calendarListar eventos de calendarioA
Read-only

Lista los eventos del calendario entre dos fechas (ISO 8601, ej. 2026-07-30T00:00:00-05:00).

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesFecha/hora fin en ISO 8601
startYesFecha/hora inicio en ISO 8601

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, covering the read-only safety profile. The description adds the date-range scope and a concrete ISO 8601 example, but does not disclose return structure, ordering, pagination, or boundary inclusivity.

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 verb and resource. It contains no filler or redundant 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?

For a simple 2-parameter listing tool with useful annotations, the description provides enough context for selection and invocation. No output schema exists, so return details are not specified, but 'list events' inherently implies a collection of calendar events.

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?

The input schema fully documents both parameters with ISO 8601 descriptions, giving a baseline of 3. The description adds value by providing a concrete example with a timezone offset (2026-07-30T00:00:00-05:00), clarifying the expected string format 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 uses the specific verb 'Lista' with the resource 'eventos del calendario' and scopes the operation to a date range in ISO 8601 format. This clearly distinguishes it from sibling tools like create_event, update_event, or list_inbox.

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 date-range condition implies when to use this tool: to retrieve calendar events between two dates. However, it does not explicitly mention alternatives or exclusions, such as 'use get_message for a single message' or 'use today_summary for a daily overview.'

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

ews_list_foldersListar carpetas del buzónA
Read-only

Lista las carpetas del buzón (Inbox, Archivo, y cualquier carpeta personalizada creada por el usuario), con su cantidad de correos no leídos. Úsalo antes de mover un correo a una carpeta que no sea una de las estándar (inbox/sentitems/deleteditems/archive).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

readOnlyHint already declares the operation safe; the description adds behavioral detail that custom folders are included and unread counts are returned. No contradictions with 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 concise with two sentences: first states the output, second provides usage timing. No unnecessary words or redundancy.

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 zero parameters, no output schema, and a readOnly annotation, the description fully covers what the tool does, when to use it, and the scope of folders returned.

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?

The tool has zero parameters, so the description need not explain parameter semantics. A baseline of 4 is appropriate since there is no parameter burden.

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 lists mailbox folders (Inbox, Archive, custom folders) with unread email counts. This specific verb+resource+scope distinguishes it from sibling ews_list_inbox, which lists messages rather than folders.

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 explicitly says to use this tool before moving an email to a non-standard folder, providing clear when-to-use guidance and implicitly distinguishing it from standard folder moves.

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

ews_list_inboxListar bandeja de entradaA
Read-only

Lista los mensajes más recientes de la bandeja de entrada (Inbox), del más nuevo al más viejo.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMáximo de mensajes a devolver
unreadOnlyNoSi es true, solo devuelve mensajes no leídos

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 safety is covered. The description adds the behavioral details of returning messages from newest to oldest and focusing on the most recent, but it does not disclose potential return format, pagination behavior, or what happens when more messages exist than the limit. This is similar to the high-calibration example.

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 immediately conveys the core action and scope. No redundant information, and it is front-loaded with the verb 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 list tool with two optional, well-documented parameters and read-only annotations, the description is largely adequate. It clearly communicates the purpose and ordering, though it lacks explicit mention of pagination or return fields. Given the absence of an output schema, a bit more detail could improve completeness, but it is not severely deficient.

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% for both parameters (limit and unreadOnly), so the schema fully documents them. The description does not add extra meaning beyond what the schema already provides, hence 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 states the tool lists the most recent inbox messages, newest to oldest. The verb 'Lista' and resource 'bandeja de entrada' are specific, and the scope (recent, ordered) distinguishes it from sibling tools like ews_search_inbox or ews_get_message.

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 retrieving recent inbox messages, but it does not explicitly state when to use this tool over alternatives (e.g., for searching, use ews_search_inbox). It provides no exclusions or alternative guidance beyond the inherent implication.

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

ews_move_messageMover correo a otra carpetaA

Mueve un mensaje a otra carpeta del buzón (ej. archivar, mover a una carpeta de seguimiento).

ParametersJSON Schema
NameRequiredDescriptionDefault
folderYesCarpeta destino (usa 'deleteditems' para archivar/borrar)
itemIdYesItemId del mensaje a mover

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate this is a write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds minor context about moving messages, but does not go beyond annotations in disclosing side effects, permissions, or edge cases. It provides adequate but not rich behavioral detail.

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, front-loaded sentence that directly states the core action and provides useful examples. Every word contributes meaning, with no unnecessary elaboration or repetition. It is highly concise and well-structured.

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 2 parameters, full schema coverage, and annotations, the description is largely complete. It states the purpose, gives examples, and relies on the schema for parameter details. However, it does not explicitly clarify that only the enum folder values are allowed, and the 'follow-up folder' example could mislead users since it is not an available enum value. Additionally, it does not mention that moving to 'deleteditems' is effectively an archive/delete action, though the schema does. Overall, it is adequate but with minor gaps.

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 itself does not add parameter-specific details; it merely mentions moving to 'another folder' and gives generic examples. The schema already documents the folder enum and itemId, so the description adds no significant semantic value 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 the tool's function: 'Mueve un mensaje a otra carpeta del buzón' (Moves a message to another mailbox folder). It specifies a distinct action (move) and resource (message), setting it apart from sibling tools like send, reply, or flag. The examples ('archivar, mover a una carpeta de seguimiento') further clarify intended use.

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 through examples (archiving, follow-up organization) but does not explicitly state when to use this tool versus alternatives. It lacks clear exclusions or direct comparisons to sibling tools. This is enough for an implied understanding, but not explicit guidance.

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

ews_reply_messageResponder un correoA

Responde un correo existente (por ItemId) y lo envía inmediatamente. Usa replyAll=true para 'Responder a todos'.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesCuerpo de la respuesta, texto plano
itemIdYesItemId del mensaje al que se responde
replyAllNo

TDQS

A4.3/5.0
Behavior3/5

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

Las anotaciones ya indican que no es una operación de solo lectura (readOnlyHint=false). La descripción añade que el envío es 'inmediatamente', un detalle útil pero menor. No contradice las anotaciones ni revela efectos adicionales relevantes.

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?

Una sola oración que comunica la función y la opción clave. Sin redundancias ni información superflua, logra máxima claridad en mínimo espacio.

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?

Para una herramienta simple con 3 parámetros, sin esquema de salida y con anotaciones básicas, la descripción cubre los aspectos esenciales: la acción, el destinatario inmediato y la opción replyAll. Es suficiente para entender el comportamiento y usarla correctamente.

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?

El esquema documenta body e itemId, pero replyAll carece de descripción en el schema. La descripción compensa explicando que replyAll=true corresponde a 'Responder a todos', añadiendo significado a un parámetro que de otro modo sería ambiguo.

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?

La descripción usa un verbo específico ('Responde') y un recurso concreto ('correo existente por ItemId'), diferenciándose claramente de herramientas similares como ews_send_message (enviar nuevo) o ews_forward_message (reenviar). Señala la acción principal y el mecanismo de identificación.

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?

Proporciona un contexto claro: se usa para responder a un correo existente. Aunque no menciona explícitamente cuándo no usarla o alternativas, la referencia a 'existente' delimita el caso de uso y la distingue de crear un mensaje nuevo.

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

ews_resolve_contactBuscar contacto en la libreta de la empresa (GAL)A
Read-only

Busca por nombre parcial en la Global Address List de Integral de Empaques (la libreta corporativa de Outlook) y devuelve coincidencias con su correo. Úsalo antes de invitar a alguien por nombre a una reunión, para confirmar el correo correcto.

ParametersJSON Schema
NameRequiredDescriptionDefault
nombreYesNombre o parte del nombre a buscar, ej. 'Felipe Castillo'

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is known. The description adds behavioral context beyond that: it performs partial-name matching, returns email addresses, and is scoped to the company's GAL. It doesn't detail result limits or error handling, but the added context is meaningful.

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: the first directly states the tool's function, the second provides usage context. No redundant detail, and the key information is front-loaded.

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?

For a single-parameter, read-only search tool with no output schema, the description adequately covers what it does, what it returns (matches with email), and when to use it. The annotations handle the safety profile, making this 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 100% with the 'nombre' parameter description including an example ('ej. Felipe Castillo'). The description merely restates that the search is by partial name, adding no new parameter-level meaning, so the baseline of 3 applies.

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 searches by partial name in the Global Address List and returns matches with their email, specifying the exact resource ('Global Address List de Integral de Empaques') and the result. This distinguishes it from sibling tools like ews_search_inbox or ews_add_attendee.

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 explicit when-to-use guidance: 'Úsalo antes de invitar a alguien por nombre a una reunión, para confirmar el correo correcto.' It lacks explicit when-not-to-use or alternative tool mentions, but the context is clear enough for a single-purpose tool.

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

ews_search_inboxBuscar en bandeja de entradaA
Read-only

Busca mensajes en Inbox cuyo Asunto contenga el texto indicado (búsqueda simple por substring).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYesTexto a buscar en el asunto del correo

TDQS

A4.1/5.0
Behavior3/5

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

The annotation readOnlyHint=true already communicates that this is a safe read operation. The description adds useful context by specifying the search scope (Inbox) and behavior (simple substring search on subject). However, it does not disclose additional behavioral details like result ordering, case sensitivity, or pagination behavior, which could be relevant for an agent.

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 verb and resource. Every word earns its place, avoiding unnecessary detail or repetition. It is appropriately succinct for a simple tool.

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?

For a simple search tool with clear annotations (readOnlyHint=true), a well-defined schema, and no output schema, the description is complete enough. It states what is searched, where, and how (substring on subject), and the schema handles parameters. No additional context is necessary for correct use.

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 50%: 'query' has a description in the schema ('Texto a buscar en el asunto del correo'), and the tool description reinforces its meaning. The 'limit' parameter has no schema description, but its name and constraints (integer, default 15, max 50) are self-explanatory. The description does not add detail beyond the schema, but the parameters are simple enough that this is acceptable.

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's purpose: to search messages in the Inbox by subject substring. It uses a specific verb ('Busca'), indicates the target resource ('mensajes en Inbox'), and specifies the filter criterion ('Asunto contenga el texto indicado'). This distinguishes it from sibling tools like ews_list_inbox (lists all) and ews_get_message (retrieves a specific message).

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 the tool: when you need to find messages in the Inbox by subject text. However, it does not explicitly mention alternatives or when not to use it, such as when full-text search or folder-wide search is needed. It lacks the explicit exclusionary guidance seen in top-tier examples.

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

ews_send_messageEnviar correo nuevoA

Redacta y envía un correo nuevo (no una respuesta).

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCorreos en copia
toYesCorreos destinatarios
bodyYesCuerpo del correo, texto plano
subjectYesAsunto

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already signal a mutation (readOnlyHint=false). The description adds that it composes and sends an email, which is consistent. But it does not disclose additional behavioral traits such as immediate sending, irreversibility, or any prerequisites. It adds some value but not rich context beyond the 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, well-structured sentence that front-loads the action and resource, with a parenthetical exclusion. Every word earns its place; no redundancy or filler.

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 is adequate for a simple send operation with complete schema and annotations, but it lacks explicit guidance on distinguishing from forwarding, a key sibling tool. This creates an ambiguous edge case for an AI agent deciding between ews_send_message and ews_forward_message.

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?

The input schema has 100% parameter coverage with descriptions for to, subject, body, and cc. The description itself adds no parameter-level semantics, so it relies on the schema. This meets the baseline for high schema coverage.

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 ('Redacta y envía') and resource ('un correo nuevo'), and explicitly excludes replies ('no una respuesta'). However, it does not mention distinguishing from forwards, despite ews_forward_message being a sibling tool. This is a minor differentiation gap.

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 gives an explicit when-not-to-use hint by saying 'no una respuesta', which excludes reply tools. However, it omits the forward alternative entirely, so the guidance is partial and does not cover a likely sibling. It falls between 'implied usage' and 'clear context with exclusions'.

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

ews_today_summaryResumen del díaA
Read-only

Resumen rápido: cantidad de correos no leídos en Inbox + eventos de calendario de hoy.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

The description adds behavioral detail beyond the readOnlyHint annotation by specifying exactly what the summary includes (unread count and today's events). It also narrows scope to 'hoy' and 'Inbox', providing useful limitations. No contradictions with 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, front-loaded sentence that conveys the exact purpose without fluff. It is concise and well-structured.

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 zero-parameter tool with no output schema, the description adequately explains what to expect: unread email count and today's calendar events. It could elaborate on the format of the events or the timezone, but for a simple summary tool it is sufficiently complete.

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?

The tool has no parameters, so according to the rubric the baseline is 4. The description does not need to explain parameters; it focuses on the result composition.

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 provides a quick summary of unread Inbox emails and today's calendar events. It uses a specific verb 'Resumen' and specifies the resources (Inbox, calendar), distinguishing it from sibling tools like ews_list_inbox and ews_list_calendar.

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 a quick daily briefing but does not explicitly compare against alternative tools. It lacks guidance on when to choose this over calling ews_list_inbox and ews_list_calendar separately, so the usage context is only implied.

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

ews_update_eventReprogramar/editar un eventoA

Cambia horario, asunto o lugar de un evento existente (UpdateItem). Solo actualiza los campos que pases.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoNueva fecha/hora fin en ISO 8601
startNoNueva fecha/hora inicio en ISO 8601
eventIdYesId del evento a editar
subjectNoNuevo asunto
locationNoNuevo lugar

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=false and destructiveHint=false. The description adds the key behavioral detail that only provided fields are updated (merge semantics), which is not disclosed by annotations. This is valuable context and does not contradict the 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?

One sentence conveys the core action, scope, and update semantics with zero redundancy. It is appropriately front-loaded with the action ('Cambia') and includes a technical reference (UpdateItem) without excess.

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 straightforward update tool with full schema descriptions and annotations, this description is sufficient. It does not explain error behavior or return values, but that is not necessary given the simple nature and absence of an output schema. The partial-update note is essential and present.

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%, so baseline is 3. The description adds meaning by clarifying that only passed fields are updated, which explains the optionality of start/end/subject/location and reinforces the partial-update behavior. This goes beyond the individual parameter descriptions.

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 a specific verb ('cambia') and names the resource ('evento existente') plus the editable fields (horario, asunto, lugar). Mentioning 'UpdateItem' ties it to EWS and clearly distinguishes it from sibling create, delete, accept, and decline 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?

The phrase 'evento existente' implies it is for editing existing records, not creating or deleting. 'Solo actualiza los campos que pases' provides explicit partial-update guidance. However, it does not name alternative tools or state when not to use it, so it falls short of explicit exclusion.

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. 18 tool updatesv0.1.0
    • First observedews_accept_event
    • First observedews_add_attendee
    • First observedews_create_event
    • First observedews_decline_event
    • First observedews_delete_event
    • First observedews_flag_message
    • First observedews_forward_message
    • First observedews_get_message
    • First observedews_list_calendar
    • First observedews_list_folders
    • First observedews_list_inbox
    • First observedews_move_message
    • First observedews_reply_message
    • First observedews_resolve_contact
    • First observedews_search_inbox
    • First observedews_send_message
    • First observedews_today_summary
    • First observedews_update_event

TDQS

A4/5.0

Scored across 18 tools

Disambiguation5/5

Each tool targets a distinct resource/action combination: email operations (list, search, get, send, reply, forward, move, flag) are clearly separated from calendar operations (list, create, update, delete, accept, decline, add_attendee) and contact resolution. No two tools have overlapping or ambiguous purposes.

Naming Consistency4/5

The vast majority of tools follow the ews_verb_noun pattern consistently (e.g., ews_list_inbox, ews_create_event, ews_forward_message). The only deviation is ews_today_summary, which lacks a verb and breaks the otherwise uniform convention.

Tool Count4/5

At 18 tools, the set is slightly above the typical well-scoped range, but the count is justified by covering two major Outlook domains (email and calendar) plus contacts. Each tool has a clear role, so the size feels reasonable rather than bloated.

Completeness4/5

Core workflows for email (list, read, send, reply, forward, move, flag) and calendar (list, create, update, delete, accept/decline invitations, add attendees) are covered. Notable gaps include lack of email deletion and no dedicated get-event tool, but these are workaroundable via list and update/delete.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers