Skip to main content
Glama

ms-365-mcp-server

npm version build status license

Microsoft 365 MCP Server

A Model Context Protocol (MCP) server for interacting with Microsoft 365 and Microsoft Office services through the Graph API.

Supported Clouds

This server supports multiple Microsoft cloud environments:

Cloud

Description

Auth Endpoint

Graph API Endpoint

Global (default)

International Microsoft 365

login.microsoftonline.com

graph.microsoft.com

China (21Vianet)

Microsoft 365 operated by 21Vianet

login.chinacloudapi.cn

microsoftgraph.chinacloudapi.cn

Prerequisites

  • Node.js >= 20 (recommended)

  • Node.js 14+ may work with dependency warnings

Features

  • Authentication via Microsoft Authentication Library (MSAL)

  • Comprehensive Microsoft 365 service integration

  • Read-only mode support for safe operations

  • Tool filtering for granular access control

Output Format: JSON vs TOON

The server supports two output formats that can be configured globally:

JSON Format (Default)

Standard JSON output with pretty-printing:

{
  "value": [
    {
      "id": "1",
      "displayName": "Alice Johnson",
      "mail": "alice@example.com",
      "jobTitle": "Software Engineer"
    }
  ]
}

(experimental) TOON Format

Token-Oriented Object Notation for efficient LLM token usage:

value[1]{id,displayName,mail,jobTitle}:
  "1",Alice Johnson,alice@example.com,Software Engineer

Benefits:

  • 30-60% fewer tokens vs JSON

  • Best for uniform array data (lists of emails, calendar events, files, etc.)

  • Ideal for cost-sensitive applications at scale

Usage: (experimental) Enable TOON format globally:

Via CLI flag:

npx @softeria/ms-365-mcp-server --toon

Via Claude Desktop configuration:

{
  "mcpServers": {
    "ms365": {
      "command": "npx",
      "args": ["-y", "@softeria/ms-365-mcp-server", "--toon"]
    }
  }
}

Via environment variable:

MS365_MCP_OUTPUT_FORMAT=toon npx @softeria/ms-365-mcp-server

Supported Services & Tools

Personal Account Tools (Available by default)

Email (Outlook)
list-mail-messages, list-mail-folders, list-mail-folder-messages, get-mail-message, send-mail, delete-mail-message, create-draft-email, move-mail-message

Calendar
list-calendars, list-calendar-events, get-calendar-event, get-calendar-view, create-calendar-event, update-calendar-event, delete-calendar-event

OneDrive Files
list-drives, get-drive-root-item, list-folder-files, download-onedrive-file-content, upload-file-content, upload-new-file, delete-onedrive-file

Excel Operations
list-excel-worksheets, get-excel-range, create-excel-chart, format-excel-range, sort-excel-range

OneNote
list-onenote-notebooks, list-onenote-notebook-sections, list-onenote-section-pages, get-onenote-page-content, create-onenote-page

To Do Tasks
list-todo-task-lists, list-todo-tasks, get-todo-task, create-todo-task, update-todo-task, delete-todo-task

Planner
list-planner-tasks, get-planner-plan, list-plan-tasks, get-planner-task, create-planner-task

Contacts
list-outlook-contacts, get-outlook-contact, create-outlook-contact, update-outlook-contact, delete-outlook-contact

User Profile
get-current-user

Search
search-query

Organization Account Tools (Requires --org-mode flag)

Teams & Chats
list-chats, get-chat, list-chat-messages, get-chat-message, send-chat-message, list-chat-message-replies, reply-to-chat-message, list-joined-teams, get-team, list-team-channels, get-team-channel, list-channel-messages, get-channel-message, send-channel-message, list-team-members

SharePoint Sites
search-sharepoint-sites, get-sharepoint-site, get-sharepoint-site-by-path, list-sharepoint-site-drives, get-sharepoint-site-drive-by-id, list-sharepoint-site-items, get-sharepoint-site-item, list-sharepoint-site-lists, get-sharepoint-site-list, list-sharepoint-site-list-items, get-sharepoint-site-list-item, get-sharepoint-sites-delta

Shared Mailboxes
list-shared-mailbox-messages, list-shared-mailbox-folder-messages, get-shared-mailbox-message, send-shared-mailbox-mail

User Management
list-users

Organization/Work Mode

To access work/school features (Teams, SharePoint, etc.), enable organization mode using any of these flags:

{
  "mcpServers": {
    "ms365": {
      "command": "npx",
      "args": ["-y", "@softeria/ms-365-mcp-server", "--org-mode"]
    }
  }
}

Organization mode must be enabled from the start to access work account features. Without this flag, only personal account features (email, calendar, OneDrive, etc.) are available.

Shared Mailbox Access

To access shared mailboxes, you need:

  1. Organization mode: Shared mailbox tools require --org-mode flag (work/school accounts only)

  2. Delegated permissions: Mail.Read.Shared or Mail.Send.Shared scopes

  3. Exchange permissions: The signed-in user must have been granted access to the shared mailbox

  4. Usage: Use the shared mailbox's email address as the user-id parameter in the shared mailbox tools

Finding shared mailboxes: Use the list-users tool to discover available users and shared mailboxes in your organization.

Example: list-shared-mailbox-messages with user-id set to shared-mailbox@company.com

Quick Start Example

Test login in Claude Desktop:

Login example

Examples

Image

Integration

Claude Desktop

To add this MCP server to Claude Desktop, edit the config file under Settings > Developer.

Personal Account (MSA)

{
  "mcpServers": {
    "ms365": {
      "command": "npx",
      "args": ["-y", "@softeria/ms-365-mcp-server"]
    }
  }
}

Work/School Account (Global)

{
  "mcpServers": {
    "ms365": {
      "command": "npx",
      "args": ["-y", "@softeria/ms-365-mcp-server", "--org-mode"]
    }
  }
}

Work/School Account (China 21Vianet)

{
  "mcpServers": {
    "ms365-china": {
      "command": "npx",
      "args": ["-y", "@softeria/ms-365-mcp-server", "--org-mode", "--cloud", "china"]
    }
  }
}

Claude Code CLI

Personal Account (MSA)

claude mcp add ms365 -- npx -y @softeria/ms-365-mcp-server

Work/School Account (Global)

# macOS/Linux
claude mcp add ms365 -- npx -y @softeria/ms-365-mcp-server --org-mode

# Windows (use cmd /c wrapper)
claude mcp add ms365 -s user -- cmd /c "npx -y @softeria/ms-365-mcp-server --org-mode"

Work/School Account (China 21Vianet)

# macOS/Linux
claude mcp add ms365-china -- npx -y @softeria/ms-365-mcp-server --org-mode --cloud china

# Windows (use cmd /c wrapper)
claude mcp add ms365-china -s user -- cmd /c "npx -y @softeria/ms-365-mcp-server --org-mode --cloud china"

For other interfaces that support MCPs, please refer to their respective documentation for the correct integration method.

Open WebUI

Open WebUI supports MCP servers via HTTP transport with OAuth 2.1.

  1. Start the server with HTTP mode and dynamic registration enabled:

    npx @softeria/ms-365-mcp-server --http --enable-dynamic-registration
  2. In Open WebUI, go to Admin Settings → Tools (/admin/settings/tools) → Add Connection:

    • Type: MCP Streamable HTTP

    • URL: Your MCP server URL with /mcp path

    • Auth: OAuth 2.1

  3. Click Register Client.

Note: The --enable-dynamic-registration is required for Open WebUI to work. If using a custom Azure Entra app, add your redirect URI under "Mobile and desktop applications" platform (not "Single-page application").

Quick test setup using the default Azure app (ID ms-365 and localhost:8080 are pre-configured):

docker run -d -p 8080:8080 \
  -e WEBUI_AUTH=false \
  -e OPENAI_API_KEY \
  ghcr.io/open-webui/open-webui:main

npx @softeria/ms-365-mcp-server --http --enable-dynamic-registration

Then add connection with URL http://localhost:3000/mcp and ID ms-365.

Open WebUI MCP Connection

Local Development

For local development or testing:

# From the project directory
claude mcp add ms -- npx tsx src/index.ts --org-mode

Or configure Claude Desktop manually:

{
  "mcpServers": {
    "ms365": {
      "command": "node",
      "args": ["/absolute/path/to/ms-365-mcp-server/dist/index.js", "--org-mode"]
    }
  }
}

Note: Run npm run build after code changes to update the dist/ folder.

Authentication

⚠️ You must authenticate before using tools.

The server supports three authentication methods:

1. Device Code Flow (Default)

For interactive authentication via device code:

  • MCP client login:

    • Call the login tool (auto-checks existing token)

    • If needed, get URL+code, visit in browser

    • Use verify-login tool to confirm

  • CLI login:

    npx @softeria/ms-365-mcp-server --login

    Follow the URL and code prompt in the terminal.

Tokens are cached securely in your OS credential store (fallback to file).

2. OAuth Authorization Code Flow (HTTP mode only)

When running with --http, the server requires OAuth authentication:

npx @softeria/ms-365-mcp-server --http 3000

This mode:

  • Advertises OAuth capabilities to MCP clients

  • Provides OAuth endpoints at /auth/* (authorize, token, metadata)

  • Requires Authorization: Bearer <token> for all MCP requests

  • Validates tokens with Microsoft Graph API

  • Disables login/logout tools by default (use --enable-auth-tools to enable them)

MCP clients will automatically handle the OAuth flow when they see the advertised capabilities.

Setting up Azure AD for OAuth Testing

To use OAuth mode with custom Azure credentials (recommended for production), you'll need to set up an Azure AD app registration:

  1. Create Azure AD App Registration:

  • Go to Azure Portal

  • Navigate to Azure Active Directory → App registrations → New registration

  • Set name: "MS365 MCP Server"

  1. Configure Redirect URIs:

  • Configure the OAuth callback URI: Go to your app registration and on the left side, go to Authentication.

  • Under Platform configurations:

    • Click Add a platform (if you don’t already see one for "Mobile and desktop applications" / "Public client").

    • Choose Mobile and desktop applications or Public client/native (mobile & desktop) (label depends on portal version).

  1. Testing with MCP Inspector (npm run inspector):

  • Go to your app registration and on the left side, go to Authentication.

  • Under Platform configurations:

    • Click Add a platform (if you don’t already see one for "Web").

    • Choose Web.

    • Configure the following redirect URIs

      • http://localhost:6274/oauth/callback

      • http://localhost:6274/oauth/callback/debug

      • http://localhost:3000/callback (optional, for server callback)

  1. Get Credentials:

  • Copy the Application (client) ID from Overview page

  • Go to Certificates & secrets → New client secret → Copy the secret value (optional for public apps)

  1. Configure Environment Variables: Create a .env file in your project root:

    MS365_MCP_CLIENT_ID=your-azure-ad-app-client-id-here
    MS365_MCP_CLIENT_SECRET=your-secret-here  # Optional for public apps
    MS365_MCP_TENANT_ID=common

With these configured, the server will use your custom Azure app instead of the built-in one.

3. Bring Your Own Token (BYOT)

If you are running ms-365-mcp-server as part of a larger system that manages Microsoft OAuth tokens externally, you can provide an access token directly to this MCP server:

MS365_MCP_OAUTH_TOKEN=your_oauth_token npx @softeria/ms-365-mcp-server

This method:

  • Bypasses the interactive authentication flows

  • Use your pre-existing OAuth token for Microsoft Graph API requests

  • Does not handle token refresh (token lifecycle management is your responsibility)

Note: HTTP mode requires authentication. For unauthenticated testing, use stdio mode with device code flow.

Authentication Tools: In HTTP mode, login/logout tools are disabled by default since OAuth handles authentication. Use --enable-auth-tools if you need them available.

Tool Presets

To reduce initial connection overhead, use preset tool categories instead of loading all 90+ tools:

npx @softeria/ms-365-mcp-server --preset mail
npx @softeria/ms-365-mcp-server --list-presets  # See all available presets

Available presets: mail, calendar, files, personal, work, excel, contacts, tasks, onenote, search, users, all

Experimental: --discovery starts with only 2 tools (search-tools, execute-tool) for minimal token usage.

CLI Options

The following options can be used when running ms-365-mcp-server directly from the command line:

--login           Login using device code flow
--logout          Log out and clear saved credentials
--verify-login    Verify login without starting the server
--org-mode        Enable organization/work mode from start (includes Teams, SharePoint, etc.)
--work-mode       Alias for --org-mode
--force-work-scopes Backwards compatibility alias for --org-mode (deprecated)
--cloud <type>    Microsoft cloud environment: global (default) or china (21Vianet)

Server Options

When running as an MCP server, the following options can be used:

-v                Enable verbose logging
--read-only       Start server in read-only mode, disabling write operations
--http [port]     Use Streamable HTTP transport instead of stdio (optionally specify port, default: 3000)
                  Starts Express.js server with MCP endpoint at /mcp
--enable-auth-tools Enable login/logout tools when using HTTP mode (disabled by default in HTTP mode)
--enable-dynamic-registration Enable OAuth Dynamic Client Registration endpoint (required for Open WebUI)
--enabled-tools <pattern> Filter tools using regex pattern (e.g., "excel|contact" to enable Excel and Contact tools)
--preset <names>  Use preset tool categories (comma-separated). See "Tool Presets" section above
--list-presets    List all available presets and exit
--toon            (experimental) Enable TOON output format for 30-60% token reduction
--discovery       (experimental) Start with search-tools + execute-tool only

Environment variables:

  • READ_ONLY=true|1: Alternative to --read-only flag

  • ENABLED_TOOLS: Filter tools using a regex pattern (alternative to --enabled-tools flag)

  • MS365_MCP_ORG_MODE=true|1: Enable organization/work mode (alternative to --org-mode flag)

  • MS365_MCP_FORCE_WORK_SCOPES=true|1: Backwards compatibility for MS365_MCP_ORG_MODE

  • MS365_MCP_OUTPUT_FORMAT=toon: Enable TOON output format (alternative to --toon flag)

  • MS365_MCP_CLOUD_TYPE=global|china: Microsoft cloud environment (alternative to --cloud flag)

  • LOG_LEVEL: Set logging level (default: 'info')

  • SILENT=true|1: Disable console output

  • MS365_MCP_CLIENT_ID: Custom Azure app client ID (defaults to built-in app)

  • MS365_MCP_TENANT_ID: Custom tenant ID (defaults to 'common' for multi-tenant)

  • MS365_MCP_OAUTH_TOKEN: Pre-existing OAuth token for Microsoft Graph API (BYOT method)

  • MS365_MCP_KEYVAULT_URL: Azure Key Vault URL for secrets management (see Azure Key Vault section)

  • MS365_MCP_TOKEN_CACHE_PATH: Custom file path for MSAL token cache (see Token Storage below)

  • MS365_MCP_SELECTED_ACCOUNT_PATH: Custom file path for selected account metadata (see Token Storage below)

Token Storage

Authentication tokens are stored using the OS credential store (via keytar) when available. If keytar is not installed or fails (common on headless Linux), the server falls back to file-based storage.

Default fallback paths are relative to the installed package directory. This means tokens can be lost when the package is reinstalled or updated via npm.

To persist tokens across updates, set custom paths outside the package directory:

export MS365_MCP_TOKEN_CACHE_PATH="$HOME/.config/ms365-mcp/.token-cache.json"
export MS365_MCP_SELECTED_ACCOUNT_PATH="$HOME/.config/ms365-mcp/.selected-account.json"

Parent directories are created automatically. Files are written with 0600 permissions.

Security note: File-based token storage writes sensitive credentials to disk. Ensure the chosen directory has appropriate access controls. The OS credential store (keytar) is preferred when available.

Azure Key Vault Integration

For production deployments, you can store secrets in Azure Key Vault instead of environment variables. This is particularly useful for Azure Container Apps with managed identity.

Setup

  1. Create a Key Vault (if you don't have one):

    az keyvault create --name your-keyvault-name --resource-group your-rg --location eastus
  2. Add secrets to Key Vault:

    az keyvault secret set --vault-name your-keyvault-name --name ms365-mcp-client-id --value "your-client-id"
    az keyvault secret set --vault-name your-keyvault-name --name ms365-mcp-tenant-id --value "your-tenant-id"
    # Optional: if using confidential client flow
    az keyvault secret set --vault-name your-keyvault-name --name ms365-mcp-client-secret --value "your-secret"
  3. Grant access to Key Vault:

    For Azure Container Apps with managed identity:

    # Get the managed identity principal ID
    PRINCIPAL_ID=$(az containerapp show --name your-app --resource-group your-rg --query identity.principalId -o tsv)
    
    # Grant access to Key Vault secrets
    az keyvault set-policy --name your-keyvault-name --object-id $PRINCIPAL_ID --secret-permissions get list

    For local development with Azure CLI:

    # Your Azure CLI identity already has access if you have appropriate RBAC roles
    az login
  4. Configure the server:

    MS365_MCP_KEYVAULT_URL=https://your-keyvault-name.vault.azure.net npx @softeria/ms-365-mcp-server

Secret Name Mapping

Key Vault Secret Name

Environment Variable

Required

ms365-mcp-client-id

MS365_MCP_CLIENT_ID

Yes

ms365-mcp-tenant-id

MS365_MCP_TENANT_ID

No (defaults to 'common')

ms365-mcp-client-secret

MS365_MCP_CLIENT_SECRET

No

Authentication

The Key Vault integration uses DefaultAzureCredential from the Azure Identity SDK, which automatically tries multiple authentication methods in order:

  1. Environment variables (AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID)

  2. Managed Identity (recommended for Azure Container Apps)

  3. Azure CLI credentials (for local development)

  4. Visual Studio Code credentials

  5. Azure PowerShell credentials

Optional Dependencies

The Azure Key Vault packages (@azure/identity and @azure/keyvault-secrets) are optional dependencies. They are only loaded when MS365_MCP_KEYVAULT_URL is configured. If you don't use Key Vault, these packages are not required.

Contributing

We welcome contributions! Before submitting a pull request, please ensure your changes meet our quality standards.

Run the verification script to check all code quality requirements:

npm run verify

For Developers

After cloning the repository, you may need to generate the client code from the Microsoft Graph OpenAPI specification:

npm run generate

Support

If you're having problems or need help:

License

MIT © 2026 Softeria

Available Tools

78 tools
add-mail-attachmentC
Destructive

Use this API to create a new Attachment. An attachment can be one of the following types: All these types of attachment resources are derived from the attachment resource.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
messageIdYesPath parameter: messageId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.1/5.0
Behavior2/5

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

Annotations indicate this is a destructive (destructiveHint: true) and open-world (openWorldHint: true) operation, but the description doesn't add meaningful behavioral context beyond what annotations provide. It doesn't explain what 'destructive' means in this context (does it modify existing messages?), what authentication is needed, or any rate limits. With annotations covering basic safety profile, the description adds minimal value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The description is brief (two sentences) but the second sentence is confusing and adds little value. The first sentence states the basic purpose, but the second sentence about attachment types being 'derived from the attachment resource' is unclear and doesn't help an agent understand how to use the tool. The structure could be improved by front-loading clearer purpose information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

For a destructive tool with 4 parameters (including complex nested objects) and no output schema, the description is inadequate. It doesn't explain what happens after attachment creation, what the response looks like, error conditions, or important behavioral aspects. Given the complexity and the fact that annotations only provide basic safety hints, the description should do much more to help an agent use this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, so the schema already documents most parameters well. The description adds no parameter-specific information beyond what's in the schema - it doesn't explain the relationship between 'body' and 'messageId', what attachment types are actually supported, or how to structure the attachment data. The baseline of 3 is appropriate when the schema does most of the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

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

The description states 'Use this API to create a new Attachment' which provides a verb ('create') and resource ('Attachment'), but it's vague about what specifically is being attached to what. The second sentence about attachment types being derived from the attachment resource is confusing and doesn't clarify the actual purpose. It doesn't distinguish this from sibling tools like 'upload-file-content' or 'create-draft-email' which might also involve attachments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (like needing a message to attach to), no comparison to similar tools (like 'upload-file-content' for general file uploads), and no indication of when this specific attachment creation is appropriate versus other attachment-related operations.

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

create-calendar-eventD
Destructive

Create one or more multi-value extended properties in a new or existing instance of a resource. The following user resources are supported: The following group resources are supported: See Extended properties overview for more information about when to use open extensions or extended properties, and how to specify extended properties.

💡 TIP: CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

D1.7/5.0
Behavior2/5

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

Annotations indicate destructiveHint=true and readOnlyHint=false, consistent with a creation operation, but the description provides no useful behavioral context for calendar event creation (e.g., required fields, recurrence handling, or attendee notification behavior). It focuses entirely on extended properties which is not the primary behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

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

The description contains broken structure with empty list introductions ('The following user resources are supported: The following group resources are supported:') followed by nothing. It mixes irrelevant extended properties content with a disconnected email tip, resulting in confusion rather than conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

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

For a complex creation operation with 40+ potential fields in the body parameter, the description provides no useful context about required fields, validation rules, or the distinction between this tool and create-specific-calendar-event. The extended properties content is completely misplaced for a calendar event creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67% (decent baseline), but the description adds no meaningful context for the primary calendar event parameters (subject, body, attendees, timing). It mentions extended properties which exist in the schema but represents a minor feature, not the main purpose. The description fails to explain critical semantics like date-time formats or attendee structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

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

The description states 'Create one or more multi-value extended properties' which describes a completely different tool than the name 'create-calendar-event' suggests. The schema clearly defines calendar event parameters (subject, attendees, start, end), but the description focuses on extended properties, making it actively misleading about the tool's primary purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description mentions 'See Extended properties overview for more information about when to use open extensions or extended properties' which is irrelevant to calendar event creation. The only relevant guidance is the tip about using list-users to find email addresses for recipients, but this is disconnected from the main content and doesn't explain when to use this tool vs siblings like create-specific-calendar-event.

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

create-draft-emailD
Destructive

Create an open extension (openTypeExtension object) and add custom properties in a new or existing instance of a resource. You can create an open extension in a resource instance and store custom data to it all in the same operation, except for specific resources. The table in the Permissions section lists the resources that support open extensions.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

D1.3/5.0
Behavior1/5

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

Annotations indicate destructiveHint:true and readOnlyHint:false, but the description discloses nothing about email-specific behaviors (saving drafts vs sending, attachment handling, recipient validation) or what the tool actually returns. The text describes open extension behavior instead.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

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

The description is three sentences and structurally concise, but every sentence discusses the wrong functionality (open extensions), making the conciseness irrelevant or harmful for the agent's understanding of this email tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

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

Completely inadequate for a complex email creation tool with nested recipient/attachment objects and no output schema. The description describes a different API concept entirely (open extensions) and fails to address email draft creation, sending workflows, or error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% with nested object descriptions for email fields (body content, recipient types, attachments). However, the description adds no meaning for the email context and actively misleads by implying parameters relate to open extensions. The 'body' wrapper object and flags like 'includeHeaders' are unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

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

The description describes creating 'open extensions' (openTypeExtension objects) for adding custom properties to resources, but the tool name 'create-draft-email' and input schema (containing subject, body, bccRecipients, ccRecipients, attachments, isDraft fields) clearly indicate this tool creates email draft messages. This is severely misleading.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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

Provides no guidance on when to use this tool versus sibling tools like 'create-forward-draft', 'create-reply-draft', or 'send-mail'. The text discusses open extension permissions and resource tables, which is irrelevant to email draft creation.

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

create-excel-chartC
Destructive

Creates a new chart.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
driveIdYesPath parameter: driveId
driveItemIdYesPath parameter: driveItemId
workbookWorksheetIdYesPath parameter: workbookWorksheetId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.5/5.0
Behavior3/5

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

Annotations provide readOnlyHint=false, openWorldHint=true, and destructiveHint=true, indicating this is a mutating operation that can create new resources and may be destructive. The description 'Creates a new chart' aligns with these annotations by confirming creation behavior, but adds minimal context beyond what annotations already provide. It doesn't specify what 'destructive' means in this context (e.g., overwriting existing charts), rate limits, authentication needs, or response format. With annotations covering the basic safety profile, the description adds some value but lacks rich behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is extremely concise with just three words: 'Creates a new chart.' It's front-loaded with the core action and resource, with zero wasted words or redundant information. Every word serves a purpose in communicating the basic function, though this conciseness comes at the cost of completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

For a tool with 6 parameters (4 required), nested objects in the body, no output schema, and annotations indicating destructive mutation, the description is severely incomplete. It doesn't explain what a 'chart' means in this Excel context, what data formats are expected for sourceData, what chart types are supported, or what the response contains. The high parameter count and complexity demand more contextual information than the minimal description provides.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 83%, with 5 out of 6 parameters having descriptions in the schema. The description 'Creates a new chart' adds no parameter-specific information beyond what's already documented in the schema. It doesn't explain the purpose of 'body' properties (type, sourceData, seriesBy) or clarify the relationship between driveId, driveItemId, and workbookWorksheetId. With high schema coverage, the baseline is 3, and the description doesn't compensate with additional semantic context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

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

The description 'Creates a new chart' is a tautology that restates the tool name without adding meaningful context. It specifies the verb 'creates' and resource 'chart' but lacks specificity about what kind of chart (Excel chart) or how it relates to the Excel context implied by the input schema parameters. While it distinguishes from some siblings like 'delete' or 'get' tools, it doesn't differentiate from other creation tools like 'create-calendar-event' or 'create-onenote-page' beyond the chart resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives. There are no explicit or implicit instructions about prerequisites, context, or comparisons with other tools. Given the sibling tools include 'format-excel-range', 'sort-excel-range', and 'get-excel-range', there's no indication of when chart creation is appropriate versus other Excel operations. The description offers zero usage guidance.

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

create-forward-draftA
Destructive

Create a draft to forward an existing message, in either JSON or MIME format. When using JSON format, you can:

  • Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error.

  • Specify either the toRecipients parameter or the toRecipients property of the message parameter. Specifying both or specifying neither will return an HTTP 400 Bad Request error.

  • Update the draft later to add content to the body or change other message properties. When using MIME format:

  • Provide the applicable Internet message headers and the MIME content, all encoded in base64 format in the request body.

  • Add any attachments and S/MIME properties to the MIME content. Send the draft message in a subsequent operation. Alternatively, forward a message in a single operation.

💡 TIP: Create a forward draft (does not send). Useful when user wants to review before sending.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
messageIdYesPath parameter: messageId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

A4.2/5.0
Behavior4/5

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

Strong. Adds critical behavioral details beyond annotations: HTTP 400 error conditions for parameter conflicts, lifecycle notes (can update draft later, send subsequently), and MIME encoding requirements (base64). destructiveHint=true is complemented by 'does not send' clarification. Minor gap: doesn't detail side effects on failure or specific storage location.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

Information-dense but slightly verbose. Bullet points effectively organize JSON vs MIME requirements. The 💡 TIP at end repeats the 'does not send' concept mentioned earlier. Front-loading is good (purpose first), but API-level error documentation (HTTP 400 specifics) could be more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

Comprehensive for a complex 4-parameter tool with nested objects. Covers both invocation formats (JSON/MIME), validation rules, lifecycle (create → update → send), and alternatives. No output schema exists, and description appropriately doesn't attempt to document return values per scoring rules.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Highly valuable additions. With 75% schema coverage, description compensates for complex 'body' parameter by documenting mutual exclusivity rules (comment vs body, toRecipients param vs property) that schema cannot express, plus MIME-specific encoding instructions. Schema covers basic types; description covers constraint semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

Excellent. Opens with specific verb (Create), resource (draft to forward existing message), and format options (JSON/MIME). Explicitly distinguishes from sibling 'forward-mail-message' by noting single-operation forwarding as an alternative, and distinguishes from reply drafts by specifying 'forward'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Provides clear usage context: bullet points detail JSON vs MIME selection criteria, validation constraints (HTTP 400 triggers), and the TIP explicitly states 'Useful when user wants to review before sending.' Mentions single-operation alternative. Minor gap: could explicitly name the sibling tool (forward-mail-message) for clarity.

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

create-onenote-pageB
Destructive

Create a new OneNote page in the default section of the default notebook. To create a page in a different section in the default notebook, you can use the sectionName query parameter. Example: ../onenote/pages?sectionName=My%20section The POST /onenote/pages operation is used only to create pages in the current user's default notebook. If you're targeting other notebooks, you can create pages in a specified section.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3/5.0
Behavior3/5

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

Mentions POST operation and default notebook constraint. Annotations indicate destructive and open-world behavior; the description adds context about the default notebook scope but omits details about auth requirements, rate limits, or error behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

Four sentences with reasonable information density, though the URL example ('../onenote/pages?sectionName...') is confusing in a tool context since MCP tools don't use URL query parameters directly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Given the complex nested body object with many read-only fields and no output schema, the description provides insufficient guidance on required fields or expected response structure. It does not explain how to populate the required 'body' parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Misleadingly references 'sectionName query parameter' which does not exist in the input schema (only body, includeHeaders, excludeResponse are present). With 67% schema coverage, the description fails to compensate for the complex nested body structure and instead adds confusing API-specific details that don't map to the tool interface.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

States specific action (Create) and resource (OneNote page) with clear scope constraints (default section of default notebook). Mentions limitation of targeting only default notebooks, implicitly distinguishing from sibling `create-onenote-section-page`.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

Provides guidance on using sectionName parameter for different sections and notes the default notebook limitation. However, fails to explicitly name the sibling tool (`create-onenote-section-page`) for targeting other notebooks, leaving ambiguity about the alternative.

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

create-onenote-section-pageB
Destructive

Create a new page in the specified section.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
onenoteSectionIdYesPath parameter: onenoteSectionId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false; the description confirms this with 'Create.' However, it adds no context about side effects, idempotency, or the 'openWorldHint' indicating external system interaction. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Extremely concise single sentence with no wasted words. However, given the complex nested input schema and destructive nature, the brevity may underserve the agent; it is appropriately front-loaded with the action verb.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Inadequate for the tool's complexity. The schema contains deeply nested objects (body with parentNotebook, parentSection, etc.), 4 parameters, and destructive annotations, yet the description lacks details on return values, required body fields, or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, establishing a baseline understanding. The description 'specified section' adds semantic meaning to the 'onenoteSectionId' parameter, but offers no guidance on the complex nested 'body' structure required for page content.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description states a specific verb (Create) and resource (page) with scope (in the specified section). It implies the target container via 'specified section,' which aligns with the onenoteSectionId parameter, but does not explicitly differentiate from the sibling tool 'create-onenote-page'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

Provides no guidance on when to use this tool versus 'create-onenote-page' or other alternatives. No mention of prerequisites (e.g., obtaining the section ID first) or when not to use this tool.

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

create-outlook-contactB
Destructive

Add a contact to the root Contacts folder or to the contacts endpoint of another contact folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.2/5.0
Behavior3/5

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

Annotations explicitly mark this as destructive (destructiveHint: true) and not read-only. The description confirms the creation behavior and mentions folder targeting. However, it lacks disclosure of conflict handling (e.g., duplicate IDs), rate limits, or implications of openWorldHint: true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The single sentence is front-loaded and efficient, with no redundant content. However, for a complex tool with a large nested body schema and behavioral nuances, this brevity approaches under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

The description covers the basic operation adequately but lacks critical context for a mutation tool: error handling behavior, return value structure (no output schema exists), and folder targeting mechanics. Given the rich input schema, this minimalism leaves significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 67% schema description coverage, the schema documents most body properties. The description mentions 'another contact folder' but fails to explain HOW to specify the target folder (no folderId parameter is visible) or the purpose of includeHeaders/excludeResponse flags.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description uses a clear verb ('Add') and resource ('contact'), and distinguishes scope by specifying root folder vs. other contact folders. However, 'Add' is slightly less precise than 'Create', and it lacks explicit differentiation from siblings like update-outlook-contact.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description explains WHERE the contact can be added (root or other folders) but provides no guidance on WHEN to use this tool versus alternatives like update-outlook-contact, or prerequisites needed to target a specific folder.

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

create-planner-taskC
Destructive

Create a new plannerTask.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.3/5.0
Behavior2/5

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

Annotations indicate this is a destructive, non-read-only, open-world operation, but the description adds no behavioral context beyond 'Create'. It doesn't mention that this is a write operation (implied by 'create'), what permissions might be needed, potential side effects, or how it interacts with planner plans/tasks. With annotations covering basic hints, the description fails to add meaningful behavioral insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is extremely concise with a single sentence. It's front-loaded and wastes no words, though this brevity contributes to its lack of helpfulness. For conciseness alone, it scores perfectly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Given the complexity (3 parameters, nested objects, no output schema) and annotations, the description is inadequate. It doesn't explain the tool's role in a planner context, required inputs like 'planId' or 'bucketId', or what 'create' entails operationally. For a destructive creation tool with rich schema, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67%, and the description provides no parameter information. The schema documents parameters like 'body' (with nested properties), 'includeHeaders', and 'excludeResponse' in detail. Since schema coverage is moderate, the baseline is 3, as the description doesn't compensate for the 33% gap but doesn't detract either.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

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

The description 'Create a new plannerTask' is a tautology that restates the tool name without adding specificity. It doesn't distinguish this tool from sibling tools like 'create-todo-task' or 'create-calendar-event', nor does it clarify what a 'plannerTask' entails beyond the obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives. There are multiple sibling creation tools (e.g., create-todo-task, create-calendar-event), but no indication of when this specific planner task creation is appropriate, what prerequisites exist, or when to choose other tools.

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

create-reply-all-draftA
Destructive

Create a draft to reply to the sender and all recipients of a message in either JSON or MIME format. When using JSON format:

  • Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error.

  • If the original message specifies a recipient in the replyTo property, per Internet Message Format (RFC 2822), you should send the reply to the recipients in the replyTo and toRecipients properties, and not the recipients in the from and toRecipients properties.

  • You can update the draft later to add reply content to the body or change other message properties. When using MIME format:

  • Provide the applicable Internet message headers and the MIME content, all encoded in base64 format in the request body.

  • Add any attachments and S/MIME properties to the MIME content. Send the draft message in a subsequent operation. Alternatively, reply-all to a message in a single action.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
messageIdYesPath parameter: messageId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

A4.1/5.0
Behavior4/5

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

Beyond the destructiveHint annotation indicating mutation, the description adds valuable behavioral context: it discloses HTTP 400 error conditions, RFC 2822 compliance requirements for replyTo handling, the ability to update the draft later, and that sending requires a subsequent operation. This helps the agent understand the draft lifecycle and constraint violations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The content is information-dense and necessary for the tool's complexity, but the structure suffers from informal dash-bullet formatting and a grammatically incomplete final sentence fragment ('Alternatively, reply-all to a message in a single action.'). The JSON vs MIME instructions could be more clearly delineated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

For a complex dual-format operation with nested object parameters, the description adequately covers input constraints and draft lifecycle. However, lacking an output schema, it should briefly mention what the tool returns (e.g., the created draft object) to be complete. It does not address the 'includeHeaders' or 'excludeResponse' parameters visible in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While the schema has 75% coverage, the description adds critical semantic constraints not captured in the schema structure—specifically the mutual exclusivity rule between 'comment' and 'body' properties within the message parameter, and the base64 encoding requirement for MIME content. This prevents invalid invocations that the schema alone would allow.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

Clearly states the specific action (create draft), scope (reply-all to sender and recipients), and supported formats (JSON/MIME). The phrase 'reply to the sender and all recipients' effectively distinguishes this from the sibling 'create-reply-draft' tool which targets only the sender.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Provides detailed format-specific constraints (e.g., mutual exclusivity of 'comment' vs 'body' properties causing HTTP 400 errors). Mentions 'Alternatively, reply-all to a message in a single action,' implicitly referencing the sibling 'reply-all-mail-message' tool as an alternative, though it could be more explicit about when to choose between creating a draft versus sending immediately.

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

create-reply-draftA
Destructive

Create a draft to reply to the sender of a message in either JSON or MIME format. When using JSON format:

  • Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error.

  • If replyTo is specified in the original message, per Internet Message Format (RFC 2822), you should send the reply to the recipients in replyTo, and not the recipients in from.

  • You can update the draft later to add reply content to the body or change other message properties. When using MIME format:

  • Provide the applicable Internet message headers and the MIME content, all encoded in base64 format in the request body.

  • Add any attachments and S/MIME properties to the MIME content. Send the draft message in a subsequent operation. Alternatively, reply to a message in a single operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
messageIdYesPath parameter: messageId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

A3.8/5.0
Behavior4/5

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

Annotations indicate this is a write operation (destructiveHint=true, readOnlyHint=false). The description adds valuable behavioral context beyond annotations: it explains the two-step workflow (create draft now, send later), details the base64 encoding requirement for MIME format, and notes that drafts can be updated later. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

While information-dense, the formatting is messy with inconsistent bullet points (using dashes without clear line separation) and the final sentence about single-operation replies is awkwardly appended. The content earns its place, but the structure hinders readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the complex nested input schema (Message object with 20+ properties), the description covers the critical format-specific constraints well. However, no output schema exists, and the description fails to indicate what the tool returns (e.g., the created draft object or ID), which is necessary for a creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% (baseline 3). The description significantly adds value by clarifying the mutual exclusivity between the Comment and Message body properties, explaining the base64 encoding requirement for MIME format, and detailing the RFC 2822 logic for recipient handling—none of which are inferable from the schema structure alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the tool creates a draft reply to a message sender in JSON or MIME format. It mentions the sender specifically, which implicitly distinguishes it from a 'reply-all' operation, though it could explicitly differentiate from siblings like create-reply-all-draft or create-forward-draft.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Provides explicit when-not-to-use guidance by mentioning the alternative to 'reply to a message in a single operation' (referring to reply-mail-message). Details specific error conditions (HTTP 400 when both comment and body are specified) and RFC 2822 requirements for replyTo handling, giving clear operational constraints.

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

create-specific-calendar-eventB
Destructive

Use this API to create a new event in a calendar. The calendar can be one for a user, or the default calendar of a Microsoft 365 group.

💡 TIP: CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
calendarIdYesPath parameter: calendarId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.3/5.0
Behavior4/5

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

Annotations indicate destructive/write behavior, which the description confirms. It adds valuable context not in annotations: the scope (user vs group calendars) and the critical prerequisite about email resolution workflow. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Two sentences plus a clearly demarcated tip. No wasted words. Front-loaded with the core action. The emoji and 'CRITICAL' label effectively highlight the important prerequisite. Could be improved by removing 'Use this API to' boilerplate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Covers the essential action and a critical prerequisite (email lookup), but given the complex nested body parameter (4 params, deep nesting) and lack of output schema, it lacks guidance on typical usage patterns, required sub-fields in the body, or what constitutes a successful creation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 75% schema coverage, the baseline is 3. The description implies usage of calendarId through the calendar type explanation, and the tip hints at the attendees parameter structure, but offers no additional semantic clarity for the complex nested body object which has dozens of properties.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

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

The description clearly states the tool creates a new event in user or Microsoft 365 group calendars, but fails to distinguish from sibling tool 'create-calendar-event' (likely the default calendar variant). Without explicit comparison, agents cannot confidently select between the two creation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

Provides excellent specific guidance via the CRITICAL tip to use 'list-users' rather than guessing email addresses, which is a clear prerequisite. However, it lacks guidance on when to use this tool versus the sibling 'create-calendar-event' or other alternatives.

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

create-todo-taskB
Destructive

Create a new task object in a specified todoTaskList.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
todoTaskListIdYesPath parameter: todoTaskListId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.2/5.0
Behavior3/5

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

Annotations indicate this is a destructive (destructiveHint: true), non-read-only (readOnlyHint: false), open-world operation. The description adds no behavioral context beyond this—it doesn't explain what 'destructive' means here (e.g., data persistence, side effects), rate limits, authentication needs, or error handling. With annotations covering basic traits, the description adds minimal value but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without fluff. It's appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Given the tool's complexity (4 parameters, nested objects, no output schema) and annotations that only hint at behavior, the description is inadequate. It doesn't explain the response format, error conditions, or how to interpret the 'body' parameter's extensive structure, leaving significant gaps for a creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, with detailed docs for most parameters. The description adds no parameter-specific semantics beyond implying a 'body' and 'todoTaskListId' are needed. It doesn't clarify parameter relationships, defaults, or usage examples, so it relies on the schema without compensating for the 25% coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the verb ('Create') and resource ('a new task object in a specified todoTaskList'), making the purpose evident. However, it doesn't differentiate this tool from sibling tools like 'create-planner-task' or 'update-todo-task', which would require more specificity about what makes this todo-task creation unique.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing todoTaskList), exclusions, or comparisons to sibling tools like 'create-planner-task' or 'update-todo-task', leaving the agent without contextual usage cues.

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

delete-calendar-eventA
Destructive

Removes the specified event from the containing calendar. If the event is a meeting, deleting the event on the organizer's calendar sends a cancellation message to the meeting attendees.

ParametersJSON Schema
NameRequiredDescriptionDefault
If-MatchNoETag
eventIdYesPath parameter: eventId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

A3.8/5.0
Behavior4/5

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

Annotations indicate destructiveHint=true, but the description adds crucial behavioral context not in the structured data: deleting a meeting as organizer sends cancellation messages to attendees. It also notes the event is removed 'from the containing calendar', clarifying scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two sentences, both earning their place. The first states the core operation; the second explains the critical side effect for meetings. No redundancy, appropriately front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a destructive operation with 100% schema coverage and clear annotations, the description covers the essential business logic (removal + cancellation behavior). No output schema exists, but the description appropriately focuses on the mutation side effects rather than return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema adequately documents all four parameters including the ETag concurrency control (If-Match). The description correctly relies on the structured schema and does not duplicate parameter documentation, meeting the baseline for high-coverage schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the core action ('Removes the specified event') and resource ('containing calendar'). However, it does not explicitly differentiate from the sibling tool 'delete-specific-calendar-event', leaving ambiguity about which deletion tool to select.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description provides valuable behavioral guidance about meeting cancellation side effects, but lacks explicit when-to-use guidance versus alternatives like 'delete-specific-calendar-event' or 'update-calendar-event' (for cancellations).

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

delete-mail-attachmentD
Destructive

Delete navigation property attachments for me

ParametersJSON Schema
NameRequiredDescriptionDefault
If-MatchNoETag
messageIdYesPath parameter: messageId
attachmentIdYesPath parameter: attachmentId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

D1.9/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description simply repeats 'delete' without additional context (e.g., permanence, authorization needs, 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.

Conciseness2/5

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

Extremely short but vague and uninformative. Not genuinely concise because it omits critical information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

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

With 5 parameters (2 required), no output schema, and no explanation of response behavior or error conditions, the description is woefully incomplete for a deletion tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for each parameter. The description adds no extra meaning to parameters; it merely restates the tool's action.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

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

Description says 'Delete navigation property attachments for me' which is unclear; 'navigation property' is jargon not explained. It does state the verb and generally the resource, but lacks specificity compared to sibling tools like 'add-mail-attachment'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance on when to use this tool over siblings like delete-mail-message or delete-excel-table-row. No prerequisites or context provided.

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

delete-mail-messageB
Destructive

Delete eventMessage.

ParametersJSON Schema
NameRequiredDescriptionDefault
If-MatchNoETag
messageIdYesPath parameter: messageId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.1/5.0
Behavior4/5

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

Annotations provide destructiveHint=true and readOnlyHint=false, clearly indicating a destructive write operation. The description adds no behavioral details beyond this, but since annotations cover the critical safety profile, the bar is lower. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is a single, efficient sentence with no wasted words. However, it's overly terse and could benefit from slightly more context without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the destructive nature (annotations cover this), 100% schema coverage, and no output schema, the description is minimally adequate. It lacks details on what 'eventMessage' means or confirmation behavior, but annotations provide critical context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear parameter documentation in the schema. The description adds no parameter semantics beyond what the schema provides, so it meets the baseline of 3 without adding value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

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

The description 'Delete eventMessage' states the action (delete) and resource (eventMessage), but it's vague about what 'eventMessage' refers to in this mail context. It doesn't distinguish from sibling tools like delete-mail-attachment or delete-specific-calendar-event, leaving ambiguity about scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like delete-mail-attachment or delete-specific-calendar-event. The description lacks context about prerequisites (e.g., needing messageId) or exclusions, leaving usage unclear.

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

delete-onedrive-fileC
Destructive

Delete navigation property items for drives

ParametersJSON Schema
NameRequiredDescriptionDefault
If-MatchNoETag
driveIdYesPath parameter: driveId
driveItemIdYesPath parameter: driveItemId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.4/5.0
Behavior3/5

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

Annotations already indicate destructiveness (destructiveHint=true). The description adds no further behavioral context, which is minimal but not contradictory. With annotations present, baseline score is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The description is short but unclear due to jargon. It could be more concise and meaningful, e.g., 'Deletes a OneDrive file.'

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Given the many similar sibling tools and the lack of an output schema, the description should specify the exact resource and any side effects. It fails to differentiate or complete the context, making it inadequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with adequate descriptions for each parameter. The tool description adds no additional meaning beyond what the schema provides, achieving the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

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

The description 'Delete navigation property items for drives' is vague and uses Graph API terminology not clearly indicating deletion of a OneDrive file. It does not align well with the tool name 'delete-onedrive-file' compared to clearer sibling descriptions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool over other delete tools such as delete-drive-item-permission or delete-mail-message. The description lacks context for appropriate invocation.

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

delete-outlook-contactC
Destructive

Delete a contact.

ParametersJSON Schema
NameRequiredDescriptionDefault
If-MatchNoETag
contactIdYesPath parameter: contactId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true, but the description adds no further behavioral context (e.g., permanence, side effects). It merely repeats the verb from 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.

Conciseness4/5

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

The description is extremely concise (one sentence) and front-loaded. However, for a tool with multiple parameters and important side effects, a bit more detail could be justified without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Given no output schema and 4 parameters with important flags like If-Match and excludeResponse, the description fails to explain usage patterns or outcomes. It is insufficient for an agent to invoke correctly without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond what the schema already provides for parameters like contactId and If-Match.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description 'Delete a contact.' clearly states the action and resource. However, it does not differentiate from sibling tools like delete-contact-folder or delete-mail-message, missing a chance to specify scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs alternatives like update-outlook-contact or other delete tools. The description lacks any context on prerequisites or exclusions.

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

delete-specific-calendar-eventC
Destructive

Delete navigation property events for me

ParametersJSON Schema
NameRequiredDescriptionDefault
If-MatchNoETag
calendarIdYesPath parameter: calendarId
eventIdYesPath parameter: eventId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.4/5.0
Behavior4/5

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

The description doesn't contradict the annotations, which already indicate this is a destructive, non-read-only operation with open-world semantics. While the annotations cover the core behavioral traits, the description adds some context by mentioning 'navigation property events,' though this is more confusing than helpful. No additional behavioral details like authentication needs, rate limits, or error conditions are provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

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

While the description is brief (one phrase), it's not effectively concise because it uses confusing terminology ('navigation property events') that doesn't clearly communicate purpose. The structure is poor as it doesn't front-load essential information about what the tool actually does. It's under-specified rather than efficiently concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

For a destructive tool with no output schema, the description is inadequate. It doesn't explain what happens after deletion, whether the action is reversible, what the response contains, or how it differs from the sibling 'delete-calendar-event' tool. The annotations provide safety information, but the description fails to add necessary context for proper tool selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the input schema already documents all 5 parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema. The baseline score of 3 reflects adequate parameter documentation through the schema alone, with no additional value from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

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

The description 'Delete navigation property events for me' is vague and confusing. It doesn't clearly state that this tool deletes a specific calendar event, nor does it distinguish it from the sibling 'delete-calendar-event' tool. The phrase 'navigation property events' is technical jargon that doesn't clearly communicate the tool's function to an AI agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention the sibling 'delete-calendar-event' tool or explain why this specific version exists. There's no information about prerequisites, context, or when this tool should be selected over other deletion tools.

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

delete-todo-taskB
Destructive

Delete a todoTask object.

ParametersJSON Schema
NameRequiredDescriptionDefault
If-MatchNoETag
todoTaskListIdYesPath parameter: todoTaskListId
todoTaskIdYesPath parameter: todoTaskId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true, and the description merely restates the action without adding behavioral traits (e.g., irreversibility, side effects, authorization needs). No additional value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It is appropriately sized for a simple delete operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

The description covers the basic purpose but lacks details on return behavior, error handling, or idempotency. It is adequate but not comprehensive for a delete tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add meaning beyond the schema's parameter descriptions, which are already informative.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the action ('Delete') and the resource ('todoTask object'), making the tool's purpose immediately obvious. It distinguishes itself from sibling tools like delete-todo-task-list or delete-planner-task.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, prerequisites, or when not to use it. The description lacks any usage context.

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

download-onedrive-file-contentC
Read-only

The content stream, if the item represents a file.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoFormat of the content
driveIdYesPath parameter: driveId
driveItemIdYesPath parameter: driveItemId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.2/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering safety and scope. The description adds minimal context by implying it fetches file content, but does not disclose rate limits, authentication needs, or response behavior (e.g., streaming vs. full download). No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

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

The description is a single vague sentence that fails to convey essential information, making it under-specified rather than concise. It lacks front-loaded clarity and does not efficiently communicate the tool's function or usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Given the tool's complexity (6 parameters, no output schema) and rich annotations, the description is insufficient. It does not explain return values, error handling, or practical use cases, leaving gaps in understanding how to effectively invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters like 'driveId', 'driveItemId', and options such as 'fetchAllPages' are documented in the schema. The description adds no additional meaning beyond the schema, but since coverage is high, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

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

The description 'The content stream, if the item represents a file' is tautological—it restates the tool name 'download-onedrive-file-content' without specifying the action or resource clearly. It fails to distinguish this tool from siblings like 'get-onenote-page-content' or 'upload-file-content', leaving the purpose vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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

No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites (e.g., authentication), context for file retrieval, or differences from other content-fetching tools like 'get-mail-attachment' or 'get-onenote-page-content', making usage unclear.

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

format-excel-rangeC
Destructive

Update the navigation property format in drives

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
driveIdYesPath parameter: driveId
driveItemIdYesPath parameter: driveItemId
workbookWorksheetIdYesPath parameter: workbookWorksheetId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.1/5.0
Behavior2/5

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

Annotations indicate this is a destructive, non-read-only operation, but the description doesn't disclose any behavioral traits beyond what annotations provide. It doesn't mention that this modifies Excel file formatting, potential side effects, authentication requirements, or rate limits. The description adds no meaningful context about the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The description is a single sentence, which is appropriately concise. However, it's poorly structured and front-loaded with confusing terminology ('navigation property format') that doesn't clearly communicate the tool's purpose. While brief, it fails to efficiently convey essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

For a complex destructive tool with 6 parameters, nested objects, and no output schema, the description is severely inadequate. It doesn't explain what the tool actually does (format Excel ranges), what resources it affects, what the expected outcome is, or any error conditions. The description fails to provide necessary context for proper tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 83% schema description coverage, the input schema already documents most parameters well. The description adds no additional meaning about parameters beyond what's in the schema. It doesn't explain the relationship between parameters or provide usage examples. The baseline score of 3 reflects adequate schema coverage without description enhancement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

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

The description 'Update the navigation property format in drives' is vague and confusing. It doesn't clearly state that this tool formats Excel ranges (as suggested by the tool name), nor does it specify what 'navigation property format' means. It's essentially a tautology that restates the tool name without clarifying the actual purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (like needing an Excel file in OneDrive), when formatting is appropriate, or how this differs from sibling tools like 'sort-excel-range' or 'get-excel-range'.

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

forward-mail-messageA
Destructive

Forward a message using either JSON or MIME format. When using JSON format, you can:

  • Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error.

  • Specify either the toRecipients parameter or the toRecipients property of the message parameter. Specifying both or specifying neither will return an HTTP 400 Bad Request error. When using MIME format:

  • Provide the applicable Internet message headers and the MIME content, all encoded in base64 format in the request body.

  • Add any attachments and S/MIME properties to the MIME content. This method saves the message in the Sent Items folder. Alternatively, create a draft to forward a message, and send it later.

💡 TIP: Forward an email preserving full HTML formatting and attachments. The 'comment' field adds text above the forwarded content. toRecipients is required. Do NOT reconstruct the email manually - this endpoint handles everything server-side.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
messageIdYesPath parameter: messageId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

A4.4/5.0
Behavior4/5

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

Reveals behavioral traits beyond annotations: states message is 'saved in the Sent Items folder', describes HTTP 400 error responses for validation failures, notes base64 encoding requirement for MIME format, and clarifies server-side handling of attachments/HTML. Annotations indicate destructiveness but description adds operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

Well-structured with clear JSON vs MIME sections and bullet points, but contains redundancy between main description and TIP section (repeats comment field behavior and toRecipients requirement). The dual-format explanation is necessary complexity, though the TIP could integrate more smoothly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

Comprehensive coverage for a complex dual-mode tool with nested objects. Addresses both JSON and MIME formats, error conditions, destination folder behavior, and distinguishes from draft creation. No output schema present, but description adequately covers input complexity and behavioral outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 75% schema coverage, description adds critical mutual exclusivity constraints not captured in schema: conflict between comment vs body property, and between toRecipients parameter vs toRecipients property within message. Also clarifies base64 encoding requirement for MIME body and that toRecipients is effectively required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

Clear specific verb ('Forward') + resource ('message') + scope ('using either JSON or MIME format'). Explicitly distinguishes from sibling tool create-forward-draft by stating 'Alternatively, create a draft to forward a message, and send it later', clarifying this sends immediately while the sibling creates a draft.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

Explicitly names alternative workflow ('create a draft to forward a message, and send it later'). Provides detailed when-to-use constraints: mutual exclusivity rules for comment/body and toRecipients locations, HTTP 400 error conditions for invalid combinations, and format-specific requirements (base64 for MIME).

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

get-calendar-eventB
Read-only

Get the properties and relationships of the specified event object. Currently, this operation returns event bodies in only HTML format. There are two scenarios where an app can get an event in another user's calendar: Since the event resource supports extensions, you can also use the GET operation to get custom properties and extension data in an event instance.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectNoSelect properties to be returned
expandNoExpand related entities
eventIdYesPath parameter: eventId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication
timezoneNoIANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
expandExtendedPropertiesNoWhen true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.

TDQS

B3.3/5.0
Behavior4/5

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

Adds valuable behavioral details beyond annotations: specifies HTML-only format for bodies, and explains extension/custom property support (relevant to openWorldHint). Annotations cover safety profile (readOnly).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

First two sentences are efficient. Contains a structural defect: incomplete sentence fragment about 'two scenarios' ending with a colon. Final sentence is slightly verbose ('you can also use the GET operation').

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Covers output format (HTML) and extensions adequately for a read operation with good annotations and parameter documentation, but the incomplete delegation scenarios leave a gap regarding cross-user permissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage so baseline is 3. Description provides context for expandExtendedProperties by mentioning custom properties and sync metadata, but does not elaborate on other parameters like timezone or select/expand patterns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

Clear verb (Get) and resource (calendar event properties/relationships), but fails to distinguish from siblings like get-specific-calendar-event or get-calendar-view.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No explicit guidance on when to use this versus list-calendar-events or get-calendar-view. Begins to mention cross-user calendar access scenarios but leaves the sentence incomplete after the colon.

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

get-calendar-viewA
Read-only

Get the occurrences, exceptions, and single instances of events in a calendar view defined by a time range, from the user's default calendar, or from some other calendar of the user.

💡 TIP: Returns expanded recurring event instances (not just seriesMaster) within a date range for the default calendar. Requires startDateTime and endDateTime query parameters in ISO 8601 format (e.g., 2024-01-01T00:00:00Z). Use get-specific-calendar-view if you need a non-default calendar.

ParametersJSON Schema
NameRequiredDescriptionDefault
startDateTimeYesThe start date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T19:00:00-08:00
endDateTimeYesThe end date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T20:00:00-08:00
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication
timezoneNoIANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
expandExtendedPropertiesNoWhen true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and destructiveHint=false. Description adds crucial behavioral context not in annotations: 'Returns expanded recurring event instances (not just seriesMaster)' and clarifies timezone handling via the timezone parameter description in schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loaded with core purpose, followed by 💡 TIP section containing usage guidance. Slightly redundant phrasing 'default calendar, or from some other calendar' could be tighter, but overall efficient with no wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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

With 15 parameters, 100% schema coverage, and annotations present, description sufficiently covers behavioral nuances (event expansion) and sibling routing without needing to document return values (no output schema provided).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage (baseline 3). Description adds value by emphasizing 'Requires startDateTime and endDateTime' and providing additional ISO 8601 example '2024-01-01T00:00:00Z', reinforcing the format requirement beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

Description uses specific verb 'Get' with clear resource 'occurrences, exceptions, and single instances of events in a calendar view'. The tip explicitly distinguishes from sibling 'get-specific-calendar-view' by stating when to use each (default vs non-default calendar), eliminating ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

Explicitly states alternative: 'Use get-specific-calendar-view if you need a non-default calendar'. Also clarifies this returns 'expanded recurring event instances (not just seriesMaster)', guiding when to use this over list-calendar-events.

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

get-current-userA
Read-only

Retrieve the properties and relationships of user object. This operation returns by default only a subset of the more commonly used properties for each user. These default properties are noted in the Properties section. To get properties that are not returned by default, do a GET operation for the user and specify the properties in a $select OData query option. Because the user resource supports extensions, you can also use the GET operation to get custom properties and extension data in a user instance. Customers through Microsoft Entra ID for customers can also use this API operation to retrieve their details.

ParametersJSON Schema
NameRequiredDescriptionDefault
ConsistencyLevelNoIndicates the requested consistency level. Documentation URL: https://docs.microsoft.com/graph/aad-advanced-queries
selectNoSelect properties to be returned
expandNoExpand related entities
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

A3.6/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true and destructiveHint=false, covering safety aspects. The description adds valuable context beyond this: it specifies that only a subset of properties is returned by default, explains how to retrieve additional properties via $select, and mentions support for extensions and Microsoft Entra ID customers. This enriches behavioral understanding without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The description is moderately concise but could be more front-loaded; it starts with the core purpose but includes detailed operational notes that might be better structured. Sentences earn their place by explaining defaults, customization, and customer use, but it feels slightly verbose for a simple retrieval tool, reducing efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

Given the tool's moderate complexity (6 parameters, no output schema), the description is fairly complete. It covers purpose, behavioral nuances like default properties and extensions, and usage hints. With annotations providing safety info and schema covering parameters, the description adds sufficient context, though it could benefit from more explicit guidance on parameter interactions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description adds some semantic context by mentioning $select for retrieving non-default properties, which relates to the 'select' parameter, but doesn't elaborate on other parameters like 'ConsistencyLevel' or 'expand'. This meets the baseline of 3 since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the tool retrieves properties and relationships of the user object, specifying it returns a default subset of properties. It distinguishes itself from siblings by focusing on the current user rather than listing or searching for users. However, it doesn't explicitly contrast with sibling tools like 'list-accounts' or 'search-query' for user retrieval, keeping it at a 4 instead of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies usage by mentioning how to get non-default properties via $select and extensions, but it doesn't explicitly state when to use this tool versus alternatives like 'list-accounts' or general search tools. It provides some context on customization options but lacks clear when/when-not guidance or named alternatives, resulting in an implied usage score.

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

get-drive-root-itemB
Read-only

The root folder of the drive. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectNoSelect properties to be returned
expandNoExpand related entities
driveIdYesPath parameter: driveId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds 'Read-only' which is redundant but not contradictory, and mentions it's for the 'root folder', providing some context. However, it lacks details on rate limits, authentication needs, or response format that would enhance transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is extremely concise with two short phrases, front-loading the core purpose ('The root folder of the drive') and a key behavioral trait ('Read-only'). Every word earns its place without redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the tool's moderate complexity (6 parameters, 1 required) and rich annotations (readOnlyHint, openWorldHint), the description is minimally adequate. However, with no output schema, it doesn't explain return values like folder structure or error cases, and it lacks usage context, leaving gaps for an agent to infer proper invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description adds no parameter-specific information beyond what's in the schema, such as explaining how 'select' or 'expand' work in this context. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the tool retrieves 'the root folder of the drive' with a 'Read-only' operation, providing specific verb+resource. However, it doesn't differentiate from sibling tools like 'list-drives' or 'list-folder-files', which could also retrieve drive-related information, so it misses full sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites like needing a valid driveId, nor does it compare to sibling tools such as 'list-drives' for broader drive listings or 'list-folder-files' for non-root items.

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

get-excel-rangeC
Read-only

Invoke function range

ParametersJSON Schema
NameRequiredDescriptionDefault
driveIdYesPath parameter: driveId
driveItemIdYesPath parameter: driveItemId
workbookWorksheetIdYesPath parameter: workbookWorksheetId
addressYesPath parameter: address
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.2/5.0
Behavior3/5

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

Annotations provide readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering the safety profile. The description adds no behavioral context beyond what annotations already declare - no information about what gets returned, rate limits, authentication needs, or Excel-specific behaviors. However, it doesn't contradict annotations, so it meets the lower bar when annotations are present but adds minimal value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

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

While technically concise with only three words, this is under-specification rather than effective conciseness. The description fails to front-load essential information about what the tool does. Every word should earn its place, but 'Invoke function range' provides almost no value beyond the tool name itself, making it inefficient despite its brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

For a tool with 7 parameters (4 required), no output schema, and operating on Excel data, the description is severely inadequate. While annotations cover safety, the description fails to explain what Excel range data gets returned, format considerations, or how this fits within the broader Excel tool ecosystem. The agent would struggle to use this effectively without extensive trial and error.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, all 7 parameters are documented in the schema itself. The description adds zero parameter information - it doesn't explain the hierarchical relationship between driveId, driveItemId, workbookWorksheetId, and address, or provide Excel-specific context about address format. The baseline of 3 is appropriate when the schema does all the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

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

The description 'Invoke function range' is a tautology that restates the tool name 'get-excel-range' without adding meaningful context. It doesn't specify what resource is being retrieved (Excel range data), what the verb actually does (retrieve/read), or how it differs from sibling Excel tools like 'format-excel-range' or 'sort-excel-range'. The purpose remains vague despite the clear naming convention.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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

The description provides absolutely no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (like needing an Excel file), comparison to sibling tools (like 'list-excel-worksheets' or other Excel manipulation tools), or appropriate contexts for invocation. The agent receives zero usage direction beyond what can be inferred from the tool name.

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

get-mail-attachmentB
Read-only

Read the properties, relationships, or raw contents of an attachment that is attached to a user event, message, or group post. An attachment can be one of the following types: All these types of attachments are derived from the attachment resource.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectNoSelect properties to be returned
expandNoExpand related entities
messageIdYesPath parameter: messageId
attachmentIdYesPath parameter: attachmentId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.2/5.0
Behavior3/5

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

Annotations provide readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering safety and flexibility. The description adds context about attachment types and the scope of what can be read (properties, relationships, raw contents), which is useful beyond annotations. However, it doesn't disclose behavioral traits like rate limits, auth needs, or response format details that would enhance transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is two sentences that efficiently state the purpose and attachment types. It's front-loaded with the core action and avoids unnecessary details. However, the second sentence is slightly redundant ('All these types...') and could be tighter, but overall it's appropriately sized with minimal waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given 7 parameters, 100% schema coverage, and annotations covering safety, the description is adequate but has gaps. It lacks output schema, so return values aren't explained, and it doesn't address usage context or error handling. For a read tool with rich annotations, it's minimally complete but could better integrate with the structured data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all 7 parameters well-documented in the schema. The description adds no parameter-specific information beyond the general scope of reading attachments. This meets the baseline of 3 since the schema carries the full burden, but the description doesn't compensate with additional semantic context (e.g., how 'select' interacts with attachment types).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the verb ('Read') and resource ('properties, relationships, or raw contents of an attachment') with specific context ('attached to a user event, message, or group post'). It distinguishes from siblings like 'list-mail-attachments' (which lists) and 'add-mail-attachment'/'delete-mail-attachment' (which modify), but doesn't explicitly name these alternatives. The purpose is specific but could be more differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives. It mentions attachment types but doesn't clarify when to choose this over 'list-mail-attachments' for discovery or other get-* tools for different resources. There's implied context (reading specific attachments), but no when/when-not statements or named alternatives.

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

get-mail-messageA
Read-only

Get the properties and relationships of the eventMessage object. Apply the $expand parameter on the event navigation property to get the associated event in an attendee's calendar. Currently, this operation returns event message bodies in only HTML format.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectNoSelect properties to be returned
expandNoExpand related entities
messageIdYesPath parameter: messageId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, confirming safe read semantics. The description adds the HTML-only format constraint ('returns event message bodies in only HTML format'), which is critical behavioral context not in annotations. Also clarifies the specific entity type (eventMessage) being retrieved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Three tightly constructed sentences: purpose statement, expand parameter guidance, and format limitation. Zero redundancy. Information is front-loaded with the core operation first, followed by specific usage notes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

Appropriate for a read operation with full schema coverage. Covers the core operation, return format limitation (HTML only), and a specific use case (calendar event expansion). Missing only error handling details or explicit mention of the required messageId parameter in the prose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, documenting all six parameters. The description adds significant semantic value by explaining specific usage of the 'expand' parameter ('on the event navigation property'), transforming the generic schema description into actionable guidance for calendar integration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

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

The description specifies getting 'eventMessage object' properties, which is precise about the resource type, but creates ambiguity since the tool name is 'get-mail-message' (suggesting general mail). It doesn't clarify if this works for all messages or only calendar event messages, nor does it distinguish from sibling list-mail-messages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

Provides specific guidance on using the $expand parameter to retrieve associated calendar events, which is valuable. However, it lacks explicit when-to-use guidance versus list-mail-messages (for bulk) or get-mail-attachment (for content), and doesn't mention prerequisites like messageId format.

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

get-onenote-page-contentC
Read-only

The page's HTML content.

ParametersJSON Schema
NameRequiredDescriptionDefault
onenotePageIdYesPath parameter: onenotePageId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2/5.0
Behavior2/5

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

While annotations.declare readOnlyHint=true (safe read), the description adds no context about the behavioral traits: it doesn't explain that fetchAllPages automatically follows pagination, what the ETag in includeHeaders is used for, or that excludeResponse returns only metadata. The openWorldHint annotation suggests external resource handling, but the description is silent on this.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

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

The single sentence is severely under-specified for a 4-parameter tool. While brief, it fails the 'every sentence earns its place' test by providing insufficient information to distinguish this from other content retrieval tools or explain the pagination behavior implied by fetchAllPages.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

For a Microsoft 365 integration tool with complex pagination options and response variants (HTML content vs headers only vs success indicator), the description is incomplete. It doesn't address the output format, error conditions, or prerequisites (authentication, specific permissions) despite the rich domain context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the parameter purposes are documented in the schema fields themselves. The description adds no additional semantic context (e.g., that onenotePageId typically comes from list-onenote-section-pages, or that excludeResponse is useful for validation checks without data transfer). Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

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

The description 'The page's HTML content' is a noun fragment describing the output resource, not the tool's action. It lacks a verb (get/retrieve/fetch) and fails to clearly state that this tool extracts content from a specific OneNote page, distinguishing it from sibling tools like list-onenote-section-pages or create-onenote-page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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

No guidance provided on when to use this tool versus alternatives. There is no mention that users typically need to call list-onenote-section-pages first to obtain a page ID, nor when to use fetchAllPages versus handling pagination manually.

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

get-outlook-contactC
Read-only

Retrieve the properties and relationships of a contact object. There are two scenarios where an app can get a contact in another user's contact folder:

ParametersJSON Schema
NameRequiredDescriptionDefault
selectNoSelect properties to be returned
expandNoExpand related entities
contactIdYesPath parameter: contactId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, establishing this as a safe read operation. The description adds minimal behavioral context beyond this, though the mention of 'another user's contact folder' hints at delegated permissions without explaining authentication requirements or the promised scenarios.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

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

While brief at two sentences, the structure is defective due to the incomplete second sentence ending with a colon. This appears to be truncated content rather than intentional conciseness, leaving the reader expecting a list of scenarios that never arrives.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

With 6 parameters including OData query options (select/expand) and no output schema, the description lacks explanation of pagination behavior (relevant to fetchAllPages), return format, or authentication requirements for the promised cross-user access scenarios. The incomplete sentence significantly undermines completeness for this complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage (select, expand, fetchAllPages, etc.), establishing baseline understanding. The description mentions 'properties and relationships' which conceptually maps to select/expand parameters, but provides no additional syntax guidance, format details, or examples beyond the schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

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

The description opens with a clear verb (Retrieve) and resource (contact object), specifying both properties and relationships. However, the trailing incomplete sentence ('There are two scenarios where an app can get a contact in another user's contact folder:') creates confusion about scope and fails to differentiate from the sibling list-outlook-contacts tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description attempts to provide usage context by mentioning 'two scenarios' for accessing another user's contact folder, but the sentence is incomplete (ends with a colon), leaving the actual guidance absent. No explicit alternatives, prerequisites, or when-not-to-use guidance is provided.

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

get-planner-planB
Read-only

Retrieve the properties and relationships of a plannerplan object.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectNoSelect properties to be returned
expandNoExpand related entities
plannerPlanIdYesPath parameter: plannerPlanId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering safety and flexibility. The description adds minimal behavioral context beyond this, such as mentioning 'properties and relationships' which hints at the data structure, but doesn't detail pagination behavior, authentication needs, or rate limits. With annotations providing core safety info, a baseline 3 is appropriate as the description adds some value but not rich 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.

Conciseness4/5

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

The description is a single, efficient sentence that gets straight to the point without unnecessary words. It's appropriately sized for a simple retrieval tool, though it could be slightly more informative without losing conciseness. Every word earns its place, but it's borderline minimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the tool's moderate complexity (6 parameters, 1 required) and rich annotations (readOnlyHint, openWorldHint), the description is adequate but has clear gaps. It lacks output details (no output schema provided), usage context relative to siblings, and deeper parameter guidance. For a retrieval tool with good annotation coverage, it meets minimum viability but doesn't fully leverage the opportunity to be more helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description adds no parameter-specific semantics beyond what's in the schema, such as explaining what 'select' or 'expand' mean in the context of a planner plan. Baseline 3 is correct when the schema does the heavy lifting, though the description could have added context like example usage or common parameter combinations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the verb ('Retrieve') and resource ('plannerplan object'), making the purpose understandable. However, it doesn't distinguish this tool from similar read operations like 'get-planner-task' or 'get-calendar-event' in the sibling list, which would require mentioning it specifically fetches plan-level data rather than task-level or other entity data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'list-planner-tasks' and 'get-planner-task', there's no indication whether this is for fetching a single plan by ID versus listing plans or tasks, or how it relates to other planner tools. This leaves usage context entirely implicit.

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

get-planner-taskB
Read-only

Retrieve the properties and relationships of plannerTask object.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectNoSelect properties to be returned
expandNoExpand related entities
plannerTaskIdYesPath parameter: plannerTaskId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds minimal behavioral context beyond this, such as mentioning 'properties and relationships', but doesn't detail response format, pagination, or error handling. With annotations covering safety, a 3 is appropriate as the description adds some value but not rich behavioral insights.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words, clearly stating the action and object. It's appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the tool's complexity (6 parameters, no output schema) and rich annotations, the description is adequate but lacks completeness. It doesn't explain return values, error cases, or how parameters like 'select' and 'expand' affect the response, leaving gaps for an agent to infer behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are documented in the schema. The description doesn't add any parameter-specific details beyond what the schema provides, such as examples or usage tips. Baseline 3 is correct when the schema handles parameter documentation fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the verb ('Retrieve') and resource ('plannerTask object'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get-planner-plan' or 'list-planner-tasks' beyond the object type, missing explicit scope comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'list-planner-tasks' or 'update-planner-task'. The description lacks context about prerequisites, such as needing a valid plannerTaskId, or exclusions for usage.

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

get-specific-calendar-eventC
Read-only

The events in the calendar. Navigation property. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectNoSelect properties to be returned
expandNoExpand related entities
calendarIdYesPath parameter: calendarId
eventIdYesPath parameter: eventId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication
timezoneNoIANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
expandExtendedPropertiesNoWhen true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.

TDQS

C2.2/5.0
Behavior2/5

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

The 'Read-only' statement merely duplicates the readOnlyHint annotation. 'Navigation property' appears to be irrelevant implementation jargon from Microsoft Graph API documentation that provides no behavioral value. No disclosure of pagination behavior, error conditions, or response format despite complex options like fetchAllPages and excludeResponse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

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

While brief (three fragments), the structure is poor—'Navigation property' wastes space with API implementation detail irrelevant to tool selection, and 'The events in the calendar' is grammatically incomplete. Not front-loaded with the essential action/purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

For a 9-parameter tool with complex pagination, timezone handling, and OData query options (select/expand), the description is inadequate. No output schema exists, yet the description fails to explain return values, leaving significant behavioral gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (all 9 parameters have descriptions), establishing a baseline of 3. The description text adds no parameter-specific context, examples, or usage notes beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

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

The description 'The events in the calendar' is a noun phrase that fails to specify the action (retrieve/fetch) or distinguish from siblings like get-calendar-event or list-specific-calendar-events. It does not clarify that this retrieves a single specific event by ID versus listing multiple events.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance provided on when to use this versus list-specific-calendar-events (which lists multiple) or get-calendar-event. No mention of required parameters (calendarId, eventId) or prerequisites in the description text.

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

get-specific-calendar-viewA
Read-only

The calendar view for the calendar. Navigation property. Read-only.

💡 TIP: Returns expanded recurring event instances (not just seriesMaster) within a date range for a specific calendar. Requires startDateTime and endDateTime query parameters in ISO 8601 format (e.g., 2024-01-01T00:00:00Z). Each instance includes seriesMasterId and type (occurrence/exception) fields for recurring event linkage. Use fetchAllPages=true to retrieve all results when there are many events.

ParametersJSON Schema
NameRequiredDescriptionDefault
startDateTimeYesThe start date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T19:00:00-08:00
endDateTimeYesThe end date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T20:00:00-08:00
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
calendarIdYesPath parameter: calendarId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication
timezoneNoIANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
expandExtendedPropertiesNoWhen true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.

TDQS

A3.7/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond the readOnlyHint annotation by explaining that the tool returns 'expanded recurring event instances (not just seriesMaster)' and includes linkage fields like 'seriesMasterId and type.' It also explains the pagination behavior for large result sets. This disclosure of instance expansion behavior is crucial for agents to understand the difference between this and listing raw calendar events.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The description suffers from a poor opening with tautological sentences ('The calendar view for the calendar') that should be removed, but the TIP section is efficiently written with high information density. The emoji and 'TIP' label slightly detract from professional conciseness but the content is valuable. Overall, the structure is inverted with API jargon preceding practical guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

Despite lacking an output schema, the description adequately explains return values by noting 'Each instance includes seriesMasterId and type fields' and describing the expanded recurring event format. It covers pagination, timezone handling (via parameter), and extended properties options. For a 16-parameter read operation, it successfully highlights the key functional behaviors agents need to understand.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the baseline documentation is complete, but the description adds practical usage guidance by emphasizing the ISO 8601 format for date parameters and specifically advising when to use fetchAllPages. The reinforcement of the date format requirements adds clarity beyond the schema examples. This compensates for the high parameter count by highlighting the most critical configuration options.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The TIP section clearly states the tool 'Returns expanded recurring event instances... within a date range for a specific calendar,' providing a specific verb, resource, and scope. However, the opening sentence 'The calendar view for the calendar' is tautological and wastes space. The description successfully distinguishes this from generic calendar views by emphasizing the specific calendar ID requirement and expanded recurring event behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description provides clear prerequisites stating it 'Requires startDateTime and endDateTime query parameters' and offers pagination guidance ('Use fetchAllPages=true... when there are many events'). While it differentiates implicitly by describing 'expanded recurring event instances' (likely distinct from list-specific-calendar-events), it lacks explicit when-to-use guidance comparing against sibling tools like get-calendar-view. The required parameter emphasis helps agents understand prerequisites.

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

get-todo-taskB
Read-only

Read the properties and relationships of a todoTask object.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectNoSelect properties to be returned
expandNoExpand related entities
todoTaskListIdYesPath parameter: todoTaskListId
todoTaskIdYesPath parameter: todoTaskId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering safety and scope. The description adds minimal behavioral context beyond this, confirming it's a read operation but not detailing aspects like error handling, authentication needs, or rate limits. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose without unnecessary details. Every word earns its place, making it easy to parse quickly while avoiding redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the tool's moderate complexity (7 parameters, no output schema) and rich annotations, the description is minimally adequate. It covers the basic operation but lacks details on return values, error cases, or integration with sibling tools, leaving gaps for an agent to infer usage in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 7 parameters. The description adds no additional meaning about parameters beyond implying the tool reads properties and relationships, which aligns with 'select' and 'expand' parameters. Baseline 3 is appropriate as the schema handles parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the verb ('Read') and resource ('todoTask object'), specifying it reads properties and relationships. It distinguishes from siblings like 'create-todo-task' and 'update-todo-task' by focusing on reading rather than modifying, but doesn't explicitly differentiate from other read tools like 'list-todo-tasks' beyond scope differences.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives is provided. The description implies usage for reading a specific task, but doesn't mention when to choose this over 'list-todo-tasks' for multiple tasks or other read operations. There's no context about prerequisites or exclusions.

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

list-accountsB

List all available Microsoft accounts

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the action without disclosing behavioral traits such as whether it requires authentication, returns paginated results, or includes inactive accounts. It's a basic statement that leaves critical operational details unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's function without any unnecessary words. It's front-loaded and wastes no space, making it highly concise and well-structured for its purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate but lacks context on authentication needs, return format, or sibling differentiation. It meets basic requirements but doesn't fully compensate for the absence of structured data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't add parameter details, aligning with the schema's completeness, though it could hint at implicit context like authentication requirements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the verb ('List') and resource ('all available Microsoft accounts'), making the purpose unambiguous. It doesn't differentiate from siblings like 'select-account' or 'remove-account', which would require more specific scope or filtering details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'select-account' for choosing a specific account or 'verify-login' for authentication checks. The description implies a general listing function but lacks explicit context or exclusions.

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

list-calendar-event-instancesA
Read-only

The occurrences of a recurring series, if the event is a series master. This property includes occurrences that are part of the recurrence pattern, and exceptions modified, but doesn't include occurrences canceled from the series. Navigation property. Read-only. Nullable.

💡 TIP: Expand a recurring event into individual instances within a date range. Requires startDateTime and endDateTime query parameters in ISO 8601 format (e.g., 2024-01-01T00:00:00Z). Use this to see all occurrences of a recurring event.

ParametersJSON Schema
NameRequiredDescriptionDefault
startDateTimeYesThe start date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T19:00:00-08:00
endDateTimeYesThe end date and time of the time range, represented in ISO 8601 format. For example, 2019-11-08T20:00:00-08:00
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
calendarIdYesPath parameter: calendarId
eventIdYesPath parameter: eventId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication
timezoneNoIANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
expandExtendedPropertiesNoWhen true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description adds valuable behavioral specifics: it includes modified exceptions but excludes canceled occurrences, and mentions nullable returns. This discloses important domain-specific filtering behavior that annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The first paragraph contains API-documentation cruft ('Navigation property. Read-only. Nullable.') that wastes space without helping tool selection. However, the 💡 TIP section is well-structured and front-loaded with practical guidance, partially redeeming the structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a 17-parameter tool with complex recurrence logic, the description adequately covers the critical behavioral edge cases (exceptions vs cancellations) and required query parameters. No output schema exists, but the description sufficiently characterizes the return set composition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema coverage (baseline 3), the description adds meaningful context by specifying ISO 8601 date format requirements and providing concrete examples (e.g., 2024-01-01T00:00:00Z), which helps the agent understand the temporal query constraints better than the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

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

The description begins with 'The occurrences of a recurring series...' which ambiguously describes an API property rather than stating the tool's action, but the TIP section clarifies with 'Expand a recurring event into individual instances.' It distinguishes from siblings like get-calendar-event by focusing on recurrence expansion, though the opening syntax is confusing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The TIP explicitly states when to use this tool: 'Expand a recurring event into individual instances within a date range' and identifies required parameters (startDateTime, endDateTime) with format specification (ISO 8601). Clear prerequisite guidance for targeting recurring series masters.

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

list-calendar-eventsA
Read-only

Get a list of event objects in the user's mailbox. The list contains single instance meetings and series masters. To get expanded event instances, you can get the calendar view, or get the instances of an event. Currently, this operation returns event bodies in only HTML format. There are two scenarios where an app can get events in another user's calendar:

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication
timezoneNoIANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
expandExtendedPropertiesNoWhen true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description adds valuable behavioral context: it discloses that 'this operation returns event bodies in only HTML format' (format limitation) and clarifies the distinction between series masters and expanded instances. It attempts to explain cross-user access patterns (relevant to openWorldHint: true) but cuts off mid-sentence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The description contains relevant information in the first three sentences, but has a significant structural defect: it ends with an incomplete sentence ('There are two scenarios where an app can get events in another user's calendar:'). This truncation suggests missing content and leaves the description technically incomplete.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given 13 parameters with full schema coverage and no output schema, the description adequately covers the core purpose and behavioral constraints (HTML-only, masters vs instances). However, the incomplete final sentence creates a gap regarding delegated access permissions, and there's no mention of pagination behavior despite the presence of pagination parameters (top, skip, fetchAllPages).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage across 13 parameters, the schema definitions carry the full semantic burden. The description does not add parameter-specific guidance (e.g., that 'timezone' accepts IANA names), but at this coverage level, the baseline 3 is appropriate as the schema documentation is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states 'Get a list of event objects in the user's mailbox' with specific verb and resource. It distinguishes its scope by specifying it returns 'single instance meetings and series masters' (not expanded instances), and explicitly contrasts itself with sibling tools by mentioning 'To get expanded event instances, you can get the calendar view' (referencing get-calendar-view) and 'get the instances of an event' (referencing list-calendar-event-instances).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description provides clear guidance on when not to use this tool ('To get expanded event instances') and alternatives to use instead ('get the calendar view, or get the instances of an event'). However, it contains an incomplete sentence cut off ('There are two scenarios where an app can get events in another user's calendar:') that would have explained delegated access patterns, slightly reducing the guidance quality.

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

list-calendarsB
Read-only

Get all the user's calendars (/calendars navigation property), get the calendars from the default calendar group or from a specific calendar group.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.2/5.0
Behavior3/5

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

Annotations clearly mark this as read-only and non-destructive. The description adds technical context via the '/calendars navigation property' reference and explains that results can be scoped to calendar groups. Does not address pagination behavior, throttling, or the fact that all parameters are optional OData query options.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Single sentence structure that front-loads the primary action. Slightly repetitive phrasing ('get..., get...') and comma splice structure could be tighter, but no extraneous content or marketing language.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

With 11 optional parameters and no output schema, the description covers the basic retrieval purpose but lacks richness expected for a complex OData endpoint. Does not explain common query patterns, pagination (despite fetchAllPages parameter), or response structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% description coverage for all 11 OData-style parameters (top, skip, filter, etc.). The description adds no parameter-specific guidance, but with comprehensive schema coverage, baseline 3 is appropriate. Description mentions 'specific calendar group' functionality without indicating which parameter controls this.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

States specific verb (Get) and resource (user's calendars) and mentions the underlying Graph API navigation property. Clarifies scope includes default or specific calendar groups. However, does not explicitly distinguish from related siblings like 'list-calendar-events' or 'get-calendar-view', which is important given the dense set of calendar-related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

Describes internal variants (all calendars vs specific group) but provides no guidance on when to choose this tool versus the many sibling alternatives (e.g., list-calendar-events vs list-calendars). No mention of prerequisites or constraints.

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

list-drivesB
Read-only

Retrieve the list of Drive resources available for a target User, Group, or Site.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, indicating a safe, read-only operation with potentially large result sets. The description adds minimal behavioral context beyond this, mentioning the target scope but not detailing pagination behavior, rate limits, or authentication requirements. It doesn't contradict annotations, but adds limited value given the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose ('Retrieve the list of Drive resources') without unnecessary details. It avoids redundancy with the tool name ('list-drives') and schema, making every word count. The structure is clear and direct, with no wasted verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the tool's complexity (11 parameters, no output schema) and rich annotations, the description is minimally adequate. It covers the basic purpose but lacks context on result format, error handling, or integration with sibling tools. The annotations provide safety and scope hints, but the description doesn't fully compensate for the missing output schema or parameter guidance, leaving gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all 11 parameters well-documented in the schema (e.g., 'top' for limiting items, 'filter' for property-based filtering). The description adds no parameter-specific semantics beyond implying a target scope ('User, Group, or Site'), which isn't reflected in the parameters. This meets the baseline for high schema coverage but doesn't enhance understanding of parameter use.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the verb ('Retrieve') and resource ('list of Drive resources'), specifying the target scope ('for a target User, Group, or Site'). It distinguishes from siblings like 'list-folder-files' or 'get-drive-root-item' by focusing on Drive resources rather than specific files or root items. However, it doesn't explicitly differentiate from other list tools like 'list-accounts' or 'list-calendars' beyond the resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication state), compare with similar tools (e.g., 'search-query' for filtered searches), or specify use cases (e.g., browsing vs. filtered retrieval). The agent must infer usage from the tool name and parameters alone.

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

list-excel-worksheetsB
Read-only

Represents a collection of worksheets associated with the workbook. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
driveIdYesPath parameter: driveId
driveItemIdYesPath parameter: driveItemId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds 'Read-only,' which is redundant, and 'Represents a collection,' which implies listing but lacks details on pagination, error handling, or response format. It doesn't contradict annotations, but adds little behavioral context beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is extremely concise with just one sentence: 'Represents a collection of worksheets associated with the workbook. Read-only.' It's front-loaded and wastes no words, making it easy to parse quickly. Every part contributes, though it could be more informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the tool's complexity (13 parameters, no output schema) and rich annotations (readOnlyHint, openWorldHint), the description is minimally adequate. It states the purpose but lacks details on usage, behavior, or output. With annotations covering safety, it's not incomplete, but doesn't fully compensate for the missing output schema or parameter guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 13 parameters. The description adds no parameter-specific information beyond the general 'collection' context. This meets the baseline of 3, as the schema handles the heavy lifting, but the description doesn't enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the tool's purpose: 'Represents a collection of worksheets associated with the workbook. Read-only.' It specifies the verb 'represents' (though 'lists' would be more precise) and resource 'worksheets associated with the workbook,' distinguishing it from siblings like 'get-excel-range' or 'format-excel-range.' However, it doesn't explicitly differentiate from other list tools (e.g., 'list-folder-files'), so it's not a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing driveId and driveItemId), compare to other list tools, or specify use cases. The only hint is 'Read-only,' which is covered by annotations, leaving the agent with minimal usage context.

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

list-folder-filesB
Read-only

Return a collection of DriveItems in the children relationship of a DriveItem. DriveItems with a non-null folder or package facet can have one or more child DriveItems.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
driveIdYesPath parameter: driveId
driveItemIdYesPath parameter: driveItemId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering safety and openness. The description adds some behavioral context by explaining that it returns 'children' of a DriveItem and that only items with 'folder or package facet' can have children, which clarifies scope. However, it doesn't disclose pagination behavior (implied by 'top'/'skip' params), rate limits, authentication needs, or error conditions. With annotations providing core safety info, the description adds moderate value but lacks rich behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is concise with two sentences: the first states the core purpose, and the second adds clarifying scope. There's no wasted text or redundancy. However, it could be more front-loaded by explicitly naming key parameters or usage context, and the second sentence is somewhat technical ('non-null folder or package facet'), which slightly reduces clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the tool's complexity (13 parameters, no output schema), the description is minimally adequate. Annotations cover safety (readOnly, non-destructive, openWorld), and the schema fully documents parameters. The description adds basic purpose and scope but lacks details on return format (e.g., structure of DriveItems), error handling, or pagination behavior. For a list tool with many parameters, more contextual guidance would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all 13 parameters well-documented in the schema (e.g., 'top' for limiting items, 'search' for filtering). The description adds no parameter-specific information beyond the schema. It mentions 'DriveItems' and 'children relationship,' which loosely relates to 'driveId' and 'driveItemId,' but doesn't explain parameter usage or interactions. Given high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but doesn't need to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the tool's purpose: 'Return a collection of DriveItems in the children relationship of a DriveItem.' It specifies the verb ('Return'), resource ('DriveItems'), and scope ('children relationship of a DriveItem'), and distinguishes it from siblings like 'list-drives' or 'list-excel-worksheets' by focusing on folder contents. However, it doesn't explicitly differentiate from similar list tools (e.g., 'list-mail-folder-messages') beyond the resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It mentions that 'DriveItems with a non-null folder or package facet can have one or more child DriveItems,' which implies usage for folders/packages, but doesn't specify prerequisites (e.g., needing driveId and driveItemId) or contrast with other list tools (e.g., 'search-query' for broader searches). No explicit when/when-not instructions or named alternatives are provided.

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

list-mail-attachmentsB
Read-only

Retrieve a list of attachment objects.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
messageIdYesPath parameter: messageId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering safety and flexibility. The description adds minimal behavioral context ('retrieve a list'), which doesn't contradict annotations. However, it misses opportunities to explain pagination behavior (implied by 'top'/'skip'), search/filter capabilities, or that it returns a list rather than details—though these are somewhat inferable from parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action ('retrieve'), though it could be more specific. Every word earns its place, making it highly concise and well-structured for quick scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the tool's complexity (12 parameters, no output schema) and rich annotations, the description is minimally adequate. It states the basic purpose but lacks context on output format, error handling, or integration with siblings. The schema and annotations cover safety and parameters, but the description doesn't fully compensate for the missing output schema or provide holistic guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all 12 parameters well-documented in the schema (e.g., 'top' for limiting items, 'search' for phrases). The description adds no parameter-specific information beyond the generic 'list of attachment objects,' so it doesn't enhance understanding of individual parameters. Baseline 3 is appropriate given the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

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

The description 'Retrieve a list of attachment objects' clearly states the verb ('retrieve') and resource ('attachment objects'), but it's vague about scope and doesn't distinguish from sibling tools like 'get-mail-attachment' (which retrieves a single attachment) or 'list-mail-messages' (which lists messages rather than attachments). It lacks specificity about what 'attachment objects' means in this context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a messageId), differentiate from 'get-mail-attachment' for single attachments, or explain when filtering/pagination parameters are appropriate. The agent must infer usage from the schema alone.

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

list-mail-child-foldersA
Read-only

Get the folder collection under the specified folder. You can use the .../me/mailFolders shortcut to get the top-level folder collection and navigate to another folder. By default, this operation does not return hidden folders. Use a query parameter includeHiddenFolders to include them in the response.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeHiddenFoldersNoInclude Hidden Folders
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
mailFolderIdYesPath parameter: mailFolderId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, establishing the read-only safety profile. The description adds valuable behavioral context that the operation excludes hidden folders by default and documents the navigation pattern for folder hierarchies, though it omits pagination or rate limit details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Four well-structured sentences with zero waste: purpose statement first, navigation hint second, and hidden folder behavior last. Every sentence delivers distinct value without redundancy. Appropriate length for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

Given the rich input schema (13 parameters with 100% coverage) and readOnly annotations, the description covers the essential behavioral quirks (hidden folders, hierarchy navigation). No output schema exists, but the description adequately addresses the non-obvious aspects of the operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the schema handles basic parameter documentation. The description adds crucial semantic meaning beyond the schema for 'includeHiddenFolders' by explaining the default exclusion behavior (schema only states 'Include Hidden Folders'), compensating for the mechanical schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

Description clearly defines the tool's purpose with specific verb ('Get') and resource ('folder collection under the specified folder'). It effectively distinguishes from sibling 'list-mail-folders' by explaining the '/me/mailFolders' shortcut for top-level folders, implying this tool is for nested/child folders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Provides clear context for when to use this tool versus top-level folder listing by referencing the shortcut path. Explains default behavior regarding hidden folders and how to override it. Could be more explicit by explicitly naming the sibling tool for top-level folders, but the guidance is clear.

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

list-mail-folder-messagesA
Read-only

Get all the messages in the specified user's mailbox, or those messages in a specified folder in the mailbox.

💡 TIP: CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search="your search query here". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search="from:john@example.com" | $search="subject:meeting AND hasAttachments:true" | $search="body:urgent AND received>=2024-01-01" | $search="from:alice AND importance:high". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
mailFolderIdYesPath parameter: mailFolderId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

A3.7/5.0
Behavior4/5

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

The description adds significant behavioral detail not present in annotations, specifically that the `$search` parameter MUST be wrapped in double quotes and accepts KQL operators (from:, subject:, etc.). This critical usage constraint prevents invocation errors. However, it omits other behavioral traits like pagination defaults or rate limiting despite the `readOnlyHint` and `openWorldHint` annotations being present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The description is front-loaded with the purpose statement, followed by the detailed search syntax guide. While the search tip is lengthy (containing examples and a URL), the formatting uses visual cues (💡 TIP: CRITICAL) effectively. However, the verbosity of the examples could be condensed without losing the critical 'double quotes' requirement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

Given the tool has 12 parameters and no output schema, the description adequately covers the complex input requirements (particularly the search DSL) which compensates partially for missing return value documentation. It does not address the `fetchAllPages` behavior or what the tool returns, but the schema coverage is complete for inputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3, but the description substantially enriches the `search` parameter semantics beyond the schema's generic 'Search items by search phrases'. It details the mandatory double-quote wrapping, valid KQL operators, and concrete examples, providing essential syntax guidance that raw JSON schema cannot express.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description states the core purpose (getting messages) and mentions the folder context, distinguishing it from the sibling `list-mail-messages`. However, the phrasing 'Get all the messages in the specified user's mailbox, or those messages in a specified folder' ambiguously suggests the folder parameter is optional when the schema requires `mailFolderId`, creating potential confusion about the tool's primary scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides extensive guidance on how to format the `$search` parameter (KQL syntax, double quote requirements), but offers no guidance on when to select this tool versus sibling alternatives like `list-mail-messages` or `get-mail-message`. It does not state prerequisites or when-not-to-use conditions.

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

list-mail-foldersA
Read-only

Get the mail folder collection directly under the root folder of the signed-in user. The returned collection includes any mail search folders directly under the root. By default, this operation does not return hidden folders. Use a query parameter includeHiddenFolders to include them in the response. This operation does not return all mail folders in a mailbox, only the child folders of the root folder. To return all mail folders in a mailbox, each child folder must be traversed separately.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeHiddenFoldersNoInclude Hidden Folders
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, indicating a safe, read-only operation with potentially large results. The description adds valuable behavioral context beyond this: it clarifies the scope limitation (root-level folders only), mentions hidden folder handling, and implies pagination/traversal needs. While it doesn't detail rate limits or auth specifics, it provides meaningful operational constraints that annotations alone don't cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is appropriately sized (four sentences) and front-loaded with the core purpose. Each sentence adds value: the first states the action, the second clarifies inclusion rules, the third explains scope limitations, and the fourth provides alternative guidance. There's no redundant information, though it could be slightly more streamlined by combining related points about hidden folders and traversal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

Given the tool's moderate complexity (12 parameters, no output schema), the description provides strong contextual completeness. It covers the tool's scope, limitations, and alternatives, which annotations and schema don't address. While it doesn't explain return values (no output schema exists), it sufficiently guides usage for a read-only listing operation. The main gap is lack of explicit pagination or performance guidance, but overall it's well-rounded.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the input schema fully documents all 12 parameters. The description only mentions one parameter ('includeHiddenFolders') explicitly and implies pagination through the traversal discussion. It adds minimal semantic value beyond the schema, which already describes each parameter's purpose. The baseline score of 3 reflects adequate but not enhanced parameter understanding from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the specific action ('Get the mail folder collection'), resource ('directly under the root folder of the signed-in user'), and scope ('does not return all mail folders in a mailbox, only the child folders of the root folder'). It explicitly distinguishes this tool from the alternative approach of traversing child folders separately, making it distinct from sibling tools like 'list-mail-folder-messages' or 'list-mail-messages'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('does not return all mail folders... only the child folders of the root folder') and when to use alternatives ('To return all mail folders in a mailbox, each child folder must be traversed separately'). It also specifies the default behavior ('does not return hidden folders') and how to override it ('Use a query parameter includeHiddenFolders'), offering clear context for usage decisions.

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

list-mail-messagesD
Read-only

Get an open extension (openTypeExtension object) identified by name or fully qualified name. The table in the Permissions section lists the resources that support open extensions. The following table lists the three scenarios where you can get an open extension from a supported resource instance.

💡 TIP: CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search="your search query here". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search="from:john@example.com" | $search="subject:meeting AND hasAttachments:true" | $search="body:urgent AND received>=2024-01-01" | $search="from:john AND importance:high". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter

ParametersJSON Schema
NameRequiredDescriptionDefault
includeHiddenMessagesNoInclude Hidden Messages
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

D1.6/5.0
Behavior2/5

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

Annotations provide readOnlyHint=true and destructiveHint=false, which the description doesn't contradict. However, the description adds confusing behavioral information about open extensions that doesn't match the tool's apparent purpose. The search syntax tip is helpful behavioral context, but it's buried in a description that's fundamentally wrong about the tool's function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

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

The description is poorly structured - it starts with completely irrelevant information about open extensions, then has a lengthy tip about search syntax. While the search syntax information is detailed, it's presented in a confusing context. The description is not front-loaded with the tool's actual purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

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

The description is fundamentally incomplete and misleading. It describes a different tool (getting open extensions) while the tool name suggests listing mail messages. No output schema exists, and the description doesn't explain what the tool actually returns. Given the complete mismatch between name and description, this fails to provide adequate context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 12 parameters. The description doesn't add any meaningful parameter semantics beyond what's in the schema - it only mentions the $search parameter in the context of a confusing example about open extensions. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

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

The description is completely misleading - it describes 'Get an open extension' which has nothing to do with the tool name 'list-mail-messages'. The description talks about Microsoft Graph open extensions and permissions tables, while the tool name suggests listing email messages. This is a serious mismatch that would confuse any AI agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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. The description mentions searching emails with $search parameter, but doesn't explain when to use list-mail-messages vs list-mail-folder-messages or get-mail-message. The tip about search syntax is useful but doesn't provide usage context relative to sibling tools.

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

list-onenote-notebooksB
Read-only

Retrieve a list of notebook objects.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.3/5.0
Behavior3/5

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

Annotations provide readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering safety and scope. The description adds minimal behavioral context beyond this, mentioning only the retrieval action. It doesn't describe pagination behavior (implied by parameters like fetchAllPages), rate limits, or authentication needs, leaving some gaps despite the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action ('Retrieve a list'), making it easy to scan and understand quickly without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the 11 parameters with full schema coverage and annotations indicating a safe read operation, the description is minimally adequate. However, with no output schema, it doesn't explain return values (e.g., format of notebook objects), and the lack of sibling differentiation reduces completeness for the agent's decision-making context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with each parameter well-documented (e.g., top for limiting items, search for filtering). The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline of 3 for high schema coverage without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the verb ('Retrieve') and resource ('list of notebook objects'), making the purpose immediately understandable. However, it doesn't differentiate this tool from other list tools in the sibling set (like list-onenote-notebook-sections or list-onenote-section-pages), which would require mentioning it specifically retrieves top-level notebooks rather than sections or pages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like list-onenote-notebook-sections and list-onenote-section-pages available, there's no indication that this tool is for top-level notebooks rather than nested components. It also lacks prerequisites or exclusions.

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

list-onenote-notebook-sectionsB
Read-only

Retrieve a list of onenoteSection objects from the specified notebook.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
notebookIdYesPath parameter: notebookId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering safety and scope. The description adds no behavioral context beyond the basic retrieval action—it doesn't mention pagination behavior (implied by parameters like 'top' and 'fetchAllPages'), authentication needs, rate limits, or what 'onenoteSection objects' entail. With annotations providing core safety info, this earns a baseline score for adding minimal value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, direct sentence that front-loads the core action ('Retrieve a list') and resource. There's no redundancy or fluff—every word serves to clarify the tool's purpose efficiently, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the tool's complexity (12 parameters, no output schema) and rich annotations, the description is minimally adequate. It states what the tool does but lacks context on usage, behavioral nuances, or output format. With annotations covering safety and the schema detailing parameters, it's functional but leaves gaps in guiding the agent effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all 12 parameters well-documented in the schema (e.g., 'top' for limiting items, 'filter' for property-based filtering). The description adds no parameter-specific details beyond implying retrieval from a notebook, which the schema's 'notebookId' requirement already covers. This meets the baseline for high schema coverage without extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the verb ('Retrieve') and resource ('onenoteSection objects from the specified notebook'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'list-onenote-notebooks' or 'list-onenote-section-pages', which would require mentioning it specifically lists sections within a notebook rather than notebooks themselves or pages within sections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a notebook ID), compare to similar tools like 'list-onenote-notebooks', or indicate scenarios where filtering or pagination might be necessary. This leaves the agent with minimal context for tool selection.

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

list-onenote-section-pagesB
Read-only

Retrieve a list of page objects from the specified section.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
onenoteSectionIdYesPath parameter: onenoteSectionId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering safety and scope. The description adds minimal behavioral context beyond this, stating it 'retrieves a list' but not detailing pagination, rate limits, or error handling. With annotations providing core behavioral traits, the description adds some value but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the tool's complexity (12 parameters, no output schema) and rich annotations, the description is adequate but minimal. It covers the basic purpose but lacks details on return format, error cases, or performance considerations. With annotations handling safety, it's viable but could be more informative for a multi-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are documented in the schema itself. The description doesn't add any parameter-specific semantics beyond implying retrieval from a 'specified section' (mapping to 'onenoteSectionId'). This meets the baseline for high schema coverage without extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the verb ('retrieve') and resource ('list of page objects from the specified section'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'list-onenote-notebooks' or 'list-onenote-notebook-sections', which would require a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (e.g., needing a valid section ID), nor does it clarify when to choose this over other list tools like 'list-onenote-notebooks'. This leaves the agent without contextual usage cues.

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

list-outlook-contactsC
Read-only

Get a contact collection from the default contacts folder of the signed-in user. There are two scenarios where an app can get contacts in another user's contact folder:

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.4/5.0
Behavior2/5

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

While annotations correctly indicate readOnlyHint=true, the description adds useful context about targeting the 'default contacts folder' specifically. However, the trailing incomplete sentence creates ambiguity about cross-user access capabilities, and the description omits details about pagination behavior, rate limits, or the structure of returned contact objects that would help agents predict outcomes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

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

The description consists of two sentences, but the second is an incomplete fragment ending with a colon that serves no communicative purpose and creates confusion. This structural defect means not every element earns its place, as the fragment promises information it never delivers.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

For a complex read operation with 11 optional parameters and no output schema, the description inadequately explains what constitutes a 'contact collection' (field names, structure) or how pagination behaves with the fetchAllPages option. The incomplete cross-user scenario mention further gaps the coverage of capabilities an agent needs to invoke this effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage across all 11 parameters, the schema sufficiently documents individual fields like filter, search, and fetchAllPages. The description provides no additional parameter semantics beyond the schema, which is acceptable given the high coverage, warranting the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

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

The first sentence clearly states 'Get a contact collection from the default contacts folder of the signed-in user,' providing specific verb and resource. However, the description ends with an incomplete sentence fragment ('There are two scenarios...') that introduces confusion about whether the tool supports accessing other users' contacts without explaining how, and it fails to distinguish from sibling get-outlook-contact.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No explicit guidance is provided on when to use this list operation versus the singular get-outlook-contact, nor when to apply filter versus search parameters. The incomplete mention of 'two scenarios' for accessing other users' contacts suggests additional usage patterns but fails to articulate them, leaving agents without actionable selection criteria.

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

list-planner-tasksB
Read-only

Retrieve a list of plannertask objects assigned to a User.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate read-only, non-destructive, and open-world behavior, which the description does not contradict. The description adds minimal context by specifying 'assigned to a User,' but fails to detail pagination behavior, rate limits, or error handling, leaving gaps in behavioral understanding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, clear sentence that efficiently conveys the core purpose without unnecessary details. It is front-loaded and wastes no words, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the lack of an output schema and the tool's complexity with 11 parameters, the description is insufficiently complete. It does not explain return values, pagination, or error cases, relying too heavily on the schema and annotations for a tool with significant operational scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the input schema fully documents all 11 parameters. The description adds no additional parameter semantics beyond implying user assignment, which is not reflected in the parameters. This meets the baseline for high schema coverage without enhancing parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the verb ('Retrieve') and resource ('list of plannertask objects assigned to a User'), making the purpose unambiguous. However, it does not explicitly differentiate from sibling tools like 'list-plan-tasks' or 'get-planner-task', which could cause confusion in tool selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'list-plan-tasks' or 'get-planner-task', nor does it mention prerequisites such as authentication or user context. This lack of contextual guidance may lead to incorrect tool selection.

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

list-plan-tasksB
Read-only

Retrieve a list of plannerTask objects associated with a plannerPlan object.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
plannerPlanIdYesPath parameter: plannerPlanId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering safety and pagination aspects. The description adds no behavioral context beyond this, such as rate limits, authentication needs, or what 'plannerTask objects' entail. It doesn't contradict annotations, but fails to supplement them with useful operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every part of the sentence contributes essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the tool's complexity (12 parameters, no output schema) and rich annotations, the description is minimally adequate. It covers the basic purpose but lacks details on return format, error handling, or integration with sibling tools. For a list operation with many filtering options, more context would improve completeness, though annotations help offset some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters like 'top', 'skip', 'filter', and 'plannerPlanId' are well-documented in the schema. The description adds no semantic context beyond implying a relationship to 'plannerPlan', which is already covered by the required parameter. This meets the baseline for high schema coverage without extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the verb ('Retrieve a list') and resource ('plannerTask objects associated with a plannerPlan object'), making the purpose specific and understandable. However, it doesn't explicitly distinguish this tool from sibling tools like 'list-planner-tasks' (which appears to be a duplicate name) or 'get-planner-task', missing an opportunity for full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid plannerPlanId), compare it to similar tools like 'get-planner-task' for single tasks, or specify use cases like filtering tasks by status. This leaves the agent without contextual usage direction.

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

list-specific-calendar-eventsC
Read-only

The events in the calendar. Navigation property. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
calendarIdYesPath parameter: calendarId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication
timezoneNoIANA timezone name (e.g., "America/New_York", "Europe/London", "Asia/Tokyo") for calendar event times. If not specified, times are returned in UTC.
expandExtendedPropertiesNoWhen true, expands singleValueExtendedProperties on each event. Use this to retrieve custom extended properties (e.g., sync metadata) stored on calendar events.

TDQS

C2/5.0
Behavior2/5

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

States 'Read-only' which merely duplicates the readOnlyHint annotation. Includes 'Navigation property' (OData jargon) without explaining behavioral implications. Fails to disclose pagination behavior, rate limits, or that it returns a collection versus a single entity, despite complex query parameters like fetchAllPages and expandExtendedProperties.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

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

Severely undersized for a 14-parameter tool with complex query capabilities. Three short fragments waste space on redundant annotation info ('Read-only') and obscure terminology ('Navigation property') that don't help an agent understand how to invoke the tool effectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Inadequate for tool complexity. With 14 parameters supporting OData-style queries (filter, expand, select, etc.), the description should explain the query pattern or return structure. No output schema exists, yet description doesn't hint at return format or pagination.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline applies. Description adds no parameter-specific context (e.g., no explanation of OData-style filtering, timezone handling, or when to use expandExtendedProperties), but schema compensates adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

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

Uses noun phrase 'The events in the calendar' instead of an action verb (e.g., 'List' or 'Retrieve'), failing to clearly state what the tool does. While it identifies the resource, it does not distinguish from sibling tools like list-calendar-events or get-specific-calendar-event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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

Provides no guidance on when to use this tool versus alternatives (e.g., list-calendar-events vs list-specific-calendar-events). No mention of prerequisites (calendarId requirement) or filtering use cases despite having complex query parameters.

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

list-todo-task-listsB
Read-only

Get a list of the todoTaskList objects and their properties.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds no behavioral context beyond this, such as pagination behavior, rate limits, or authentication needs. Since annotations cover the safety profile, a baseline 3 is appropriate, but the description doesn't enhance transparency further.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

For a list tool with rich annotations (readOnlyHint, openWorldHint) and full schema coverage, the description is minimally adequate. However, it lacks output details (no output schema) and doesn't address behavioral aspects like pagination or error handling, leaving gaps in completeness despite the structured data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with all 11 parameters well-documented in the schema. The description adds no parameter-specific information beyond what the schema provides, such as examples or usage tips. Given the high schema coverage, the baseline score of 3 is correct, as the description doesn't compensate but doesn't need to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('todoTaskList objects and their properties'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'list-todo-tasks' or 'list-planner-tasks' beyond the resource name, which is why it doesn't reach a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't mention when to choose this over 'list-todo-tasks' or other list tools, nor does it specify prerequisites or exclusions. This leaves the agent without usage context.

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

list-todo-tasksB
Read-only

Get the todoTask resources from the tasks navigation property of a specified todoTaskList.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoShow only the first n items
skipNoSkip the first n items
searchNoSearch items by search phrases
filterNoFilter items by property values
countNoInclude count of items
orderbyNoOrder items by property values
selectNoSelect properties to be returned
expandNoExpand related entities
todoTaskListIdYesPath parameter: todoTaskListId
fetchAllPagesNoAutomatically fetch all pages of results
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.2/5.0
Behavior3/5

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

Annotations provide readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering safety and openness. The description adds minimal behavioral context beyond this, such as implying resource retrieval from a navigation property, but lacks details on rate limits, authentication needs, or response format. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is a single, efficient sentence that directly states the tool's purpose without redundancy. It's front-loaded with the core action, though it could be slightly more structured by hinting at parameter usage. No wasted words, making it appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the tool's moderate complexity (12 parameters, no output schema) and rich annotations, the description is minimally adequate. It covers the basic purpose but lacks guidance on usage, behavioral nuances, or output expectations, leaving gaps that could hinder an AI agent in optimal tool selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all 12 parameters well-documented in the input schema. The description adds no parameter-specific information beyond implying 'todoTaskListId' is required, which is already clear from the schema. Baseline score of 3 is appropriate as the schema carries the full burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the action ('Get') and resource ('todoTask resources'), specifying they come from 'the tasks navigation property of a specified todoTaskList.' It distinguishes from generic list tools by focusing on todo tasks within a specific list, though it doesn't explicitly differentiate from sibling tools like 'list-todo-task-lists' or 'get-todo-task.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a todoTaskListId), compare to 'get-todo-task' for single tasks, or explain when filtering/pagination parameters are useful. The description assumes context without explicit instructions.

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

loginA

Authenticate with Microsoft using device code flow

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoForce a new login even if already logged in

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the authentication method. It doesn't disclose behavioral traits like required permissions, whether this persists credentials, rate limits, or what happens on success/failure. The description adds minimal context beyond 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.

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose and uses precise technical terminology ('device code flow') without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

For an authentication tool with no annotations and no output schema, the description is insufficient. It doesn't explain what authentication provides access to, what credentials are stored, how long sessions last, or what the tool returns. Given the complexity of authentication and lack of structured data, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage and only one optional parameter, the description doesn't need to explain parameters. The schema fully documents the 'force' parameter, so baseline is high. The description focuses appropriately on the tool's purpose rather than parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the specific action ('Authenticate') and target ('with Microsoft'), using the precise authentication method ('device code flow'). It distinguishes from siblings like 'verify-login' or 'logout' by specifying the authentication mechanism.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies this tool is for initial authentication, but doesn't explicitly state when to use it versus alternatives like 'verify-login' (for checking status) or 'select-account' (for switching accounts). No explicit exclusions or prerequisites are mentioned.

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

logoutB

Log out from Microsoft account

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only states the action without explaining side effects such as token invalidation, whether it affects all sessions, or if it is permanent. This lack of detail leaves an agent uncertain about the consequences.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is a single, clear clause with no unnecessary words. It is appropriately concise for a simple, parameterless action, though it could benefit from a sentence about behavior or usage context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

For a simple logout action with no parameters or output schema, the description provides the essential action but lacks context about the result (e.g., does it invalidate tokens? clear local state?). It is sufficient for basic invocation but leaves some behavioral ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema fully covers them (100% coverage). The description correctly adds no parameter information because none exist, meeting the baseline of 4 for 0-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the action ('Log out') and the resource ('Microsoft account'), making the primary purpose unambiguous. It does not explicitly differentiate from siblings like 'remove-account' or 'login', but the verb and resource are specific enough that the intent is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as 'remove-account' or 'login'. It does not mention context like ending a session before switching accounts, nor does it explain differences from related sibling tools.

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

move-mail-messageA
Destructive

Move a message to another folder within the specified user's mailbox. This creates a new copy of the message in the destination folder and removes the original message.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
messageIdYesPath parameter: messageId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

A4/5.0
Behavior4/5

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

Excellent disclosure beyond annotations: explains the internal mechanics (creates new copy + removes original) which clarifies the destructive behavior declared in annotations. However, misses side effects like message ID changes, rate limits, or destination folder validation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two efficient sentences with zero waste. Front-loads the action, follows with implementation mechanics. Every word earns its place; no redundancy with title or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

Adequate for a destructive operation with nested parameters. Explains the atomicity semantics (copy-then-delete) which is critical for understanding data integrity. Does not need to explain return values (no output schema), though could mention error conditions or permission requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While schema coverage is 75%, the description adds crucial semantic context for the undocumented 'body.DestinationId' parameter by specifying 'another folder', indicating the destination is a folder reference. Could further clarify messageId format requirements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

Crystal clear: specific verb (Move) + resource (message) + scope (within mailbox). Distinguishes from copy semantics by clarifying it creates a new copy AND removes the original, differentiating from other mail operations like delete or reply in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives (e.g., delete-mail-message for permanent removal) or prerequisites (e.g., that messageId must be obtained first). No mention of user permissions or when to prefer move over other organization methods.

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

remove-accountC

Remove a Microsoft account from the cache

ParametersJSON Schema
NameRequiredDescriptionDefault
accountIdYesThe account ID to remove

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Remove' implies a destructive mutation, it doesn't specify whether this operation is reversible, what permissions are required, whether it affects active sessions, or what happens on success/failure. The mention of 'cache' hints at data removal rather than account deletion, but this isn't elaborated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core action and resource, making it immediately scannable and easy to understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

For a destructive tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'remove' entails (e.g., does it delete data, revoke access, or clear local cache?), what the expected outcome is, or potential side effects. Given the complexity of account management and lack of structured context, more detail is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the single parameter 'accountId' clearly documented. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or where to obtain the accountId. Since schema coverage is high, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the action ('Remove') and target resource ('a Microsoft account from the cache'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this tool from sibling tools like 'logout' or 'select-account', which might also involve account management operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether the account must be logged in or cached first), nor does it clarify relationships with sibling tools like 'logout' (which might handle session termination) or 'list-accounts' (which could show cached accounts).

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

reply-all-mail-messageA
Destructive

Reply to all recipients of a message using either JSON or MIME format. When using JSON format:

  • Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error.

  • If the original message specifies a recipient in the replyTo property, per Internet Message Format (RFC 2822), send the reply to the recipients in replyTo and not the recipient in the from property. When using MIME format:

  • Provide the applicable Internet message headers and the MIME content, all encoded in base64 format in the request body.

  • Add any attachments and S/MIME properties to the MIME content. This method saves the message in the Sent Items folder. Alternatively, create a draft to reply-all to a message and send it later.

💡 TIP: Reply-all preserving full HTML formatting. The 'comment' field is your reply text.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
messageIdYesPath parameter: messageId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

A4.2/5.0
Behavior4/5

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

Adds substantial behavioral context beyond annotations: RFC 2822 replyTo handling logic, Sent Items folder side effect, HTTP 400 error condition for invalid parameter combinations, and base64 encoding requirements for MIME. Aligns with destructiveHint=true (mutation) by describing the sending action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

Contains valuable information but is somewhat verbose with multiple sections (JSON rules, MIME rules, alternatives, TIP). Structure is logical but could be more front-loaded; the TIP section at the end repeats information from earlier bullets. Every sentence provides value, but tighter integration would improve scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a complex dual-format operation with nested parameters and no output schema, description adequately covers format selection, validation constraints, RFC-compliant routing behavior, and storage side effects. Missing explicit description of return values or success indicators, but annotations cover the safety profile.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 75% coverage with complex nesting. Description adds critical constraint that 'comment' and 'body' are mutually exclusive in JSON mode (HTTP 400 if both provided), and clarifies that 'comment' represents the reply text. Compensates for complexity of the nested Message object structure within the body parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

Opens with specific verb ('Reply to all recipients') and resource ('message'), explicitly distinguishing from sibling 'reply-mail-message' by emphasizing 'all recipients'. Also distinguishes from 'create-reply-all-draft' by noting immediate sending to Sent Items vs. draft creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Explicitly references sibling alternative 'create a draft to reply-all... and send it later'. Details when to use JSON vs. MIME format and warns about HTTP 400 error conditions. Could more explicitly contrast with 'forward-mail-message' or single-reply scenarios.

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

reply-mail-messageA
Destructive

Reply to the sender of a message using either JSON or MIME format. When using JSON format:

  • Specify either a comment or the body property of the message parameter. Specifying both will return an HTTP 400 Bad Request error.

  • If the original message specifies a recipient in the replyTo property, per Internet Message Format (RFC 2822), send the reply to the recipients in replyTo and not the recipient in the from property. When using MIME format:

  • Provide the applicable Internet message headers and the MIME content, all encoded in base64 format in the request body.

  • Add any attachments and S/MIME properties to the MIME content. This method saves the message in the Sent Items folder. Alternatively, create a draft to reply to an existing message and send it later.

💡 TIP: Reply to an email preserving full HTML formatting. The 'comment' field is your reply text. Do NOT reconstruct the email manually.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
messageIdYesPath parameter: messageId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

A3.9/5.0
Behavior4/5

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

Adds valuable behavioral details beyond annotations: confirms message is saved to 'Sent Items' (immediate send), explains RFC 2822 replyTo handling logic, warns of HTTP 400 errors for invalid input, and clarifies attachment handling differs by format. No contradictions with destructiveHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

Contains necessary information but suffers from inconsistent formatting (mixing asterisks and dashes for bullets) and includes emoji. The structure separates format instructions clearly but could be more compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a complex dual-format messaging tool with nested objects and no output schema, the description covers format selection, error conditions, replyTo behavior, draft alternatives, and Sent Items persistence. Missing explicit description of the 'messageId' parameter requirement in text.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 75% schema coverage, the description adds crucial semantic context: explains 'comment' field purpose, mutual exclusivity with 'body' property, and MIME encoding requirements. The tip clarifies intended use of the comment field for HTML preservation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

States specific action 'Reply to the sender' with format options (JSON/MIME). Implicitly distinguishes from 'reply-all' by specifying 'sender,' but could be more explicit about differences from siblings like 'reply-all-mail-message' and 'create-reply-draft'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Provides explicit guidance on choosing between JSON and MIME formats with constraint details (comment vs body mutual exclusivity, base64 encoding). Mentions 'Alternatively, create a draft...' which guides users toward the draft creation sibling tool when immediate sending isn't desired.

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

search-queryB
Destructive

Runs the query specified in the request body. Search results are provided in the response.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.1/5.0
Behavior4/5

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

Annotations provide readOnlyHint=false, openWorldHint=true, and destructiveHint=true, indicating this is a write operation with potential side effects. The description doesn't contradict these annotations. It adds minimal behavioral context by mentioning that 'search results are provided in the response,' but doesn't elaborate on what 'runs the query' entails behaviorally (e.g., whether it triggers indexing, affects system state, or has rate limits). With annotations covering the safety profile, the description adds some value but could provide more operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is extremely concise with two short sentences that directly state the tool's function and outcome. There's no wasted verbiage or redundancy. It's front-loaded with the core action and efficiently communicates the essential information without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Given the tool's complexity (3 parameters with nested objects, 67% schema coverage, no output schema, and annotations indicating it's a destructive write operation), the description is inadequate. It doesn't explain the scope of the search (e.g., across Microsoft 365 entities), potential impacts of the destructive hint, or what the response contains. For such a multifaceted tool, more context is needed to guide effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67%, with detailed descriptions for many nested parameters. The description mentions 'request body' and 'search results,' which aligns with the 'body' parameter and output. However, it doesn't add meaningful semantics beyond what the schema provides, such as explaining the relationship between parameters or typical usage patterns. With moderate schema coverage, the baseline of 3 is appropriate as the description doesn't significantly compensate for gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

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

The description states the tool 'runs the query specified in the request body' and provides search results, which gives a basic purpose. However, it's vague about what type of search this is (e.g., Microsoft 365 search across multiple entity types) and doesn't clearly distinguish it from potential search-like operations in sibling tools. The description lacks specificity about the resource scope or domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, context for search operations, or differentiate from other tools that might retrieve data (like list-* tools). There's no explicit when/when-not usage advice or named alternatives for similar functionality.

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

select-accountC

Select a specific Microsoft account to use

ParametersJSON Schema
NameRequiredDescriptionDefault
accountIdYesThe account ID to select

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states the action without behavioral details. It doesn't disclose what 'select' entails (e.g., sets a default context, requires authentication, has side effects, or returns confirmation), making it vague 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.

Conciseness5/5

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

The description is a single, clear sentence with zero waste. It's front-loaded and appropriately sized for the tool's apparent simplicity, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It lacks details on what happens after selection (e.g., context change, return value, error handling), which is critical for a tool that likely affects subsequent operations in a multi-account environment.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter 'accountId' is documented in the schema. The description adds no additional meaning beyond implying selection targets an account, which the schema already covers, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the action ('Select') and the resource ('a specific Microsoft account'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'list-accounts' or 'verify-login' in terms of when selection is needed versus listing or verification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing to list accounts first), exclusions, or how it relates to siblings like 'login' or 'remove-account', leaving the agent to infer usage context.

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

send-draft-messageC
Destructive

Send an existing draft message. The draft message can be a new message draft, reply draft, reply-all draft, or a forward draft. This method saves the message in the Sent Items folder. Alternatively, send a new message in a single operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageIdYesPath parameter: messageId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.7/5.0
Behavior2/5

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

Annotations correctly mark this as destructive. The description adds that messages are 'saved in the Sent Items folder,' which is valuable behavioral context. However, it fails to clarify what happens to the original draft (presumably deleted) or acknowledge that the claimed 'send new message' capability is unsupported by the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

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

Four sentences are appropriate length, but the final sentence 'Alternatively, send a new message...' does not earn its place—it describes unsupported functionality and sows confusion. Structure is logical but undermined by this factual error.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Description covers draft types and destination folder (Sent Items), providing reasonable context for a send operation. However, it lacks return value description (no output schema exists) and leaves the false 'new message' claim uncorrected, creating a significant gap in accurate behavioral understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, establishing a baseline of 3. The description adds crucial semantic context by specifying the messageId refers to an 'existing draft message' (which could be new/reply/forward types), clarifying the parameter's purpose beyond the generic schema description 'Path parameter: messageId'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

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

The primary purpose 'Send an existing draft message' is clear, but the final sentence 'Alternatively, send a new message in a single operation' is misleading. The input schema only accepts a messageId string, confirming this tool cannot send new message content inline, contradicting the claimed alternative functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No explicit guidance on when to use this versus sibling send-mail. The 'alternatively' clause conflates this tool's scope with send-mail, potentially causing the agent to incorrectly select this tool when creating a new message from scratch (which requires send-mail). No mention that drafts must be created first using create-*-draft tools.

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

send-mailA
Destructive

Send the message specified in the request body using either JSON or MIME format. When using JSON format, you can include a file attachment in the same sendMail action call. When using MIME format: This method saves the message in the Sent Items folder. Alternatively, create a draft message to send later. To learn more about the steps involved in the backend before a mail is delivered to recipients, see here.

💡 TIP: CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate destructive/write behavior (destructiveHint:true). Description adds that MIME format saves to Sent Items folder and mentions backend delivery process (though with broken 'see here' reference). Does not disclose failure modes, rate limits, or size constraints for attachments.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

Length is appropriate for the tool's complexity. The CRITICAL TIP is usefully highlighted with emoji. However, contains dangling reference ('see here') and slightly repetitive structure ('When using JSON... When using MIME...'). Could be more tightly structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Covers primary workflows (immediate send vs draft, format options, attachments) and prerequisites (email lookup). Lacks coverage of return values (no output schema exists), error conditions, success indicators, or message size limits expected for an email sending operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, providing decent baseline documentation. Description adds context about JSON vs MIME format options for the body parameter and attachment handling behavior. However, completely ignores includeHeaders and excludeResponse parameters, offering no guidance on when to use these boolean flags.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

Clear verb ('Send') and resource ('message') with specific format options (JSON/MIME). Partially distinguishes from sibling create-draft-email by mentioning draft creation as an alternative workflow, though fails to differentiate from send-draft-message which sends existing drafts versus this tool which sends new messages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Strong explicit guidance with the CRITICAL tip mandating use of list-users tool to find recipient addresses rather than guessing. Mentions draft creation as alternative for later sending, implying when NOT to use this tool. Could clarify distinction from send-draft-message for drafts already created.

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

sort-excel-rangeC
Destructive

Update the navigation property sort in drives

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
driveIdYesPath parameter: driveId
driveItemIdYesPath parameter: driveItemId
workbookWorksheetIdYesPath parameter: workbookWorksheetId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.4/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=false, destructiveHint=true, and openWorldHint=true, indicating this is a destructive mutation operation with open-ended parameters. The description adds minimal behavioral context beyond annotations - 'Update' confirms mutation, but doesn't elaborate on what gets destroyed (Excel data? navigation properties?), rate limits, or authentication requirements. The description doesn't contradict annotations, but adds little value beyond what annotations already convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The description is extremely concise (one sentence), but this brevity comes at the cost of clarity. While technically concise, it's under-specified rather than efficiently informative. The single sentence doesn't front-load the most critical information and leaves too much ambiguity about what the tool actually does.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

For a destructive mutation tool with 6 parameters, no output schema, and complex nested objects, the description is inadequate. It doesn't explain what 'sort' means operationally, what gets returned (if anything), how to interpret the various IDs, or what the sorting behavior entails. The annotations help with safety profile, but the description fails to provide sufficient context for proper tool invocation given the complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 83% schema description coverage, the schema already documents most parameters well. The description adds no meaningful parameter semantics beyond what's in the schema - it doesn't explain what 'body' contains for sorting, how drive IDs relate to Excel files, or what the various path parameters represent. The baseline of 3 is appropriate given the high schema coverage, but the description doesn't compensate for the remaining 17% gap in parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

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

The description 'Update the navigation property sort in drives' is a tautology that essentially restates the tool name 'sort-excel-range' in different words. It doesn't specify what 'sort' means in this context (sorting Excel data? sorting navigation properties?), nor does it clearly distinguish this tool from sibling Excel tools like 'format-excel-range' or 'get-excel-range'. The purpose remains vague and ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There are multiple Excel-related sibling tools (format-excel-range, get-excel-range, create-excel-chart, list-excel-worksheets), but the description doesn't explain when sorting is appropriate versus formatting or retrieving data. No context about prerequisites, alternatives, or exclusions is provided.

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

update-calendar-eventC
Destructive

Update the properties of the event object.

💡 TIP: CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
eventIdYesPath parameter: eventId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.3/5.0
Behavior2/5

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

Although annotations declare destructiveHint=true, the description adds no context about what the destructive update entails (e.g., whether attendees are notified, if the update is partial or full replacement). The email tip is input validation guidance, not behavioral transparency about the operation's effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

Concise at two sentences, but wastes the first sentence on tautology. The critical tip about recipient emails is present but poorly structured as the primary description content rather than supplementary guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Inadequate for a complex destructive operation with nested objects. Lacks essential context about attendee notification behavior, idempotency, organizer permissions, and return values (no output schema exists to compensate).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, adequately documenting the complex nested body structure. The description adds no semantic meaning for parameters like eventId or the body contents, meeting the baseline for decent schema coverage without providing additional value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

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

The description 'Update the properties of the event object' restates the tool name (tautology) and fails to distinguish this from sibling tool update-specific-calendar-event or specify which properties are modifiable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

Provides one constraint about using list-users for email lookups, but lacks guidance on when to select this tool versus alternatives like update-specific-calendar-event or create-calendar-event. Notably, list-users does not appear in the sibling tool list, creating potential confusion.

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

update-mail-messageC
Destructive

Update the properties of an eventMessage object.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
messageIdYesPath parameter: messageId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already indicate this is a destructive write operation (destructiveHint: true, readOnlyHint: false). The description adds no behavioral context beyond the schema, such as whether this performs partial (PATCH) or full (PUT) updates, validation constraints, or the impact of updating read-only fields like 'id' or 'createdDateTime'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The single sentence is efficiently structured and front-loaded, but is arguably too terse for a complex operation involving 4 parameters and deep nesting. No wasted words, though minimal content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Given the tool's complexity (nested objects for recipients, attachments, flags, extended properties) and lack of output schema, the description is inadequate. It should clarify what 'eventMessage' means vis-à-vis regular messages and explain updatable versus read-only properties.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high at 75%, with detailed field descriptions in the nested 'body' object. The description provides no additional parameter guidance, but the baseline score of 3 is appropriate given the schema carries the semantic load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

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

The description uses a specific verb ('Update') and resource ('eventMessage object'), but creates confusion by referencing 'eventMessage' while the tool name is 'update-mail-message'. It fails to distinguish from sibling mail operations like forward-mail-message, reply-mail-message, or send-draft-message.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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

No guidance provided on when to use this tool versus alternatives like send-draft-message or reply-mail-message. No mention of prerequisites (e.g., requiring a message ID) or whether this applies to drafts, sent items, or received messages.

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

update-outlook-contactC
Destructive

Update the properties of a contact object.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
contactIdYesPath parameter: contactId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.7/5.0
Behavior3/5

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

The description implies mutation (consistent with destructiveHint:true and readOnlyHint:false), but adds no behavioral details beyond annotations. It doesn't clarify whether this is a partial update (PATCH semantics) or requires the full object, nor what happens to omitted fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The single sentence is not verbose, but at 6 words it is underspecified rather than truly concise. It fails to earn its place by providing specific, actionable information beyond the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Given the complexity (4 parameters with nested objects containing 30+ fields) and lack of output schema, the description is inadequate. It provides no guidance on the update semantics, required permissions, or how to construct the body payload.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75% (high), establishing a baseline of 3. The description mentions 'properties' which vaguely maps to the body parameter, but adds no clarification for contactId path parameter or the includeHeaders/excludeResponse options beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

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

The description uses the verb 'Update' and mentions 'contact object', but fails to specify this is specifically for Outlook (the name implies it, but the description doesn't). It also doesn't distinguish from sibling tools like create-outlook-contact or delete-outlook-contact, and is close to a tautology of the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance provided on when to use this tool versus alternatives (e.g., create-outlook-contact for new contacts), nor prerequisites like obtaining a contactId from list-outlook-contacts first.

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

update-planner-taskC
Destructive

Update the properties of plannerTask object.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
If-MatchYesETag value.
plannerTaskIdYesPath parameter: plannerTaskId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.5/5.0
Behavior3/5

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

Annotations indicate this is a destructive (destructiveHint: true), non-read-only (readOnlyHint: false), open-world (openWorldHint: true) operation. The description doesn't contradict these annotations, but it also adds minimal behavioral context. It doesn't mention that this is a PATCH-style update (implied by openWorldHint), what happens when certain fields are omitted, or any permission requirements. The description adds little value beyond what annotations already provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is extremely concise - a single sentence with no wasted words. While this conciseness comes at the cost of completeness, the structure is front-loaded and direct. Every word serves the minimal purpose of stating the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

For a complex mutation tool with 5 parameters (including nested objects), no output schema, and destructive annotations, the description is severely inadequate. It doesn't explain what the tool returns, how to handle the If-Match header for concurrency control, or provide any examples of typical update scenarios. The agent would struggle to use this tool correctly without extensive trial and error.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 80% schema description coverage, the schema already documents most parameters thoroughly. The description adds no additional parameter semantics beyond 'properties of plannerTask object', which is already obvious from the schema. It doesn't explain the relationship between parameters like body, If-Match, and plannerTaskId, or provide usage examples. The baseline of 3 is appropriate given the comprehensive schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

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

The description 'Update the properties of plannerTask object' is a tautology that essentially restates the tool name 'update-planner-task'. It doesn't specify what kind of properties can be updated or provide any meaningful differentiation from sibling tools like 'update-planner-task-details' or 'update-todo-task'. The description fails to convey the specific scope or nature of the update operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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

The description provides absolutely no guidance about when to use this tool versus alternatives. There's no mention of prerequisites, when this tool is appropriate versus other update tools (like update-planner-task-details), or any contextual constraints. The agent would have to guess based on the tool name alone.

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

update-planner-task-detailsB
Destructive

Update the properties of plannerTaskDetails object.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
If-MatchYesETag value.
plannerTaskIdYesPath parameter: plannerTaskId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

B3.2/5.0
Behavior4/5

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

Annotations indicate destructiveHint=true and readOnlyHint=false, which the description doesn't contradict. While the description doesn't explicitly state this is a destructive operation, it implies mutation with 'Update'. The description adds minimal behavioral context beyond annotations, but doesn't provide details about what gets updated, side effects, or response behavior. No contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a tool with good schema coverage and annotations, though it could benefit from more contextual information. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

For a destructive mutation tool with 5 parameters (3 required), 80% schema coverage, and no output schema, the description is minimally adequate. Annotations cover safety aspects, but the description doesn't explain what 'plannerTaskDetails' represents, what happens during update, or error conditions. It meets basic requirements but leaves significant contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 80% schema description coverage, the baseline is 3. The description mentions 'properties' generally but doesn't specify which properties (like checklist, description, previewType, references) or explain parameter relationships. It adds no meaningful semantic information beyond what the schema already documents through parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

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

The description 'Update the properties of plannerTaskDetails object' clearly states the verb ('Update') and resource ('plannerTaskDetails object'), but it's somewhat vague about what specific properties are involved and doesn't distinguish this from sibling tools like 'update-planner-task' or 'update-todo-task'. It provides basic purpose but lacks specificity about scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'update-planner-task' or other update tools. There's no mention of prerequisites, context, or exclusions. The agent must infer usage from the tool name and parameters alone.

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

update-specific-calendar-eventC
Destructive

Update the navigation property events in me

💡 TIP: CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
calendarIdYesPath parameter: calendarId
eventIdYesPath parameter: eventId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.2/5.0
Behavior2/5

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

Annotations explicitly mark this as destructive (destructiveHint: true, readOnlyHint: false), so the description does not need to establish the mutation nature. However, it adds no context about partial update behavior, idempotency, what happens if the event is not found, or required permissions beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

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

The description mixes technical implementation detail ('navigation property') with a seemingly unrelated security tip about email addresses. The structure is disjointed—one cryptic sentence followed by an emoji-led warning—rather than a coherent explanation front-loaded with purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

For a complex mutation operation with deeply nested event properties (body, attendees, attachments) and no output schema, the description is insufficient. It fails to mention required identifiers (calendarId, eventId) in the text, explain what constitutes a successful update, or describe validation constraints beyond the raw schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high at 80%, with detailed descriptions for the complex nested body object (attendees, start/end times, etc.) and path parameters. The description text contributes nothing about parameters, but the high schema coverage meets the baseline without requiring compensatory description text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

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

The description uses obscure Graph API technical jargon ('navigation property events in me') rather than clear user-facing language. While 'Update' and 'events' are present, the phrase 'navigation property' and 'in me' (referring to the /me endpoint) create confusion without clarifying what distinguishes this tool from the sibling update-calendar-event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

Contains one specific operational tip about not guessing email addresses and using list-users instead, which is relevant when updating attendees. However, lacks general guidance on when to use this tool versus update-calendar-event or other calendar operations, and does not explain the workflow for identifying calendarId and eventId.

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

update-todo-taskC
Destructive

Update the properties of a todoTask object.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
todoTaskListIdYesPath parameter: todoTaskListId
todoTaskIdYesPath parameter: todoTaskId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

C2.9/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false, openWorldHint=true, and destructiveHint=true, which already inform the agent that this is a mutable, potentially destructive operation with open-world semantics. The description adds no behavioral context beyond this, such as what 'destructive' entails (e.g., overwriting existing properties), rate limits, or authentication needs. It doesn't contradict annotations but provides minimal additional value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized for a simple declarative statement, though its brevity limits informational value. Every word earns its place by conveying the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Given the tool's complexity (5 parameters with nested objects, no output schema, and annotations indicating destructive behavior), the description is insufficient. It doesn't explain the update mechanism (e.g., partial vs. full updates), response format, error handling, or how to use parameters like includeHeaders. With rich schema but no output schema, more context is needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high (80%), so the schema documents most parameters well. The description adds no parameter-specific information beyond the generic 'properties of a todoTask object', which doesn't clarify the complex nested structure (e.g., body, todoTaskListId, todoTaskId) or optional parameters like includeHeaders and excludeResponse. It meets the baseline for high schema coverage but doesn't enhance understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

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

The description 'Update the properties of a todoTask object' clearly states the verb ('update') and resource ('todoTask object'), but it's generic and doesn't distinguish this tool from other update tools like 'update-calendar-event' or 'update-outlook-contact'. It specifies what is being updated ('properties') but lacks specificity about which properties or scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a todoTaskListId and todoTaskId), when not to use it, or how it differs from sibling tools like 'create-todo-task' or 'delete-todo-task'. Usage is implied from the tool name but not explicitly stated.

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

upload-file-contentD

The content stream, if the item represents a file.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
driveIdYesPath parameter: driveId
driveItemIdYesPath parameter: driveItemId
includeHeadersNoInclude response headers (including ETag) in the response metadata
excludeResponseNoExclude the full response body and only return success or failure indication

TDQS

D1.9/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false (implying a write operation), openWorldHint=true, and destructiveHint=false. The description doesn't contradict these but adds minimal behavioral context beyond them—it hints at file content streaming but lacks details on permissions, rate limits, or side effects. With annotations covering safety, a baseline 3 is appropriate as the description adds some value but not rich 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.

Conciseness2/5

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

The description is a single vague sentence that fails to convey purpose or usage, making it under-specified rather than concise. It doesn't front-load key information and wastes space on an unhelpful statement, so it scores low for ineffective brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Given the tool's complexity (5 parameters, no output schema) and annotations that cover basic safety, the description is incomplete. It lacks essential details like what the tool actually does, expected outcomes, or error handling, leaving significant gaps for an upload operation with multiple parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80%, providing good documentation for parameters like 'includeHeaders' and 'excludeResponse'. The description adds no parameter-specific information beyond what the schema already covers, so it meets the baseline of 3 where the schema handles most of the semantic burden without extra value from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

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

The description 'The content stream, if the item represents a file' is a tautology that restates the tool name 'upload-file-content' without specifying the action. It fails to clearly state what the tool does (e.g., uploads file content to a specific location) and doesn't distinguish it from sibling tools like 'download-onedrive-file-content' or 'create-onenote-page'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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

No guidance is provided on when to use this tool versus alternatives. The description offers no context about prerequisites, when it's appropriate, or how it differs from related tools like 'create-onenote-page' or 'download-onedrive-file-content', leaving the agent with no usage direction.

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

verify-loginA

Check current Microsoft authentication status

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'check', implying a read-only operation with no side effects, but it does not mention dependencies (e.g., requires an active session) or what happens if the user is not authenticated. The description adds no detail beyond the verb.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, short sentence that is front-loaded with the action word 'Check'. There is zero wasted wording, and it is immediately understandable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

For a zero-parameter tool with no output schema, the description provides the essential purpose. However, it does not mention what the expected outcome is (e.g., returns a boolean or status object), which could leave an agent uncertain about how to interpret the result. Some additional detail about the return value would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema description coverage is 100% (vacuously). Since there are no parameters, the baseline is 4. The description does not need to explain parameters that don't exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description 'Check current Microsoft authentication status' clearly states the verb 'Check' and the resource 'current Microsoft authentication status'. It distinguishes itself from sibling tools like 'login' and 'logout' by focusing on verification rather than initiating or terminating a session.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention that it should be used to confirm authentication before other operations, nor does it contrast with 'login' or 'logout'. The context is implied but not explicitly stated.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 78 tool updatesv0.0.0-development
    • First observedadd-mail-attachment
    • First observedcreate-calendar-event
    • First observedcreate-draft-email
    • First observedcreate-excel-chart
    • First observedcreate-forward-draft
    • First observedcreate-onenote-page
    • First observedcreate-onenote-section-page
    • First observedcreate-outlook-contact
    • First observedcreate-planner-task
    • First observedcreate-reply-all-draft
    • First observedcreate-reply-draft
    • First observedcreate-specific-calendar-event
    • First observedcreate-todo-task
    • First observeddelete-calendar-event
    • First observeddelete-mail-attachment
    • First observeddelete-mail-message
    • First observeddelete-onedrive-file
    • First observeddelete-outlook-contact
    • First observeddelete-specific-calendar-event
    • First observeddelete-todo-task
    • First observeddownload-onedrive-file-content
    • First observedformat-excel-range
    • First observedforward-mail-message
    • First observedget-calendar-event
    • First observedget-calendar-view
    • First observedget-current-user
    • First observedget-drive-root-item
    • First observedget-excel-range
    • First observedget-mail-attachment
    • First observedget-mail-message
    • First observedget-onenote-page-content
    • First observedget-outlook-contact
    • First observedget-planner-plan
    • First observedget-planner-task
    • First observedget-specific-calendar-event
    • First observedget-specific-calendar-view
    • First observedget-todo-task
    • First observedlist-accounts
    • First observedlist-calendar-event-instances
    • First observedlist-calendar-events
    • First observedlist-calendars
    • First observedlist-drives
    • First observedlist-excel-worksheets
    • First observedlist-folder-files
    • First observedlist-mail-attachments
    • First observedlist-mail-child-folders
    • First observedlist-mail-folder-messages
    • First observedlist-mail-folders
    • First observedlist-mail-messages
    • First observedlist-onenote-notebook-sections
    • First observedlist-onenote-notebooks
    • First observedlist-onenote-section-pages
    • First observedlist-outlook-contacts
    • First observedlist-plan-tasks
    • First observedlist-planner-tasks
    • First observedlist-specific-calendar-events
    • First observedlist-todo-task-lists
    • First observedlist-todo-tasks
    • First observedlogin
    • First observedlogout
    • First observedmove-mail-message
    • First observedremove-account
    • First observedreply-all-mail-message
    • First observedreply-mail-message
    • First observedsearch-query
    • First observedselect-account
    • First observedsend-draft-message
    • First observedsend-mail
    • First observedsort-excel-range
    • First observedupdate-calendar-event
    • First observedupdate-mail-message
    • First observedupdate-outlook-contact
    • First observedupdate-planner-task
    • First observedupdate-planner-task-details
    • First observedupdate-specific-calendar-event
    • First observedupdate-todo-task
    • First observedupload-file-content
    • First observedverify-login

TDQS

C2.7/5.0

Scored across 78 tools

Disambiguation3/5

Tools are generally distinct by resource and action, but there is significant overlap in email operations (e.g., create-reply-draft vs. reply-mail-message) and calendar events (e.g., create-calendar-event vs. create-specific-calendar-event), which could cause confusion. Descriptions help clarify, but the sheer number of similar tools increases ambiguity.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., create-calendar-event, delete-mail-attachment), with clear actions and resources. Minor deviations exist (e.g., login, logout, search-query are less structured), but overall naming is predictable and readable across the set.

Tool Count2/5

With 78 tools, the count is excessive for a single server, making it overwhelming and difficult to navigate. While Microsoft 365 is a broad domain, this many tools suggests poor scoping, likely leading to agent confusion and inefficiency in tool selection.

Completeness5/5

The tool set provides comprehensive coverage across Microsoft 365 services (e.g., Mail, Calendar, OneDrive, Planner, To-Do), including full CRUD operations, authentication, and specialized actions like search and file management. No obvious gaps are present for the domain's core workflows.

Related MCP Connectors