Skip to main content
Glama
elmehdimrh

ovh-exchange-mcp

by elmehdimrh

ovh-exchange-mcp

Serveur MCP (Model Context Protocol) qui expose une boîte Exchange (EWS, authentification NTLM) à un agent IA — recherche, lecture, envoi, réponse, transfert d'emails, gestion des dossiers et pièces jointes.

Configuration

Copier .env.example en .env et remplir les variables :

EWS_URL=https://ex2.mail.ovh.net/EWS/Exchange.asmx
EWS_USERNAME=votre.adresse@domaine.fr
EWS_PASSWORD=votre_mot_de_passe
EWS_DOMAIN=
  • EWS_USERNAME : l'adresse email complète (pas juste le login).

  • EWS_DOMAIN : laisser vide sauf si le serveur exige un domaine Windows explicite.

Installer les dépendances :

npm install

Related MCP server: Outlook MCP

Connexion à Claude Desktop

Ajouter dans claude_desktop_config.json (menu Claude Desktop > Settings > Developer > Edit Config) :

{
  "mcpServers": {
    "ovh-exchange": {
      "command": "node",
      "args": ["/chemin/absolu/vers/ovh-exchange-mcp/index.js"],
      "env": {
        "EWS_URL": "https://ex2.mail.ovh.net/EWS/Exchange.asmx",
        "EWS_USERNAME": "votre.adresse@domaine.fr",
        "EWS_PASSWORD": "votre_mot_de_passe",
        "EWS_DOMAIN": ""
      }
    }
  }
}

Redémarrer Claude Desktop. Les 8 tools doivent apparaître dans la liste des outils disponibles.

Test manuel

node test-manual.js search
node test-manual.js get <itemId>
node test-manual.js folders
node test-manual.js update <itemId>
node test-manual.js attachments <itemId> [attachmentId]
node test-manual.js reply <itemId>
node test-manual.js forward <itemId> <destinataire>
node test-manual.js send <destinataire>

Ajouter DEBUG_EWS=1 devant la commande pour afficher la requête SOAP envoyée.

Tools disponibles

search_emails(folder, query?, maxResults?)

Liste les emails d'un dossier.

{ "folder": "inbox", "query": "subject:facture", "maxResults": 10 }

get_email(itemId)

Récupère le contenu complet d'un email (corps HTML, destinataires, pièces jointes).

{ "itemId": "AQMkAD..." }

send_email(to, subject, body, cc?)

Action irréversible — envoie réellement un email.

{ "to": "quelqu'un@exemple.fr", "subject": "Bonjour", "body": "<p>Contenu</p>" }

list_folders()

Énumère tous les dossiers de la boîte mail avec leur nombre d'emails non lus.

{}

update_email(itemId, markAsRead?, moveToFolder?)

Marque comme lu/non lu et/ou déplace vers un autre dossier (par nom d'affichage ou nom standard).

{ "itemId": "AQMkAD...", "markAsRead": true, "moveToFolder": "Archive" }

get_attachments(itemId, attachmentId?)

Sans attachmentId : liste les pièces jointes. Avec : télécharge le contenu en base64.

{ "itemId": "AQMkAD..." }
{ "itemId": "AQMkAD...", "attachmentId": "AAMkAD..." }

reply_to_email(itemId, body, replyAll?)

Action irréversible — envoie réellement une réponse.

{ "itemId": "AQMkAD...", "body": "<p>Merci, c'est noté.</p>", "replyAll": false }

forward_email(itemId, to, comment?)

Action irréversible — transfère réellement l'email.

{ "itemId": "AQMkAD...", "to": "collegue@exemple.fr", "comment": "Pour info" }

Notes

  • Les tools send_email, reply_to_email et forward_email sont marqués comme irréversibles dans leur description : un agent IA bien élevé doit demander confirmation du destinataire et du contenu avant de les appeler.

  • La vulnérabilité npm underscore (dépendance transitive de httpntlm) est corrigée via le champ overrides du package.json, sans changer de version de httpntlm.

Available Tools

8 tools
forward_emailTransférer un emailA

ACTION IRRÉVERSIBLE: transfère réellement un email existant à un nouveau destinataire. L'agent DOIT toujours demander confirmation explicite du destinataire et du commentaire à l'utilisateur avant d'appeler cet outil.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesDestinataire(s) du transfert, séparés par des virgules
itemIdYesIdentifiant EWS de l'email à transférer
commentNoCommentaire à ajouter avant le contenu transféré

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It does this well: it states the action is irreversible ('ACTION IRRÉVERSIBLE'), that it actually forwards (not simulates), and mandates user confirmation. These are key behavioral traits. It does not disclose side effects like whether the original email is modified, but for a forwarding action this is minor. Overall it provides substantial behavioral context beyond the schema.

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 zero fluff. It front-loads the most critical warning ('ACTION IRRÉVERSIBLE') before stating the purpose, then adds the mandatory confirmation requirement. Every word earns its place, making it both concise and structurally effective.

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 covers the essential context for a mutation tool: irreversibility, the need for user confirmation, and the core action. It does not explain return values or error behavior, but with no output schema and a simple operation, these are not critical for correct invocation. The main practical uncertainty – how to get itemId – is handled by sibling tools. A small gap is not specifying what happens to the original email, but this does not impede usage.

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% – all three parameters (to, itemId, comment) already have clear schema descriptions. The tool description adds no additional meaning for the parameters, so it does not go beyond what the schema provides. Per the rubric, when schema coverage is high, baseline is 3, which is appropriate here.

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 states a specific action: 'transfère réellement un email existant à un nouveau destinataire' (actually forwards an existing email to a new recipient). It clearly distinguishes this from siblings like send_email (creating a new email) and reply_to_email (replying), without needing to open the schema. The verb 'transfère' and resource 'email' are 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 gives explicit guidance: it is irreversible and the agent MUST always ask for explicit confirmation of the recipient and comment before calling. This is a strong usage constraint that tells when to pause and verify. However, it does not explicitly name alternative tools or state 'use this instead of send_email when forwarding an existing email,' so it misses the explicit sibling differentiation that would earn a 5.

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

get_attachmentsLister ou télécharger les pièces jointesA

Sans attachmentId: liste les pièces jointes d'un email (nom, type, taille, id). Avec attachmentId: télécharge le contenu de la pièce jointe encodé en base64.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesIdentifiant EWS de l'email
attachmentIdNoIdentifiant de la pièce jointe à télécharger (obtenu en listant les pièces jointes)

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full behavioral burden. It discloses the return of base64-encoded content and listing metadata, which is helpful, but it does not mention error handling, permissions, rate limits, or side effects. For a read-only listing/download operation, this is adequate though not exhaustive.

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 with no wasted words. The conditional (without/with attachmentId) is front-loaded, making the decision path immediately clear. It is well-structured for quick parsing.

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 only two parameters and no output schema, the description covers the essential behavior: what each mode returns and the required context (itemId). It omits potential error messages or pagination details, but for a simple tool this is sufficient 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 schema covers both parameters with clear descriptions (100% coverage), and the description adds the crucial conditional logic that not only defines each parameter's role but explains how they interact. This goes beyond the schema's static field descriptions, providing actionable semantics for an agent.

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 a specific behavior: without attachmentId it lists attachments (with name, type, size, id), with attachmentId it downloads the content base64-encoded. This directly matches the title 'Lister ou télécharger les pièces jointes' and distinguishes the two modes unambiguously.

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 precisely when to use each mode (with or without attachmentId), which is exactly the usage guidance needed. However, it does not explicitly mention alternatives or when not to use this tool, but the sibling tools clearly cover different operations, so the context is implied.

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

get_emailRécupérer un emailA

Récupère le contenu complet d'un email (corps HTML, destinataires, pièces jointes) à partir de son identifiant.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesIdentifiant EWS de l'email (obtenu via search_emails)

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It does say what the tool returns (full email content, recipients, attachments), but it does not disclose side effects, authentication needs, or whether attachments are inline vs. handled separately by get_attachments.

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 French sentence that front-loads the verb, identifies the resource, enumerates key content, and specifies the input source. Every element contributes value; there is no filler.

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 one-parameter fetch tool, the description is mostly complete: it names the key return elements and the parameter schema covers the input workflow. The main gap is the ambiguous relationship with get_attachments and the lack of any note about attachment representation or output format.

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%, and the schema already explains that itemId is an EWS identifier obtained via search_emails. The tool description adds no additional parameter semantics, 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.

Purpose4/5

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

The description clearly identifies the operation: 'Récupère le contenu complet d'un email' and specifies the resource and output components (corps HTML, destinataires, pièces jointes). It is distinct from most siblings like search_emails, send_email, and update_email, but the explicit mention of pièces jointes blurs the boundary with get_attachments without resolving it.

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?

Usage context is implied rather than stated: the main description says 'à partir de son identifiant', and the parameter schema adds that itemId is 'obtenu via search_emails', which implies a search-then-fetch workflow. However, there is no explicit guidance about when to prefer this over get_attachments or other siblings.

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

list_foldersLister les dossiersA

Énumère tous les dossiers de la boîte mail (Inbox, Éléments envoyés, Brouillons, dossiers personnalisés...) avec leur nombre d'emails non lus.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral disclosure burden. It clearly indicates a read-only enumeration action and specifies the returned information (folder names plus unread email counts). It does not mention pagination or ordering, but for a simple listing tool the behavior is transparent enough.

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, then provides illustrative examples and the key output detail. Every word contributes value with no 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?

This is a simple, parameterless tool with no output schema, and the description fully covers what an agent needs to call it correctly: it lists all folders and includes unread counts. There is no missing prerequisite, permission, or return-value information that would materially affect 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 tool has zero parameters, so there is nothing for the description to clarify beyond the schema. Per the baseline for zero-parameter tools, this is adequate, and the description adds useful context about what the output includes.

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 'Énumère' (enumerates) and identifies the resource as all mailbox folders, listing examples such as Inbox, Sent Items, Drafts, and custom folders. It also adds the distinguishing output detail of unread email counts, which clearly separates it from the email-focused sibling tools.

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 when an agent needs a folder overview, and the sibling tools are all email operations, making this the only folder-listing tool. However, it does not explicitly state when to choose this over alternatives or provide any exclusion criteria, so usage guidance is only implied rather than stated.

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

reply_to_emailRépondre à un emailA

ACTION IRRÉVERSIBLE: envoie réellement une réponse à un email existant. L'agent DOIT toujours demander confirmation explicite du contenu (et du choix répondre/répondre à tous) à l'utilisateur avant d'appeler cet outil.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesCorps de la réponse (HTML)
itemIdYesIdentifiant EWS de l'email auquel répondre
replyAllNotrue pour répondre à tous les destinataires d'origine, false pour répondre seulement à l'expéditeur (défaut)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses the irreversible nature and the real sending effect, which is critical behavioral context. It also warns about the confirmation requirement. However, it does not mention any side effects like what happens to the original email or whether it updates status, but for a simple reply action, this is adequate. The irreversibility warning is a strong disclosure.

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, purpose-built sentence that front-loads the critical warning about irreversibility and the mandatory confirmation step. There is no fluff or redundancy; every word earns its place. The structure is efficient and immediately conveys the core message.

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 (3 parameters, 2 required), no output schema, and no annotations, the description effectively covers the essential contextual elements: it states the action, stresses irreversibility, and mandates user confirmation. The parameter details are already in the schema, so nothing essential is missing. It could have mentioned the replyAll option, but the schema covers it, so this is 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%, so the schema already documents all three parameters (body, itemId, replyAll) with descriptions. The tool description does not add any additional meaning beyond what the schema provides. Since the schema is complete, a baseline of 3 is appropriate; the description does not need to repeat parameter details.

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: sending a real reply to an existing email. It uses a specific verb ('envoie') and identifies the resource ('un email existant'). It also distinguishes itself from siblings like forward_email or send_email by emphasizing 'réellement' (really) and the irreversibility, setting it apart as the actual sending action.

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 mandates that the agent must always ask explicit confirmation from the user before invoking this tool, specifying both content and the reply/Reply All choice. This provides a strong usage guideline, though it does not explicitly compare with alternatives. The warning is clear and actionable, making it a high-quality usage rule.

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

search_emailsRechercher des emailsA

Liste les emails d'un dossier Exchange (inbox, sent, drafts, ou un nom de dossier personnalisé), avec un filtre de recherche optionnel (AQS).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoFiltre de recherche (Advanced Query Syntax), ex: subject:facture
folderYesNom du dossier: inbox, sent, drafts, deleteditems, junkemail, ou le nom d'affichage d'un dossier personnalisé
maxResultsNoNombre maximum de résultats (défaut: 25)

TDQS

A3.7/5.0
Behavior3/5

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

The core behavior is disclosed: this is a listing/search operation scoped to a folder with an optional filter. With no annotations present, the description carries the burden, and it does not explicitly mention read-only status, returned fields, sorting, or pagination. This is a moderate gap for a low-risk read tool.

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 filler. It communicates the resource, scope, and optional filter efficiently.

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 gives enough to invoke the tool correctly: folder scope and optional filter. However, there is no output schema and the description does not mention what fields are returned, pagination behavior, or default sorting. This is adequate but not fully 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 description coverage is 100%, so the schema already documents all three parameters (query, folder, maxResults). The description adds no parameter-level meaning beyond what the schema provides, 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 states a specific verb ('Liste') and resource ('emails d'un dossier Exchange'), and adds the optional AQS filter. This clearly distinguishes it from siblings like get_email (single email), send_email, and list_folders.

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 makes the usage context clear: list emails in a specified Exchange folder, optionally filtered by AQS. However, it does not explicitly say when to prefer this over get_email, get_attachments, or list_folders, so guidance is implied rather than stated.

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

send_emailEnvoyer un emailA

ACTION IRRÉVERSIBLE: envoie réellement un nouvel email. L'agent DOIT toujours demander confirmation explicite du destinataire, du sujet et du contenu à l'utilisateur avant d'appeler cet outil.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoDestinataires en copie, séparés par des virgules
toYesDestinataire(s), séparés par des virgules
bodyYesCorps de l'email (HTML)
subjectYesSujet de l'email

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the safety burden and does so well: it flags the action as 'ACTION IRRÉVERSIBLE' and emphasizes that the email is actually sent, not staged or simulated. It could add more about failures or side effects, but the key irreversible behavior is disclosed.

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 with the most important warning placed first in uppercase. Every word is functional and there is no filler.

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 that this is a destructive send action with no annotations and no output schema, the description covers the critical pre-call requirement and the irreversible nature. It does not describe the response or failure modes, but for a send tool the main risk and required protocol are well covered.

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 already covers 100% of parameters with descriptions, so the baseline is 3. The description adds that recipient, subject, and content must be confirmed, but does not add new parameter-level semantics beyond the schema.

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 states a clear action: 'envoie réellement un nouvel email' (actually sends a new email). It is distinct enough from reply/forward siblings by specifying a new email, but it does not explicitly name those alternatives.

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 provides an explicit precondition: the agent must always get user confirmation of recipient, subject, and content before calling. It does not, however, explain when to prefer this tool over reply_to_email or forward_email, so it stops short of a 5.

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

update_emailMettre à jour un emailA

Marque un email comme lu/non lu et/ou le déplace vers un autre dossier.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesIdentifiant EWS de l'email
markAsReadNotrue pour marquer comme lu, false pour marquer comme non lu
moveToFolderNoNom du dossier de destination (nom d'affichage ou nom standard: inbox, sent, drafts...)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the mutation actions ('marks as read/unread and/or moves') but does not disclose potential side effects, such as whether moving removes the email from the original folder, whether the folder must already exist, or what happens if only itemId is provided without optional parameters. This is a significant transparency gap for a mutation tool.

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 directly captures the two main supported operations. It contains no fluff, redundant phrasing, or extraneous details. The structure is appropriately concise and front-loaded.

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?

With no annotations and no output schema, the description is adequate but leaves gaps. It does not clarify behavior when optional parameters are omitted, whether both actions can be combined safely, or constraints on folder names. The schema covers parameter meanings, so the tool is callable, but some edge-case behavior remains ambiguous.

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% description coverage, so the structure already documents itemId, markAsRead, and moveToFolder fully. The description adds no extra parameter semantics beyond restating the two actions. Baseline 3 is appropriate because the schema does the heavy lifting.

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 states a clear, specific action: 'Marks an email as read/unread and/or moves it to another folder.' This distinguishes it from sibling tools like send_email, get_email, search_emails, and list_folders, which serve different operations. The verb and resource are explicit, so an agent can immediately understand what the tool does.

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 the tool (when updating an email's read state or folder location), but it does not explicitly state exclusions or alternatives. No mention of 'use send_email for sending' or 'use get_email for reading' appears. The usage context is clear but left to inference rather than explicit guidance.

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. 8 tool updatesv1.0.0
    • First observedforward_email
    • First observedget_attachments
    • First observedget_email
    • First observedlist_folders
    • First observedreply_to_email
    • First observedsearch_emails
    • First observedsend_email
    • First observedupdate_email

TDQS

A4.1/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct email operation: folder listing, search, reading, sending, updating, attachment retrieval, replying, and forwarding. There is no meaningful overlap that would confuse an agent.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (list_folders, search_emails, get_email, send_email, update_email, get_attachments, reply_to_email, forward_email). Naming is uniform and predictable throughout.

Tool Count5/5

8 tools cover the core email workflow without bloat. Each tool earns its place, and the count fits the server's scope well.

Completeness4/5

The core lifecycle (read, search, send, reply, forward, update, attachments) is covered, but obvious missing operations include deleting emails and creating/managing folders. These are minor gaps an agent can work around.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides programmatic access to Microsoft Outlook mailboxes, enabling AI assistants to search, analyze, and extract insights from emails in personal and shared mailboxes.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to manage Microsoft Outlook emails through the Microsoft Graph API, supporting operations like listing, reading, sending, and moving emails.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interact with email accounts via IMAP and SMTP, supporting mailbox listing, email search, retrieval, sending, and management.
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to send, read, and manage emails via SMTP and IMAP, with support for attachments, threads, and mailbox organization.
    16
    15 npm
    1
    MIT