Outlook Assistant
The Outlook Assistant MCP server enables AI-powered management of Outlook email, calendar, folders, and rules through natural language commands.
Email Management: List, search, and read emails across all folders with advanced filtering (sender, recipient, subject, attachments, unread status). Send emails with CC/BCC support, importance levels, and HTML/plain text body options. Mark emails as read/unread and move them between folders.
Calendar Management: Full event lifecycle management including listing upcoming events, creating events with attendees, accepting/declining invitations with optional comments, canceling, and deleting events.
Folder Organization: List folder hierarchy with item counts, create new folders (including nested structures), and move emails between folders.
Inbox Rules Automation: List existing rules with detailed conditions and actions, create new rules with conditions (sender, subject, attachments) and actions (move to folder, mark as read), and edit rule execution order/sequence.
Authentication & Status: OAuth 2.0 authentication with Microsoft Graph API, automatic token refresh for persistent access, check authentication status, and force re-authentication if needed.
Key Features: Automatic pagination for large result sets (up to 500 emails/events), configurable output formats (TOON or plain text), and searches across all folders by default.
Outlook MCP Server
Let AI manage your Outlook inbox, calendar, contacts, tasks and rules — through natural language.
Built on Model Context Protocol · Powered by Microsoft Graph API
What is this?
This MCP server turns Claude into a full-featured Outlook assistant. Instead of clicking through the Outlook UI, just ask Claude:
"Show me unread emails from this week" "Schedule a meeting with Alice tomorrow at 3pm and check if she's free first" "Forward that email to my team and create a follow-up task" "Set my out-of-office until Friday"
Claude handles authentication, API calls, pagination, filtering — everything. You just talk.
Related MCP server: Outlook MCP
Capabilities
Area | Tools | What Claude can do |
13 | List, search, read (preview or full body), send, reply, reply-all, forward, delete, mark read/unread, manage drafts, list and download attachments | |
Calendar | 10 | List calendars, list events, create, update, accept, tentatively accept, decline, cancel, delete, check free/busy schedules |
Folders | 3 | List folder hierarchy, create folders, move emails between folders |
Contacts | 4 | List/search, create, update, delete contacts in your address book |
Mailbox | 2 | Get mailbox settings (timezone, language), set out-of-office auto-replies |
Tasks | 5 | List task lists, list tasks, create, complete, delete (Microsoft To Do) |
Rules | 5 | List, create, update, delete inbox rules and change rule execution order |
Auth | 3 | OAuth 2.0 with automatic token refresh — authenticate once, use forever |
45 tools total.
Quick Start
# 1. Clone and install
git clone https://github.com/titanzero/outlook-mcp.git
cd outlook-mcp
npm install
# 2. Configure (see Azure Setup below)
cp .env.example .env
# Edit .env with your Azure credentials
# 3. Start the OAuth server and authenticate
npm run auth-server
# 4. Add to Claude Desktop config and start using!Azure App Setup
You need an Azure app registration to connect to Microsoft Graph.
Click New registration
Name:
Outlook MCP Server(or anything you like)Account type: Accounts in any organizational directory and personal Microsoft accounts
Redirect URI: Web →
http://localhost:3333/auth/callbackClick Register
Copy the Application (client) ID → this is your
OUTLOOK_CLIENT_ID
Go to API permissions → Add a permission → Microsoft Graph → Delegated permissions, then add:
offline_accessUser.ReadMail.ReadMail.ReadWriteMail.SendCalendars.ReadCalendars.ReadWriteContacts.ReadContacts.ReadWriteMailboxSettings.ReadMailboxSettings.ReadWriteMailboxFolder.ReadMailboxFolder.ReadWriteTasks.ReadTasks.ReadWrite
Go to Certificates & secrets → Client secrets → New client secret
Set description and longest expiration
Copy the secret VALUE (not the Secret ID!)
This is your
OUTLOOK_CLIENT_SECRET
Configuration
Environment Variables
Create .env in the project root:
OUTLOOK_CLIENT_ID=your-application-client-id
OUTLOOK_CLIENT_SECRET=your-client-secret-VALUEImportant: Always use the secret VALUE from Azure, not the Secret ID.
Claude Desktop
Add to your Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"outlook-assistant": {
"command": "node",
"args": ["/absolute/path/to/outlook-mcp/index.js"],
"env": {
"OUTLOOK_CLIENT_ID": "your-client-id",
"OUTLOOK_CLIENT_SECRET": "your-client-secret"
}
}
}
}Advanced
Edit config.js to customize server name, timezone, pagination limits, field selections, and response format (toon or text).
Authentication Flow
You ──ask Claude──▸ "authenticate"
│
Claude returns URL ◂────┘
│
You open URL in browser ▸ Microsoft login ▸ Grant permissions
│
┌───────────────────────────┘
▼
OAuth callback on localhost:3333
Tokens saved to ~/.outlook-mcp-tokens.json
✔ Auto-refresh — no re-auth neededStep 1 — Start the auth server (must be running before authenticating):
npm run auth-serverStep 2 — Ask Claude to authenticate, open the URL, sign in, done.
Tokens persist in ~/.outlook-mcp-tokens.json and refresh automatically.
Project Structure
index.js ── MCP entry point
config.js ── centralized constants & settings
outlook-auth-server.js ── standalone OAuth server
auth/ ── authentication & token management
email/ ── list, search, read, send, reply, forward, delete,
│ mark-as-read, attachments, drafts
calendar/ ── list calendars & events, create, update, accept,
│ tentatively-accept, decline, cancel, delete, free-busy
folder/ ── list, create, move
contacts/ ── list, create, update, delete
mailbox/ ── settings, out-of-office
tasks/ ── task lists and tasks (Microsoft To Do)
rules/ ── list, create, update, delete, edit-sequence
utils/
├── graph-client.js ── Graph SDK wrapper with pagination
├── response-formatter.js ── TOON / plain-text output toggle
└── response-helpers.js ── error detection & MCP response builders
scripts/ ── CLI utilities & debug helpersAvailable Commands
Command | Description |
| Install dependencies |
| Start the MCP server (stdio) |
| Start OAuth server on port 3333 |
| Launch MCP Inspector for interactive testing |
| Run Jest test suite |
| Print env vars and start server |
| Free port 3333 if occupied |
Troubleshooting
Run npm install first.
npx kill-port 3333
npm run auth-serverYou're using the Secret ID instead of the Secret Value. Go to Azure Portal → Certificates & secrets → copy the Value column.
The auth server isn't running. Start it first with npm run auth-server, then retry.
Token may be expired or corrupted. Delete ~/.outlook-mcp-tokens.json and re-authenticate.
Verify the absolute path to
index.jsin your Claude Desktop configEnsure
OUTLOOK_CLIENT_IDandOUTLOOK_CLIENT_SECRETare setRestart Claude Desktop after config changes
Extending the Server
Adding a new tool is straightforward:
Create a handler file in the appropriate module directory
Export
{ name, description, inputSchema, handler }Add it to the module's
index.jsexportsIt's automatically registered via
index.jsat the root
See .cursor/rules/new-tool.mdc for the full checklist.
License
Available Tools
20 toolsaboutB
Returns information about this Outlook Assistant server
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states what the tool returns, not how it behaves. It doesn't disclose whether this requires authentication, has rate limits, what format the information takes, or any error conditions. The description adds minimal behavioral context beyond the basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that immediately communicates the core functionality without any wasted words. It's appropriately sized for a simple, parameterless tool and is perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 provides the basic purpose but lacks important context about what information is returned, format, authentication requirements, or typical use cases. While minimal for a simple tool, it leaves the agent guessing about the actual return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't discuss parameters, maintaining focus on the tool's purpose. Baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Returns') and resource ('information about this Outlook Assistant server'), making it immediately understandable. It doesn't explicitly differentiate from siblings, but since this is a unique metadata tool among email/event management siblings, the purpose is still clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. While it's obvious this is a server metadata tool among email/event operations, there's no explicit mention of use cases, prerequisites, or relationships to other tools like 'authenticate' or 'check-auth-status'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accept-eventC
Accepts a calendar event invitation
| Name | Required | Description | Default |
|---|---|---|---|
| eventId | Yes | The ID of the event to accept | |
| comment | No | Optional comment for accepting the event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the action without behavioral details. It doesn't disclose permissions required, whether the action is reversible, effects on other attendees, or response format. For a mutation tool, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste—it directly states the tool's action without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits, error conditions, or what happens post-acceptance (e.g., calendar updates). Given the complexity of event management, more context is needed for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 both parameters ('eventId' and 'comment') adequately. The description adds no additional meaning beyond implying 'eventId' identifies the invitation, which is redundant with the schema. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('accepts') and resource ('a calendar event invitation'), making the tool's purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'decline-event' or 'cancel-event' beyond the verb choice, missing explicit comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'decline-event' or 'cancel-event'. The description implies usage for accepting invitations but doesn't specify prerequisites (e.g., needing an invitation) or contextual constraints, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
authenticateC
Authenticate with Microsoft Graph API to access Outlook data
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Force re-authentication even if already authenticated |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't describe how authentication works (e.g., OAuth flow, token storage, permissions required), what happens on success/failure, or whether it's idempotent. For an authentication tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized and front-loaded with the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an authentication tool with no annotations and no output schema, the description is incomplete. It doesn't explain the authentication mechanism, required permissions, token lifecycle, error conditions, or what successful authentication enables. Given the complexity of authentication flows, this description leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with one parameter fully documented in the schema. The description adds no parameter information beyond what's already in the schema. With high schema coverage, the baseline is 3 even without additional param details in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Authenticate') and target ('Microsoft Graph API to access Outlook data'), providing a specific verb+resource combination. However, it doesn't distinguish this from the sibling 'check-auth-status' tool, which appears to verify authentication status rather than perform authentication.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when authentication is required (e.g., before other operations), when to use 'force' parameter, or how it relates to 'check-auth-status'. There's only implied usage through the tool's name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel-eventC
Cancels a calendar event
| Name | Required | Description | Default |
|---|---|---|---|
| eventId | Yes | The ID of the event to cancel | |
| comment | No | Optional comment for cancelling the event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'cancels' implies a destructive/mutative operation, the description doesn't specify what cancellation entails (e.g., whether it sends notifications, whether the event is removed or marked as cancelled, permission requirements, or whether the action is reversible).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core function without unnecessary words. It's appropriately sized for a simple operation and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with no annotations and no output schema, the description is insufficient. It doesn't explain what happens when an event is cancelled, what the tool returns, or any behavioral implications. Given the complexity of calendar event management and the presence of similar sibling tools, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, both parameters are already documented in the schema. The description adds no additional semantic context about the parameters beyond what's in the structured fields, so it meets the baseline expectation but doesn't provide extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('cancels') and resource ('a calendar event'), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling tools like 'delete-event' or 'decline-event', which appear to be related calendar event operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'delete-event' or 'decline-event'. There's no mention of prerequisites, appropriate contexts, or exclusions for using this cancellation function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check-auth-statusB
Check the current authentication status with Microsoft Graph API
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states what the tool does but lacks behavioral details such as what information is returned (e.g., token validity, user details), error conditions, or rate limits. This is a significant gap for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It's front-loaded with the core purpose, making it highly efficient and easy to parse for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., authentication state, errors) or behavioral aspects, which are crucial for an authentication-related tool. This leaves gaps in understanding how to interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate, earning a baseline score of 4 for this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Check') and the target ('authentication status with Microsoft Graph API'), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'authenticate', which might be used for initial authentication versus checking current status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'authenticate'. There's no mention of prerequisites, typical scenarios (e.g., before making API calls), or exclusions, leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-eventC
Creates a new calendar event
| Name | Required | Description | Default |
|---|---|---|---|
| subject | Yes | The subject of the event | |
| start | Yes | The start time of the event in ISO 8601 format | |
| end | Yes | The end time of the event in ISO 8601 format | |
| attendees | No | List of attendee email addresses | |
| body | No | Optional body content for the event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'creates' which implies a write operation, but doesn't disclose any behavioral traits such as permissions required, whether it sends invitations to attendees, error handling, or rate limits. This leaves significant gaps for a mutation tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it easy to parse. Every part of the sentence earns its place by conveying essential purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like side effects (e.g., notifications to attendees), error cases, or return values, leaving the agent with insufficient context for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with all parameters well-documented in the schema (e.g., subject, start/end times in ISO 8601, attendees as email list). The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without compensating value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('creates') and resource ('new calendar event'), making the purpose immediately understandable. It distinguishes from siblings like 'list-events' or 'cancel-event' by focusing on creation. However, it doesn't specify what distinguishes it from similar creation tools like 'create-folder' or 'create-rule' beyond the resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication status), when not to use it (e.g., for updating events), or direct alternatives among siblings (e.g., 'edit-rule-sequence' for modifications). The agent must infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-folderC
Creates a new mail folder
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the folder to create | |
| parentFolder | No | Optional parent folder name (default is root) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates a folder but doesn't cover important aspects like whether it requires specific permissions, what happens on duplicate names, if it's idempotent, or what the response looks like (e.g., success/failure indicators).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single sentence that directly states the tool's purpose. There's no wasted language or unnecessary elaboration, making it efficiently front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after creation (e.g., returns folder ID, success status), error conditions, or behavioral nuances, leaving significant gaps for an AI agent to understand the tool fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 both parameters ('name' and 'parentFolder') adequately. The description adds no additional parameter information beyond what's in the schema, resulting in the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Creates') and resource ('new mail folder'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list-folders' or 'move-emails' beyond the obvious creation aspect, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication), constraints (e.g., folder name uniqueness), or related tools like 'list-folders' for checking existing folders before creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-ruleC
Creates a new inbox rule
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the rule to create | |
| fromAddresses | No | Comma-separated list of sender email addresses for the rule | |
| containsSubject | No | Subject text the email must contain | |
| hasAttachments | No | Whether the rule applies to emails with attachments | |
| moveToFolder | No | Name of the folder to move matching emails to | |
| markAsRead | No | Whether to mark matching emails as read | |
| isEnabled | No | Whether the rule should be enabled after creation (default: true) | |
| sequence | No | Order in which the rule is executed (lower numbers run first, default: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure but only states the basic action. It doesn't mention whether this operation requires specific permissions, what happens if a rule with the same name exists, whether changes are reversible, or what the typical response format looks like for a creation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that immediately communicates the core function without unnecessary words. It's perfectly front-loaded and wastes no space on redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with 8 parameters and no annotations or output schema, the description is insufficient. It doesn't explain what constitutes a valid rule, how rules interact with existing ones, what happens on success/failure, or provide any context about the email system's rule execution model.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so all 8 parameters are documented in the schema itself. The description doesn't add any additional parameter context beyond the schema's comprehensive documentation, making the baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('creates') and resource ('new inbox rule'), making the purpose immediately understandable. However, it doesn't differentiate this tool from potential siblings like 'edit-rule-sequence' or explain what distinguishes rule creation from other email management operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. With sibling tools like 'edit-rule-sequence' and 'list-rules' available, the description doesn't indicate whether this is for initial setup versus modification, or what prerequisites might exist for creating inbox rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decline-eventC
Declines a calendar event
| Name | Required | Description | Default |
|---|---|---|---|
| eventId | Yes | The ID of the event to decline | |
| comment | No | Optional comment for declining the event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('declines') but doesn't cover critical aspects like required permissions, whether the decline is reversible, if it sends notifications, or what happens to the event in the calendar. This is a significant 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits, error handling, or return values, leaving the agent under-informed for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting both parameters. The description adds no additional meaning beyond what the schema provides, such as format details for eventId or usage examples for comment. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('declines') and resource ('a calendar event'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'cancel-event' or 'delete-event', which might handle similar calendar modifications, so it misses the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't clarify if this is for declining an invitation versus canceling an event, or mention prerequisites like authentication. This leaves the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete-eventC
Deletes a calendar event
| Name | Required | Description | Default |
|---|---|---|---|
| eventId | Yes | The ID of the event to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Deletes' clearly indicates a destructive operation, the description doesn't address important behavioral aspects like whether deletion is permanent or reversible, what permissions are required, whether notifications are sent, or what happens to recurring events. This leaves significant gaps for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is maximally concise at just three words ('Deletes a calendar event'), with zero wasted language. It's front-loaded with the core action and resource, making it immediately understandable without any unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with no annotations and no output schema, the description is insufficiently complete. It doesn't address critical context like what 'delete' means in this system (permanent vs. soft delete), whether there are confirmation steps, what the response looks like, or error conditions. The agent would need to guess about important behavioral aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single parameter 'eventId' clearly documented in the schema itself. The description adds no additional parameter information beyond what's already in the structured schema, which meets the baseline expectation when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Deletes') and resource ('a calendar event'), making the tool's function immediately understandable. However, it doesn't differentiate from sibling tools like 'cancel-event' or 'decline-event', which might have overlapping functionality in a calendar context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'cancel-event' or 'decline-event'. There's no mention of prerequisites, permissions needed, or contextual factors that would help an agent choose between these similar-sounding tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit-rule-sequenceC
Changes the execution order of an existing inbox rule
| Name | Required | Description | Default |
|---|---|---|---|
| ruleName | Yes | Name of the rule to modify | |
| sequence | Yes | New sequence value for the rule (lower numbers run first) |
TDQS
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. While 'Changes' implies a mutation, it lacks details on permissions, reversibility, side effects, or response format. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like error handling, what happens to other rules' sequences, or the response structure, which are crucial for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear parameter descriptions in the schema. The description adds no additional meaning beyond the schema's details, such as explaining how sequence values interact with other rules. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Changes') and resource ('execution order of an existing inbox rule'), making the purpose specific and understandable. However, it doesn't explicitly differentiate this tool from potential siblings like 'create-rule' or 'list-rules' beyond the implied modification focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing rule), exclusions, or comparisons to other rule-related tools like 'create-rule' or 'list-rules', leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-emailsB
Lists recent emails from your inbox
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Email folder to list (e.g., 'inbox', 'sent', 'drafts', default: 'inbox') | |
| count | No | Number of emails to retrieve (default: 10, max: 500). Pagination is handled automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'recent emails' but doesn't specify what 'recent' means (timeframe, sorting), whether it's read-only, if it requires authentication, or how pagination works. The schema mentions pagination, but the description doesn't elaborate on this behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a simple listing tool and gets straight to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read operation with 2 well-documented parameters and no output schema, the description is minimally adequate. However, it lacks important context about authentication requirements, result format, and how 'recent' is defined, which would help the agent use the tool more effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters. The description adds no parameter-specific information beyond what's already in the schema descriptions, meeting the baseline expectation when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Lists') and target resource ('recent emails from your inbox'), making the purpose immediately understandable. It specifies 'recent' which adds useful temporal context, though it doesn't explicitly differentiate from sibling tools like 'search-emails' or 'read-email'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'search-emails' or 'read-email'. It mentions 'recent emails' but doesn't clarify if this is for quick overviews versus comprehensive searches, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-eventsC
Lists upcoming events from your calendar
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of events to retrieve (default: 10, max: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'upcoming events' but doesn't specify time ranges, sorting order, pagination, or error handling. For a read operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves beyond its basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core purpose, making it easy to parse quickly, which is ideal for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is insufficient for a tool that likely returns complex event data. It doesn't explain what information events include, how 'upcoming' is defined, or handle edge cases, leaving the agent with incomplete context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'count' parameter fully documented. The description adds no additional parameter information beyond what the schema provides, so it meets the baseline for adequate but unenhanced parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Lists') and resource ('upcoming events from your calendar'), making the tool's purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'search-emails' or 'list-emails' beyond the calendar context, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'search-emails' or 'create-event'. It lacks context about prerequisites (e.g., authentication status) or scenarios where this tool is preferred, offering only a basic functional statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-foldersC
Lists mail folders in your Outlook account
| Name | Required | Description | Default |
|---|---|---|---|
| includeItemCounts | No | Include counts of total and unread items | |
| includeChildren | No | Include child folders in hierarchy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action but lacks details on permissions, rate limits, pagination, or return format. This is inadequate for a tool that likely returns a list of folders without further context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It is front-loaded with the core purpose and efficiently communicates the essential action without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., folder names, IDs, hierarchy), behavioral traits like authentication needs, or error conditions. For a list operation with potential complexity, this leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents the two optional parameters. The description adds no parameter-specific information beyond implying the tool lists folders, which aligns with the schema but doesn't provide extra semantic value. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Lists') and resource ('mail folders in your Outlook account'), making the purpose immediately understandable. However, it doesn't differentiate this from potential sibling tools like 'list-emails' or 'list-events' beyond the resource type, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There are no mentions of prerequisites, context for usage, or comparisons to sibling tools like 'search-emails' or 'create-folder', leaving the agent without directional cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-rulesC
Lists inbox rules in your Outlook account
| Name | Required | Description | Default |
|---|---|---|---|
| includeDetails | No | Include detailed rule conditions and actions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'lists inbox rules' but doesn't disclose behavioral traits like whether it requires authentication, returns paginated results, or has rate limits. For a tool with no annotations, this leaves significant gaps in understanding how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It's front-loaded with the core action and resource, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., list format, fields returned) or address authentication needs. For a tool with zero structured context, more detail is needed to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with one optional parameter 'includeDetails' fully documented. The description doesn't add any parameter semantics beyond the schema, so it meets the baseline of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Lists') and resource ('inbox rules in your Outlook account'), making the purpose immediately understandable. It doesn't differentiate from sibling tools like 'create-rule' or 'edit-rule-sequence', but the action is specific enough to avoid confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention whether this is for viewing all rules versus specific ones, or how it relates to 'create-rule' or 'edit-rule-sequence'. The description only states what it does, not when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark-as-readC
Marks an email as read or unread
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the email to mark as read/unread | |
| isRead | No | Whether to mark as read (true) or unread (false). Default: true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the action ('marks an email as read or unread') but lacks behavioral details: it doesn't specify if this is a mutating operation, what permissions are required, whether it's reversible, or what the response looks like. For a tool that modifies email state with zero annotation coverage, this is inadequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool modifies email state (a mutation) with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like side effects, error conditions, or return values. For a tool with 2 parameters and potential impact on user experience, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 both parameters ('id' and 'isRead') with clear descriptions. The description adds no additional meaning beyond what the schema provides, such as explaining parameter interactions or edge cases. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('marks') and resource ('an email'), specifying the action of changing read status. It distinguishes from siblings like 'read-email' (which likely displays content) and 'move-emails' (which changes location). However, it doesn't explicitly mention the 'unread' option in the main statement, though it's implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an email ID from 'list-emails' or 'search-emails'), nor does it differentiate from similar tools like 'read-email' (which might mark as read automatically). Usage context is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move-emailsC
Moves emails from one folder to another
| Name | Required | Description | Default |
|---|---|---|---|
| emailIds | Yes | Comma-separated list of email IDs to move | |
| targetFolder | Yes | Name of the folder to move emails to | |
| sourceFolder | No | Optional name of the source folder (default is inbox) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('moves') but doesn't cover critical aspects like whether this requires specific permissions, if the move is reversible, what happens to emails in the target folder, or potential rate limits. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without any unnecessary words. It is front-loaded with the core action and appropriately sized for its purpose, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool with no annotations and no output schema, the description is incomplete. It fails to address behavioral traits like error conditions, response format, or side effects, which are crucial for an AI agent to use this tool effectively. The minimal description leaves too many contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting all three parameters. The description adds no additional semantic context beyond what the schema provides, such as explaining folder naming conventions or email ID formats. However, since the schema does the heavy lifting, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('moves emails') and the resources involved ('from one folder to another'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'list-emails' or 'search-emails' beyond the obvious action difference, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'delete-event' or 'create-folder', nor does it mention prerequisites such as needing email IDs from 'list-emails' or 'search-emails'. It lacks explicit context about when this operation is appropriate, leaving usage decisions ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read-emailA
Reads the content of a specific email. Returns a short preview (255 chars) by default. Set fullBody=true to fetch the complete email body.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the email to read | |
| fullBody | No | If true, fetches the complete email body instead of the 255-char preview. Use for emails where the preview is insufficient (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: it returns a short preview by default, allows fetching the complete body with a parameter, and specifies the preview length (255 chars). This covers output format and default behavior, though it doesn't mention error handling, rate limits, or authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded, with two sentences that efficiently convey the tool's purpose and key usage detail. Every sentence adds value without redundancy, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is reasonably complete. It explains the core functionality and a critical behavioral aspect (preview vs. full body). However, it lacks details on error cases, authentication requirements, or response structure, which could be helpful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 both parameters thoroughly. The description adds marginal value by reinforcing the purpose of 'fullBody' and its default behavior, but doesn't provide additional semantics beyond what's in the schema descriptions. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Reads') and resource ('content of a specific email'), making the purpose immediately understandable. It distinguishes itself from sibling tools like 'list-emails' by focusing on a single email rather than listing multiple. However, it doesn't explicitly differentiate from 'search-emails' which might also return email content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool by mentioning 'Set fullBody=true to fetch the complete email body... Use for emails where the preview is insufficient,' which provides some contextual guidance. However, it doesn't explicitly state when to choose this over alternatives like 'search-emails' or 'list-emails' for reading content, nor does it mention prerequisites like authentication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search-emailsB
Search for emails using various criteria. Searches across ALL folders (inbox, archive, sent, etc.) by default. Specify folder to limit scope.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query text to find in emails | |
| folder | No | Email folder to search in (default: all folders). Use 'inbox', 'archive', 'sent', etc. to limit scope. | |
| from | No | Filter by sender email address or name | |
| to | No | Filter by recipient email address or name | |
| subject | No | Filter by email subject | |
| hasAttachments | No | Filter to only emails with attachments | |
| unreadOnly | No | Filter to only unread emails | |
| count | No | Number of results to return (default: 10, max: 500). Pagination is handled automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the default scope (all folders) and the ability to limit scope, but doesn't cover important behavioral aspects like authentication requirements, rate limits, error conditions, or what the search results look like. For a search tool with 8 parameters and no annotations, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with two sentences that both add value. The first sentence states the core purpose, and the second provides important behavioral context about default folder scope. There's no wasted text, though it could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 8 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the search returns, how results are ordered, whether it supports complex queries, or any limitations. The agent would need to guess about the output format and many behavioral aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 8 parameters thoroughly. The description adds minimal value beyond the schema by mentioning the default folder behavior, but doesn't provide additional semantic context about how parameters interact or search logic. The baseline of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Search for emails using various criteria,' which is a specific verb+resource combination. It distinguishes from sibling 'list-emails' by emphasizing search functionality rather than simple listing, though it doesn't explicitly contrast with that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context by stating 'Searches across ALL folders... by default' and 'Specify folder to limit scope,' which gives guidance on when to use the folder parameter. However, it doesn't explicitly mention when to use this tool versus alternatives like 'list-emails' or provide any exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send-emailC
Composes and sends a new email
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Comma-separated list of recipient email addresses | |
| cc | No | Comma-separated list of CC recipient email addresses | |
| bcc | No | Comma-separated list of BCC recipient email addresses | |
| subject | Yes | Email subject | |
| body | Yes | Email body content (can be plain text or HTML) | |
| importance | No | Email importance (normal, high, low) | |
| saveToSentItems | No | Whether to save the email to sent items |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('composes and sends') but lacks critical details: it doesn't mention authentication requirements, rate limits, error conditions, whether the email is sent immediately or queued, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized and front-loaded, making it easy for an AI agent to quickly understand the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool (sending email) with no annotations, no output schema, and 7 parameters, the description is incomplete. It doesn't address authentication needs, error handling, response format, or behavioral constraints that would help an AI agent use it correctly. The 100% schema coverage helps with parameters but doesn't compensate for missing behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-specific information beyond what's already in the schema, which has 100% coverage with detailed descriptions for all 7 parameters. According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description, which applies here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Composes and sends a new email' clearly states the verb ('composes and sends') and resource ('a new email'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'read-email' or 'list-emails' beyond the basic action, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (e.g., authentication status), when not to use it (e.g., for reading existing emails), or explicit alternatives among the sibling tools like 'read-email' or 'search-emails'.
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. Dates show when Glama detected each change.
20 tool updates
v1.0.0- First observed
about - First observed
accept-event - First observed
authenticate - First observed
cancel-event - First observed
check-auth-status - First observed
create-event - First observed
create-folder - First observed
create-rule - First observed
decline-event - First observed
delete-event - First observed
edit-rule-sequence - First observed
list-emails - First observed
list-events - First observed
list-folders - First observed
list-rules - First observed
mark-as-read - First observed
move-emails - First observed
read-email - First observed
search-emails - First observed
send-email
TDQS
Each tool has a clearly distinct purpose with no ambiguity, such as accept-event vs. decline-event for calendar responses, or list-emails vs. search-emails for email retrieval. The descriptions reinforce distinct actions on specific resources like events, emails, folders, and rules, ensuring agents can easily differentiate between tools.
All tool names follow a consistent verb_noun pattern with hyphens, such as create-event, list-folders, and mark-as-read. There are no deviations in naming conventions, making the set predictable and easy to parse for agents.
With 20 tools, the count is slightly high but reasonable for the Outlook domain, covering email, calendar, folders, and rules comprehensively. It includes core CRUD operations and management functions, though it might be borderline for some use cases due to the breadth.
The tool surface provides complete coverage for the Outlook domain, including CRUD operations for events, emails, folders, and rules, along with authentication and status checks. There are no obvious gaps, as it supports full lifecycle management from creation to deletion and search capabilities.
Maintenance
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
MCP server for Nylas — read email, calendars, events and contacts, and send email or create events.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
MCP server for Cronofy — read calendars, events and free/busy, and create, update or delete events.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables sending emails through Microsoft Outlook using the Microsoft Graph API. Provides the missing send-email capability for Agent Builder's Outlook connector with support for both delegated and app-only authentication flows.MIT
- AlicenseNot gradedqualityDmaintenanceEnables semantic search and AI-powered analysis of Outlook emails using RAG-based natural language queries and Vision AI for architectural documents, with specialized support for AEC workflows.MIT
- AlicenseBqualityCmaintenanceA MCP server for Claude that reads Outlook emails its attachments through the Microsoft Graph API.618MIT
- FlicenseNot gradedqualityDmaintenanceA Python-based MCP server for Microsoft Outlook integration using Microsoft Graph API, enabling email reading/sending, calendar management, and contact operations through Claude Desktop.1-
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/titanzero/outlook-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server