office365-mcp-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@office365-mcp-servershow my upcoming calendar events for today"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Office 365 MCP Server
Complete Microsoft Graph API integration for Claude Code CLI with 45 powerful Office 365 tools
Seamlessly integrate your Office 365 account with Claude Code CLI for intelligent email management, calendar operations, file handling, and more. Built using the official Model Context Protocol (MCP) SDK.
โจ Features
๐ง Email Management - 16 tools for reading, searching, organizing, and sending emails
๐ Calendar Operations - 9 tools for managing events and schedules
๐ OneDrive Files - 8 tools for file and folder management
๐ฅ Contacts - 4 tools for contact management
๐ฌ Microsoft Teams - 5 tools for team collaboration
โ Tasks & To-Do - 4 tools for task management
๐ Secure - Environment variable configuration, no hardcoded credentials
โก Fast - Built on official MCP SDK for optimal performance
Total: 45 Production-Ready Tools
Related MCP server: Microsoft 365 MCP Server
๐ Table of Contents
๐ง Requirements
Node.js 18.0.0 or higher
Claude Code CLI installed and configured
Microsoft 365 Account (Office 365)
Azure AD Application with appropriate permissions
Admin Consent for your Azure AD tenant
๐ฆ Installation
1. Clone the Repository
git clone https://github.com/eesb99/office365-mcp-server.git
cd office365-mcp-server2. Install Dependencies
npm installRequired packages:
@modelcontextprotocol/sdk- Official MCP SDK@azure/msal-node- Microsoft Authentication Library@microsoft/microsoft-graph-client- Microsoft Graph API clientzod- Schema validation
3. Configure Environment Variables
Copy the example configuration:
cp .env.example .envEdit .env with your Azure credentials (see Azure Configuration below):
AZURE_CLIENT_ID=your-client-id-here
AZURE_AUTHORITY=https://login.microsoftonline.com/your-tenant-id-here
AZURE_CLIENT_SECRET=your-client-secret-here
OFFICE365_USER_EMAIL=your-email@yourdomain.comโ ๏ธ NEVER commit the .env file to Git!
โ๏ธ Azure Configuration
Step 1: Create Azure AD App Registration
Go to Azure Portal
Navigate to Azure Active Directory โ App registrations
Click + New registration
Configure:
Name:
Office 365 MCP Server(or your preferred name)Supported account types:
Accounts in this organizational directory onlyRedirect URI: Leave blank
Click Register
Step 2: Note Your Credentials
After registration, note these values:
Application (client) ID - Use for
AZURE_CLIENT_IDDirectory (tenant) ID - Use in
AZURE_AUTHORITYURL
Step 3: Create Client Secret
In your app registration, go to Certificates & secrets
Click + New client secret
Add description:
MCP Server SecretSet expiry:
90 days(recommended, or choose your preference)Click Add
โ ๏ธ IMPORTANT: Copy the Value immediately (shown only once!)
Use this for
AZURE_CLIENT_SECRET
Step 4: Configure API Permissions
In your app registration, go to API permissions
Click + Add a permission โ Microsoft Graph โ Application permissions
Add these permissions:
Required Permissions (Minimum - 4 tools):
User.Read.AllMail.ReadCalendars.ReadFiles.Read.All
Full Feature Set (All 45 tools):
Mail.ReadWrite- Email managementMail.Send- Send emailsMailboxSettings.ReadWrite- Mailbox configurationCalendars.ReadWrite- Calendar operationsFiles.ReadWrite.All- File managementContacts.ReadWrite- Contact managementTeam.ReadBasic.All- Teams accessChannel.ReadBasic.All- Channel informationChannelMessage.Send- Send channel messagesChannelMessage.Read.All- Read channel messagesChat.ReadWrite- Chat managementTasks.ReadWrite- Task management
Click Add permissions
Step 5: Grant Admin Consent
โ ๏ธ CRITICAL: After adding permissions:
Click โ Grant admin consent for [Your Organization]
Click Yes to confirm
Wait for all permissions to show โ Granted status
Note: Admin consent is required for Application permissions. Contact your Microsoft 365 administrator if you don't have sufficient privileges.
For detailed instructions, see AZURE_PERMISSIONS_SETUP.md.
๐ค Claude Code CLI Setup
Configuration
Add this MCP server to your Claude Code configuration:
Location: ~/.claude.json
{
"mcpServers": {
"office365": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/office365-mcp-server/office365-sdk.js"],
"env": {
"AZURE_CLIENT_ID": "your-client-id-here",
"AZURE_CLIENT_SECRET": "your-client-secret-here",
"AZURE_AUTHORITY": "https://login.microsoftonline.com/your-tenant-id-here",
"OFFICE365_USER_EMAIL": "your-email@yourdomain.com"
}
}
}
}Important:
Replace
/absolute/path/to/office365-mcp-server/with the actual pathUse absolute paths, not relative paths
Add your actual Azure credentials to the
envsection
Verify Installation
Restart Claude Code CLI
In a new conversation, type:
list office 365 toolsYou should see 45 available tools
Troubleshooting: If tools don't appear, check:
Path to
office365-sdk.jsis absolute and correctAll environment variables are set in
~/.claude.jsonNode.js 18+ is installed:
node --versionDependencies are installed:
npm install
๐ Usage
Once configured in Claude Code CLI, you can use natural language to interact with Office 365:
Example Commands
Email:
"Show me my last 10 emails"
"Search for emails from jeff@example.com about Q4 budget"
"Send an email to team@company.com with subject 'Meeting Notes'"
"What emails are in my Sent Items folder?"Calendar:
"What's on my calendar this week?"
"Create a meeting tomorrow at 2pm for 1 hour"
"Show all events in the next 30 days"Files:
"List files in my OneDrive root folder"
"Search for files containing 'proposal'"
"Show me PDF files modified this month"Contacts:
"List all my contacts"
"Find contact information for John Smith"Teams:
"List all my Teams"
"Show channels in the Marketing team"
"Get recent messages from the General channel"Tasks:
"Show my task lists"
"What tasks are incomplete?"
"Create a task in my To-Do list"๐ Available Tools
๐ง Email Management (16 tools)
Tool | Description |
| Get recent emails from inbox |
| Search emails with query |
| Get specific email details |
| Send an email |
| Reply to an email |
| Forward an email |
| List all mail folders |
| Get emails from specific folder |
| Search within specific folder |
| Move email to folder |
| Delete an email |
| Mark email as read |
| Mark email as unread |
| List email attachments |
| Download attachment |
| Create new folder |
๐ Calendar Operations (9 tools)
Tool | Description |
| Get upcoming calendar events |
| Get specific event details |
| Create new calendar event |
| Update existing event |
| Delete an event |
| List all calendars |
| Get events in date range |
| Find available meeting times |
| Accept meeting invitation |
๐ OneDrive Files (8 tools)
Tool | Description |
| List files in folder |
| Get file details |
| Search for files |
| Download file content |
| Upload new file |
| Create new folder |
| Delete file or folder |
| Move file to folder |
๐ฅ Contacts (4 tools)
Tool | Description |
| List all contacts |
| Get specific contact |
| Create new contact |
| Search contacts |
๐ฌ Microsoft Teams (5 tools)
Tool | Description |
| List all teams |
| List channels in team |
| Get channel messages |
| Send message to channel |
| List recent chats |
โ Tasks & To-Do (4 tools)
Tool | Description |
| List all task lists |
| Get tasks from list |
| Create new task |
| Update existing task |
For complete tool documentation, see OFFICE365_TOOLS.md
๐งช Testing
Option 1: Test with Claude Code CLI
Simply use the natural language commands in Claude Code after setup.
Option 2: Standalone Testing
Test the server independently:
# Test basic authentication
node tests/simple-test.js
# Test MCP server protocol
node tests/simple-mcp-server.jsNote: Standalone testing requires credentials in .env file.
๐ Security
Best Practices
โ
Environment Variables: All credentials stored in environment variables
โ
No Hardcoded Secrets: No credentials in source code
โ
Git Protection: .gitignore prevents credential commits
โ
Validation: Startup validation ensures all required variables are set
โ
Admin Consent: Application permissions require admin approval
Security Features
Application Permissions: Server-to-service authentication (no user prompts)
Scoped Access: Limited to configured user account
Audit Logging: Use Azure AD audit logs to monitor access
Secret Rotation: Rotate client secrets every 90 days (recommended)
Security Documentation
SECURITY.md - Security policy and responsible disclosure
SECURITY_SCAN_REPORT.md - Vulnerability analysis
FINAL_SECURITY_AUDIT.md - Pre-publication audit
โ ๏ธ Never commit .env files or expose credentials in code!
๐ Troubleshooting
Tools Not Appearing in Claude Code
Check:
Path in
~/.claude.jsonis absolute (not relative)All environment variables are set in
~/.claude.jsonenvsectionClaude Code CLI has been restarted after configuration
Run
node office365-sdk.js- should start without errors
Authentication Errors
401 Unauthorized:
Verify
AZURE_CLIENT_SECRETis correct (use Value, not Secret ID)Check secret hasn't expired in Azure Portal
Ensure
AZURE_CLIENT_IDandAZURE_AUTHORITYare correct
403 Forbidden:
Admin consent not granted - check Azure Portal API permissions
Wait 5-10 minutes after granting consent for propagation
Verify permissions show "โ Granted" status
Missing Permissions
Error: "Insufficient privileges to complete the operation"
Solution:
Go to Azure Portal โ App registrations โ Your app
API permissions โ Check all required permissions are added
Click "Grant admin consent" again
Verify all show "โ Granted" status
Connection Issues
Server fails to start:
Check Node.js version:
node --version(need 18+)Reinstall dependencies:
rm -rf node_modules && npm installVerify all environment variables are set
Check for typos in
~/.claude.json(validate JSON syntax)
For more troubleshooting, see AZURE_PERMISSIONS_SETUP.md
๐ค Contributing
Contributions are welcome! This is an open-source project.
How to Contribute
Fork the repository
Create a feature branch:
git checkout -b feature/amazing-featureMake your changes
Test thoroughly with Claude Code CLI
Commit your changes:
git commit -m 'Add amazing feature'Push to your fork:
git push origin feature/amazing-featureOpen a Pull Request
Development Guidelines
Follow existing code style (2-space indentation for JavaScript)
Add tests for new features
Update documentation for new tools
No hardcoded credentials in code
Use environment variables for configuration
Reporting Issues
Found a bug or have a suggestion? Open an issue
Include:
Claude Code CLI version
Node.js version
Operating system
Error messages (remove any credentials!)
Steps to reproduce
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2025 eesb99
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.๐ Acknowledgments
Built with Model Context Protocol (MCP) SDK
Powered by Microsoft Graph API
Designed for Claude Code CLI
Created with assistance from Claude Code
๐ Support & Contact
GitHub: @eesb99
Email: eesb99@gmail.com
Issues: GitHub Issues
๐ Project Stats
Version: 2.0.0 (Security Hardened)
Total Tools: 45
Code Quality: Production Ready
Testing: Tested with Claude Code CLI
Security Audit: Passed (see FINAL_SECURITY_AUDIT.md)
Last Updated: 2025-10-29
๐ Star History
If you find this project useful, please consider giving it a star on GitHub! โญ
Made with โค๏ธ for the Claude Code community
Available Tools
45 toolscreate_calendar_eventC
Create a new calendar event
| Name | Required | Description | Default |
|---|---|---|---|
| subject | Yes | Event subject/title | |
| start | Yes | Start date/time (ISO 8601 format, e.g., "2025-10-30T14:00:00") | |
| end | Yes | End date/time (ISO 8601 format) | |
| attendees | No | Array of attendee email addresses | |
| location | No | Event location | |
| body | No | Event description/body |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description only indicates creation (mutation) without disclosing side effects, authorization needs, rate limits, or whether attendees receive invites. The burden falls entirely on the description, which 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?
Single sentence with no redundancy; efficient and to the point. However, it could be slightly more informative without sacrificing 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?
No output schema, no annotations, and no description of return value or side effects. For a mutation tool, critical context about confirmation, persistence, and undo is missing.
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 coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond the parameter descriptions already in the schema (e.g., format details, behavioral implications of attendees).
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 'Create a new calendar event' clearly specifies the action and resource. It distinguishes from siblings like update/delete/get calendar events, though not from other create tools, but the resource name itself provides differentiation.
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 on when to use this tool versus alternatives (e.g., update_calendar_event, delete). No mention of prerequisites or typical use cases beyond the basic implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_contactC
Create a new contact
| Name | Required | Description | Default |
|---|---|---|---|
| displayName | Yes | Contact display name | |
| emailAddress | Yes | Email address | |
| mobilePhone | No | Mobile phone number | |
| companyName | No | Company name | |
| jobTitle | No | Job title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description lacks behavioral details such as side effects, permissions, rate limits, or handling of duplicates. The description is too minimal 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. However, it is overly minimal and lacks structure that could aid readability. It is concise but at the expense of completeness.
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 output schema or annotations, the description should provide more context about return values, behavior on duplicate entries, or confirmation of creation. It is incomplete for a tool with 5 parameters.
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 each parameter. The description adds no extra meaning beyond the schema, meeting the baseline 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 verb 'Create' and resource 'contact', which is specific. However, it does not differentiate from sibling tools like 'update_contact' or 'search_contacts', though the name itself is distinctive.
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 on when to use this tool versus alternatives such as 'search_contacts' or 'update_contact'. No context on prerequisites or conditions for creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_draftC
Create an email draft
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address | |
| subject | Yes | Email subject | |
| body | Yes | Email body content (HTML supported) | |
| attachments | No | Array of attachment objects |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states 'Create an email draft', omitting details about side effects, authentication requirements, whether the draft is saved to a drafts folder, or if it can be edited later.
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 (3 words) but sacrifices necessary information. It lacks structure and fails to provide any details about behavior or parameters beyond the name.
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 output schema and annotations, the description is incomplete. It does not explain what the tool returns (e.g., draft ID), how drafts are stored, or how it relates to other email tools in the sibling list.
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 parameters adequately. The description adds no extra meaning beyond the schema, earning a 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 'Create an email draft' clearly states the action and resource. It distinguishes from siblings like send_email by specifying 'draft', but does not explicitly differentiate from other creation tools like create_calendar_event or create_contact.
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 such as send_email or create_inbox_rule. The description lacks any context about prerequisites or appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_folderA
Create a new folder in OneDrive
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Parent folder path (empty for root) | |
| folderName | Yes | New folder name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It states the tool creates a folder, implying a write/mutation operation. No additional behavioral details (e.g., permissions, side effects) are offered, but for a simple create action this is minimally adequate.
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 extraneous information. It is front-loaded and efficient.
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 simplicity (2 parameters, no output schema, no nested objects), the description paired with the schema provides enough context for an agent to use it correctly. It could mention that 'path' defaults to root, but schema covers that.
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 covers 100% of parameters with descriptions. The description does not add meaning beyond the schema, which is sufficient. Baseline 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 ('create') and resource ('folder'), specifying the location ('in OneDrive'). This distinguishes it from other create_* tools that target different resources like events or contacts.
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 the tool is for creating folders in OneDrive but does not provide guidance on when to use it versus alternative tools (e.g., uploading a file). No exclusions or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_inbox_ruleC
Create an automated inbox rule for email organization
| Name | Required | Description | Default |
|---|---|---|---|
| ruleName | Yes | Name of the rule | |
| conditions | Yes | Rule conditions (e.g., {fromAddresses: [{emailAddress: {address: "test@example.com"}}]}) | |
| actions | Yes | Rule actions (e.g., {moveToFolder: "folderId"}) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like idempotency, limits, or side effects. It only states the basic purpose, leaving the agent uninformed about authorization needs or error conditions.
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?
Extremely concise (one sentence) but too sparse to provide adequate context. While it avoids verbosity, it sacrifices completeness, making it barely adequate.
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 (3 required parameters with nested objects, no output schema), the description is insufficient. Does not explain how conditions/actions interact or what the return value is, leaving 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 coverage is 100% with basic descriptions for each parameter. The tool description adds no further meaning beyond the schema, so 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?
Description clearly states the action (create) and resource (inbox rule) for email organization. It is distinguishable from sibling tools by name, though no explicit differentiation is provided.
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 on when to use this tool versus alternatives like create_folder or other email tools. Lacks context on prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskC
Create a new task in a To-Do list
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | Task list ID | |
| title | Yes | Task title | |
| dueDateTime | No | Due date/time (ISO 8601 format) | |
| importance | No | Task importance (default: normal) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as what happens with invalid listId, whether the tool returns the created task, or if there are side effects. The minimal description fails to inform the agent about important 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 sentence, which is concise. However, it is too sparse and does not earn its place by providing critical information beyond the name. Yet, it is not verbose.
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 output schema and no annotations, the description should at least indicate what the tool returns (e.g., task ID or full object). It lacks this context and does not explain the relationship to the to-do list, making it incomplete 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, so the parameters are already documented. The description adds no extra meaning beyond the schema. Baseline 3 is appropriate as it does not contradict or add further 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 ('Create') and the resource ('a new task in a To-Do list'). It distinguishes from sibling tools like create_calendar_event and create_contact. However, it could be more explicit that the task is created within a specific list (listId required).
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 (e.g., create_calendar_event, create_draft). There is no mention of prerequisites, when not to use it, or related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_calendar_eventC
Delete a calendar event
| Name | Required | Description | Default |
|---|---|---|---|
| eventId | Yes | Calendar event ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It fails to disclose key traits like irreversibility, permission requirements, or whether the deletion is hard or soft. The description is too minimal.
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 concise sentence that front-loads the purpose. It is appropriately sized for a simple delete operation, though it could include more detail without harming 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?
For a delete operation with no output schema and no annotations, the description should explain return behavior or confirm action success. It lacks completeness for agent understanding.
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 coverage is 100% (eventId described as 'Calendar event ID'). The description adds no extra meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a calendar event' clearly states the action and resource. It distinguishes from siblings like create_calendar_event and update_calendar_event, but could be more specific about the deletion behavior.
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 on when to use this tool versus alternatives (e.g., update_calendar_event to cancel rather than delete). No prerequisites or context for appropriate usage is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_emailB
Delete an email
| Name | Required | Description | Default |
|---|---|---|---|
| emailId | Yes | Email message ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It only states the operation without disclosing irreversibility, permissions, or side effects (e.g., deleting replies).
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?
Extremely concise with a single sentence. Front-loaded and efficient, though slightly more context could be added without breaking 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 simple nature of the tool (1 parameter, no output schema), the description is minimally adequate. However, lack of behavioral transparency reduces completeness for a deletion operation.
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 coverage is 100% with a single parameter 'emailId' described clearly. The description adds no additional meaning beyond what the schema provides, meeting baseline expectations.
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 'Delete an email' clearly states the verb (delete) and resource (email), distinguishing it from sibling tools like delete_calendar_event.
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 on when to use this tool vs alternatives (e.g., move_email, mark_as_read). No context about prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_attachmentC
Download a specific email attachment (max 10MB)
| Name | Required | Description | Default |
|---|---|---|---|
| emailId | Yes | Email message ID | |
| attachmentId | Yes | Attachment ID |
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. Only the size limit (10MB) is disclosed; missing details include whether the operation is read-only, error handling, authentication requirements, or response 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?
Single sentence with no superfluous words. Front-loaded with the verb and object, immediately clear.
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 output schema, the description does not explain what the tool returns (e.g., binary file data). Combined with missing usage and behavioral context, the description feels incomplete for an AI agent to fully understand the tool's behavior.
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 coverage is 100%, so the structure is fully documented. The description adds no extra meaning beyond the parameter names and their schema descriptions, warranting the baseline score.
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 (Download), resource (email attachment), and a constraint (max 10MB). It is specific but does not explicitly differentiate from sibling tools like get_file_content or get_email_attachments.
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 on when to use this tool versus alternatives. It does not mention prerequisites, caveats, or scenarios where other tools might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_meeting_timesC
Find optimal meeting times based on attendee availability
| Name | Required | Description | Default |
|---|---|---|---|
| attendees | Yes | Array of attendee email addresses | |
| duration | No | Meeting duration in minutes (default: 60) | |
| startTime | Yes | Search window start (ISO 8601) | |
| endTime | Yes | Search window end (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description does not explain how optimality is determined, time zone handling, or conflict resolution.
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 very short, but lacks substantial content; it is concise but not sufficiently informative.
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?
With no output schema and no behavioral details, the description fails to inform about return values or expected outcomes.
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 coverage is 100%, so parameter names and types are already clear; description adds no extra meaning.
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 finds meeting times based on attendee availability, but lacks differentiation from similar siblings like get_free_busy_schedule.
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 on when to use this tool versus alternatives, nor any prerequisites or output expectations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_calendar_eventsC
Get upcoming calendar events
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days ahead to look (default: 7) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full responsibility. It only states 'Get upcoming calendar events' without revealing any behavioral traits (e.g., read-only, pagination, time range defaults, or required scopes). For a tool that may retrieve many events, 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 sentence, which is concise and avoids verbosity. However, it sacrifices crucial details for brevity. It earns points for efficiency but loses some for under-specification.
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 simplicity (one optional parameter, no output schema, no annotations), the description is too brief. It omits context such as which calendar is targeted, whether it returns all day events, or how it handles recurrence. The presence of many sibling calendar tools amplifies the need for completeness.
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 coverage is 100% for the single parameter 'days', which the schema already describes as 'Number of days ahead to look (default: 7)'. The description adds no new semantic meaning beyond the schema, so it scores at the baseline 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 'Get upcoming calendar events' specifies a verb and resource, but it is vague. It does not clarify which calendar (e.g., primary, all), and it fails to distinguish from sibling tools like get_calendar_view or get_event_details, which also deal with calendar events.
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 such as get_calendar_view or find_meeting_times. There is no mention of exclusions or context for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_calendar_viewC
Get calendar events in a specific date range
| Name | Required | Description | Default |
|---|---|---|---|
| startDateTime | Yes | Start date/time (ISO 8601) | |
| endDateTime | Yes | End date/time (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It does not mention timezone handling, pagination, event detail richness, or other traits. Merely saying 'Get calendar events' is insufficient for safe invocation.
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 concise sentence with no wasted words. It is front-loaded with the core purpose, but could benefit from a brief note on parameter format or return structure.
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 simplicity of the tool (2 required params, no output schema, no enums), the description is incomplete. It does not explain the output format or any constraints like timezone handling, which are important for correct usage.
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 coverage is 100% and both parameters are described with 'ISO 8601' format. The description adds nothing beyond the schema, meeting the baseline but not exceeding it.
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 'Get' and the resource 'calendar events' within a date range, which is specific and aligns with the tool name. However, it does not differentiate from the sibling tool 'get_calendar_events', which likely serves a similar purpose.
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 'get_calendar_events' or 'get_event_details'. The description lacks prerequisites, contexts, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_channel_messagesB
Get recent messages from a Teams channel
| Name | Required | Description | Default |
|---|---|---|---|
| teamId | Yes | Team ID | |
| channelId | Yes | Channel ID | |
| maxResults | No | Maximum results (default: 50, max: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose behavioral traits like read-only nature, permissions, or ordering of messages. Does not mention that maxResults defaults to 50 with a max of 50.
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?
Single sentence is concise and front-loaded. Could include more details without sacrificing brevity, but acceptable.
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?
No output schema and no annotations; description does not specify return format, pagination, or message ordering, leaving gaps 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 description adds no extra meaning beyond what the schema already provides. 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?
Description clearly states the action (Get) and resource (recent messages from a Teams channel), distinguishing it from sibling tools like send_channel_message.
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 on when to use this tool versus alternatives (e.g., send_channel_message, search_emails). Lacks context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_email_attachmentsB
List all attachments for a specific email
| Name | Required | Description | Default |
|---|---|---|---|
| emailId | Yes | Email message ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavior. It only says 'list all attachments', omitting critical details like whether it returns metadata, download links, or requires specific permissions. There is no mention of the operation being read-only or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the essential action without waste. Every word earns its place, making it highly efficient for an agent 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?
For a listing tool with no output schema, the description should at least hint at the nature of the returned data (e.g., filenames, sizes, IDs). It fails to do so, leaving the agent unaware of what 'attachments' means in the response. The tool's simplicity does not excuse the missing output 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?
Schema coverage is 100%, and the single parameter 'emailId' already has a description ('Email message ID'). The tool description adds no extra semantic meaning beyond stating the parameter's role, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list) and resource (attachments) with a specific context (for a specific email). It effectively distinguishes the tool from siblings like 'get_email_details' (which likely returns email body) and 'download_attachment' (which retrieves a specific file).
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 such as 'download_attachment' or 'get_email_details'. It does not specify prerequisites, typical workflows, or scenarios where the tool is inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_email_detailsA
Get complete email details including full body, recipients, and metadata
| Name | Required | Description | Default |
|---|---|---|---|
| emailId | Yes | Email message ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present. The description lists returned data (body, recipients, metadata) but does not disclose behavioral traits like side effects, authentication needs, or rate limits.
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?
Single sentence, no wasted words, clear and 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 simple one-parameter retrieval tool with no output schema, the description adequately covers the return content (body, recipients, metadata). Slightly more detail on response format could improve, but it's sufficient.
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% (emailId described). The description does not add meaning beyond the schema, so baseline score of 3 applies.
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 'Get complete email details' with specific resources (full body, recipients, metadata) and distinguishes from sibling tools like get_recent_emails and get_email_attachments.
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?
Usage is implied for retrieving full email details given an ID, but no explicit when-to-use or alternatives are provided. With many sibling tools, more guidance would help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_event_detailsC
Get complete details for a specific calendar event
| Name | Required | Description | Default |
|---|---|---|---|
| eventId | Yes | Calendar event ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only says 'get complete details' but does not specify what fields are returned, error behavior, or any access constraints. Minimal behavioral disclosure.
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 no unnecessary words. It is front-loaded but could benefit from additional context without becoming verbose.
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 output schema, the description should explain what 'complete details' entails. It lacks information about return format and error handling, making it insufficient for full understanding.
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 coverage is 100% with eventId described as 'Calendar event ID'. The description does not add any extra meaning beyond the schema, so it meets baseline expectations.
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 states the tool gets complete details for a specific calendar event, which is a clear verb-resource combination. It distinguishes from sibling tools like get_calendar_events (plural) and get_calendar_view (time range) by focusing on a single event's full details.
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 on when to use this tool versus alternatives (e.g., get_calendar_events or get_calendar_view). No prerequisites or context provided for selecting this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_contentB
Download file content from OneDrive (max 10MB)
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes | File ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose all behavioral traits. It only mentions the size limit but fails to mention authentication, error handling, return format, or behavior for files larger than 10MB.
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?
Extremely concise, one sentence, front-loaded with the verb and resource. No unnecessary words.
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?
Adequate for a simple tool with one parameter, but missing details on usage and behavior. Could be improved with more context on when to use and what happens on error or overflow.
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 coverage is 100% with a clear description of fileId. The description adds the size limit, but does not further clarify the parameter meaning beyond the schema, so baseline 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 verb 'Download' and resource 'file content from OneDrive', and specifies a size limit of 10MB, distinguishing it from siblings like get_file_metadata and download_attachment.
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 on when to use versus alternatives like download_attachment or get_file_metadata. The description does not provide exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_metadataA
Get file metadata without downloading content
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes | File ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavior. It only states the basic function without detailing authentication, rate limits, or what metadata is returned.
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?
Single sentence, no unnecessary words, front-loaded with the action.
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 simple one-parameter tool, the description is sufficient, but lacks details on return structure (no output schema).
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 covers 100% of parameters; description adds no extra meaning to the fileId parameter beyond its schema 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?
Description clearly states the tool retrieves file metadata without content, distinguishing it from siblings like get_file_content and download_attachment.
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 use for metadata-only scenarios, but does not explicitly state when not to use it or provide alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_folder_emailsC
Get emails from a specific folder (e.g., Sent Items, Archive)
| Name | Required | Description | Default |
|---|---|---|---|
| folderId | Yes | Mail folder ID | |
| maxResults | No | Maximum number of results (default: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears full responsibility for behavioral disclosure. It only states the basic action, omitting details like return format, pagination behavior, rate limits, or whether it retrieves only metadata or full content.
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 sentence that front-loads the main action. It is efficient with no wasted words, though it could be slightly expanded to include usage context without sacrificing 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 output schema and annotations, the description is too brief. It does not explain return values, pagination, or prerequisites (e.g., needing folderId from list_mail_folders). The tool is part of a large set of email tools, and more context is needed for proper selection.
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 coverage is 100% with basic descriptions ('Mail folder ID', 'Maximum number of results (default: 50)'). The description adds no extra meaning beyond these fields, so 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 states 'Get emails from a specific folder' with examples like 'Sent Items, Archive'. It clearly identifies the action and resource, but does not differentiate from siblings like 'get_recent_emails' or 'search_in_folder'.
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 vs alternatives. For instance, it doesn't contrast with 'get_recent_emails' or 'search_emails', leaving the agent without decision context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_free_busy_scheduleB
Get free/busy schedule for attendees
| Name | Required | Description | Default |
|---|---|---|---|
| attendees | Yes | Array of attendee email addresses | |
| startTime | Yes | Schedule start time (ISO 8601) | |
| endTime | Yes | Schedule end time (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully disclose behavior. It only states the basic purpose, omitting details about authentication needs, rate limits, error handling for invalid attendees or time ranges, or how overlapping events are summarized. This is insufficient for a tool with no annotations.
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 concise sentence that captures the core purpose without excess words. It is front-loaded but arguably too brief; however, it earns its place with minimal waste.
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 simplicity (3 params, no output schema), the description lacks context about the return format (e.g., mapping of attendee to busy intervals) and error scenarios. With no guidance on output or edge cases, it is incomplete for an agent to use reliably.
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 clear descriptions for attendees (array of email strings) and time parameters (ISO 8601). The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and resource 'free/busy schedule for attendees'. It distinguishes itself from siblings like get_calendar_events or find_meeting_times by focusing on availability summary rather than event details.
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, such as get_calendar_events or find_meeting_times. There is no mention of prerequisites like required permissions or the fact that attendees must be email addresses recognized by the system.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_emailsC
Get recent emails from Office 365
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of emails to retrieve (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description fails to disclose any behavioral traits such as read-only nature, authentication requirements, rate limits, or that it likely returns emails from the primary inbox. The tool is a read operation but this is not explicit.
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 short sentence, which is concise and front-loaded. It avoids unnecessary words, but could benefit from slightly more detail (e.g., scope) without becoming verbose.
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 simplicity of the tool (one optional parameter, no output schema) and the presence of many email-related siblings, the description lacks critical context such as what defines 'recent', which mailbox folder is targeted, and how the result set is ordered. This makes it insufficient for an AI agent to reliably select and invoke the tool.
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% coverage with a description for the 'count' parameter. The tool description adds no additional meaning beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get recent emails from Office 365' clearly indicates a read operation on emails, but 'recent' is vague. It does not specify the timeframe or mailbox scope (e.g., inbox only), nor does it distinguish from sibling tools like get_folder_emails or search_emails.
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 usage guidance is provided. The description does not indicate when to use this tool over alternatives such as get_folder_emails (for specific folders) or search_emails (for filtering).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_calendarsB
Get all calendars for the user
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only states 'get all calendars' without disclosing scope (e.g., owned vs shared), pagination, rate limits, or behavior when no calendars exist.
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?
One concise sentence. No wasted words, though could be expanded with useful information while remaining efficient.
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 simple list tool with no output schema, the description is too minimal. It lacks details about result formatting, filtering, or how to use the results with sibling tools like create_calendar_event.
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?
Zero parameters with 100% schema coverage (empty schema). Baseline 4 applies because description adds no additional meaning, but no parameters to explain.
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?
Description clearly states 'Get all calendars for the user' with a specific verb and resource. This distinguishes it from sibling tools like get_calendar_events which deal with events rather than the calendar list.
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 on when to use this tool vs alternatives such as get_calendar_events or get_calendar_view. The description implies simple listing but doesn't clarify context like prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contactsC
Get all contacts
| Name | Required | Description | Default |
|---|---|---|---|
| maxResults | No | Maximum results (default: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It does not mention pagination, rate limits, default ordering, or whether it returns only contacts owned by the user. The optional 'maxResults' parameter hints at pagination but is not described in the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at three words, but it lacks structure and fails to front-load key details. While not verbose, it is under-specified, making it less effective than a well-structured short paragraph.
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 simplicity of the tool (one optional parameter, no output schema), the description is still incomplete. It does not explain the return format, pagination behavior, or default sorting. The agent has no information beyond the basic purpose.
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 coverage is 100% for the single parameter 'maxResults', which already has a clear description. The tool description adds no additional meaning beyond the schema, so it meets the baseline for a fully covered parameter.
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 'Get all contacts' clearly states the verb and resource, but it is too brief to distinguish from sibling tool 'search_contacts', which likely provides filtering. It does not mention scope or constraints.
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 given on when to use this tool versus alternatives like 'search_contacts'. The description does not indicate that this tool returns all contacts without filtering, nor does it mention any prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_drive_itemsC
List files and folders in OneDrive
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Folder path (empty for root) | |
| orderBy | No | Sort order: name, size, lastModifiedDateTime (default: name) | |
| maxResults | No | Maximum results (default: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden for behavioral disclosure. It does not mention whether listing is recursive, pagination behavior, or required permissions. The brief statement adds minimal 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 concise sentence, front-loading the purpose. However, it is borderline under-specified, missing contextual details that could be added without sacrificing brevity.
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 output schema and no annotations, the description is incomplete. It does not explain return format, default behaviors, or how the path parameter affects results, leaving gaps for an AI 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 baseline is 3. The description adds no extra value beyond what the schema provides for path, orderBy, and maxResults parameters.
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 'List files and folders in OneDrive' clearly states the verb and resource, distinguishing it from siblings like search_files or get_file_metadata. However, it could be more specific about scope (e.g., listing contents of a given folder).
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 vs alternatives like search_files or get_file_metadata. The description lacks any context about appropriate use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_mail_foldersA
Get all mail folders (Inbox, Sent Items, Archive, etc.)
| 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 must disclose behavioral traits. It states that the tool returns all mail folders, but does not mention if there are any limitations, such as hidden folders, system folders, or folder hierarchy. This is adequate for a simple list operation but lacks depth about edge cases.
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 one sentence with 10 words, which is highly concise. It front-loads the action and resource, and every word adds value. No superfluous content.
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?
The tool is simple with no parameters and no output schema. The description covers the essential purpose, but could be slightly more complete by noting if the list includes all accessible folders or if there is a default set. For a basic list, it is mostly complete.
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 no parameters, so the baseline is 4. The description does not need to add parameter information, and it correctly omits any param details.
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 ('Get') and the resource ('all mail folders'), and provides examples like Inbox, Sent Items, Archive. This distinguishes it from sibling tools such as create_folder or get_folder_emails, which perform different 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?
There is no explicit guidance on when to use this tool versus alternatives like get_folder_emails. The usage is implied: call this to retrieve the list of available mail folders. A score of 3 reflects the lack of exclusion criteria or contextual direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tasksC
Get tasks from a specific To-Do list
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | Task list ID | |
| maxResults | No | Maximum results (default: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behaviors like pagination or default sorting. It only states 'Get tasks' without addressing maxResults or response format.
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?
Very concise single sentence, front-loaded. No wasted words, but lacks detail that could fit without sacrificing 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?
Missing output schema and annotations. Description does not explain what task fields are returned or how pagination works via maxResults. Incomplete for an AI agent to fully understand tool behavior.
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 provides 100% coverage with descriptions for both parameters. Description adds no extra meaning; 'specific To-Do list' weakly corresponds to listId. 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?
Description clearly states the tool retrieves tasks from a specific To-Do list. Verb 'Get' and resource 'tasks' are specific. However, could be more precise about listing all tasks.
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 on when to use this tool versus alternatives like 'list_todo_lists' or 'create_task'. No mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_team_channelsB
Get all channels in a specific team
| Name | Required | Description | Default |
|---|---|---|---|
| teamId | Yes | Team ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the sole source of behavioral context. It does not disclose any behavioral traits like error handling, authentication requirements, or data limits, which are important for safe invocation.
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, concise sentence with no wasted words. It is appropriately sized for a simple tool.
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 simplicity (one parameter, no output schema), the description is adequate but does not mention return format or edge cases, leaving some 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 coverage is 100% (teamId with description 'Team ID'), so the baseline is 3. The description adds no extra semantic information beyond what is in the schema.
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 retrieves all channels within a specific team, using a specific verb and resource. It distinguishes itself from sibling tools like 'list_teams' or 'get_channel_messages'.
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, such as 'get_channel_messages'. The description lacks context-specific instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_teamsA
Get all teams the user is a member of
| 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 must bear full burden of disclosure. It does not mention read-only nature, authentication requirements, pagination, or return format. The simplicity of the operation mitigates but does not excuse this lack.
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 is front-loaded and immediately conveys the core purpose.
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 zero parameters and no output schema, the description is adequate but lacks detail on return type or pagination. For a simple list operation, it is minimally viable but could include expectations about the output format.
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 and schema coverage is 100% (trivially). Baseline 4 applies. Description adds no parameter info, which is acceptable as none exist.
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 'Get all teams the user is a member of' uses a specific verb ('Get') and resource ('teams') with clear scope (user's memberships). It distinguishes from siblings like 'list_team_channels' which operates on a specific team.
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 (e.g., list_team_channels, list_calendars). There is no mention of prerequisites or context where it should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_todo_listsB
Get all To-Do task lists
| 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 must disclose all behavioral traits. It fails to mention whether this is a read-only operation, any authentication or permission requirements, pagination, sorting, or the structure of the returned data. The brief statement does not provide sufficient transparency for safe invocation.
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 sentence with no extraneous words, achieving high conciseness. However, it is perhaps too minimal given the lack of annotations and output schema; a slightly longer description could improve completeness without sacrificing brevity.
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 absence of an output schema and annotations, the description should clarify what information is returned (e.g., list names, IDs, task counts). It does not define what a 'To-Do task list' entails or the response format, leaving the agent with incomplete context for using the tool 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?
The tool has zero parameters and 100% schema description coverage, so the baseline is 4. The description adds no parameter information because none exist, which is acceptable. No further elaboration is needed.
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 uses the verb 'Get' and specifies the resource 'all To-Do task lists', clearly indicating the tool retrieves a collection of to-do lists. However, it does not differentiate from sibling tools like 'list_tasks', which could be confused as similar, but the name and description narrow it down to lists specifically.
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 such as 'list_tasks' or 'list_calendars'. The description lacks any context about prerequisites, scope, or exclusions, leaving the agent to infer the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_as_readB
Mark email as read or unread
| Name | Required | Description | Default |
|---|---|---|---|
| emailId | Yes | Email message ID | |
| isRead | No | 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, and the description does not disclose any behavioral traits such as side effects, permissions, error handling, or idempotency. It only states the basic action.
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 sentence, highly efficient with no wasted words. It could be slightly expanded for clarity but remains appropriately concise.
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 simplicity (2 parameters, no nested objects, no output schema), the description is adequate but lacks information about error conditions, behavior when email is missing, or idempotency. It is marginally complete.
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 clear explanations for both parameters (emailId and isRead). The description adds no additional meaning beyond the schema, so it meets the baseline.
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 'Mark email as read or unread' clearly states the verb (mark) and resource (email), and the boolean parameter explicitly covers both states. It distinguishes from siblings like move_email or delete_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?
No explicit guidance on when to use this tool versus alternatives. While the tool is unique among siblings for toggling read status, the description does not mention prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_emailB
Move an email to a different folder
| Name | Required | Description | Default |
|---|---|---|---|
| emailId | Yes | Email message ID | |
| destinationFolderId | Yes | Destination folder ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavior. It only states 'move' without clarifying whether it is a move or copy, or side effects like updating labels. Minimal disclosure.
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 no 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?
For a simple two-parameter tool with no output schema, the description is adequate but lacks behavioral context (e.g., confirmation of move, source deletion). Not fully complete.
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 coverage is 100%, so the description need not elaborate, but it adds no extra meaning beyond the parameter names. Baseline 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 ('move an email') and the target resource ('to a different folder'), making it distinct from siblings like delete_email or mark_as_read.
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 usage context is provided; no guidance on when to use this tool versus alternatives (e.g., copy, archive) or any prerequisites like folder existence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_fileB
Move a file or folder to a different location
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | File or folder ID | |
| destinationPath | Yes | Destination folder path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral details like recursive moves, overwrite behavior, or permissions, but it does not.
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 sentence with no unnecessary words, efficiently conveying the core purpose.
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 output schema and no annotations, the description lacks details on return values, error conditions, and side effects, making it insufficient for a complete understanding.
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 coverage is 100% with clear parameter descriptions. The description adds no extra meaning beyond the schema, so baseline 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 ('Move') and the resource ('a file or folder'), and it distinguishes from sibling tools like 'move_email' which moves emails.
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 (e.g., share_file, upload_file), nor any conditions or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_contactsA
Search contacts by name, email, or company
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears full responsibility. It does not disclose whether the tool is read-only, whether results are paginated, or what the default search behavior is (e.g., exact match vs. partial match).
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, front-loaded sentence with no redundant words, efficiently conveying the tool's purpose.
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 simple one-parameter schema and no output schema, the description covers the core functionality well. However, it lacks details on result format and search behavior, such as whether multiple criteria are combined.
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 coverage is 100%, but the description adds meaning by specifying that the query parameter targets name, email, or company fields, which is not explicit in the schema's 'Search query' 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 verb 'search', the resource 'contacts', and the search criteria (name, email, company). This distinguishes it from sibling tools like list_contacts or create_contact.
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 usage when searching contacts by specific fields, but provides no explicit guidance on when to use or avoid this tool compared to alternatives like list_contacts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_emailsC
Search emails with optional text query
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Text to search for in emails | |
| maxResults | No | Maximum number of results (default: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It only says 'search emails with optional text query', omitting crucial details like searched fields (subject, body, attachments), case sensitivity, pagination behavior, default sorting, or scope (e.g., all mailboxes vs current folder).
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?
Very concise single sentence, but at the cost of completeness. It is front-loaded, but the sacrifice of behavioral detail makes it less useful for an agent. It is not verbose, but it is under-specified.
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 tool with no output schema and 2 parameters, the description should provide more context about search behavior. It does not explain what is searched, how results are returned, or how it differs from sibling tools like 'search_in_folder'. An agent likely will not have enough information to select or invoke it correctly.
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 each parameter is documented in the schema. The description adds minimal value beyond 'optional text query', which is already implied by the schema. No additional meaning about search semantics or usage.
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?
Clearly states verb 'search' and resource 'emails'. However, it does not differentiate from siblings like 'get_folder_emails' or 'search_in_folder', lacking specificity on scope (e.g., all mailboxes vs specific folders).
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 on when to use this tool versus alternatives. Does not mention prerequisites, limitations, or comparison with other email retrieval tools. The optional query hint is implicit but insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_filesB
Search for files and folders in OneDrive
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description is minimal. It does not disclose whether the search is by filename, content, metadata, or any other behavioral traits such as pagination, sorting, or access permissions. The description adds almost no value beyond the tool name.
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 is front-loaded and easy to parse, though it could benefit from a slight expansion without becoming verbose.
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?
The tool has no output schema and minimal description. Important context such as return format (list of files? metadata only?), pagination, or scope limitations is missing. The description is insufficient for an agent to correctly interpret the tool's full capabilities.
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 coverage is 100% for the single 'query' parameter, and its description is adequate. The tool description does not add additional semantic meaning beyond what the schema provides, so baseline 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 verb 'Search' and the resource 'files and folders in OneDrive', which is specific and distinguishes it from sibling search tools like search_emails or search_contacts.
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 other search-related siblings (e.g., search_emails, search_contacts, search_in_folder). The agent has no context to select this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_in_folderB
Search emails within a specific folder
| Name | Required | Description | Default |
|---|---|---|---|
| folderId | Yes | Mail folder ID | |
| query | No | Search query | |
| maxResults | No | Maximum number of results (default: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Lacks details on behavior such as search query syntax, results format, or pagination. No mention of read-only nature.
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?
One sentence, no fluff.
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 output schema and no annotations, the description is insufficient for an agent to understand the full context, such as what a folder ID is or how to construct queries.
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 already describes all parameters, and description adds no extra meaning beyond the schema.
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 searches emails within a specific folder, distinguishing it from broader search tools like 'search_emails'.
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 on when to use this tool versus alternatives such as 'search_emails' or 'get_folder_emails'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_channel_messageC
Send a message to a Teams channel
| Name | Required | Description | Default |
|---|---|---|---|
| teamId | Yes | Team ID | |
| channelId | Yes | Channel ID | |
| message | Yes | Message content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It only says 'send a message,' implying a write operation, but does not disclose any behavioral traits (e.g., authentication needs, rate limits, side effects, or response 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 concise sentence with no wasted words. It is front-loaded with the core action. However, it could be slightly more informative without sacrificing brevity.
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 three required parameters, no output schema, and no annotations, the description is too minimal. It does not mention what the response is, whether the operation is idempotent, or any prerequisites. More context would be beneficial.
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?
All three parameters (teamId, channelId, message) are fully described in the input schema (100% coverage). The description adds no additional meaning beyond the schema, so 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 tool sends a message to a Teams channel. The verb 'Send' and resource 'message to a Teams channel' are specific, but it does not differentiate from sibling tools like send_chat_message, though the channel versus chat distinction is 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?
No guidance on when to use this tool versus alternatives such as send_chat_message or send_email. The description lacks context for choosing among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_chat_messageC
Send a direct chat message
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| message | Yes | Message content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden for behavioral traits. It only states 'Send a direct chat message', omitting details such as permissions, mutation side effects, error handling, or reply 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 sentence, front-loaded with the key action. It is concise, though it could include a bit more detail without becoming verbose.
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 output schema or annotations, the description is incomplete. It does not explain return values, error conditions, or prerequisites, leaving an AI agent underinformed for a direct action tool.
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 coverage is 100%, and parameter descriptions are clear ('Chat ID', 'Message content'). The tool description adds no additional meaning beyond the schema, so baseline score 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 verb 'Send' and specifies 'direct chat message', which distinguishes it from the sibling 'send_channel_message'. However, it does not explicitly differentiate beyond the word 'direct'.
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 'send_channel_message'. The description lacks any context about appropriate scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_emailB
Send an email via Office 365
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address | |
| subject | Yes | Email subject | |
| body | Yes | Email body content |
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 does not disclose behavioral traits such as whether the email is sent immediately, permission requirements, or limitations like max body size. The description is minimal and omits important side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant information. It is appropriately front-loaded 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?
The tool is simple with three parameters and no output schema, but the description lacks context such as whether attachments are supported (implied by sibling send_email_with_attachments), and does not mention any rate limits or sending behavior. It is minimally complete but could be more informative.
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 coverage is 100% with clear descriptions for each parameter (to, subject, body). The tool description does not add extra meaning beyond the schema, but the schema itself is adequate, earning baseline 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 'Send an email via Office 365' clearly states the action, target resource (email), and platform, which distinguishes it from sibling tools like send_chat_message and send_email_with_attachments.
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 on when to use this tool versus alternatives like send_email_with_attachments or send_chat_message. The description does not specify exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_email_with_attachmentsC
Send email with file attachments
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address | |
| subject | Yes | Email subject | |
| body | Yes | Email body content (HTML supported) | |
| attachments | No | Array of attachment objects |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states the basic action and does not mention any side effects, rate limits, size constraints, 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 overly sparse (4 words) and does not earn its place. While concise, it lacks useful guidance and reads as an under-specification.
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 4 parameters and no output schema or annotations, the description is incomplete. It fails to explain return values, error states, or constraints on attachments like size limits.
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 already documents all parameters. The description adds no additional semantic value beyond what the schema provides.
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 'Send email with file attachments' clearly states the verb and resource, and distinguishes from sibling tool 'send_email' which likely sends without attachments.
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 over alternatives like 'send_email'. The description does not include any context about prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_calendar_eventC
Update an existing calendar event
| Name | Required | Description | Default |
|---|---|---|---|
| eventId | Yes | Calendar event ID | |
| updates | Yes | Fields to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states 'update' without explaining effects like partial vs. full replacement, idempotency, or whether missing fields are preserved. This is insufficient for safe use.
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 very concise at one sentence, but it could be slightly longer to include essential usage context without becoming verbose. The structure is front-loaded but overly terse.
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 simple update tool, the description is minimally adequate but lacks important context such as error handling, partial update behavior, and prerequisites. Given the nested updates parameter, more detail would improve completeness.
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 coverage is 100%, with both parameters described in the schema (eventId, updates). The description adds no extra meaning beyond what the schema provides, so baseline 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 (update) and resource (calendar event), distinguishing it from sibling tools like create_calendar_event and delete_calendar_event. However, it lacks specificity about the scope of updates (e.g., mutable fields), missing an opportunity to be more precise.
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. There is no mention of prerequisites (e.g., event must exist), nor any comparison with sibling tools like create or get_event_details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contactC
Update an existing contact
| Name | Required | Description | Default |
|---|---|---|---|
| contactId | Yes | Contact ID | |
| updates | Yes | Fields to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description simply says 'update' without disclosing mutation effects, permission requirements, or behavior on non-existent contacts. The description carries the full burden and fails to provide 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 sentence, concise but lacking important details. It is efficient but under-specified, resulting in a middling score.
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 or output schema, the description is too brief. It does not explain partial vs full update, error handling, or return value, leaving the agent without crucial 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?
Schema coverage is 100% (contactId and updates are documented). The description adds no additional meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Update an existing contact' which clearly indicates the action (update) and resource (contact). It distinguishes from 'create_contact' but doesn't specify scope beyond existence.
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 on when to use this tool versus siblings like 'create_contact' or 'search_contacts'. The agent is given no context about prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskC
Update an existing task
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | Task list ID | |
| taskId | Yes | Task ID | |
| updates | Yes | Fields to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description only implies mutation via 'Update' but lacks details on permissions, side effects, idempotency, or error handling.
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?
Single sentence is concise but overly minimal; it does not waste words but misses critical details.
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?
With no output schema and a nested parameter, the description is insufficient. It lacks context on return values, success criteria, or constraints.
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 coverage is 100% with descriptions for all parameters. The description adds no additional meaning beyond the schema, so baseline 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?
Description clearly states 'Update an existing task', matching the tool's purpose. Distinguishes from siblings like create_task, but no explicit differentiation from update_calendar_event or update_contact.
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 on when to use or alternatives. The description does not mention prerequisites, when not to use, or contrast with sibling tools like create_task or delete_calendar_event.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileB
Upload a file to OneDrive (max 4MB)
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Destination path (folder) | |
| fileName | Yes | File name | |
| contentBytes | Yes | File content in base64 encoding |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behaviors. It mentions the 4MB size limit but omits other important traits like overwrite behavior, required permissions, encoding details, or error handling. This is insufficient 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, front-loaded sentence that efficiently conveys the purpose and key constraint. Every word is meaningful with no 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 lack of annotations and output schema, and the relative complexity of file upload (encoding, overwrite, error states), the description is too minimal. It leaves the agent without sufficient context for correct invocation, especially regarding size limits beyond 4MB or handling conflicts.
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?
All three parameters have schema descriptions, achieving 100% coverage. The description adds no extra meaning beyond the schema, maintaining a baseline of 3. No additional usage hints are provided.
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 'Upload' and the resource 'file to OneDrive', with a key constraint 'max 4MB'. This distinguishes it from sibling tools like share_file or move_file.
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 does not provide explicit guidance on when to use this tool versus alternatives, such as for small files only or when larger files need chunked upload. The usage context is implied but not elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource or action with clear descriptions, e.g., send_email vs send_email_with_attachments, search_emails vs search_in_folder. No two tools are ambiguous.
All tools follow a consistent verb_noun pattern using underscores (e.g., create_calendar_event, get_recent_emails). No mixing of styles.
45 tools is high but justified by covering multiple Office 365 domains (email, calendar, contacts, tasks, OneDrive, Teams). The set is well-scoped, though slightly larger than ideal for coherence.
Covers most core operations across domains. Minor gaps: missing delete for contacts, tasks, and files; no update for files. Overall, agents can accomplish common tasks.
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
Carbon Voice MCP serves as a bridge that connects AI assistants like ChatGPT, Claude, and Cursor to a user's Carbon Voice account, turning voice messages and conversations into a private, on-demand knowledge base. It provides 28 specialized tools for comprehensive voice messaging management, including creating and sending messages, accessing conversation history with instant transcription, running AI actions (summarization, TLDR generation, meeting notes), and managing workspace collaboration through folders, contacts, and team communications.
One workspace of tools for Claude and ChatGPT: connect 600+ apps, generate media, build tools.
Agent personas for Claude. 16 tools, 13 personas, 3 workflows. Zero extra API cost. Free.
Connect any mailbox to Claude, ChatGPT & AI: read, send, reply, schedule & search emails.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceConnects Claude with Microsoft Outlook through the Graph API, providing comprehensive email, calendar, folder management, and rules creation capabilities.19
- FlicenseNot gradedqualityDmaintenanceProvides Claude Desktop and Claude Code with access to Microsoft 365 email and calendar services via the Microsoft Graph API. It enables users to manage emails, search folders, schedule calendar events, and check availability through natural language commands.
- AlicenseBqualityBmaintenanceEnables interaction with Microsoft Outlook services (Tasks, Calendar, Email, Contacts, and Teams) via the Microsoft Graph API, providing 39 tools for Claude Desktop with natural language and JSON output.39MIT
- AlicenseNot gradedqualityBmaintenanceConnects Claude with Microsoft 365 services such as Email, Calendar, Teams, OneDrive, and more through the Microsoft Graph API.6016MIT
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/eesb99/office365-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server