Skip to main content
Glama

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

Node.js License: MIT MCP SDK


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

Email

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.

  1. Open Azure Portal → App registrations

  2. Click New registration

  3. Name: Outlook MCP Server (or anything you like)

  4. Account type: Accounts in any organizational directory and personal Microsoft accounts

  5. Redirect URI: Webhttp://localhost:3333/auth/callback

  6. Click Register

  7. Copy the Application (client) ID → this is your OUTLOOK_CLIENT_ID

Go to API permissionsAdd a permissionMicrosoft GraphDelegated permissions, then add:

  • offline_access

  • User.Read

  • Mail.Read

  • Mail.ReadWrite

  • Mail.Send

  • Calendars.Read

  • Calendars.ReadWrite

  • Contacts.Read

  • Contacts.ReadWrite

  • MailboxSettings.Read

  • MailboxSettings.ReadWrite

  • MailboxFolder.Read

  • MailboxFolder.ReadWrite

  • Tasks.Read

  • Tasks.ReadWrite

  1. Go to Certificates & secretsClient secretsNew client secret

  2. Set description and longest expiration

  3. Copy the secret VALUE (not the Secret ID!)

  4. 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-VALUE

Important: 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 needed

Step 1 — Start the auth server (must be running before authenticating):

npm run auth-server

Step 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 helpers

Available Commands

Command

Description

npm install

Install dependencies

npm start

Start the MCP server (stdio)

npm run auth-server

Start OAuth server on port 3333

npm run inspect

Launch MCP Inspector for interactive testing

npm test

Run Jest test suite

npm run debug

Print env vars and start server

npx kill-port 3333

Free port 3333 if occupied


Troubleshooting

Run npm install first.

npx kill-port 3333
npm run auth-server

You'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.

  1. Verify the absolute path to index.js in your Claude Desktop config

  2. Ensure OUTLOOK_CLIENT_ID and OUTLOOK_CLIENT_SECRET are set

  3. Restart Claude Desktop after config changes


Extending the Server

Adding a new tool is straightforward:

  1. Create a handler file in the appropriate module directory

  2. Export { name, description, inputSchema, handler }

  3. Add it to the module's index.js exports

  4. It's automatically registered via index.js at the root

See .cursor/rules/new-tool.mdc for the full checklist.


License

MIT

Available Tools

20 tools
aboutB

Returns information about this Outlook Assistant server

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a zero-parameter tool with no output schema, the description 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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the tool's purpose 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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. 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

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIdYesThe ID of the event to accept
commentNoOptional comment for accepting the event

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

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 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.

Purpose4/5

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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like '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

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoForce re-authentication even if already authenticated

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. 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

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIdYesThe ID of the event to cancel
commentNoOptional comment for cancelling the event

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives 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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/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. 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives 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

ParametersJSON Schema
NameRequiredDescriptionDefault
subjectYesThe subject of the event
startYesThe start time of the event in ISO 8601 format
endYesThe end time of the event in ISO 8601 format
attendeesNoList of attendee email addresses
bodyNoOptional body content for the event

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. 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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the folder to create
parentFolderNoOptional parent folder name (default is root)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

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 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.

Purpose4/5

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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. 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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the rule to create
fromAddressesNoComma-separated list of sender email addresses for the rule
containsSubjectNoSubject text the email must contain
hasAttachmentsNoWhether the rule applies to emails with attachments
moveToFolderNoName of the folder to move matching emails to
markAsReadNoWhether to mark matching emails as read
isEnabledNoWhether the rule should be enabled after creation (default: true)
sequenceNoOrder in which the rule is executed (lower numbers run first, default: 100)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

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 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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIdYesThe ID of the event to decline
commentNoOptional comment for declining the event

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. 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

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIdYesThe ID of the event to delete

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives 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

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleNameYesName of the rule to modify
sequenceYesNew sequence value for the rule (lower numbers run first)

TDQS

C2.9/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. 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. 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

ParametersJSON Schema
NameRequiredDescriptionDefault
folderNoEmail folder to list (e.g., 'inbox', 'sent', 'drafts', default: 'inbox')
countNoNumber of emails to retrieve (default: 10, max: 500). Pagination is handled automatically.

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

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 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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives 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

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of events to retrieve (default: 10, max: 50)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives 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

ParametersJSON Schema
NameRequiredDescriptionDefault
includeItemCountsNoInclude counts of total and unread items
includeChildrenNoInclude child folders in hierarchy

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. 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

ParametersJSON Schema
NameRequiredDescriptionDefault
includeDetailsNoInclude detailed rule conditions and actions

TDQS

C2.9/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 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. 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

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the email to mark as read/unread
isReadNoWhether to mark as read (true) or unread (false). Default: true

TDQS

C2.9/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. 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.

Conciseness5/5

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.

Completeness2/5

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.

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 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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. 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

ParametersJSON Schema
NameRequiredDescriptionDefault
emailIdsYesComma-separated list of email IDs to move
targetFolderYesName of the folder to move emails to
sourceFolderNoOptional name of the source folder (default is inbox)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the email to read
fullBodyNoIf true, fetches the complete email body instead of the 255-char preview. Use for emails where the preview is insufficient (default: false).

TDQS

A3.8/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 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.

Conciseness5/5

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.

Completeness4/5

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.

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 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.

Purpose4/5

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.

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 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch query text to find in emails
folderNoEmail folder to search in (default: all folders). Use 'inbox', 'archive', 'sent', etc. to limit scope.
fromNoFilter by sender email address or name
toNoFilter by recipient email address or name
subjectNoFilter by email subject
hasAttachmentsNoFilter to only emails with attachments
unreadOnlyNoFilter to only unread emails
countNoNumber of results to return (default: 10, max: 500). Pagination is handled automatically.

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

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 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.

Purpose4/5

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

The description clearly states the tool's purpose 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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesComma-separated list of recipient email addresses
ccNoComma-separated list of CC recipient email addresses
bccNoComma-separated list of BCC recipient email addresses
subjectYesEmail subject
bodyYesEmail body content (can be plain text or HTML)
importanceNoEmail importance (normal, high, low)
saveToSentItemsNoWhether to save the email to sent items

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. 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.

  1. 20 tool updatesv1.0.0
    • First observedabout
    • First observedaccept-event
    • First observedauthenticate
    • First observedcancel-event
    • First observedcheck-auth-status
    • First observedcreate-event
    • First observedcreate-folder
    • First observedcreate-rule
    • First observeddecline-event
    • First observeddelete-event
    • First observededit-rule-sequence
    • First observedlist-emails
    • First observedlist-events
    • First observedlist-folders
    • First observedlist-rules
    • First observedmark-as-read
    • First observedmove-emails
    • First observedread-email
    • First observedsearch-emails
    • First observedsend-email

TDQS

A3.5/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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
  • F
    license
    Not graded
    quality
    D
    maintenance
    A 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
    -

Latest Blog Posts

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