Skip to main content
Glama
kharonx
by kharonx

Microsoft 365 Reporting MCP — v1.0

Enterprise MCP server through which ChatGPT, Claude, and other MCP-compatible AI clients get controlled access to Microsoft 365 information sources (Outlook, Calendar, Teams, meeting transcripts, OneNote, SharePoint, OneDrive, Loop, Search, Users).

Principle: read broadly, write narrowly. A broad READ layer within the signed-in user's actual M365 permissions; the only WRITE capability is Outlook email sending (draft / send / reply / forward), and every actual send is gated by a separate confirm=true requirement.

Architecture

ChatGPT / Claude / MCP kliens
        │  MCP over HTTPS (Streamable HTTP) + OAuth bearer token
        ▼
┌──────────────────────────────┐
│  m365-reporting-mcp          │   Tool allowlist (86 tool, 11 WRITE = csak mail)
│  · JWT validálás (Entra)     │   Nincs generikus graph-request / $batch passthrough
│  · On-Behalf-Of tokencsere   │   Audit log (JSONL, tartalom nélkül)
│  · Pagination + 429 retry    │   Forráskövetés (_source blokk minden objektumon)
│  · Admin dashboard (/admin)  │
└──────────────┬───────────────┘
               │  OAuth 2.0 OBO → delegated Graph token
               ▼
    Microsoft Entra ID → Microsoft Graph API (v1.0)

The server never uses app-only permissions: every Graph call runs on behalf of the signed-in user (delegated), so the MCP cannot bypass existing M365 access rules.

Related MCP server: Microsoft Graph MCP Server

Entra ID app registration

  1. Create an App registration (single tenant).

  2. Expose an API: Application ID URI = api://<CLIENT_ID>, scope: access_as_user. Set accessTokenAcceptedVersion to 2 (manifest).

  3. API permissions (Microsoft Graph, Delegated) — the full list is in the docs/tool-matrix.md appendix; in summary:

    • READ: Mail.Read, Mail.Read.Shared, Calendars.Read, Chat.Read, Team.ReadBasic.All, Channel.ReadBasic.All, ChannelMessage.Read.All, TeamMember.Read.All, OnlineMeetings.Read, OnlineMeetingTranscript.Read.All, OnlineMeetingRecording.Read.All, OnlineMeetingArtifact.Read.All, Notes.Read, Notes.Read.All, Sites.Read.All, Files.Read, Files.Read.All, People.Read, User.Read, User.ReadBasic.All, User.Read.All

    • WRITE (mail only): Mail.ReadWrite, Mail.Send, Mail.ReadWrite.Shared, Mail.Send.Shared

    • Admin consent is required for the .All scopes.

  4. For HTTP mode: Certificates & secrets → client secret.

  5. For stdio/dev mode: Authentication → "Allow public client flows" = Yes (device code).

Note to spec point 11: Sites.Selected exists as an application permission; in a delegated (user-context) model, site-level narrowing is provided by the user's own SharePoint permissions — the MCP uses delegated Sites.Read.All, which alone does not give access to a site the user cannot otherwise reach.

Installation and execution

npm install
cp .env.example .env      # töltsd ki: TENANT_ID, CLIENT_ID, CLIENT_SECRET, BASE_URL, ADMIN_KEY
npm run build

# Webapp (remote MCP) mód:
npm run start:http

# Lokális/dev (stdio, device code login):
npm run login             # egyszeri bejelentkezés, token cache-elve
npm start

Endpoints in HTTP mode:

URL

Description

POST /mcp

MCP endpoint (stateless Streamable HTTP), bearer token required

GET /.well-known/oauth-protected-resource

MCP OAuth resource metadata → points to the built-in OAuth proxy

GET /.well-known/oauth-authorization-server

OAuth AS metadata (the proxy)

POST /register, GET /authorize, POST /token, GET /auth/callback

Built-in OAuth proxy in front of Entra ID

GET /admin

Admin dashboard: Settings / Tools / Log (X-Admin-Key)

GET /healthz

Health check

In HTTP mode the server starts even without Entra data: initial configuration can be done on the /admin interface (Tenant ID, Client ID, Client Secret, Base URL, connection test) — the save takes effect immediately, and the settings are stored in data/settings.json and override .env values.

Connecting ChatGPT (and other MCP clients)

The server has a built-in OAuth proxy in front of Entra ID, because the ChatGPT connector expects dynamic client registration per RFC 7591, which Entra does not support. The proxy provides a complete OAuth 2.1 interface (DCR + PKCE) to the client and uses the single registered enterprise app toward Entra; the access token issued to the client is the one Entra itself issues for api://<CLIENT_ID>, so the /mcp validation and the OBO Graph exchange are unchanged — all calls run on behalf of the signed-in user.

Connecting from ChatGPT:

  1. In the Entra app's Authentication section, add as Web redirect URI: https://<BASE_URL>/auth/callback (the exact value is shown on the admin Settings tab).

  2. ChatGPT → Settings → Connectors → join a new Connector, URL: https://<BASE_URL>/mcp.

  3. The login shown is the corporate Entra ID login — the user signs in with their own account and only receives their own M365 permissions.

Claude Desktop / Claude Code: the same URL as remote MCP, or locally in stdio mode (claude large.


Note: The source contains `claude mcp add m365-reporting -- node dist/index.js --stdio`; I must preserve this verbatim.

## Security layer (spec 19-20)

* **No** generic `graph_request(method, url, body)` tool, and **no** `$batch` passthrough — only the 86 allowlisted endpoints are available.
* **No** Calendar/Teams/Files/Sites/OneNote/User/Group write, and no delete anywhere.
* Creating a draft is not sending permission: any send/reply/forward requires `confirm=true`, and the tool description instructs the AI to first ask for explicit user approval.
* With the environment variable `READ_ONLY=true`, all write tools can be disabled; with `ENABLED_TOOLSETS`, the toolset-level profile can be narrowed down (e.g. `mail,calendar,meetings`).

## Audit (spec 21)

Every call is logged in JSONL (`logs/audit-YYYY-MM-DD.jsonl`): `timestamp, user, session, tool, operation (READ, WRITE|, resourceType, graphEndpoint, httpMethod, is, success, durationMs`, and for WRITE `sender, recipients, cc, subject, messageId, result`. **actual content (body, transcript, document, token) is never logged.**

## Fault tolerance (spec 22–23)

* HTTP 429/503/504: automatic retry, honoring `Retry-Afterer` (max. 4 attempts);
* `@odata.nextLink` pagination on all list tools (`max MaxSize` param, marked truncation);
* expired token / permission denied / missing resource: an error message that is user-understandable and actionable;
* file download with size limit (`MAX_MAX_DOWNLOAD_BYTES`), DOCX/XLSX/PPTX/PDF/TXT/CSV → text extraction, other binary → base64.

## Tool matrix (dev appendix)

The complete *MCP tool → Graph endpoint → HTTP method → delegated permission → READ / WRITE → enabled* matrix as a generated document: [docs/tool-matrix.md](docs/tool-matrix.md) (`npm run matrix` updates it from the `src/tools/endpoints/*.ts` definitions).

## Loop-Loop adapter limitations (spec 13)

There is no generally available dedicated Graph Loop workspace API, so the Loop adapter **does not invent fictitious endpoints**: it addresses `.loop`/`.fluid` components via the Search API and SharePoint/OneDrive drives. Loop workspaces stored in SharePoint Embedded storage containers are not necessarily available via delegated Graph — the tool description signals this to the AI, so that the limitation is also pointed out to the user.

## Acceptance test (spec 26)

From a connected client, in natural language: *"Examine my past 30 days' email, calendar, Teams conversations, and meeting transcripts… Make me a summary about project X… Turn it into an email, then after separate approval, send it."* — the expected tool chain is: `get-calendar-view` → `find-online-meeting-by-join-url` → `list-meeting-transcripts` → `get-meeting-transcripts-content` + `list-mail-messages` + `list-chat-messages` + `search-onenote-pages` + `search-m365` → `create-draft-email` → (user approval) → `send-draft-email` tool.

Available Tools

103 tools
create-calendar-eventcreate-calendar-eventA

CREATE a calendar event in the signed-in user's default calendar (optionally as a Teams online meeting; attendees get invitations). WRITE operation - requires confirm=true after explicit user approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesEnd datetime, ISO local format
bodyNoEvent description (body)
startYesStart datetime, ISO local format e.g. 2026-09-01T10:00:00
confirmYesSafety gate: must be explicitly true to execute this WRITE operation. Ask the user for approval before setting it.
subjectYesEvent subject/title
bodyTypeNoBody content type (default HTML)
locationNoLocation display name
timeZoneNoIANA time zone (default Europe/Budapest)
attendeesNoAttendee email addresses (required attendees)
isOnlineMeetingNoCreate it as a Teams online meeting

TDQS

A4/5.0
Behavior4/5

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

Annotations already convey the safety profile (readOnlyHint=false, idempotentHint=false), and the description adds genuinely useful behavioral context beyond them: the confirm=true approval gate, the side effect that attendees get invitations, and the optional Teams meeting behavior. It doesn't contradict any annotation — 'WRITE operation' aligns with readOnlyHint=false. It stops short of disclosing duplicate-event behavior on repeated calls or undo/reversibility, but the core side effects an agent must know before invoking are present.

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 dense sentences with no filler. The core purpose is front-loaded ('CREATE a calendar event'), followed by the key option and side effect, then the critical safety requirement. Every clause earns its place, and the WRITE/confirm warning is positioned last as a gate the agent must respect before executing.

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 10-parameter write operation with side effects and no output schema, the description covers the essentials: action, scope, options, invitation side effect, and the approval gate. The main gaps are the absence of return-value/response context (no output schema exists to fill that) and no guidance about what happens with non-default calendars or how to later modify the created event. These are secondary to the operational behavior, which is well covered.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 10 parameters including the confirm safety gate and timeZone default. The description reinforces the confirm requirement and references attendees ('attendees get invitations') and isOnlineMeeting ('optionally as a Teams online meeting'), but adds no semantic detail beyond what the schema already provides. Per the rubric, a 3 is the correct baseline when the schema carries the parameter-documentation burden.

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

Purpose5/5

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

The description uses a specific verb (CREATE), a specific resource (calendar event), and a precise scope (signed-in user's default calendar). The verb alone distinguishes it from the sibling read tools (get-calendar-view, list-calendar-events), the update tool (update-calendar-event), and the response tool (respond-to-calendar-event), none of which create events. The Teams-online-meeting option and invitation side effect further pin down exactly what this operation does.

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

Usage Guidelines3/5

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

The intended usage is clear by implication: when the user asks to create a calendar event, this is the tool. However, the description provides no explicit when-to-use versus alternatives guidance, no exclusions, and no mention that modifying an existing event should go to update-calendar-event or that finding a free slot should use find-meeting-times. The safety-gate note ('requires confirm=true') is procedural, not usage-routing guidance.

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

create-draft-emailcreate-draft-emailA

Create a DRAFT email in the signed-in user's Drafts folder. Does NOT send anything - use send-draft-email (with explicit user approval) to send it.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCC email addresses
toYesRecipient email addresses
bccNoBCC email addresses
bodyYesEmail body content
subjectYesEmail subject
bodyTypeNoBody content type (default HTML)
importanceNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate mutation (readOnlyHint=false, idempotentHint=false), but the description adds context beyond them: it clarifies the draft is stored in the Drafts folder and that no sending occurs. It also notes the approval requirement for the follow-up send action. 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.

Conciseness5/5

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

Two sentences, no filler. The most important behavioral fact ('Does NOT send anything') is front-loaded, and the alternative is named in the second sentence. Every part earns its place.

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 schema covers params well and annotations exist, the description is largely complete for selection and invocation. It could mention what the tool returns (e.g., draft ID) since there is no output schema, but that gap is minor for a create-draft action.

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 86%, so the schema already documents most parameters. The description adds no parameter-specific meaning, but that's acceptable since the schema carries the burden. It does not need to compensate for gaps, so the baseline 3 applies.

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 states a specific verb and resource: 'Create a DRAFT email in the signed-in user's Drafts folder.' It clearly differentiates from the sibling send-draft-email by emphasizing it does NOT send anything. This is a precise, distinguishable purpose.

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 tells the agent when not to use this tool ('Does NOT send anything') and names the alternative ('use send-draft-email') with a condition ('with explicit user approval'). This is direct, actionable routing guidance.

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

create-shared-mailbox-draftcreate-shared-mailbox-draftA

Create a DRAFT in a shared mailbox. Does NOT send.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCC email addresses
toYesRecipient email addresses
bccNoBCC email addresses
bodyYesEmail body content
mailboxYesShared mailbox address
subjectYesEmail subject
bodyTypeNoBody content type (default HTML)
importanceNo

TDQS

A4/5.0
Behavior4/5

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

The description adds a critical behavioral guarantee beyond the annotations: a draft is created but no email is transmitted. The annotations already indicate this is a write operation, but the explicit 'Does NOT send' clarifies the main side-effect boundary an agent needs to know.

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

Conciseness5/5

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

Two short sentences with no wasted words. The action is front-loaded, and the crucial caveat that it does not send immediately follows.

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

Completeness4/5

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

For a simple draft-creation tool, the description plus schema cover the required inputs and the key outcome. It could mention how to later send the draft or what the response contains, but with no output schema those are not essential for correct invocation.

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

Parameters3/5

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

The schema already provides descriptions for 88% of parameters, including bodyType defaults and required fields. The description itself adds no parameter-level detail, so it does not need to compensate for schema coverage.

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

Purpose5/5

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

The description states a specific verb ('Create'), a specific resource ('DRAFT in a shared mailbox'), and explicitly distinguishes the action from sending ('Does NOT send'). This clearly separates it from sibling tools like send-shared-mailbox-mail and create-draft-email.

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 the right use case—composing a draft in a shared mailbox—but does not explicitly name alternatives or state when not to use it. An agent must infer that sending tools and personal-mailbox draft tools are different based on the name and the 'Does NOT send' caveat.

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

download-drive-itemdownload-drive-itemA
Read-onlyIdempotent

Download a file's content from SharePoint. DOCX/XLSX/PPTX/PDF/TXT/CSV are converted to text; other binaries come back as base64. Size-limited by MAX_DOWNLOAD_BYTES.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesValue for itemId
driveIdYesValue for driveId
fileNameNoFile name (helps pick the right text extractor)

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already mark the operation as read-only, idempotent, and non-destructive, and the description adds valuable runtime behavior: specific file types are converted to text, other binaries are returned as base64, and the result is size-limited by MAX_DOWNLOAD_BYTES. This meaningfully goes beyond the annotation hints, though the exact behavior when the size limit is exceeded is not disclosed.

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

Conciseness5/5

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

The description is three short sentences with the core action front-loaded, followed by the conversion behavior and the size limit. Every clause adds distinct information with no redundant wording, making it easy for an agent to scan.

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

Completeness3/5

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

With no output schema, the description reasonably explains the main return forms (text vs base64) and the size limit, which is essential for deciding how to handle the result. It leaves gaps around the exact response envelope, error conditions, and what happens when MAX_DOWNLOAD_BYTES is exceeded. These are material omissions for a tool that returns arbitrary file content.

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 describes all three parameters, so the baseline is 3. The description adds meaningful context for the optional fileName parameter by mentioning text extraction, which explains why the filename helps pick the right extractor. It does not, however, add real semantic value for driveId or itemId beyond the schema's generic 'Value for driveId/itemId' text.

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 action ('Download a file's content from SharePoint') and distinguishes the tool from nearby siblings like get-drive-item by specifying that the output is either converted text or base64-encoded binary. However, it does not explicitly differentiate from download-my-drive-item, leaving some ambiguity about which drive context applies.

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 given for when to use this tool versus the closely related siblings download-my-drive-item, get-drive-item, or get-my-drive-item-download-url. The phrase 'from SharePoint' implies a SharePoint drive as opposed to a personal OneDrive, but the description does not state that contrast or mention any alternative tools.

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

download-my-drive-itemdownload-my-drive-itemA
Read-onlyIdempotent

Download a OneDrive file's content. DOCX/XLSX/PPTX/PDF/TXT/CSV are converted to text; other binaries come back as base64. Size-limited by MAX_DOWNLOAD_BYTES.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesValue for itemId
fileNameNoFile name (helps pick the right text extractor)

TDQS

A3.6/5.0
Behavior4/5

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

Description adds meaningful details beyond readOnly/idempotent annotations: Office/PDF/TXT/CSV become text, other binaries are base64, and there is a size limit. This helps the agent predict return shape and failure mode.

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 with no fluff; action first, then format and limit behavior.

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?

Covers the main thing no output schema would tell the agent: representation of returned content and size bound. It doesn't state the actual MAX_DOWNLOAD_BYTES value or behavior over the limit, but for a two-parameter downloader this is near-complete.

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

Parameters3/5

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

Schema already documents both parameters, so baseline is 3. The description reinforces fileName's role in extractor selection but adds little beyond what schema states, and itemId remains generic.

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 the action (download), resource (OneDrive file content), and gives concrete output-format behavior. It separates itself from metadata-oriented siblings like get-my-drive-item, although it does not explicitly differentiate from download-drive-item or get-my-drive-item-download-url.

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 when-to-use or alternative-routing guidance. The agent must infer from the name/title that this is the content-fetching counterpart to get-my-drive-item-download-url and download-drive-item.

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

find-meeting-timesfind-meeting-timesA
Read-onlyIdempotent

Suggest meeting time slots that work for the signed-in user and the given attendees (findMeetingTimes), based on free/busy data and working hours.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeZoneNoIANA time zone (default Europe/Budapest)
attendeesYesAttendee email addresses
windowEndYesSearch window end, ISO local format
windowStartYesSearch window start, ISO local format
maxCandidatesNoMax suggestions to return (default 10)
durationMinutesYesMeeting length in minutes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to repeat that this is safe. It adds useful context about the computation being based on free/busy data and working hours, but it does not disclose edge behavior such as returning no suggestions or how candidate limits apply.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that names the action, scope, and data source with no filler or redundancy. Every word contributes useful meaning.

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 moderately complex read-only tool with all parameters documented in the schema and no nested objects, the description gives enough about what the tool computes and for whom. It does not spell out the return shape because there is no output schema, but the result ('time slots') is readily inferable from the description and title.

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 itself fully documents all six parameters. The description adds no parameter-specific meaning beyond reiterating the concept of attendees and meeting times, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb ('Suggest'), a concrete resource (meeting time slots), and the data basis (free/busy data and working hours). It is clearly distinct from calendar-reading tools, though it does not explicitly differentiate itself from the sibling get-people-availability, which could plausibly be mistaken for an alternative.

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

Usage Guidelines3/5

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

Usage is implied: the agent should use this when it needs to propose workable meeting slots for a signed-in user and attendees. However, there is no explicit when-to-use, when-not-to-use, or comparison to alternatives such as get-people-availability for raw availability retrieval.

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

find-online-meeting-by-join-urlfind-online-meeting-by-join-urlA
Read-onlyIdempotent

Resolve an onlineMeeting from a Teams join URL (calendar event -> onlineMeeting.joinUrl -> this tool). This is how a calendar event is connected to its transcripts/recordings/attendance.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
joinWebUrlYesThe Teams meeting join URL (event.onlineMeeting.joinUrl)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already carry the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), lowering the bar for additional disclosure. The description adds genuine behavioral context beyond annotations by explaining the resolution semantics and the tool's role as the connection point between calendar events and meeting artifacts, so an agent can predict what the result enables.

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 with zero waste: the first states the core action and its input chain, the second explains the downstream payoff. The resolving action is front-loaded ahead of the workflow context, and every clause earns its place.

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 lookup tool with a single required parameter, a fully documented schema, and annotations covering safety and idempotency, the description addresses purpose, trigger condition, and downstream usage. The only gaps are the lack of an output schema and no stated behavior for the not-found case, which are minor given the explicit pointer toward transcript/recording/attendance siblings.

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

Parameters3/5

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

Schema description coverage is 100% and each parameter (joinWebUrl, cursor, maxItems) already carries rich schema-level documentation, including pagination semantics. The description only reinforces that joinWebUrl originates from event.onlineMeeting.joinUrl rather than adding new parameter-level detail, so the high-coverage baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb-resource pair — 'Resolve an onlineMeeting from a Teams join URL' — and reinforces it with a precise pipeline notation (calendar event -> onlineMeeting.joinUrl -> this tool). This distinguishes it from siblings like get-online-meeting or list-calendar-events by establishing the exact input and where that input comes from.

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 conveys a clear trigger scenario: when an agent has a calendar event's onlineMeeting.joinUrl and needs to reach transcripts/recordings/attendance, this is the required bridge tool. It does not, however, name explicit exclusions or contrast alternatives such as get-online-meeting for cases where a meeting ID is already available.

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

forward-mailforward-mailA

Forward a message as the signed-in user. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesForward recipients
commentNoComment prepended to the forwarded message
confirmYesSafety gate: must be explicitly true to execute this WRITE operation. Ask the user for approval before setting it.
messageIdYesValue for messageId

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate this is a write operation (readOnlyHint=false), non-idempotent, and not destructive. The description adds 'Requires confirm=true,' but this detail is already present in the confirm parameter schema, so it adds little 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 two short clauses with no filler. The core action and the critical confirm requirement are both 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?

The description, combined with the fully annotated schema, is enough to invoke the tool correctly. It could be improved by explicitly naming the shared-mailbox alternative or noting that forwarding sends an email, but these are not blocking gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description's mention of confirm=true reinforces a key requirement, but it does not add semantic meaning beyond what the parameter descriptions already provide.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Forward a message' scoped to 'as the signed-in user.' This clearly distinguishes it from the sibling forward-shared-mailbox-mail, which targets shared mailbox contexts.

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 'as the signed-in user' qualifier provides clear context for when this tool applies, implicitly excluding shared-mailbox forwarding. However, it does not explicitly name alternatives or state 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.

forward-shared-mailbox-mailforward-shared-mailbox-mailA

Forward a shared-mailbox message. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesForward recipients
commentNoComment prepended to the forwarded message
confirmYesSafety gate: must be explicitly true to execute this WRITE operation. Ask the user for approval before setting it.
mailboxYesShared mailbox address
messageIdYesValue for messageId

TDQS

A3.5/5.0
Behavior3/5

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

Annotations establish that this is a non-read-only, non-idempotent write operation. The description adds the key behavioral requirement that 'confirm=true' is mandatory, reinforcing the safety gate. It does not disclose more about side effects, such as sending emails to recipients or confirmation flow details, but it is not misleading and 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.

Conciseness5/5

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

The description is extremely concise: one action sentence and one mandatory confirmation requirement. It is front-loaded and contains no filler; every word contributes to understanding the tool's core purpose and critical safety gate.

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 tool is a straightforward write operation with a complete schema and clear annotations. The description conveys the essential action and confirmation requirement, but it omits any guidance on when to choose this over the normal forward-mail sibling and does not mention expected outcomes or return behavior. It is minimally viable but not rich 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 all five parameters already have descriptive text. The description adds no further parameter-level meaning. Baseline 3 is appropriate because the schema carries the semantic weight.

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

Purpose5/5

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

The description states a specific action and resource: 'Forward a shared-mailbox message.' This clearly distinguishes it from sibling tools like forward-mail and reply-shared-mailbox-mail by the shared-mailbox scope. The 'Requires confirm=true' addition reinforces that this is an executable write action.

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 does not explicitly state when to use this tool versus alternatives such as forward-mail or reply-shared-mailbox-mail. The shared-mailbox wording implies the target domain, but no exclusions, conditions, or alternative routing are provided.

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

get-calendarget-calendarA
Read-onlyIdempotent

Get a single calendar by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
calendarIdYesValue for calendarId

TDQS

A3.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is established. The description adds no behavioral context beyond what annotations and schema provide, such as return shape, not-found behavior, or required scopes.

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

Conciseness5/5

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

The description is a single clear sentence with no filler. It front-loads the action and object, making the tool's purpose immediately scannable.

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?

For a simple, one-parameter, read-only getter annotated as idempotent and non-destructive, this description is sufficient. No output schema exists, but the expected behavior—return a calendar by id—is fully implied by the description and name.

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 single required parameter calendarId is documented. The description does not enrich the parameter beyond the schema, but with full schema coverage, the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Get'), a specific resource ('a single calendar'), and a clear selection mechanism ('by id'). This distinguishes it from list-calendars and get-calendar-view, making its purpose immediately clear.

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

Usage Guidelines3/5

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

The description implies usage when you already have a calendarId and need a single calendar, but it does not explicitly mention when to use it over list-calendars or how to obtain the id. The guidance is adequate but leaves the relationship to sibling tools to inference.

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

get-calendar-eventget-calendar-eventA
Read-onlyIdempotent

Get a single event with full body/description, attendees, online meeting info and recurrence.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectNoComma separated list of properties to return (OData $select)
eventIdYesValue for eventId

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds useful context about what fields are returned, but it does not disclose potential behaviors such as not-found handling, authentication needs, or how the optional $select parameter affects the response.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that conveys the tool's purpose and key return fields with no filler. Every word contributes meaningful information.

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

Completeness4/5

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

For a simple read operation with one required parameter, full schema coverage, and strong annotations, the description is largely complete. It communicates the scope and the important content of the response, though it could mention error behavior or response shape more explicitly since no output schema is provided.

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

Parameters3/5

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

Schema description coverage is 100%, and both eventId and select already have clear schema descriptions. The description does not add significant parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: get a single event. It also enumerates the distinguishing content fields (body/description, attendees, online meeting info, recurrence), which clearly separates it from sibling list tools like list-calendar-events and 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 Guidelines3/5

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

Usage is implied: an agent should call this when it needs one specific event's full details. However, there is no explicit guidance contrasting it with list-calendar-events or get-calendar-view, and no when-to-use or when-not-to-use instructions are provided.

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

get-calendar-viewget-calendar-viewA
Read-onlyIdempotent

PRIMARY meeting-lookup tool: list all calendar events (including recurring occurrences) within a time range. Requires timeRange or from/to. Returns organizer, participants, start/end, location, onlineMeeting join URL, recurrence.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of explicit time range (ISO date or datetime)
fromNoStart of explicit time range (ISO date or datetime, overrides timeRange)
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
selectNoComma separated list of properties to return (OData $select)
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
timeRangeNoNamed time range applied on start/dateTime

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds useful behavioral context: it expands recurring occurrences, requires a time range, and enumerates returned fields including onlineMeeting join URL and recurrence. 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.

Conciseness5/5

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

Two tight sentences with no filler. The core purpose is front-loaded, the requirement is stated, and the return payload summary earns its place.

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?

There is no output schema, so the description carries the burden of describing return values, which it does by listing organizer, participants, start/end, location, join URL, and recurrence. Pagination and filtering are left to the schema, which fully documents them, so nothing critical is missing.

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%, so the baseline is 3. The description adds a meaningful constraint not captured by the schema's optional fields: 'Requires timeRange or from/to.' It also indicates which fields are important in the response, aiding parameter selection.

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 states a specific verb+resource: 'list all calendar events' within a time range, and positions itself as the 'PRIMARY meeting-lookup tool.' It also calls out recurring occurrences, which distinguishes it from event-specific siblings like get-calendar-event or list-calendar-events.

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?

Clear context is given: use as the primary meeting lookup tool and provide timeRange or from/to. It does not explicitly contrast with list-calendar-events or get-calendar-event, but the 'PRIMARY' framing and requirement statement provide adequate routing guidance.

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

get-channel-messageget-channel-messageB
Read-onlyIdempotent

Get a single channel message.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamIdYesValue for teamId
channelIdYesValue for channelId
messageIdYesValue for messageId

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the read-only nature is fully covered. The description adds no behavioral context beyond the resource being retrieved, but it also does not contradict 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, straightforward sentence with no unnecessary words. It is appropriately sized for a simple get-by-ID operation.

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

Completeness4/5

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

For a simple get operation with three required string parameters and rich annotations, the description is mostly sufficient. It does not describe the returned message payload since there is no output schema, but the tool name and siblings make the expected result reasonably clear.

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 has 100% description coverage for parameters, but each description is the tautological 'Value for teamId/channelId/messageId', providing no real semantics. The tool description adds minimal meaning by implying these identify a channel message, but it does not clarify relationships or message ID format.

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 'Get a single channel message' states a specific verb and resource, clearly identifying that this tool retrieves one channel message. It is distinguishable from siblings like list-channel-messages or get-chat-message by the 'channel message' resource, though it does not explicitly contrast with any sibling.

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 list-channel-messages, get-chat-message, or list-channel-message-replies. The word 'single' weakly implies retrieving one item rather than listing, but no usage context or alternative routing is given.

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

get-chatget-chatA
Read-onlyIdempotent

Get a single chat including its members.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesValue for chatId

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish that this is a read-only, idempotent, non-destructive operation, so the safety profile is clear. The description adds that the response includes chat members, which is non-obvious and valuable given there is no output schema.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word adds meaning: get is the action, single chat is the resource, and including its members clarifies the response scope.

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 one-parameter read-only getter, the description plus annotations cover the core calling requirements. The main missing item is more explicit guidance about choosing this over list-chats, but the description adequately conveys what the tool does and what the response includes.

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

Parameters3/5

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

The input schema already documents chatId with a description and minLength, and schema description coverage is 100%. The tool description adds no additional semantic detail about the parameter, so the baseline score of 3 applies.

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

Purpose5/5

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

The description states a specific verb ('Get'), a specific resource ('a single chat'), and the scope ('including its members'). This clearly distinguishes it from list-chats, which returns multiple chats, and get-chat-message, which targets a message within a chat.

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 phrase 'single chat' implies this tool should be used when the agent already has a chatId and needs one chat, rather than listing chats. However, it does not explicitly name alternatives or state when not to use this tool, leaving the routing decision mostly to inference.

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

get-chat-messageget-chat-messageB
Read-onlyIdempotent

Get a single chat message.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesValue for chatId
messageIdYesValue for messageId

TDQS

B3.1/5.0
Behavior2/5

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

The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds no additional behavioral context beyond the word 'Get', such as return format, error behavior, or relationship to other message operations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or repetition. Every word earns its place, and it is appropriately sized for a simple getter.

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

Completeness3/5

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

For a read-only getter with two required parameters and no output schema, the description is minimally adequate but incomplete. It provides no return-value expectations, no clarification of how chatId and messageId relate, and no mention of the sibling list operation, which would help an agent use it confidently.

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 even though the description itself adds no parameter detail. The schema's parameter descriptions ('Value for chatId', 'Value for messageId') are weak, but the description does not make them worse or introduce confusion.

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 specific verb and resource ('Get a single chat message') and the word 'single' distinguishes it from list-oriented siblings like list-chat-messages. However, it does not explicitly differentiate the chat resource from channel messages, leaving some ambiguity among get-chat-message and get-channel-message.

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?

There is no guidance on when to use this tool versus alternatives. The description does not mention list-chat-messages for browsing or get-channel-message for channel contexts, nor does it state any prerequisites or exclusions.

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

get-driveget-driveA
Read-onlyIdempotent

Get a drive (document library) by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
driveIdYesValue for driveId

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare this as a safe, read-only, idempotent operation, so the description carries little additional burden. It adds a small clarifying detail by calling drive a 'document library', but no further behavioral traits such as authorization requirements, scope limitations, or response characteristics are disclosed.

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

Conciseness5/5

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

The description is a single focused sentence with no filler or redundancy. It front-loads the action and resource, and the parenthetical clarification is concise and useful.

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?

Given the low complexity, single required parameter with full schema coverage, and annotations that establish the safe read-only nature, the description is complete enough for an agent to correctly select and invoke this tool. No output schema exists, so return-value explanation is not expected here.

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% for the single driveId parameter, so the schema already documents it. The description does not add any semantic detail beyond restating that the operation is by id, which is appropriate for the high coverage baseline.

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 'Get a drive (document library) by id' uses a specific verb ('Get') and a specific resource ('drive'), and clarifies the domain term with 'document library'. The 'by id' qualifier distinguishes it from related tools like get-my-drive, which retrieves the current user's drive without an id.

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 does not state when to use this tool versus alternatives. It implies usage when a driveId is available, but it does not mention get-my-drive, list-site-drives, or other sibling tools, nor does it explain why a user would prefer this tool over them.

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

get-drive-itemget-drive-itemA
Read-onlyIdempotent

Get file/folder metadata (includes @microsoft.graph.downloadUrl for files).

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesValue for itemId
driveIdYesValue for driveId

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds useful behavioral context by specifying that file metadata includes the @microsoft.graph.downloadUrl, while folder metadata does not. This goes beyond the structured annotations without contradicting them.

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 focused sentence with no filler. It front-loads the core purpose ('Get file/folder metadata') and immediately provides the most useful output-related nuance (downloadUrl for files).

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 get-by-ID tool with strong read-only annotations, the description is minimally viable. However, there is no output schema, and the description does not explain what metadata fields are included or how this tool relates to drive-specific siblings, leaving some contextual ambiguity.

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 driveId and itemId both documented, so the schema already carries the parameter meaning. The tool description adds no additional parameter-level context, which aligns with the baseline score of 3.

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

Purpose4/5

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

The description clearly states a specific action and resource: 'Get file/folder metadata.' It also adds a distinguishing detail by mentioning the @microsoft.graph.downloadUrl for files. However, it does not explicitly contrast itself with siblings like get-my-drive-item or download-drive-item, so differentiation is mostly implicit.

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 gives no explicit guidance on when to use this tool versus alternatives such as download-drive-item, get-my-drive-item, or list-drive-* tools. The word 'metadata' implies it is for metadata rather than content, but no direct when-to-use 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-loop-component-contentget-loop-component-contentA
Read-onlyIdempotent

Download a Loop component's raw content by driveId + itemId (from search-loop-components hit resource.parentReference). Content is Fluid/JSON-like text.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesValue for itemId
driveIdYesValue for driveId
fileNameNoFile name, e.g. board.loop (helps text decoding)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior, so the description adds useful context beyond them: the content is raw Fluid/JSON-like text and filename helps with text decoding. This is meaningful behavioral detail for an agent deciding whether and how to invoke the tool.

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

Conciseness5/5

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

Two sentences carry the full meaning with no redundancy. The most important selection information (what and how) is front-loaded, and the content format note is placed at the end without bloating the description.

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?

For a simple read-only download tool with strong annotations, the description covers the essential agent needs: what is returned, how to identify the target, and where the identifiers come from. No output schema exists, but the content-format hint compensates for that gap.

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 already describes all parameters, so the baseline is 3. The description adds valuable semantic provenance by explaining that driveId and itemId come from a search-loop-components hit's resource.parentReference, which is beyond the schema's simple 'Value for driveId' phrasing.

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

Purpose5/5

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

The description states a specific verb ('Download'), a specific resource ('Loop component's raw content'), and the exact identifiers needed, while distinguishing this from generic drive downloads by noting the Fluid/JSON-like text format and its origin in search-loop-components. It clearly separates this tool from sibling tools like download-drive-item or get-drive-item.

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

Usage Guidelines4/5

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

It gives clear context for when to use this tool: after search-loop-components, using driveId and itemId from resource.parentReference. It does not explicitly name alternatives or state when not to use it, but the source-specific guidance is strong enough to route an agent correctly.

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

get-mail-attachment-contentget-mail-attachment-contentA
Read-onlyIdempotent

Download an attachment and return its content. DOCX/XLSX/PPTX/PDF/TXT/CSV are converted to text; other binaries (images) come back as base64.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNameNoAttachment file name (helps pick the right text extractor)
messageIdYesValue for messageId
attachmentIdYesValue for attachmentId

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already mark the tool as read-only, idempotent, and non-destructive, lowering the bar. The description adds genuinely useful behavior beyond those annotations: document formats are converted to text, while other binaries like images are returned as base64. It does not address limits or error behavior for unsupported types, but the core transformation behavior is well disclosed.

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

Conciseness5/5

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

Two sentences with no filler. The core action is front-loaded, and the format-conversion behavior is the only additional detail, which is exactly what an agent needs to anticipate the output shape.

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 read-only fetch tool with no output schema, the description sufficiently covers what will be returned: text for common document formats and base64 for other binaries. It could be more complete by specifying behavior for unsupported file types and clarifying that this applies to regular mail rather than shared mailboxes, but the essential call flow is understandable.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already describes each parameter, including fileName's role in selecting the text extractor. The description enriches that context by explaining the text-vs-base64 conversion, but messageId and attachmentId remain only generically described as 'Value for ...' in the schema and are not expanded here.

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

Purpose4/5

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

The description clearly states the action ('Download an attachment') and the resource ('attachment'), and it describes the output as the attachment's content. It adds helpful format detail (text vs base64) but does not explicitly distinguish this from the sibling get-shared-mailbox-attachment-content; differentiation relies on the tool names.

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 usage is implied: after listing attachments, call this tool to fetch content. However, the description gives no explicit when-to-use/when-not-to-use guidance and does not mention the shared-mailbox sibling, so an agent must infer which tool applies rather than being told.

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

get-mail-messageget-mail-messageB
Read-onlyIdempotent

Get a single message including its full body.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectNoComma separated list of properties to return (OData $select)
messageIdYesValue for messageId

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds a useful return-related detail ('including its full body'), but it does not describe default fields, body format, or other response behaviors. It adds some value beyond annotations but is not rich.

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

Conciseness5/5

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

The description is a single sentence with no filler or redundant information. It front-loads the action and resource, then immediately adds the key detail about the full body. Every word earns its place.

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 low-complexity tool with fully documented parameters and strong safety annotations, the description is nearly sufficient for an agent to invoke the call correctly. It could be more complete by explicitly noting how to obtain a messageId or that shared mailbox messages should go through the dedicated shared-mailbox sibling, but those are inferable from the schema and sibling names.

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 provides complete descriptions for both parameters (100% coverage), including the OData $select behavior for 'select' and the role of 'messageId'. The description adds little parameter-level meaning beyond confirming that the full body is included, so the baseline score of 3 is appropriate.

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

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 the resource ('a single message'), and adds a meaningful detail that the full body is included. It is clear, but it does not explicitly differentiate from closely related siblings such as get-shared-mailbox-message 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 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-mail-messages or get-shared-mailbox-message. There is also no mention of prerequisites, such as obtaining a messageId from a list call, or exclusions for shared mailbox scenarios. The usage context is only implicit.

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

get-meeting-transcript-contentget-meeting-transcript-contentA
Read-onlyIdempotent

Get the FULL TEXT of a meeting transcript in WebVTT format (speaker, timestamp, text preserved). Use for meeting summaries, decisions and commitments extraction.

ParametersJSON Schema
NameRequiredDescriptionDefault
meetingIdYesValue for meetingId
transcriptIdYesValue for transcriptId

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the operation is read-only, idempotent, and non-destructive. The description adds meaningful behavioral context by specifying the output format (WebVTT) and that the full transcript text with speaker and timestamps is returned, which goes beyond the annotation-only information.

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 focused sentences with no filler. The first sentence front-loads the core behavior and output format, and the second provides practical usage guidance, making every word useful.

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

Completeness4/5

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

For a simple read-only tool with two required string parameters and no output schema, the description covers the key return type and intended use. It could mention vague prerequisites, such as needing to first retrieve transcriptId from a list operation, but this is not a critical gap given the tool's simplicity.

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 even though the tool description adds no parameter-level details. However, the schema descriptions are only placeholder-level ('Value for meetingId'), so the description does not meaningfully enrich parameter semantics for an agent.

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

Purpose5/5

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

The description states a clear verb and resource: it gets the full text of a meeting transcript. It also distinguishes itself from list-style siblings by emphasizing that speaker, timestamp, and text are preserved in WebVTT format, so the agent can tell this is a content-fetching tool rather than a metadata-listing one.

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 explicitly states intended use cases: meeting summaries, decisions extraction, and commitments extraction. It does not name alternative tools or give exclusion criteria, but the use-case guidance is clear enough for an agent to decide when this tool is relevant.

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

get-my-driveget-my-driveA
Read-onlyIdempotent

Get the signed-in user's OneDrive (drive id, quota, owner).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds context about what data is returned (drive id, quota, owner), which is useful, but does not disclose failure modes, prerequisites, or response structure. 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.

Conciseness5/5

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

A single, front-loaded sentence that conveys the resource, scope, and key output fields without any filler. Every word earns its place.

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

Completeness4/5

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

For a simple, zero-parameter, read-only tool with rich annotations, the description is largely complete. It lists the key returned fields since there is no output schema. A minor gap is not explaining the exact response shape or edge case (e.g., user without OneDrive), but the core information an agent needs to select and invoke the tool is present.

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 is trivially complete. The description appropriately focuses on return values rather than parameters, matching the baseline for a parameterless tool.

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 names a specific verb ('Get'), a specific resource ('the signed-in user's OneDrive'), and the key returned data ('drive id, quota, owner'). This clearly distinguishes it from siblings like 'get-drive' and 'list-site-drives' by scoping it to the current user's default drive.

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 phrase 'signed-in user's OneDrive' implies when to use this tool—when you need the current user's default drive—but it does not explicitly state when not to use it or mention alternatives like 'get-drive' for a specific drive ID. Usage guidance is implied rather than stated.

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

get-my-drive-itemget-my-drive-itemB
Read-onlyIdempotent

Get OneDrive file/folder metadata (includes @microsoft.graph.downloadUrl for files).

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesValue for itemId

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds one useful behavioral detail beyond annotations: the downloadUrl inclusion for files. It does not however describe folder behavior, response shape, or any limitations, which would be valuable without an output schema.

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

Conciseness5/5

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

The description is a single sentence that gets straight to the point, with no wasted words. It is front-loaded with the action and resource.

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 one-parameter, read-only metadata retrieval tool with rich annotations, the description is mostly complete. It names the resource and a key return detail (downloadUrl). The main gaps are lack of guidance on itemId provenance and no explicit distinction from the download-focused sibling tools, but the low complexity keeps this from being a major deficiency.

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 a single itemId parameter, so the schema carries most of the parameter burden. The description does not explain how itemId should be obtained or how file versus folder behavior affects the call, but it also does not need to compensate heavily given the simple input schema.

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

Purpose4/5

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

The description states a specific verb ('Get'), a clear resource ('OneDrive file/folder metadata'), and adds a useful distinguishing detail about @microsoft.graph.downloadUrl for files. It is clear on its own, though it does not explicitly contrast with sibling tools like get-drive-item or get-my-drive-item-download-url.

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 closely related siblings such as get-drive-item, download-my-drive-item, get-my-drive-item-download-url, or the list-my-drive-* tools. The description does not state any selection criteria or exclusions.

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

get-my-drive-item-download-urlget-my-drive-item-download-urlA
Read-onlyIdempotent

Get a short-lived direct download URL for a OneDrive file without fetching its content.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesValue for itemId

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds genuinely new behavioral context: the URL is short-lived and direct, and no content is fetched. It does not quantify 'short-lived' or mention auth requirements, but it provides useful traits 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.

Conciseness5/5

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

A single, well-constructed sentence that front-loads the key result (short-lived direct download URL) and immediately contrasts with content fetching. There is no wasted wording or repetition.

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 one-parameter tool with no output schema, the description explains the essential return value (a URL) and its transient nature. It does not specify how short-lived the URL is or whether additional authentication is needed, but the tool is simple enough that these are minor 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 coverage is 100% for the single itemId parameter, so the baseline is 3. The description adds little about the parameter itself beyond associating it with a OneDrive file. The schema's own description 'Value for itemId' is also minimal, so the description does not meaningfully compensate or expand.

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 names a specific verb and resource: it gets a short-lived direct download URL for a OneDrive file. It also explicitly distinguishes itself from content-fetching tools by adding 'without fetching its content', which separates it from siblings like download-my-drive-item.

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 clearly implies when to use this tool: when a URL is needed rather than the file content. It does not explicitly name an alternative tool, but the 'without fetching its content' phrasing sets the boundary against download tools. This is clear context, though not an explicit when-not/alternative statement.

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

get-onenote-notebookget-onenote-notebookA
Read-onlyIdempotent

Get a single OneNote notebook.

ParametersJSON Schema
NameRequiredDescriptionDefault
notebookIdYesValue for notebookId

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is clear. The description adds no behavioral context beyond the operation itself, such as returned data shape, error behavior, or what 'notebook' includes.

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

Conciseness5/5

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

The description is a single clear sentence with no filler or redundant phrasing. It front-loads the core action and resource effectively.

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

Completeness4/5

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

For a simple one-parameter, read-only tool, the description plus annotations and schema are largely sufficient to invoke it correctly. The only notable gap is the lack of any statement about what the returned notebook object contains, especially since no output schema is provided.

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

Parameters3/5

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

Schema description coverage is 100%, and the only parameter, notebookId, is documented directly in the schema. The description does not add extra meaning about the parameter format, source, or lookup semantics, so the baseline score of 3 applies.

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 'Get a single OneNote notebook' uses a specific verb and resource and notes the singleton scope, which differentiates it from the sibling list-onenote-notebooks. An agent can immediately tell this is a fetch-by-id operation rather than a listing operation.

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 gives no explicit guidance about when to prefer this tool over alternatives such as list-onenote-notebooks. The word 'single' weakly implies use when a specific notebookId is known, but no conditions, exclusions, or alternative tool names are mentioned.

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

get-onenote-pageget-onenote-pageA
Read-onlyIdempotent

Get metadata of a OneNote page. Use get-onenote-page-content for the actual body.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesValue for pageId

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful context about the metadata-only scope and directs the agent to the content tool, but it does not disclose what metadata fields are returned or whether any rate limits or auth requirements apply. This matches the baseline expected when annotations cover safety.

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

Conciseness5/5

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

Two short sentences each earn their place: one states the tool's purpose, the other names the sibling for content retrieval. There is no repetition or filler.

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

Completeness4/5

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

For a simple single-parameter metadata read tool, the description is mostly complete: it says what is returned at a high level, points to the content counterpart, and annotations cover safety. It would be stronger if it enumerated the metadata fields or noted the absence of an output schema, but an agent can likely infer the scope correctly from 'metadata.'

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?

There is only one parameter, pageId, and the schema description covers it 100% with 'Value for pageId.' The description adds no additional meaning about the parameter beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

Description uses a specific verb and resource: 'Get metadata of a OneNote page.' It also distinguishes itself from get-onenote-page-content by explicitly stating that the content tool is for the body. An agent can immediately tell this tool is for metadata only.

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 clearly indicates that this tool is appropriate for metadata and that get-onenote-page-content should be used for the actual body. It stops short of explicitly discussing when to prefer this over other OneNote listing or search tools, but it gives clear contextual guidance for the most likely alternative.

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

get-onenote-page-contentget-onenote-page-contentA
Read-onlyIdempotent

Get the FULL HTML content of a OneNote page (the actual note body, not just metadata).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesValue for pageId

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds that the return value is full HTML content for the actual note body, which is not visible in the schema. This is sufficient behavioral context for a safe read operation.

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

Conciseness5/5

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

The description is a single sentence with no filler. It front-loads the action and resource, then adds the useful contrast with metadata. Every clause earns its place.

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?

For a one-parameter, read-only tool with strong annotations and no output schema, the description is complete. An agent knows what the tool returns, what it does not return, and what input is required. No crucial operational details are missing at this simplicity 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?

Schema description coverage is 100%, so the baseline is 3. The description adds no extra meaning about pageId, and the schema's 'Value for pageId' is tautological, but the single required parameter is self-evident from its name and the tool's purpose.

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 names a specific verb and resource: get the FULL HTML content of a OneNote page. It explicitly contrasts with metadata, which separates it from sibling tools like get-onenote-page. There is no ambiguity about what this tool does.

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

Usage Guidelines4/5

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

The phrase 'not just metadata' tells an agent this tool is for retrieving the actual note body, implying the alternative is a metadata-focused OneNote page tool. It does not explicitly name the sibling tool or address the site-scoped variant, but it provides enough context for the common selection decision.

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

get-online-meetingget-online-meetingA
Read-onlyIdempotent

Get an online meeting by its onlineMeeting id (subject, organizer, participants, join URL, start/end).

ParametersJSON Schema
NameRequiredDescriptionDefault
meetingIdYesValue for meetingId

TDQS

A4/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds which meeting fields are included, but it does not disclose behavioral details like not-found behavior or response shape. Given the annotations, this is adequate but not exceptional.

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, focused sentence with no redundant phrasing. The verb, resource, lookup key, and expected fields are all front-loaded, 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.

Completeness4/5

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

For a simple read-only get-by-id tool with one clearly described parameter, the description is nearly complete. It covers the lookup key and returned fields. It could be improved by explicitly noting that it returns a single meeting object or by directing users to find-online-meeting-by-join-url when only a join URL is available.

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%, but the schema's description for meetingId is just 'Value for meetingId', which is uninformative. The tool description adds real meaning by clarifying that the parameter is an onlineMeeting id and indicating the data associated with it.

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

Purpose5/5

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

The description uses a specific verb ('Get'), names the exact resource ('online meeting'), and specifies the lookup key ('onlineMeeting id'). It also lists the key fields returned, making the tool's purpose unmistakable and distinguishing it from sibling tools like find-online-meeting-by-join-url.

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 should be used when the caller already has an onlineMeeting id, which is clear context. However, it does not explicitly mention alternatives such as find-online-meeting-by-join-url or state 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.

get-people-availabilityget-people-availabilityA
Read-onlyIdempotent

Free/busy availability (getSchedule) of one or more colleagues' calendars for a time window. Returns availabilityView (0=free, 1=tentative, 2=busy, 3=out of office) and busy time slots - event details stay hidden unless their calendar is shared with the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesWindow end, ISO local format
startYesWindow start, ISO local format e.g. 2026-09-01T08:00:00
emailsYesEmail addresses of the people (their calendars) to check
timeZoneNoIANA time zone (default Europe/Budapest)
intervalMinutesNoavailabilityView slot size in minutes (default 30)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds meaningful behavioral context by specifying that it returns availabilityView values and busy time slots, and by disclosing the privacy behavior around event details. It does not contradict 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?

Two tight sentences deliver a specific purpose, the exact return format with enum meanings, and the key privacy limitation. Every clause earns its place and the most important information is front-loaded.

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?

For a read-only availability tool with no output schema, the description gives enough return semantics through the availabilityView values and busy time slots. It also covers the critical edge case of hidden event details, making the tool's behavior predictable for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds only general context such as 'time window' for start/end and 'colleagues' for emails, but does not meaningfully enrich parameter-specific semantics beyond the schema.

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 identifies the operation as retrieving free/busy availability (getSchedule) for one or more colleagues' calendars over a time window. It also distinguishes itself from event-detail tools by noting that event details stay hidden unless the calendar is shared.

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 context for when to use the tool: when checking colleagues' availability for a time window. It also conveys an implicit when-not-to-use condition by noting event details are hidden unless the calendar is shared, though it does not explicitly name alternative sibling tools.

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

get-shared-mailbox-attachment-contentget-shared-mailbox-attachment-contentA
Read-onlyIdempotent

Download an attachment from a shared-mailbox message (text extraction like get-mail-attachment-content).

ParametersJSON Schema
NameRequiredDescriptionDefault
mailboxYesShared mailbox address
fileNameNoAttachment file name (helps pick the right text extractor)
messageIdYesValue for messageId
attachmentIdYesValue for attachmentId

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, and non-destructive behavior, so the description's additional disclosure that this performs text extraction rather than raw binary download is valuable context. The hint that fileName helps pick the right text extractor further clarifies behavioral expectations.

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

Conciseness5/5

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

The description is a single sentence that front-loads the core action and resource, with a useful parenthetical reference to the sibling tool. There is no wasted or redundant wording.

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

Completeness4/5

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

The tool is simple, all required parameters are well-documented in the schema, and annotations cover the safety profile. The description sufficiently conveys the extraction behavior. It does not explain the relationship with get-mail-attachment-content in depth, but for this read-only, fully-schema-covered tool the core information is present.

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% parameter documentation, so the schema already carries most of the semantic burden. The description adds little beyond the parenthetical text-extraction behavior, and the fileName parameter's role is already stated in the schema.

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

Purpose4/5

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

The description clearly states the action (download an attachment) and the resource scope (shared-mailbox message), which distinguishes it from get-mail-attachment-content. However, the parenthetical merely says 'like get-mail-attachment-content' rather than explicitly explaining how the two tools differ, so differentiation is good but not fully spelled out.

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 should be used for shared-mailbox attachments and that it performs text extraction much like get-mail-attachment-content. It does not explicitly state when to choose this tool over its close sibling, nor does it mention a prerequisite such as first listing attachments to obtain attachmentId.

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

get-shared-mailbox-messageget-shared-mailbox-messageA
Read-onlyIdempotent

Get a single shared-mailbox message including its full body.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectNoComma separated list of properties to return (OData $select)
mailboxYesShared mailbox address
messageIdYesValue for messageId

TDQS

A4/5.0
Behavior4/5

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

Annotations already communicate read-only, idempotent, non-destructive behavior, so the bar is lower. The description adds a meaningful behavioral detail beyond the schema: the response includes the full message body, which is useful in the absence of an output schema.

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

Conciseness5/5

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

A single sentence with no redundant phrasing; the key facts (single message, shared mailbox, full body) are front-loaded and every word earns its place.

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

Completeness4/5

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

For a simple single-get tool with full schema coverage and safety annotations, the description is sufficient to invoke it correctly. The only minor gap is the absence of routing guidance versus get-mail-message and the list variant, but the tool name and sibling list 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 description coverage is 100%, so mailbox, messageId, and select are already documented. The description adds no parameter-level detail beyond the resource type, so the baseline of 3 applies.

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?

Describes a specific operation: retrieving one message from a shared mailbox, and notes it includes the full body. The 'single' qualifier and 'shared-mailbox' resource clearly distinguish it from list-shared-mailbox-messages and get-mail-message.

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 phrase 'single shared-mailbox message' implies the tool is for a targeted fetch rather than listing, so usage is inferable. However, no alternatives or exclusion conditions are mentioned (e.g., use get-mail-message for user mailboxes or list-shared-mailbox-messages for multiple messages).

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

get-siteget-siteA
Read-onlyIdempotent

Get a SharePoint site by id (or 'hostname:/sites/path' form).

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesValue for siteId

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is established. The description adds a useful detail about accepted identifier forms, but does not disclose other behavioral traits such as error behavior, result shape, or relationship to openWorldHint.

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, tightly scoped sentence that front-loads the verb and resource, then clarifies the input format. There is no filler or redundant restatement of the tool name.

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 one-parameter read-only tool with rich annotations, the description is nearly complete: it states what the tool does and how the identifier is expressed. The lack of an output schema is acceptable here, though a brief note about the returned site object could have made it fully self-contained.

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

Parameters4/5

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

The schema only describes siteId as 'Value for siteId', which is unhelpful. The description adds real semantic value by explaining that siteId can be either a plain id or a hostname:/sites/path form, going beyond what the schema alone provides.

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

Purpose4/5

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

The description clearly identifies the operation as retrieving a SharePoint site by identifier, using a specific verb and resource. It does not explicitly differentiate itself from sibling tools like search-sites or get-site-list, but the focused 'by id' wording makes the core purpose unambiguous.

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 the tool is appropriate when the caller already has a site id or a hostname:/sites/path reference. However, it offers no explicit guidance about when to prefer this over search-sites or other related site tools, and no exclusions or alternatives are mentioned.

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

get-site-listget-site-listA
Read-onlyIdempotent

Get a SharePoint list by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
listIdYesValue for listId
siteIdYesValue for siteId

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no additional behavioral context such as permission requirements, return shape, or pagination, but for a simple read operation the annotations carry most of the burden.

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 six-word sentence with no filler, redundant phrasing, or unnecessary detail. It front-loads the action and resource immediately.

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

Completeness4/5

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

For a simple read tool with two IDs, a non-destructive annotation set, and a single known resource, the description is largely sufficient. It could add a note about what is returned or how it differs from listing lists, but those are minor omissions for this level of 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?

Schema description coverage is 100%, so the parameters are at least documented. The description adds the shared semantic that both parameters together identify the target list, which is mildly useful, but it does not explain the relationship between siteId and listId or the expected format beyond the schema baseline.

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

Purpose5/5

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

The description states a clear verb ('Get'), a specific resource ('a SharePoint list'), and the identifying mechanism ('by id'). This distinguishes it from siblings like list-site-lists (enumerating lists) and get-site-list-item (getting an item within a list) without needing to inspect schemas.

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

Usage Guidelines3/5

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

Usage context is only implied: use this when you have a siteId and listId. There is no explicit guidance on when to prefer list-site-lists or get-site-list-item instead, and no exclusions or alternatives are named.

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

get-site-list-itemget-site-list-itemA
Read-onlyIdempotent

Get a single SharePoint list item including field values.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesValue for itemId
listIdYesValue for listId
siteIdYesValue for siteId

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already cover readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds the behavioral detail that field values are included in the result, which is useful in the absence of an output schema. 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.

Conciseness5/5

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

A single, front-loaded sentence that states the tool's core action without filler or redundancy. Every word contributes to meaning, and it is appropriately sized for a simple read operation.

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

Completeness4/5

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

For a simple read-only tool with clear parameter names and safety-bearing annotations, the description is largely sufficient. It specifies the return contains field values, though it does not detail response structure or explicitly route to list-based siblings. This is a minor gap given the tool's simplicity.

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 schema property descriptions are placeholder-like ('Value for itemId'), but the parameter names siteId, listId, and itemId are self-explanatory, and the description adds SharePoint item context. No additional semantic meaning is provided beyond that.

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

Purpose5/5

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

The description clearly states a specific verb ('Get') and a specific resource ('a single SharePoint list item'), and the qualifier 'single' distinguishes it from the sibling list-site-list-items. It is immediately understandable and not a tautology.

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

Usage Guidelines3/5

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

The description implies when to use it — when a single SharePoint list item is needed by ID — but it does not explicitly mention alternatives like list-site-list-items for multiple items or get-site-list for list metadata. Usage context is inferable, not stated.

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

get-site-onenote-page-contentget-site-onenote-page-contentA
Read-onlyIdempotent

Get the FULL HTML content of a SharePoint-hosted OneNote page.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesValue for pageId
siteIdYesSharePoint site id

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to repeat safety. It adds the useful behavioral detail that the response is full HTML content, but gives no further context on format, size, or output representation.

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 entire description is one short, front-loaded sentence with no filler. Every word adds signal: Get, FULL HTML content, SharePoint-hosted, OneNote page.

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 read-only, idempotent tool with two fully documented parameters and no output schema, the description covers the essential retrieval purpose and return type. It would be slightly stronger if it named the sibling for personal OneNote pages, but the SharePoint-hosted qualifier carries most of that burden.

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 the two required parameters. The description adds only the SharePoint-hosted context, which the siteId schema description already conveys; no additional parameter semantics are needed.

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

Purpose5/5

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

The description states a specific action ('Get'), exact resource ('OneNote page'), and scope ('SharePoint-hosted', 'FULL HTML content'). The qualifiers distinguish it from the sibling get-onenote-page-content without requiring the agent to infer from the name.

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 the tool is for SharePoint-hosted pages rather than personal OneDrive pages, but it never states when to choose it over get-onenote-page-content or other site-onenote siblings. No exclusions or alternative-selection guidance are provided.

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

get-teamget-teamB
Read-onlyIdempotent

Get a team's properties.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamIdYesValue for teamId

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already convey that this is read-only, idempotent, and non-destructive, so the description does not need to repeat that safety profile. It adds only the return scope ('properties') and stays consistent with the annotations, but it does not disclose error behavior, authorization needs, or response 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, direct sentence with no wasted words. It conveys the essential operation and resource in the minimum viable space.

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 tool is simple: one required parameter, no nested objects, and safety-relevant annotations are present, so an agent can invoke it correctly. Still, with no output schema, the description does not say what 'properties' will be returned or what happens when the teamId is invalid, and it gives no context about when to use this tool versus related team tools.

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 has 100% description coverage for its single parameter, so the baseline is met even though the tool description adds no parameter meaning. The schema's own 'Value for teamId' is tautological, and the description does not clarify where teamId comes from or what format it expects, but no additional descriptive burden is required due to the 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 ('Get') and the resource ('a team's properties'), so an agent can tell it deals with a single team's metadata rather than channels or messages. However, it does not explicitly differentiate itself from related siblings like list-joined-teams or get-team-channel.

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 gives no guidance on when to use get-team versus alternatives such as list-joined-teams for enumerating teams or get-team-channel for specific channel details. An agent must infer the intended usage from 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.

get-team-channelget-team-channelB
Read-onlyIdempotent

Get a single channel of a team.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamIdYesValue for teamId
channelIdYesValue for channelId

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already cover the safety profile with readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no further behavioral context such as error behavior, permissions, or whether the channel must belong to the current user's team.

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 one short, front-loaded sentence with no filler. Every word earns its place and the core action is immediately understandable.

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

Completeness4/5

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

For a simple read operation with two required, fully documented string parameters and strong annotations, the description is largely sufficient. It could explicitly state that the tool returns the channel object, but the verb and resource make the result fairly predictable.

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 teamId and channelId are already documented by the schema. The description's 'channel of a team' loosely maps to these parameters but contributes no additional semantic or format guidance.

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 ('Get') and resource ('single channel of a team'), and the word 'single' helps distinguish it from the sibling list-team-channels. However, it does not explicitly name or contrast any alternative 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?

No guidance is given about when to choose this tool over siblings such as list-team-channels, get-team, or get-channel-message. The intended use case is only implied by the resource name and parameter schema.

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

get-userget-userA
Read-onlyIdempotent

Get a user by object id or userPrincipalName (email).

ParametersJSON Schema
NameRequiredDescriptionDefault
selectNoComma separated list of properties to return (OData $select)
userIdOrUpnYesEntra object id or userPrincipalName, e.g. kiss.peter@ceg.hu

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false). The description does not add much behavioral context beyond identifier-based lookup, and it does not disclose return shape or error behavior, though the missing output schema makes that a moderate gap.

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

Conciseness5/5

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

A single, front-loaded sentence that conveys the core purpose with no unnecessary words. It earns its place entirely.

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

Completeness4/5

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

For a simple read-only lookup with complete parameter documentation and safety annotations, the description is mostly sufficient. It could mention the return shape, but the tool name and 'Get a user' make the outcome reasonably clear.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both userIdOrUpn and select. The description adds little beyond restating that the identifier can be an object id or UPN, which is already present in the schema.

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

Purpose5/5

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

The description states a clear, specific action: fetch a single user by object id or userPrincipalName. This makes it easy to distinguish from sibling lookup tools like list-users and search-users, which operate over collections or query terms.

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 the tool should be used when a known user identifier (object id or UPN) is available, but it does not explicitly contrast with list-users or search-users. The usage context is inferable rather than explicitly stated.

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

get-user-account-status-historyget-user-account-status-historyA
Read-onlyIdempotent

When was a user DISABLED (or re-enabled), by whom, with what result? Reads the Entra directory audit log (category UserManagement) for the given user and returns only the events that changed accountEnabled: 'Disable account' / 'Enable account' activities and 'Update user' events whose modifiedProperties contain AccountEnabled (true -> false = disabled). Other user updates are excluded. Newest first. RETENTION: Entra keeps directory audits 30 days (P1/P2; 7 days Free) - if the change is older the result is explicitly 'not available in audit log'; no date is estimated. Read-only; needs delegated AuditLog.Read.All + Directory.Read.All with admin consent and a reader role (Reports Reader / Security Reader / Global Reader).

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of explicit time range (ISO date or datetime)
fromNoStart of explicit time range (ISO date or datetime, overrides timeRange)
changeNoWhich state changes to return: disabled (true->false), enabled (false->true) or any (default)
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
timeRangeNoNamed time range applied on activityDateTime
userIdOrUpnYesEntra object id or userPrincipalName of the target user, e.g. kiss.peter@ceg.hu

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint, etc.), the description adds substantial behavioral detail: it reads a specific audit category, filters to only accountEnabled changes, returns newest first, states the 30-day/7-day retention with explicit 'not available' behavior for older changes, and lists required permissions. This far exceeds what annotations alone convey.

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 dense but every sentence adds value: the opening question frames the purpose, the middle details the exact audit events and retention, and the end covers permissions and read-only nature. No fluff or repetition of schema content; it is structured to front-load the core function.

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?

For a read-only query tool with rich annotations and a fully documented schema, the description covers all essential contextual aspects: what events are returned, what is excluded, ordering, retention limitations, and authorization requirements. Even without an output schema, it conveys the result shape conceptually ('by whom, with what result').

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents all seven parameters including enums and pagination. The description adds no parameter-specific semantics beyond the overall filtering behavior, so it stays at the baseline 3 without needing to compensate for undocumented parameters.

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

Purpose5/5

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

The description uses a specific verb and resource: it 'Reads the Entra directory audit log (category UserManagement) for the given user and returns only the events that changed accountEnabled'. It clearly names the activities ('Disable account'/'Enable account', 'Update user' events) and distinguishes itself from the more general sibling list-directory-audits by focusing solely on accountEnabled changes for one user.

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

Usage Guidelines4/5

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

The description gives strong context on what the tool does and its scope, including that 'Other user updates are excluded' and that it is user-specific. It does not explicitly name the alternative (list-directory-audits) or state when not to use it, but the clear scope and filtering semantics effectively imply the appropriate use case.

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

list-calendar-eventslist-calendar-eventsA
Read-onlyIdempotent

List events of the default calendar (series masters + single events). For time-ranged queries prefer get-calendar-view which expands recurrences.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
selectNoComma separated list of properties to return (OData $select)
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive. The description adds useful non-obvious behavior: this tool returns series masters and single events rather than expanded recurrences, and it is limited to the default calendar. It does not describe return shape, but the schema covers pagination semantics.

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 exactly two sentences with no filler. The core functionality is front-loaded, and the routing guidance is expressed in one compact clause.

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

Completeness4/5

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

The description plus fully documented schema provides enough for an agent to select and invoke the tool correctly: scope, recurrence behavior, and the key alternative are all covered. A small gap is the lack of any explicit statement about the response format, though the pagination-related parameters imply list semantics.

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?

All 5 parameters have detailed descriptions in the schema, so schema coverage is 100% and the baseline is 3. The description adds no parameter-specific detail, but none is needed because the schema already documents cursor, filter, select, orderby, and maxItems clearly.

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

Purpose5/5

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

The description states a specific verb and resource: 'List events of the default calendar', and further clarifies the scope with '(series masters + single events)'. It also distinguishes itself from the sibling get-calendar-view by noting that the sibling expands recurrences.

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

Usage Guidelines5/5

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

The description explicitly tells agents when to prefer an alternative: 'For time-ranged queries prefer get-calendar-view which expands recurrences.' This gives a clear when-not-to-use signal and names the relevant sibling tool.

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

list-calendarslist-calendarsB
Read-onlyIdempotent

List the signed-in user's calendars.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds the behavioral scope 'the signed-in user's calendars,' clarifying whose data is returned, which is beyond what annotations state. No additional behavioral detail (e.g., result freshness, defaults, or error behavior) is provided, but the lower bar for annotation-covered tools makes this adequate.

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?

A single sentence, 'List the signed-in user's calendars,' contains zero filler and front-loads the verb before the resource. The schema handles parameter documentation, so the description's brevity is appropriate rather than under-specified.

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 low-complexity read-only tool with zero required parameters and fully self-documenting schema, the description plus annotations cover everything needed to invoke it correctly. The absence of an output schema means the return shape of calendar objects is undocumented, and no tool-level mention of pagination exists (though it is well covered in the schema parameter descriptions), leaving minor 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%: both cursor and maxItems have detailed descriptions in the input schema, including the continuation-token semantics and the pagination behavior via @odata.nextLink. The tool description itself adds no parameter information, but the baseline of 3 applies since the schema carries the full burden and does so well.

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 specific verb ('List') and a specific resource ('the signed-in user's calendars'), making the core function immediately clear. The scope qualifier 'signed-in user's' distinguishes this from shared-mailbox or site-oriented tools, and 'calendars' (rather than events) separates it from list-calendar-events. However, it stops short of explicitly naming sibling tools it is not, so differentiation is implicit rather than stated.

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 the many calendar-related siblings such as get-calendar, get-calendar-view, list-calendar-events, or get-calendar-event. No exclusions or alternative routing are given, leaving an agent to infer selection purely from the tool name. Given the high ambiguity among sibling calendar tools, this is a notable gap.

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

list-channel-message-replieslist-channel-message-repliesA
Read-onlyIdempotent

List replies (thread) of a channel message.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
teamIdYesValue for teamId
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
channelIdYesValue for channelId
messageIdYesValue for messageId

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare the operation read-only, idempotent, and non-destructive, so the description does not need to repeat those traits. The description adds limited behavioral context beyond identifying replies as a thread; pagination semantics are described in the input schema rather than the description.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that clearly conveys the operation and target resource with no wasted words.

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 read-only list operation with fully documented parameters and clear annotations, the description plus schema is nearly complete. It lacks only an explicit statement about the response shape or how truncation behaves, though maxItems and cursor provide substantial pagination 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?

The input schema covers 100% of parameters, including detailed descriptions for cursor and maxItems. The description itself adds no parameter-level meaning, so the baseline score of 3 applies.

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

Purpose5/5

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

The description states the exact operation ('List') and the specific resource ('replies (thread) of a channel message'), making it clearly distinct from sibling tools like list-channel-messages or get-channel-message. Even without naming alternatives, an agent can infer what this tool targets.

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 action implies the use case: retrieve replies to a specific channel message. However, the description does not explicitly state when to prefer this tool over similar list/get message tools, nor does it mention any exclusions or alternatives.

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

list-channel-messageslist-channel-messagesA
Read-onlyIdempotent

List messages of a team channel, newest first (Graph does not support server-side filtering here; use search-m365 for keyword search).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
teamIdYesValue for teamId
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
channelIdYesValue for channelId

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already signal read-only and idempotent behavior, and the description adds value by stating the newest-first ordering and the important Graph limitation that server-side filtering is unsupported. This prevents the agent from expecting filter parameters or trying to use this tool for keyword queries.

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

Conciseness5/5

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

The description is a single front-loaded sentence with a parenthetical that provides the key caveat and routing to the alternative. There is no wasted text or repetition of schema content.

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

Completeness4/5

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

The description plus the well-documented maxItems/cursor parameters gives enough context to invoke the tool correctly, including ordering and truncation continuation. It does not describe the message return shape, but no output schema is present and the list semantics are reasonably clear from the wording.

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 carries the parameter documentation burden. The description does not add parameter-level details beyond the schema, which warrants the baseline score of 3.

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

Purpose5/5

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

The description uses a specific verb and resource ('List messages of a team channel') and adds the useful ordering detail 'newest first'. It also explicitly differentiates from the keyword-search sibling by naming search-m365, so an agent can identify what this tool is and is not for.

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

Usage Guidelines4/5

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

It clearly states when to use the tool (listing team-channel messages) and gives an explicit alternative for keyword search: 'use search-m365 for keyword search.' It does not enumerate exclusions against other siblings such as list-channel-message-replies, so it stops short of a full 5.

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

list-chat-messageslist-chat-messagesA
Read-onlyIdempotent

List messages of a chat, newest first. Supports a time range (lastModifiedDateTime filter). Keyword filtering must be done client-side or via search-m365 with entityTypes=["chatMessage"].

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of explicit time range (ISO date or datetime)
fromNoStart of explicit time range (ISO date or datetime, overrides timeRange)
chatIdYesValue for chatId
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
timeRangeNoNamed time range applied on lastModifiedDateTime

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral value beyond that: the newest-first ordering and, crucially, the disclosure that keyword filtering is not supported server-side — a real limitation an agent would otherwise discover only after a failed call.

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 with zero filler: the core action and ordering are front-loaded, followed by the time-range capability and the keyword-filter caveat. Every sentence earns its place.

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 read-only listing tool with full schema coverage and rich annotations, the description is nearly complete: it covers scope, ordering, filtering, and the biggest behavioral gotcha (no server-side keyword filtering). No output schema exists, and the schema's maxItems description already handles pagination semantics, so little is missing.

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 six parameters, including the from/to/timeRange semantics and cursor behavior. The description's mention of 'lastModifiedDateTime filter' largely restates what the schema's timeRange description already says, adding little parameter-level meaning beyond that baseline.

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 a specific verb and resource — 'List messages of a chat' — plus the ordering behavior 'newest first'. This distinguishes it from list-chats (lists chats themselves), get-chat-message (single message), and list-channel-messages (channel, not chat, messages), though it doesn't name those siblings explicitly.

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 the tool applies (listing chat messages with an optional time range) and explicitly routes keyword-filtering use cases away: 'Keyword filtering must be done client-side or via search-m365 with entityTypes=["chatMessage"]'. It could additionally point to get-chat-message for single-message retrieval, but the main cross-tool ambiguity is handled.

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

list-chatslist-chatsA
Read-onlyIdempotent

List the signed-in user's Teams chats (1:1, group, meeting chats).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
selectNoComma separated list of properties to return (OData $select)
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare the read-only, idempotent, non-destructive safety profile, so the bar is lower. The description adds useful scoping (signed-in user, chat types) but does not disclose behavioral details like ordering, truncation, or how the open-world result set behaves; those are partly covered by parameter docs.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word contributes to identifying the resource and scope, and the parenthetical chat types add precise value without bloating the text.

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 read-only list tool with five optional, well-documented parameters and comprehensive safety annotations, the description is nearly complete. It lacks an explicit statement of the return shape, but 'List' plus the resource specification is sufficient guidance, and pagination/filtering behavior is covered in the 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 100%, so the baseline is 3. The description itself adds no parameter-level information, but every parameter (cursor, filter, select, orderby, maxItems) is already well documented in the schema, so no gap exists.

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

Purpose5/5

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

The description uses a specific verb ('List'), a specific resource ('the signed-in user's Teams chats'), and enumerates the chat subtypes (1:1, group, meeting chats), making it clearly distinct from sibling tools like list-chat-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 Guidelines3/5

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

The description implies the usage scenario — enumerating the signed-in user's Teams chats — and the scope is clear, but it does not explicitly mention alternatives or when not to use this tool, such as using get-chat for a single chat or list-chat-messages for messages within a chat.

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

list-directory-auditslist-directory-auditsA
Read-onlyIdempotent

Entra directory audit log (who changed what, when): user/group/app changes, password resets, role assignments. Time filter on activityDateTime; $filter e.g. "category eq 'UserManagement' and activityDisplayName eq 'Update user'" or "targetResources/any(t:t/id eq '')". Retention: 30 days (P1/P2). Read-only; needs AuditLog.Read.All + Directory.Read.All (admin consent).

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of explicit time range (ISO date or datetime)
fromNoStart of explicit time range (ISO date or datetime, overrides timeRange)
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
timeRangeNoNamed time range applied on activityDateTime

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds meaningful behavioral context: the operation is read-only, requires specific admin-consented permissions (AuditLog.Read.All + Directory.Read.All), and only covers a 30-day retention period. This helps the agent set expectations about data availability and authorization.

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 dense but well-organized, front-loading the tool's purpose before moving to filter syntax, retention, and permissions. Every sentence adds useful information, and there is no fluff or repetition of schema content.

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?

For a read-only audit listing tool with seven optional parameters and no output schema, the description provides enough context to call it correctly: what the log contains, how to filter, the time field, retention limits, and required permissions. Pagination behavior is already covered in the input schema, so nothing essential is missing.

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?

Although schema description coverage is 100%, the description adds significant value by giving domain-specific $filter examples that correct the generic mail-oriented filter example in the schema. It also clarifies that timeRange/from/to apply to activityDateTime, giving the agent precise parameter semantics for audit queries.

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 identifies the resource as the Entra directory audit log and specifies exactly what it contains: who changed what and when, for users, groups, apps, password resets, and role assignments. This clearly distinguishes it from the sibling tools, none of which cover directory audit log retrieval.

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 concrete usage guidance: time filtering applies to activityDateTime and includes realistic $filter examples for category, activityDisplayName, and targetResources. It also states the retention window and required permissions. It does not name alternative tools to switch to, but no direct sibling alternative exists among the listed tools.

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

list-drive-folder-itemslist-drive-folder-itemsB
Read-onlyIdempotent

List files/folders inside a folder of a drive.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
itemIdYesValue for itemId
selectNoComma separated list of properties to return (OData $select)
driveIdYesValue for driveId
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

B3.4/5.0
Behavior2/5

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

Annotations already cover readOnlyHint, idempotentHint, and destructiveHint. The description adds no behavioral context beyond the basic operation, such as whether the listing is non-recursive, whether it returns metadata only, or how pagination/truncation behaves.

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

Conciseness5/5

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

The description is a single, tight sentence with no filler. It front-loads the verb and resource scope, making the tool's purpose immediately readable.

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 read-only listing tool with a fully documented schema and safety annotations, the description is mostly sufficient. However, it does not clarify whether the listing includes only immediate children or recursive contents, and it gives no orientation relative to sibling list/search tools.

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

Parameters3/5

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

Schema description coverage is 100%, and parameters like cursor, maxItems, filter, and select are already well-documented in the schema. The description contributes no additional parameter semantics, so the baseline score applies.

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

Purpose5/5

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

The description states an explicit verb ('List') and a specific resource ('files/folders inside a folder of a drive'). This clearly distinguishes it from sibling tools like list-drive-root-items, which list the root, and search-drive-items, which search across a drive.

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?

There is no guidance on when to use this tool versus alternatives such as list-drive-root-items, list-my-drive-folder-items, or search-drive-items. The description only states what the tool does and does not provide conditions, exclusions, or context for choosing it over siblings.

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

list-drive-root-itemslist-drive-root-itemsB
Read-onlyIdempotent

List files/folders in the root of a drive (document library).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
selectNoComma separated list of properties to return (OData $select)
driveIdYesValue for driveId
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds no further behavioral context such as truncation, continuation, non-recursive listing, or default ordering; it only restates the resource 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?

The description is a single concise sentence with no filler. The parenthetical '(document library)' earns its place by disambiguating the term 'drive' in the Microsoft Graph context.

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?

As a read-only list tool with well-documented parameters and informative annotations, the definition is minimally viable. However, it omits any mention of when to use this over sibling list tools, and with no output schema the agent receives no guidance on return shape or pagination beyond what the maxItems parameter description already states.

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 of 3 applies. The tool description itself adds no parameter-level meaning beyond what the schema already provides for driveId, cursor, filter, select, orderby, and maxItems.

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 specific verb ('List') and a specific resource ('files/folders in the root of a drive'), and clarifies that 'drive' means a document library. It is unambiguous, but it does not explicitly distinguish itself from sibling tools like list-drive-folder-items or list-my-drive-root-items, so differentiation relies mostly on 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?

The description gives no guidance on when to use this tool versus alternatives such as list-drive-folder-items or list-my-drive-root-items. There are no explicit conditions, exclusions, or references to sibling tools, leaving the agent to infer usage from the name alone.

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

list-event-attachmentslist-event-attachmentsA
Read-onlyIdempotent

List attachments of a calendar event (metadata).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
eventIdYesValue for eventId
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds only the metadata qualifier and no additional behavioral context such as pagination side effects or authorization needs, but it does not contradict 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, front-loaded sentence with no filler. It communicates the core action, resource, and metadata scope efficiently, letting schema and annotations carry the remaining detail.

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

Completeness4/5

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

For a simple read-only listing tool, the description plus schema and annotations cover invocation essentials: required eventId, pagination semantics, and safety characteristics. The only minor gap is the absence of explicit guidance on when to use this tool versus related resource-specific attachment tools, but that is not critical for correctness.

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

Parameters3/5

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

Schema description coverage is 100% and the parameters already include detailed descriptions, including pagination behavior via cursor and maxItems. The tool description adds no parameter-level information beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('List'), a specific resource ('attachments of a calendar event'), and adds the qualifier 'metadata' so the agent knows it returns metadata rather than content. This clearly distinguishes it from sibling tools like list-mail-attachments or get-mail-attachment-content.

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

Usage Guidelines3/5

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

The intended use is implied by the resource and metadata qualifier, but there is no explicit guidance about when to prefer this tool over alternatives or when not to use it. For example, it does not mention that attachment content retrieval would require a different tool, though no such sibling exists for calendar events.

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

list-joined-teamslist-joined-teamsA
Read-onlyIdempotent

List the Microsoft Teams teams the signed-in user is a member of.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A4/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description does not need to repeat them. The description adds the useful 'signed-in user' scoping behavior but does not disclose pagination behavior or response shape; with strong annotations, this is acceptable but not exceptional.

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, focused sentence with no filler or repetition. Every word contributes to understanding the tool's purpose and scope.

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

Completeness4/5

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

For a simple list operation with rich annotations and fully documented parameters, the description is mostly complete. It does not describe the return value format, but the verb 'List' makes the general response shape clear, and no output schema is available.

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

Parameters3/5

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

Schema description coverage is 100%, and both cursor and maxItems have detailed schema explanations. The description does not add parameter-level meaning, which is fine because the schema already carries the full burden.

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

Purpose5/5

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

The description uses a specific verb ('List') and a clear resource ('Microsoft Teams teams the signed-in user is a member of'), which precisely distinguishes this tool from siblings like get-team and list-team-channels. It is immediately obvious what the tool does and what scope it covers.

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 context: it is for listing the signed-in user's team memberships. It does not explicitly name alternatives or exclusion conditions, but the scope is unambiguous enough for an agent to know when to use it.

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

list-mail-attachmentslist-mail-attachmentsA
Read-onlyIdempotent

List attachments of a message (metadata only: name, contentType, size).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
messageIdYesValue for messageId

TDQS

A4.3/5.0
Behavior4/5

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

The description adds the behavioral trait that only metadata is returned, which is beyond the readOnly/openWorld/idempotent/destructive annotations. It does not contradict the annotations, and the annotations already cover the safety profile, so this additional scoping is valuable though not exhaustive.

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

Conciseness5/5

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

A single, front-loaded sentence states the verb, object, and return scope with no filler. Every word earns its place.

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?

For a list-only tool, the description plus schema and annotations cover the required messageId, optional pagination parameters, read-only behavior, and return fields (metadata only). Nothing essential is missing for an agent to call it 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 coverage is 100%, with all three parameters (messageId, cursor, maxItems) described in the input schema. The description adds no parameter-specific meaning beyond the schema, so a baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the specific action (List), resource (attachments of a message), and a crucial scoping detail (metadata only, with the exact fields returned). This distinguishes it from sibling tools like get-mail-attachment-content and list-event-attachments.

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 phrase 'metadata only: name, contentType, size' communicates the appropriate use case—listing attachment summaries without content—so an agent can infer when not to use this tool. However, it does not explicitly name the content-retrieval sibling (get-mail-attachment-content) or provide exclusion criteria, stopping short of a 5.

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

list-mail-child-folderslist-mail-child-foldersB
Read-onlyIdempotent

List child folders of a mail folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
folderIdYesMail folder id (from list-mail-folders)
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description's 'List' action is consistent with these. The description adds no behavioral detail beyond the annotations—it does not mention pagination, truncation, or scope of children—though these are partially covered by the parameter schema.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or repetition. It states the essential action and resource directly, earning its place despite being terse.

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

Completeness4/5

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

For a simple read-only listing tool with 100% schema coverage and safety annotations, the description is mostly complete. It could be improved by explicitly stating that only immediate child folders are returned and by referencing list-mail-folders as the source of folderId, but the schema and tool name cover most of this 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 parameters are fully documented in the schema. The tool description itself adds no parameter-level meaning, but the schema already explains folderId, cursor, and maxItems, so a baseline score 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 uses a specific verb ('List') and resource ('child folders of a mail folder'), making the tool's basic purpose clear. It implicitly distinguishes from siblings like list-mail-folders by emphasizing child folders, but it does not explicitly name that sibling or the boundary between them.

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 gives no guidance on when to use this tool versus list-mail-folders or list-shared-mailbox-folders. The required folderId and the phrase 'of a mail folder' imply the parent-folder context, but there is no explicit when-to-use or alternative routing.

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

list-mail-folder-messageslist-mail-folder-messagesA
Read-onlyIdempotent

List/search messages inside a specific mail folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of explicit time range (ISO date or datetime)
fromNoStart of explicit time range (ISO date or datetime, overrides timeRange)
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
searchNoFull-text search (KQL supported), e.g. 'from:kiss.peter@ceg.hu subject:"AI projekt" hasattachment:true'
selectNoComma separated list of properties to return (OData $select)
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
folderIdYesMail folder id
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
timeRangeNoNamed time range applied on receivedDateTime

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only that the tool supports both listing and searching, but does not disclose pagination behavior, cursor semantics, or OData/KQL filtering traits, which are left to the parameter schema.

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

Conciseness5/5

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

The description is a single sentence with no wasted words. Action and scope are front-loaded, allowing an agent to quickly understand the tool's purpose without digging through the schema.

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?

Despite a rich schema, the tool description is minimal for a 10-parameter operation. It omits the pagination contract, the full-text search and OData filter capabilities, and does not clarify how this tool differs from shared-mailbox or top-level mail listing siblings. The schema and annotations cover invocation details, but the description leaves selection ambiguity among closely related tools.

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

Parameters3/5

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

Schema description coverage is 100%, and every parameter carries a meaningful description. The tool description merely echoes 'search' capability that already exists in the search/filter parameters, adding no value beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states a clear action ('List/search') and a specific resource scope ('messages inside a specific mail folder'). This distinguishes it from broader siblings like list-mail-messages, which operate on the whole mailbox, and aligns with the required folderId parameter.

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 scope of 'specific mail folder' implies when to use it, but there is no explicit guidance contrasting it with alternatives such as list-mail-messages or list-shared-mailbox-folder-messages. An agent must infer the intended context rather than being told directly.

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

list-mail-folderslist-mail-foldersA
Read-onlyIdempotent

List top-level mail folders of the signed-in user's mailbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description's mention of 'List' aligns with read-only behavior but adds little behavioral detail beyond the purpose.

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

Conciseness5/5

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

A single, front-loaded sentence conveys the exact scope and resource with no filler. Every word earns its place.

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?

For a simple read-only list operation with rich annotations, detailed parameter schema, and clear scoping, the description is complete. An agent can select and invoke it 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?

Input schema has 100% parameter description coverage, clearly explaining cursor and maxItems including defaults, max values, and pagination behavior. The description itself adds no parameter-level information, so baseline 3 is appropriate.

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

Purpose5/5

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

Description specifies a clear verb ('List') and resource ('top-level mail folders of the signed-in user's mailbox'). Scoping to top-level and signed-in user distinguishes it from siblings like list-mail-child-folders and list-shared-mailbox-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?

The description clearly implies when to use it: for top-level folders in the signed-in user's own mailbox. It does not explicitly name alternatives or exclusion conditions, but the scope wording effectively separates it from shared-mailbox and child-folder tools.

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

list-mail-messageslist-mail-messagesA
Read-onlyIdempotent

List/search messages in the signed-in user's mailbox. Supports full-text KQL search (sender, recipient, cc, subject, keyword, attachment, read/unread, importance) and time ranges.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of explicit time range (ISO date or datetime)
fromNoStart of explicit time range (ISO date or datetime, overrides timeRange)
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
searchNoFull-text search (KQL supported), e.g. 'from:kiss.peter@ceg.hu subject:"AI projekt" hasattachment:true'
selectNoComma separated list of properties to return (OData $select)
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
timeRangeNoNamed time range applied on receivedDateTime

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that full-text KQL search and time ranges are supported, which is useful but not deeply behavioral. 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 focused sentence that front-loads the core action and resource, then names the key capabilities. Every word contributes value and there is no redundant filler.

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

Completeness4/5

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

For a moderately complex tool with nine parameters, the description plus a fully covered schema is largely sufficient. It does not describe the output shape, and there is no output schema, but the schema covers pagination via maxItems/cursor and the description clearly conveys the tool's scope. Minor gap: it does not mention that omitting all filters returns all messages.

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 documents all nine parameters thoroughly. The description adds high-level context about KQL and time ranges, but it mostly restates what the search and timeRange parameter descriptions already provide. This is the baseline for full schema coverage.

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

Purpose4/5

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

The description clearly states the verb-resource pair: list/search messages in the signed-in user's mailbox, and adds specific capabilities (KQL full-text search and time ranges). It does not explicitly contrast with sibling tools like list-mail-folder-messages or list-shared-mailbox-messages, but the 'signed-in user's mailbox' scope distinguishes it from shared-mailbox variants.

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

Usage Guidelines3/5

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

The description implies when to use the tool: for searching or listing messages in the signed-in user's mailbox with KQL or time-range filters. However, it gives no explicit guidance about alternatives such as list-mail-folder-messages for folder-scoped listing or get-mail-message for retrieving a single message, so the agent must infer the routing decision.

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

list-meeting-attendance-recordslist-meeting-attendance-recordsA
Read-onlyIdempotent

List attendance records (who joined, when, for how long) of an attendance report.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
reportIdYesValue for reportId
meetingIdYesValue for meetingId

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds useful behavioral context by specifying the kind of data returned—who joined, when, and for how long—which matters because there is no output schema.

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

Conciseness5/5

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

One compact sentence conveys purpose and key output semantics without redundancy. It is front-loaded with the verb and resource and contains no filler or repetition of the tool name.

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

Completeness4/5

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

For a simple read-only listing tool, the description plus a fully documented schema and strong annotations cover the essentials. It does not explicitly explain how to obtain meetingId/reportId or mention sibling alternatives, but the required inputs are obvious from the schema and the description provides enough output 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%, and the schema already documents all parameters including cursor and maxItems pagination behavior. The description adds no new parameter-level meaning beyond framing the records as belonging to an attendance report, so the baseline of 3 is appropriate.

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

Purpose5/5

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

Description states a specific verb ('List'), a resource ('attendance records'), and clarifies the scope ('of an attendance report') with useful output details (who joined, when, for how long). This distinguishes it from the sibling list-meeting-attendance-reports, which lists reports rather than the records inside a report.

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 phrase 'of an attendance report' implies that meetingId and reportId are needed and that the caller should already have an attendance report. However, there is no explicit guidance about when to choose this tool over list-meeting-attendance-reports or related meeting tools, so usage is mostly implied rather than stated.

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

list-meeting-attendance-reportslist-meeting-attendance-reportsC
Read-onlyIdempotent

List attendance reports of an online meeting.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
meetingIdYesValue for meetingId

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds no behavioral nuance—such as report scope, permission requirements, or truncation behavior—beyond what annotations and schema already provide. There is no contradiction.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It clearly states the verb and resource in the fewest possible characters.

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 no output schema and a nearly identical sibling tool, the description is too thin. It does not explain what an attendance report contains, how meetingId is obtained, or how these reports differ from list-meeting-attendance-records. Pagination details live in the schema, but the missing selection and return context makes this less than minimally complete.

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

Parameters3/5

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

The input schema covers 100% of parameters, and cursor and maxItems have detailed, actionable descriptions. The tool description itself adds no parameter meaning, but the high schema coverage keeps this at the baseline. The meetingId schema description is weak, but the description does not compensate for it.

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 names the operation ('List') and the resource ('attendance reports') scoped to an online meeting, so an agent can tell what the tool does. However, it does not differentiate this from the near-identical sibling list-meeting-attendance-records, stopping just short 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 Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, and no mention of alternatives such as list-meeting-attendance-records. The intended usage is only implied by the tool name and the phrase 'of an online meeting', not explicitly stated.

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

list-meeting-recordingslist-meeting-recordingsA
Read-onlyIdempotent

List recordings of an online meeting (metadata + content URL; the recording itself stays in OneDrive/SharePoint).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
meetingIdYesValue for meetingId

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), and the description adds value beyond them by disclosing that the tool returns only metadata plus a content URL, not the actual media — 'the recording itself stays in OneDrive/SharePoint.' This usefully sets expectations that no content download occurs. 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.

Conciseness5/5

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

A single, front-loaded sentence that names the action and resource first, then adds a compact parenthetical with the most decision-relevant detail (metadata + URL; content stays remote). No filler or redundancy.

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

Completeness4/5

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

For a simple read-only list operation with strong annotations and full schema coverage, the description is nearly complete: it states the resource, the output shape at a high level, and the remote-storage caveat. The main gap is the absence of an output schema and no detail on which metadata fields are returned, but the description carries enough for correct 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 three parameters (meetingId, cursor, maxItems) well documented in the schema itself, so the baseline of 3 applies. The description adds no parameter-level meaning beyond the schema — it only clarifies the output nature, not the inputs.

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

Purpose5/5

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

The description states a specific verb ('List'), resource ('recordings of an online meeting'), and what the result contains ('metadata + content URL'). It also disambiguates from the large sibling set: 'recordings' is distinct from list-meeting-transcripts, list-meeting-attendance-reports, and list-meeting-attendance-records, which cover other meeting artifacts.

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 intended use is implied clearly (when you need an online meeting's recording metadata), but there is no explicit when-to-use/when-not-to-use guidance or named alternative. Given the sibling list includes several other 'list-meeting-*' tools, explicit routing would help, though the resource noun provides decent implicit discrimination.

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

list-meeting-transcriptslist-meeting-transcriptsB
Read-onlyIdempotent

List transcripts available for an online meeting (metadata: id, created date).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
meetingIdYesValue for meetingId

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does state that only metadata (id, created date) is returned, which implies content is excluded, but it never explicitly says transcript content is not included, nor does it mention that the operation is read-only or how pagination/truncation behaves beyond what the schema already documents. This partial disclosure could mislead an agent into expecting full transcript text.

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

Conciseness5/5

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

The description is a single sentence that front-loads the action and resource, then quickly adds the key output detail. There is no redundant or filler content; every word earns its place.

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 listing tool, the description is mostly adequate and the schema covers parameters well. However, it lacks an explicit statement that only metadata is returned and that transcript content should be fetched via a sibling tool. This leaves the tool's role among the meeting-related siblings under-specified, though not critically incomplete.

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 fully documents all three parameters (meetingId, cursor, maxItems) with clear descriptions, including pagination semantics and defaults. Schema coverage is 100%, so the description adds no additional parameter-level meaning. Baseline 3 applies because the schema does the heavy lifting.

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

Purpose4/5

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

The description uses a specific verb ('List'), identifies the resource ('transcripts available for an online meeting'), and specifies the returned metadata (id, created date). It is clear on its own, but it does not explicitly differentiate from sibling tools such as get-meeting-transcript-content or list-meeting-recordings, so it stops short 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 Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. It does not mention that get-meeting-transcript-content should be used when the actual transcript text is needed, nor does it describe any exclusions or prerequisites. The agent must infer usage purely from the tool name and brief description.

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

list-my-drive-folder-itemslist-my-drive-folder-itemsB
Read-onlyIdempotent

List files/folders inside a OneDrive folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
itemIdYesValue for itemId
selectNoComma separated list of properties to return (OData $select)
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds a useful scoping clue—items must be inside a specific OneDrive folder—but does not disclose pagination/truncation behavior or the continuation semantics that the maxItems parameter description hints at. It is not misleading, but it adds limited behavioral context 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?

A single clear sentence with no wasted words. The action and resource are front-loaded, making the description easy to scan and understand.

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 input schema and annotations are rich, covering all parameters and the read-only/idempotent nature of the call. Still, the description alone leaves out important context: no mention of direct-child semantics, pagination behavior, or how this tool relates to nearby siblings. It is adequate for basic invocation but not fully complete.

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%, so the parameter descriptions already handle cursor, filter, select, orderby, and maxItems. The tool description adds value by clarifying that the required itemId refers to a OneDrive folder rather than an arbitrary item, which is meaningful because the schema's itemId description is merely 'Value for itemId'.

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 and resource: 'List files/folders inside a OneDrive folder.' It is clear and immediately understandable. However, it does not explicitly distinguish this tool from siblings like list-drive-folder-items or list-my-drive-root-items; the differentiation relies on the tool name rather than the description.

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 gives no guidance about when to use this tool versus alternatives such as list-my-drive-root-items, list-drive-folder-items, or search-my-drive. It simply restates the function without any exclusions, prerequisites, or routing cues, which is a significant gap given the large sibling list.

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

list-my-drive-root-itemslist-my-drive-root-itemsA
Read-onlyIdempotent

List files/folders in the root of the user's OneDrive.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
selectNoComma separated list of properties to return (OData $select)
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint), so the description does not need to restate that. It adds the useful context that the listing is scoped to the user's OneDrive root and includes both files and folders, though it does not describe return shape or pagination behavior. The schema covers pagination parameters, so this is acceptable.

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 concise sentence with no filler. It front-loads the action and resource, making it easy for an agent to scan and understand.

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

Completeness4/5

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

For a simple root-listing tool with fully described optional parameters and robust annotations, the description is mostly complete. It could be slightly richer by noting that subfolders require a different tool, but the core invocation information is sufficient.

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

Parameters3/5

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

All five parameters are already documented in the schema with 100% coverage, so the baseline of 3 applies. The description adds no parameter-specific guidance beyond the resource scope, which is fine but not additive.

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

Purpose5/5

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

The description states a specific verb ('List') and resource ('files/folders in the root of the user's OneDrive'), making the operation immediately clear. It is distinguishable from sibling tools like list-my-drive-folder-items because it explicitly scopes to the root.

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 given about when to choose this tool over related siblings such as list-my-drive-folder-items or list-drive-root-items. The name and description imply root-level listing, but no explicit selection criteria or exclusions are provided.

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

list-onenote-notebookslist-onenote-notebooksA
Read-onlyIdempotent

List the signed-in user's OneNote notebooks.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A3.8/5.0
Behavior3/5

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

The description is consistent with the annotations: 'List' aligns with readOnlyHint and destructiveHint being false. It adds the useful context that it operates on the signed-in user's notebooks, but does not disclose additional behavioral details such as pagination handling or empty-result behavior. Given the annotations already cover the safety profile, this is adequate but not rich.

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, complete, front-loaded sentence with no wasted words. It states exactly what the tool does and leaves parameter details to the schema, which is the appropriate division of labor.

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

Completeness4/5

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

For a simple read-only listing tool with fully documented parameters and clear scoping, the description is nearly complete. It could be enhanced by explicitly pointing to list-site-onenote-notebooks for site-scoped notebooks, but the scoping phrase already conveys the core distinction.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema fully documents all four parameters. The description adds no parameter-level meaning beyond what the schema already provides, warranting the baseline score of 3.

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

Purpose5/5

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

The description states a specific verb ('List') and a clear resource ('the signed-in user's OneNote notebooks'), immediately distinguishing it from sibling tools that list site-scoped notebooks or notebook contents. It is unambiguous and self-contained.

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 phrase 'signed-in user's' implies the intended scope and differentiates it from list-site-onenote-notebooks, but the description does not explicitly say when to use this tool versus alternatives or mention any exclusions. Usage guidance is present only implicitly through the scoping language.

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

list-onenote-notebook-section-groupslist-onenote-notebook-section-groupsA
Read-onlyIdempotent

List section groups of a OneNote notebook (sections nested in groups are NOT returned by list-onenote-notebook-sections).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
notebookIdYesValue for notebookId

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description only adds a scoping note about a sibling; it does not disclose this tool's own pagination behavior, output shape, or hierarchy details beyond the annotations, so the added behavioral value is modest.

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

Conciseness5/5

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

The description is a single sentence with a useful parenthetical that prevents a common tool-selection mistake. It is front-loaded with the core operation and contains no filler.

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

Completeness4/5

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

For a read-only list tool with fully documented parameters and rich annotations, the description is mostly complete. It differentiates from the most similar sibling and clearly scopes the resource. A minor gap is that it doesn't explicitly address nested section groups or relate to other OneNote hierarchy tools like list-onenote-section-group-sections, but the tool name and schema largely 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?

The schema has 100% description coverage: notebookId, cursor, filter, orderby, and maxItems all have descriptive text, including pagination semantics. The tool description adds no parameter-specific meaning, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('List') and resource ('section groups of a OneNote notebook'), and immediately distinguishes itself from the sibling list-onenote-notebook-sections with a clarifying parenthetical. An agent can tell exactly what this tool returns and how it differs from a closely related tool.

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

Usage Guidelines4/5

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

The description gives clear context: it lists section groups of a OneNote notebook, and it warns that list-onenote-notebook-sections does not return sections nested in groups. This helps an agent avoid picking the wrong sibling, though it does not explicitly name an alternative for listing group-nested sections or state exclusions beyond that.

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

list-onenote-notebook-sectionslist-onenote-notebook-sectionsA
Read-onlyIdempotent

List sections of a OneNote notebook (newest-modified first; paginates past 100 sections automatically).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
notebookIdYesValue for notebookId

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is established. The description adds behavioral context beyond those flags by specifying the default ordering ('newest-modified first') and automatic pagination past 100 sections, which are not visible in 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?

A single sentence with a parenthetical packs the core action plus two important behaviors with zero wasted words. The key resource is front-loaded before the behavioral qualifiers.

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?

With a rich schema covering all five parameters and annotations covering safety, the description only needs to add the default ordering and pagination behavior, which it does. There is no output schema, but 'List sections' sufficiently implies a list of section objects; explicit sibling-selection guidance is the only notable gap, and that is already penalized under usage_guidelines.

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%, so the baseline is 3, but the description contributes extra meaning by revealing the default sort order ('newest-modified first') and the automatic pagination threshold, which clarify how orderby and maxItems/cursor behave. It does not need to repeat the schema's per-parameter documentation.

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 names the exact resource ('sections of a OneNote notebook') and the verb 'List', so the agent immediately knows what is returned. The parenthetical ordering and pagination details further disambiguate it from sibling section listing tools such as list-onenote-section-pages or list-onenote-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?

Aside from the inherent scope implied by 'of a OneNote notebook', there is no guidance on when to choose this tool over closely related siblings (list-onenote-sections, list-onenote-notebook-section-groups, list-onenote-section-group-sections). No exclusion or alternative routing is given, so an agent must infer selection from the tool names alone.

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

list-onenote-section-group-sectionslist-onenote-section-group-sectionsA
Read-onlyIdempotent

List sections inside a OneNote section group (newest-modified first; paginates past 100 automatically).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
sectionGroupIdYesValue for sectionGroupId

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate a safe, read-only, idempotent operation. The description adds valuable behavioral context by specifying default ordering ('newest-modified first') and automatic pagination beyond 100 items, which is not conveyed by 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, front-loaded sentence that efficiently conveys the core action, the target resource, sorting behavior, and pagination behavior. There is no redundant or filler content.

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?

For a simple, read-only listing tool with comprehensive parameter documentation and clear annotations, the description is complete. It covers the essential behavior an agent needs: what is listed, the ordering, and how pagination is handled.

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 provides complete 100% description coverage for all parameters, including cursor semantics, filter, orderby, maxItems, and sectionGroupId. The description does not need to repeat parameter details, and it adds only general pagination context beyond the schema.

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

Purpose5/5

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

The description states a specific verb and resource: 'List sections inside a OneNote section group.' This clearly differentiates it from sibling tools like list-onenote-notebook-sections or list-onenote-section-pages, which operate on different scopes.

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 clearly communicates the context of use: listing sections within a section group. It does not explicitly name alternatives or exclusions, but the tool name and scope make the intended usage unambiguous relative to the many OneNote 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-section-pageslist-onenote-section-pagesC
Read-onlyIdempotent

List pages of a OneNote section.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
searchNoFull-text search query
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
sectionIdYesValue for sectionId

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description does not contradict them. However, the description adds no additional behavioral context: it doesn't mention pagination via cursor, that search/filter/orderby alter the query, or what page data is returned. It is essentially redundant with 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 a single front-loaded sentence with no filler words, making it efficient and easy to parse. It could convey more useful distinguishing detail without sacrificing conciseness, which keeps it just below the top tier.

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, no output schema, and many close OneNote siblings, this one-sentence description is under-specified. It doesn't confirm whether this applies to the user's OneNote or a site's, how results are ordered or truncated, or how it differs from 'search-onenote-pages'. The schema hints at behavior, but the description fails to contextualize the tool for selection.

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 each parameter already has a meaningful description (e.g., cursor explicitly states 'other query inputs are ignored'). The tool description adds no parameter semantics beyond what the schema provides, meeting the baseline but not exceeding it.

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

Purpose4/5

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

The description states a specific verb ('List') and resource ('pages of a OneNote section'), clearly conveying the operation. It distinguishes from 'search-onenote-pages' by using 'list' instead of 'search', but does not explicitly disambiguate from the site-scoped sibling 'list-site-onenote-section-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?

No guidance is provided on when to use this tool versus alternatives such as 'search-onenote-pages' (for full-text search) or 'list-site-onenote-section-pages' (for site-scoped sections). The description gives no context about scope, prerequisites, or exclusions, leaving an agent to infer usage 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.

list-onenote-sectionslist-onenote-sectionsA
Read-onlyIdempotent

List all OneNote sections across the user's notebooks (newest-modified first; paginates past 100 automatically).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive, so the description only needs to add non-schema behavior. It adds the default sort order and automatic pagination, both useful and not present in annotations. The phrase 'list all' slightly overstates the default maxItems cap, but the schema documents that cap clearly.

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?

One front-loaded sentence communicates scope and two key behavioral facts. There is no filler, repetition of schema details, or redundant explanation of the tool name.

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 read-only, no-required-param listing tool, this is nearly complete: scope, ordering, and pagination are covered, and the schema handles parameter details. It lacks an explicit pointer to notebook-scoped alternatives, but sibling names make that route discoverable.

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 cursor, filter, orderby, and maxItems. The description adds no parameter-level detail, though its pagination note supports the cursor/maxItems semantics. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb and scope: 'List all OneNote sections across the user's notebooks,' which clearly distinguishes it from notebook-scoped siblings like list-onenote-notebook-sections and site-scoped variants. The parenthetical 'newest-modified first' adds useful behavior without obscuring the core purpose.

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 clearly states the tool covers all of the user's notebooks, implying use for a global, flat enumeration rather than a notebook- or section-group-scoped listing. It does not explicitly name alternatives or state when not to use it, so it stops short of a 5.

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

list-shared-mailbox-folder-messageslist-shared-mailbox-folder-messagesB
Read-onlyIdempotent

List/search messages inside a folder of a shared mailbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of explicit time range (ISO date or datetime)
fromNoStart of explicit time range (ISO date or datetime, overrides timeRange)
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
searchNoFull-text search (KQL supported), e.g. 'from:kiss.peter@ceg.hu subject:"AI projekt" hasattachment:true'
selectNoComma separated list of properties to return (OData $select)
mailboxYesShared mailbox address
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
folderIdYesMail folder id
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
timeRangeNoNamed time range applied on receivedDateTime

TDQS

B3.4/5.0
Behavior2/5

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

Annotations already cover readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. However, the description adds no behavioral detail beyond what the name and schema already convey—no mention of pagination, default ordering, or how search/filter interactions behave. There is no contradiction, but also no added 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 a single front-loaded sentence with no filler: 'List/search messages inside a folder of a shared mailbox.' It is appropriately compact, though slightly too thin to earn a 5 by missing any routing or contextual detail.

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, cursor pagination, search/filter modes), the one-sentence description is minimal. The schema carries the parameter details, but the description does not not guide an agent on when to use this vs list-shared-mailbox-messages or how to obtain the required folderId (e.g., via list-shared-mailbox-folders). Adequate but with clear 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?

Schema description coverage is 100%, so all 11 parameters—including cursor, maxItems, timeRange, and search—are documented in the input schema. The description itself adds no parameter-level meaning, but with full schema coverage the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('List/search') and resource ('messages inside a folder of a shared mailbox'), which clearly distinguishes it from siblings like list-shared-mailbox-messages (all shared-mailbox messages) and list-mail-folder-messages (non-shared mailbox). This leaves little ambiguity about the tool's scope.

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 for messages inside a specific folder of a shared mailbox, but gives no explicit guidance about when to choose it over alternatives. Sibling names offer context, but the tool itself does not state exclusions or name the more general shared-mailbox listing tool.

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

list-shared-mailbox-folderslist-shared-mailbox-foldersA
Read-onlyIdempotent

List mail folders of a shared mailbox the user has access to.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
mailboxYesShared mailbox address, e.g. info@company.com
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the access-scope detail ('the user has access to'), but does not disclose return format, folder hierarchy behavior, or pagination characteristics. The additional behavioral context is minimal but not contradictory.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word adds meaning: 'shared mailbox' scopes the resource, and 'the user has access to' sets the access condition. It is appropriately 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?

For a simple read-only listing tool with one required parameter, the description and schema together provide enough information for an agent to invoke it correctly. It does not describe whether nested folders are included, but that is not critical for tool selection or a basic call, especially given the strong annotations.

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

Parameters3/5

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

Schema description coverage is 100%, and the parameter descriptions are already detailed: mailbox format, cursor continuation semantics, and maxItems default/cap/pagination behavior are all documented. The description does not add parameter-level meaning, but it does not need to because the schema already provides it.

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 names a specific verb ('List') and a specific resource ('mail folders of a shared mailbox the user has access to'). It clearly distinguishes this from list-mail-folders by the 'shared mailbox' qualifier, so an agent can tell them apart without opening sibling definitions.

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 gives clear context regarding the target resource and an access prerequisite, but it does not explicitly state when to prefer this tool over related siblings such as list-mail-folders or list-shared-mailbox-messages. Usage guidance is implied rather than directly stated.

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

list-shared-mailbox-messageslist-shared-mailbox-messagesA
Read-onlyIdempotent

List/search messages of a shared mailbox the signed-in user has access to.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of explicit time range (ISO date or datetime)
fromNoStart of explicit time range (ISO date or datetime, overrides timeRange)
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
searchNoFull-text search (KQL supported), e.g. 'from:kiss.peter@ceg.hu subject:"AI projekt" hasattachment:true'
selectNoComma separated list of properties to return (OData $select)
mailboxYesShared mailbox address
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
timeRangeNoNamed time range applied on receivedDateTime

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds the access prerequisite that the signed-in user must have access to the mailbox, but it does not disclose pagination/truncation behavior or search semantics beyond what the schema already covers. 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.

Conciseness5/5

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

The description is a single, tightly worded sentence. It front-loads the action and resource, then adds a relevant access condition. There is no filler or redundant restatement of the tool name.

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 schema and annotations carry much of the burden with 100% parameter coverage and a clear read-only profile. However, the description alone is thin for a tool with 10 parameters and no output schema, and it does not address folder-scoped alternatives or expected result structure. Some additional context 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?

The schema has 100% parameter description coverage, so the baseline of 3 applies. The tool description adds no additional parameter-level meaning; it only mentions 'search' as a general capability, which is already reflected in the search parameter schema.

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

Purpose5/5

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

The description states a clear verb and resource: 'List/search messages of a shared mailbox.' It also distinguishes the tool from personal-mailbox siblings by explicitly saying 'shared mailbox' and includes the access condition. This is specific enough to identify the tool's role.

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

Usage Guidelines3/5

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

The description implies when to use the tool (for shared mailbox messages), but it does not explicitly contrast alternatives like list-mail-messages or list-shared-mailbox-folder-messages. There is no when-not-to-use guidance or mention of folder-scoped variants, so usage guidance remains only implicit.

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

list-site-driveslist-site-drivesA
Read-onlyIdempotent

List document libraries (drives) of a SharePoint site.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
siteIdYesValue for siteId
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is known. The description adds no additional behavioral context, but there is no contradiction; pagination behavior is captured in the schema rather than the description.

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

Conciseness5/5

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

Single sentence, front-loaded with the core action and resource, zero filler words. It earns its place and is easy to scan.

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

Completeness4/5

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

For a simple listing tool with robust annotations and detailed pagination schema, the one-line description is adequate. It doesn't describe return values, but no output schema exists; the parameter schema and annotations carry the remaining context, making the definition complete enough.

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 three parameters have descriptions. The tool description adds no parameter information beyond what the schema provides; siteId's schema description is tautological ('Value for siteId'), but cursor and maxItems are well documented.

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?

States a specific verb 'List' and resource 'document libraries (drives)' scoped to 'a SharePoint site', clearly distinguishing it from siblings like list-site-lists, get-drive, and list-drive-root-items. It is not a tautology and leaves no ambiguity about what is returned.

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; there is no mention of exclusions or sibling tools. The purpose implies usage, but the description doesn't help an agent choose between list-site-drives and list-site-lists or get-drive.

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

list-site-list-itemslist-site-list-itemsB
Read-onlyIdempotent

List items of a SharePoint list including their field values.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
listIdYesValue for listId
siteIdYesValue for siteId
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that returned items include field values, which is mildly useful, but does not disclose pagination behavior, truncation, or that cursor ignores other query inputs. With the annotations in place, a neutral 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.

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundancy. Every word contributes to meaning, and it is immediately clear what the tool returns.

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 read-only list operation with no output schema, the description plus the rich parameter schema is largely sufficient. It covers the core return value ('items with field values'), and the schema handles pagination and filtering details. It could be slightly more complete by mentioning the relationship to get-site-list-item, but nothing critical is missing.

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 five parameters, including cursor, filter, maxItems, siteId, and listId. The description adds no parameter-level meaning beyond the schema. Baseline 3 is correct because the schema carries the explanatory burden and does so adequately.

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-resource pair, 'List items of a SharePoint list', and adds 'including their field values' to indicate the data returned. It is distinguishable from siblings like get-site-list-item by the plural 'items' and from list-site-lists by the focus on item-level listing. However, it does not explicitly contrast itself with the singular get-site-list-item or mention scope like 'all items'.

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 gives no guidance on when to choose this tool over alternatives such as get-site-list-item or list-site-lists. There is no mention of prerequisites, use cases, or exclusions. The usage context is only implied by the tool's name and plural 'items'.

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

list-site-listslist-site-listsB
Read-onlyIdempotent

List SharePoint lists of a site.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
siteIdYesValue for siteId
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

B3.2/5.0
Behavior2/5

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

The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond the basic listing action, such as output shape, pagination behavior, or scope limitations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundant phrasing. It is appropriately sized for such a simple tool, and every word contributes to the meaning.

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

Completeness4/5

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

For a simple list operation with strong annotations and full schema coverage, the description is nearly complete. The main missing context is explicit differentiation from get-site-list and list-site-list-items, but the schema and sibling names largely resolve ambiguity.

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 siteId, cursor, and maxItems, including pagination behavior. The description adds no extra parameter meaning, but the baseline of 3 is appropriate because the schema carries 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 states a specific verb and resource: 'List SharePoint lists of a site.' This is clear and distinguishes the tool's resource type from siblings like list-site-list-items (which targets list items) and get-site-list (which likely targets a single list). However, it does not explicitly name or contrast those siblings.

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

Usage Guidelines2/5

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

No guidance is provided about when to choose this tool over alternatives such as get-site-list or list-site-list-items. The description gives a general purpose but no context, prerequisites, or exclusions, leaving the agent to infer usage from the name alone.

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

list-site-onenote-notebookslist-site-onenote-notebooksA
Read-onlyIdempotent

List OneNote notebooks hosted on a SharePoint site.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
siteIdYesSharePoint site id (from search-sites)
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the description does not need to restate safety. The description adds no additional behavioral context such as pagination behavior or what happens on invalid siteId, but it does not contradict 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?

A single sentence that is front-loaded with the action, resource, and scope. There is zero filler or redundant restatement of the tool name.

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 full parameter schema, rich safety annotations, and the simple list-like behavior, the description is nearly complete. The main gap is the lack of an explicit usage pointer to the non-site-specific sibling list-onenote-notebooks, but the scope wording largely covers that.

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 each parameter (siteId, cursor, filter, orderby, maxItems) is already documented meaningfully. The description adds no further parameter-level semantics, but the schema carries the burden adequately.

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 specific verb ('List'), a clear resource ('OneNote notebooks'), and a defining scope ('hosted on a SharePoint site'). This distinguishes it from sibling tools like list-onenote-notebooks and site-specific notebook-section tools, though it does not name the alternative explicitly.

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 phrase 'hosted on a SharePoint site' implies this tool is for site-scoped notebooks rather than user-scoped ones, and the required siteId parameter signals the prerequisite. However, it does not explicitly say when to prefer this over list-onenote-notebooks or mention any exclusion criteria.

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

list-site-onenote-notebook-section-groupslist-site-onenote-notebook-section-groupsA
Read-onlyIdempotent

List section groups of a SharePoint-hosted OneNote notebook.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
siteIdYesSharePoint site id
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
notebookIdYesNotebook id (from list-site-onenote-notebooks)

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety and idempotency profile is covered. The description adds no extra behavioral context beyond what annotations and schema provide, such as pagination semantics or return format. There is no contradiction with annotations, but the description does not enrich the behavioral picture.

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, focused sentence that front-loads the core purpose. Every word adds value, and there is no redundancy or filler. It is appropriately sized for the simplicity of the 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?

For a tool with six parameters, multiple similar siblings, and no output schema, the description is too sparse to be fully complete. It lacks guidance on how this tool fits among the many list-site-onenote-* variants and does not clarify what the response contains. Schema and annotations cover parameters and safety, but the description does not help the agent choose this tool over alternatives.

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 for all six parameters, including cursor, filter, orderby, maxItems, siteId, and notebookId. The description itself mentions none of these parameters, but high schema coverage sets a baseline of 3, and the parameter descriptions are already self-explanatory.

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 ('List') and the resource ('section groups of a SharePoint-hosted OneNote notebook'). The 'SharePoint-hosted' qualifier explicitly distinguishes this from sibling tools like list-onenote-notebook-section-groups, which target personal OneNote. The verb and object are precise and unambiguous.

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 gives no guidance on when to use this tool versus alternatives such as list-site-onenote-sections, list-site-onenote-section-group-sections, or list-onenote-notebook-section-groups. It does not state exclusion criteria or provide a decision rule, leaving the agent to infer usage from the name alone.

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

list-site-onenote-notebook-sectionslist-site-onenote-notebook-sectionsA
Read-onlyIdempotent

List sections of a SharePoint-hosted OneNote notebook (newest-modified first; paginates past 100 sections automatically).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
siteIdYesSharePoint site id
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
notebookIdYesNotebook id (from list-site-onenote-notebooks)

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds useful behavioral context beyond annotations: results are ordered newest-modified first and pagination past 100 sections is handled automatically, which helps the agent set expectations.

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?

One sentence, front-loaded with the action and resource, and every clause earns its place. The ordering and pagination details are compactly included without 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?

The description covers the core listing behavior, ordering, and pagination, and the schema handles parameter details. However, there is no output schema and no mention of what fields the returned sections contain, which leaves a moderate gap for an agent that needs to consume the results downstream.

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 six parameters with examples. The description does not add parameter-level meaning, which is acceptable given the baseline of 3 for full schema coverage.

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

Purpose4/5

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

The description clearly states the verb ('List') and the resource ('sections of a SharePoint-hosted OneNote notebook'), and adds meaningful ordering behavior ('newest-modified first'). It does not explicitly differentiate itself from the similarly named sibling 'list-site-onenote-sections', though 'of a notebook' narrows the 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 explicit 'when to use' guidance or alternatives are provided. The description does not tell the agent when to choose this tool over list-site-onenote-sections or list-onenote-notebook-sections, leaving selection to inference from the names.

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

list-site-onenote-pageslist-site-onenote-pagesB
Read-onlyIdempotent

List/search OneNote pages of a SharePoint site's notebooks.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
searchNoFull-text search query
siteIdYesSharePoint site id
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already cover the safety profile with readOnlyHint, idempotentHint, and destructiveHint false, so the description does not need to restate that this is a non-mutating operation. The description adds little behavioral context beyond the SharePoint-site scope; pagination and cursor behavior are documented in the schema rather than the description. 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.

Conciseness5/5

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

The description is a single front-loaded sentence with no filler: it states the action and the resource scope directly. It does not repeat information already present in the schema or annotations.

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 tool is minimally viable for a read-only listing operation because annotations and schema documentation are strong. However, with no output schema and no explanation of return shape or how this tool relates to sibling OneNote page tools, the description leaves some 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?

Schema description coverage is 100%, so the baseline is 3; the description itself adds no parameter-level semantics. The schema already documents cursor, filter, search, orderby, siteId, and maxItems with clear examples and pagination notes.

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 specific verbs ('List/search') and a precise resource: OneNote pages of a SharePoint site's notebooks. It is clear in scope but does not explicitly distinguish itself from closely related siblings like list-site-onenote-section-pages or search-onenote-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?

There is no guidance on when to use this tool instead of alternatives such as list-site-onenote-section-pages or search-onenote-pages, nor when to prefer search vs filter. The agent must infer usage from the tool name and parameters.

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

list-site-onenote-section-group-sectionslist-site-onenote-section-group-sectionsA
Read-onlyIdempotent

List sections inside a section group of a SharePoint-hosted OneNote notebook (newest-modified first).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
siteIdYesSharePoint site id
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
sectionGroupIdYesSection group id (from list-site-onenote-notebook-section-groups)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds 'newest-modified first', a useful default-ordering detail beyond the annotations, but does not disclose other behavioral traits such as truncation behavior or how to detect a truncated result — pagination is only covered in the maxItems parameter description.

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?

A single tightly worded sentence with zero waste: subject, scope, and ordering detail are all present, with the most identifying qualifier ('SharePoint-hosted', 'section group') front-loaded. The parenthetical sort order earns its place as the only non-obvious behavioral detail.

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 low-complexity read-only list tool, this is nearly complete: annotations carry safety, schema covers all parameters with pagination details, and the sectionGroupId provenance explains the workflow. The only minor gap is the lack of explicit sibling differentiation and no hint about the return shape, though the latter is largely self-evident for a list 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 description coverage is 100%, so the baseline is 3. The schema already documents all six parameters well, including OData examples, pagination semantics, and the provenance of sectionGroupId. The main description adds no additional parameter meaning, but none is needed given the schema richness.

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

Purpose5/5

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

The description states a specific verb ('List'), resource ('sections inside a section group'), and hosting context ('SharePoint-hosted OneNote notebook'). The 'SharePoint-hosted' qualifier and 'section group' scoping distinguish it from siblings like list-site-onenote-sections, list-site-onenote-notebook-sections, and list-onenote-section-group-sections.

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

Usage Guidelines3/5

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

Usage context is only implied: the name signals the site-scoped workflow, and the sectionGroupId parameter description hints at the prerequisite step ('from list-site-onenote-notebook-section-groups'). However, the description itself never states when to choose this tool over the similarly named site-scoped section/notebook siblings, nor does it give exclusions.

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

list-site-onenote-section-pageslist-site-onenote-section-pagesA
Read-onlyIdempotent

List pages of a section in a SharePoint-hosted OneNote notebook.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
searchNoFull-text search query
siteIdYesSharePoint site id
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
sectionIdYesSection id (from list-site-onenote-notebook-sections)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds minimal behavioral context beyond the section-scoped, SharePoint-hosted scope, but does not contradict annotations or disclose additional behaviors like pagination or filtering, which are left to schema descriptions.

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, focused sentence that directly states the tool's purpose without any filler. It is front-loaded and every word carries meaning.

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 detailed input schema and comprehensive annotations, the one-line description is largely sufficient for a simple list operation. The schema explains pagination, filtering, and cursor behavior, and the sectionId source is noted. A more explicit mention of return-value shape would help since no output schema exists, but this is a minor gap.

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 applies; the description itself adds no parameter-level meaning. The schema handles parameter semantics well, including meaningful descriptions for cursor, maxItems, and sectionId provenance, so the description does not need to compensate.

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

Purpose4/5

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

The description clearly identifies the operation as listing pages within a specific section of a SharePoint-hosted OneNote notebook, using a specific verb and resource. It partially distinguishes itself from siblings like list-onenote-section-pages by noting the SharePoint-hosted context, though it does not explicitly contrast with list-site-onenote-pages.

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

Usage Guidelines3/5

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

Usage context is implied by the tool name and description: use it to list pages in a section of a SharePoint-hosted notebook. However, there is no explicit guidance about when to choose this over sibling tools like list-site-onenote-pages or list-onenote-section-pages, and no when-not-to-use guidance.

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

list-site-onenote-sectionslist-site-onenote-sectionsA
Read-onlyIdempotent

List ALL sections of a SharePoint site's OneNote notebooks regardless of section-group nesting (newest-modified first; paginates past 100 automatically). Each item carries parentNotebook and parentSectionGroup. Best entry point for large notebooks.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
siteIdYesSharePoint site id (from search-sites)
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds valuable behavioral context beyond that: 'newest-modified first,' pagination that handles more than 100 items automatically, and the fact that each item includes parentNotebook and parentSectionGroup. 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.

Conciseness5/5

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

Three sentences, each carrying distinct information: scope, sorting/pagination behavior, item contents, and usage recommendation. There is no redundancy or filler, and the most important identifying detail is front-loaded.

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?

Given the absent output schema and the complexity of navigating OneNote nesting, the description provides the essential behavioral details an agent needs: flattened listing, ordering, automatic pagination, and parent fields on results. Combined with the fully described parameters, nothing critical is missing for correct 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 parameter semantics are fully documented in the schema. The description adds only general pagination context rather than explaining individual parameters, so it does not significantly elevate beyond the schema baseline.

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

Purpose5/5

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

The description states a specific verb and resource: 'List ALL sections of a SharePoint site's OneNote notebooks.' It explicitly distinguishes itself from sibling tools by noting it returns sections 'regardless of section-group nesting,' which separates it from notebook-scoped or section-group-scoped list tools.

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

Usage Guidelines4/5

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

The description gives clear selection guidance by framing this as the 'Best entry point for large notebooks' and by clarifying that it covers all notebooks site-wide with flattened nesting. It does not explicitly name alternatives or state when not to use it, but the scope and recommendation are sufficient for an agent to choose it appropriately.

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

list-team-channelslist-team-channelsC
Read-onlyIdempotent

List channels of a team.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
selectNoComma separated list of properties to return (OData $select)
teamIdYesValue for teamId
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

C2.9/5.0
Behavior2/5

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

The annotations already declare the tool safe (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description need not repeat that. However, the description adds no additional behavioral context, such as pagination behavior, filtering capabilities, or what fields are returned, which are only available in the parameter schema. It simply restates the operation.

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 concise sentence with no filler or repetition. It is front-loaded with the action and object. However, it is so minimal that it borders on under-specification rather than helpful conciseness, so 4.

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 read-only listing tool with thorough parameter descriptions and safety annotations, the one-line description is acceptable but not complete. It does not explain the return value (no output schema) or offer any comparison with the many sibling list tools, leaving an agent to infer behavior from the schema and tool name. A bit more context would improve selection accuracy.

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, including detailed explanations for cursor, filter, select, teamId, and maxItems. The description itself says nothing about parameters, so it does not add meaning beyond the schema, but the schema already provides sufficient semantics. Baseline 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 states a clear verb ('List') and resource ('channels of a team'), so an agent can tell it is a listing operation on team channels. However, it does not explicitly differentiate it from sibling tools such as 'get-team-channel' (single channel) or 'list-channel-messages' (messages within a channel), relying on the resource name alone.

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 gives no guidance on when to use this tool versus alternatives. It does not mention use cases, prerequisites, or when to prefer 'get-team-channel' or 'list-channel-messages'. An agent must infer the intended use from the tool name and parameter schema.

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

list-team-memberslist-team-membersA
Read-onlyIdempotent

List members of a team (name, email, roles).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
teamIdYesValue for teamId
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already establish the tool as read-only, idempotent, and non-destructive. The description adds only the returned member fields, which is useful since there is no output schema, but it does not disclose any additional behavioral details such as pagination or scoping.

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 compact sentence that front-loads the verb, resource, and key returned data with no filler or repetition.

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

Completeness4/5

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

For a simple read-only list tool with complete parameter documentation and strong annotations, the description is nearly sufficient. It would be more complete with an explicit pointer to how teamId is obtained or when to use this vs sibling tools.

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 teamId, maxItems, and cursor. The description adds no parameter-level information, matching the baseline of 3.

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

Purpose5/5

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

The description uses a specific verb ('List') with a specific resource ('members of a team') and identifies the output fields (name, email, roles). This clearly distinguishes it from sibling tools like list-joined-teams or get-team.

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 given on when to choose this tool over alternatives, nor any prerequisites such as obtaining teamId from team discovery. The usage context must be inferred from the name and schema.

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

list-userslist-usersA
Read-onlyIdempotent

List ALL users of the organization including disabled accounts (accountEnabled=false) and guests. Paged: for directories larger than maxItems follow nextCursor. Supports $filter (e.g. "accountEnabled eq false") and advanced $search.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
selectNoComma separated list of properties to return (OData $select)
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already mark the tool read-only/idempotent, so the extra detail about pagination, scope, and filter support is useful. However, the claim that it supports 'advanced $search' has no corresponding input parameter in the schema, making part of the behavioral description misleading.

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 sentences, each earning its place: the scope is front-loaded, pagination is compressed, and OData support is stated. No filler or restatement of the title.

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 five-parameter list tool with no output schema, the definition covers scope and pagination well and relies on the complete schema for parameter format. It loses points because it promises a $search capability that the schema cannot express, leaving an agent unsure how to invoke it.

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%, so the baseline is 3. The description adds value by giving a relevant filter example ('accountEnabled eq false') and explaining cursor continuation, which enriches the otherwise generic schema descriptions. The unsupported $search mention slightly reduces the add-on value.

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 'List ALL users of the organization', giving a specific verb and resource and scoping to include disabled accounts and guests. This clearly distinguishes it from sibling tools like get-user and search-users.

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 implies when to use it (need every user, including disabled/guests) and gives pagination and filtering guidance, but never names alternatives or exclusion conditions. It is clear context without explicit when-not guidance.

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

reply-all-mailreply-all-mailA

Reply-all to a message as the signed-in user. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentYesReply body text
confirmYesSafety gate: must be explicitly true to execute this WRITE operation. Ask the user for approval before setting it.
messageIdYesValue for messageId

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate a non-read-only operation, and the description adds the confirm=true safety gate plus the signed-in user context. However, it does not mention the external side effect of sending an email or the irreversibility of that action, leaving some behavioral disclosure to the confirm parameter description rather than the tool description itself.

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

Conciseness5/5

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

The description is two short sentences with no filler. The action, actor, and confirming requirement are all front-loaded, 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.

Completeness4/5

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

For a low-complexity write tool with three fully documented parameters, the description plus schema adequately cover the action, identity, safety gate, and required inputs. No output schema exists, so a return-value explanation is not strictly necessary; the only slight gap is that explicit user-approval behavior is documented in the schema rather than the description.

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 covers all three parameters at 100%, including the comment body and confirm safety gate. The description does not add extra meaning to the parameters beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Reply-all to a message as the signed-in user.' It clearly distinguishes this from sibling tools like reply-mail (single reply) and reply-all-shared-mailbox-mail (shared mailbox) by specifying the signed-in user context and reply-all scope.

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?

Clear context is provided: the tool operates on the signed-in user's mailbox and requires confirm=true. It does not explicitly name alternatives or state when not to use it, but the identity and reply-all wording strongly imply the selection among the mail-reply sibling tools.

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

reply-all-shared-mailbox-mailreply-all-shared-mailbox-mailB

Reply-all to a shared-mailbox message. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentYesReply body text
confirmYesSafety gate: must be explicitly true to execute this WRITE operation. Ask the user for approval before setting it.
mailboxYesShared mailbox address
messageIdYesValue for messageId

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already indicate a non-read-only, non-idempotent write operation, and the description adds little beyond the confirm requirement, which is already documented in the schema. It does not disclose that the message will be sent to all original recipients, that sending is irreversible, or what side effects may occur.

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: two short sentences with the action front-loaded. The confirm requirement is an important safety condition and earns its place; there is no filler or 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?

The required parameters are fully documented in the schema, and the description names the operation and the confirmation requirement, making invocation minimally possible. However, given the large sibling set and the existence of very similar tools, the description does not provide enough context for an agent to confidently select this tool over reply-all-mail or reply-shared-mailbox-mail.

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 explained in the input schema. The description's mention of confirm=true duplicates the schema's safety-gate explanation and adds no new semantic value beyond what the schema already provides.

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 action ('Reply-all') and resource ('shared-mailbox message'), so an agent can tell it is a reply-all operation on a shared mailbox. However, it largely restates the tool name and does not explicitly differentiate it from closely related siblings such as reply-shared-mailbox-mail or reply-all-mail.

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 only usage guidance is 'Requires confirm=true,' which is an execution prerequisite already reflected in the confirm parameter schema. There is no guidance about when to choose this tool over reply-mail, reply-all-mail, reply-shared-box-mail, or forward-shared-mailbox-mail.

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

reply-mailreply-mailA

Reply to a message as the signed-in user. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentYesReply body text
confirmYesSafety gate: must be explicitly true to execute this WRITE operation. Ask the user for approval before setting it.
messageIdYesValue for messageId

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already establish it as a non-read-only, non-destructive write. The description adds useful behavioral context: "as the signed-in user" clarifies it operates on the user's own mailbox rather than shared mailboxes, and "Requires confirm=true" reinforces the mandatory safety gate. No contradiction with the annotations was found.

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

Conciseness5/5

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

The description is two short sentences with no filler. The core action is front-loaded, and the essential confirmation requirement is stated immediately after. Every word earns its place.

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 is adequate for a simple write operation, and annotations and schema cover safety and parameter meaning. However, it leaves ambiguity about how this tool differs from reply-all-mail and whether the reply is sent immediately or stored as a draft. Given the large sibling set of mail tools, a bit more context 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 three parameters documented. The description adds no parameter-level meaning beyond the schema, and while the messageId parameter description is generic, the description does not compensate for that gap. Baseline 3 applies because the schema carries the semantic weight.

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 action and resource: "Reply to a message as the signed-in user." It clearly identifies the operation and the acting scope. However, it does not distinguish from the sibling reply-all-mail, so it stops short of full 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?

No guidance is provided on when to choose reply-mail over closely related alternatives like reply-all-mail, forward-mail, or send-mail. The only usage note is "Requires confirm=true," which is a precondition rather than a decision rule among sibling tools. There are no explicit when-to-use or when-not-to-use instructions.

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

reply-shared-mailbox-mailreply-shared-mailbox-mailB

Reply to a shared-mailbox message. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentYesReply body text
confirmYesSafety gate: must be explicitly true to execute this WRITE operation. Ask the user for approval before setting it.
mailboxYesShared mailbox address
messageIdYesValue for messageId

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already mark readOnlyHint=false, so the agent knows this is a write operation. The description's 'Requires confirm=true' adds no new information because the confirm parameter's schema description already states it is a safety gate for a WRITE operation. The description does not disclose additional behavioral context like sending an email, side effects, or the need for user approval beyond the schema.

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

Conciseness4/5

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

The description is very short and front-loads the core purpose in the first sentence. The second sentence adds redundancy with the schema, but the overall size is appropriately minimal and free of fluff.

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 write operation with no output schema, the description needs to convey side effects and scope. It does not explain that a reply is actually sent, that the user must be asked for approval, or how this differs from reply-all and forward variants. This leaves an agent under-informed when choosing among many similar mail tools.

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 four parameters are already well documented in the input schema. The description adds no extra meaning for mailbox, messageId, confirm, or comment, which matches the baseline 3 for high schema coverage.

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

Purpose4/5

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

The description clearly identifies the action ('Reply') and the resource ('shared-mailbox message'), which distinguishes it from send, forward, and reply-all siblings at a basic level. However, it does not explicitly contrast it with reply-all-shared-mailbox-mail or reply-mail, leaving some differentiation to inference from 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 Guidelines3/5

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

The description provides a useful operational prerequisite ('Requires confirm=true'), which tells the agent that user approval must be obtained. However, it gives no explicit guidance on when to choose this tool over reply-mail or when not to use it, so usage context is mostly implied rather than stated.

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

reply-to-channel-messagereply-to-channel-messageA

REPLY to an existing channel message (thread) as the signed-in user. WRITE operation - requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamIdYesValue for teamId
confirmYesSafety gate: must be explicitly true to execute this WRITE operation. Ask the user for approval before setting it.
messageYesMessage text to send
channelIdYesValue for channelId
messageIdYesValue for messageId
contentTypeNoMessage content type (default text)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate this is a write operation (readOnlyHint=false), and the description reinforces that by explicitly calling it a WRITE operation and noting the confirm=true requirement. It also adds actor context ('as the signed-in user') that goes beyond structured annotations. No contradictions found.

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

Conciseness5/5

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

The description is two short sentences with no filler. The key verb and resource are front-loaded, and the safety-relevant WRITE/confirm note is included without redundancy.

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 moderately complex write operation with 6 parameters and no output schema, the description plus annotations and 100% schema coverage give an agent enough to invoke it correctly. It could optionally mention what happens after a successful reply or contrast with send-channel-message, but these are minor omissions given the schema's strength.

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 parameters. The description adds no new parameter-level meaning beyond restating the confirm requirement, which the confirm parameter schema already explains in detail. Baseline 3 is appropriate given the full schema coverage.

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 (REPLY), the resource (existing channel message), and the actor (signed-in user). The word 'existing' and 'thread' distinguish this from send-channel-message and other send variants, so an agent can identify the correct tool.

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 context for when to use this tool: when replying to an existing channel message as the signed-in user. It does not explicitly name alternatives or state when not to use it, but the 'existing' qualifier and 'channel message' scope make the intended usage unambiguous enough.

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

respond-to-calendar-eventrespond-to-calendar-eventA

Respond to a meeting invitation (accept / decline / tentativelyAccept); the organizer is notified. WRITE operation - requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentNoOptional comment sent to the organizer
confirmYesSafety gate: must be explicitly true to execute this WRITE operation. Ask the user for approval before setting it.
eventIdYesEvent id of the invitation
responseYesResponse action

TDQS

A4.2/5.0
Behavior4/5

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

The description adds behavioral context beyond the annotations: it discloses that the organizer is notified, that it is a WRITE operation, and that a confirmation flag is required. This aligns with readOnlyHint=false and destructiveHint=false, with no contradiction.

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

Conciseness5/5

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

Two short sentences convey the action, options, side effect, and safety gate with no wasted words. Key information is front-loaded in the first sentence.

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

Completeness4/5

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

The description covers the essential calling context: what the tool does, the required response values, the side effect, and the confirm requirement. It does not describe the return value, but without an output schema this is a minor gap for a simple write action.

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 each parameter. The description repeats the enum values but adds no new meaning beyond what the schema provides.

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 names a specific verb ("Respond") and resource ("meeting invitation"), enumerates the exact actions (accept / decline / tentativelyAccept), and notes a side effect (organizer notified). This clearly distinguishes it from sibling tools like create-calendar-event or 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 Guidelines4/5

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

The context is explicit: it is used to respond to a meeting invitation, and it states the safety precondition (confirm=true). However, it does not explicitly contrast with alternative tools or state when not to use it, so it falls short of a 5.

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

search-drive-itemssearch-drive-itemsA
Read-onlyIdempotent

Search files by keyword within one drive (document library).

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch keyword
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
driveIdYesValue for driveId
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds only the scope ('within one drive') and does not describe pagination or truncation behavior, though those details are present in the schema. 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?

A single sentence front-loads the action and scope with no filler or redundant wording. It is appropriately sized for a relatively simple search tool and every word contributes to understanding.

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 schema that fully documents the required and optional parameters, along with read-only annotations, the description is mostly sufficient for correct invocation. It lacks explicit guidance for choosing this tool over search-my-drive or search-m365, but the essential operation and scope are clearly stated. The absence of an output schema is partially mitigated by the description's clarity about what is searched.

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 q, driveId, cursor, and maxItems all meaningfully explained in the schema. The description's word 'keyword' merely echoes the q parameter and adds no new parameter semantics, so the baseline 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?

States a specific verb ('Search'), a resource ('files'), and a scope ('within one drive (document library)'). This clearly conveys a file-search operation and distinguishes it from related siblings such as search-my-drive or search-m365 by scope, though it does not name those alternatives. It is not a tautology and gives an agent a solid idea of the operation.

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 phrase 'within one drive' implies this tool is for searching a specific drive identified by driveId, but the description provides no explicit when-to-use or when-not-to-use guidance. It also does not reference close siblings like search-my-drive or search-m365, so an agent must infer the appropriate choice from the parameter schema and tool names.

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

search-loop-componentssearch-loop-componentsA
Read-onlyIdempotent

Search Microsoft Loop components (.loop/.fluid files stored in SharePoint/OneDrive) by keyword. Note: Loop workspaces in SharePoint Embedded containers are not exposed via delegated Graph and may be missing from results.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoResult offset (default 0)
sizeNoNumber of results (default 25)
queryYesKeyword to search for in Loop components

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare this as a read-only, idempotent, non-destructive operation. The description adds valuable behavioral context by disclosing a known limitation of delegated Graph for SharePoint Embedded containers, which the annotations do not convey.

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

Conciseness5/5

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

The description is two sentences with no filler. The core purpose is front-loaded, and the important limitation is included as a brief note without redundancy.

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

Completeness4/5

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

For a simple search tool, the description covers purpose, file scope, storage locations, and a key behavioral limitation. It does not describe result shape, but with no output schema and strong annotations this is a minor gap rather than a major deficiency.

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

Parameters3/5

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

The input schema already documents all three parameters with descriptions and defaults, so schema coverage is 100%. The description does not add any new parameter-level meaning, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific action ('Search') and a specific resource ('Microsoft Loop components'), and adds concrete detail about file types (.loop/.fluid) and storage locations (SharePoint/OneDrive). This clearly differentiates it from sibling tools like get-loop-component-content and other search tools.

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

Usage Guidelines4/5

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

The description gives useful context on when results may be incomplete, noting that Loop workspaces in SharePoint Embedded containers are not exposed via delegated Graph. However, it does not explicitly name alternatives or state when this tool is preferred over other search tools like search-my-drive or search-sites.

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

search-m365search-m365A
Read-onlyIdempotent

Cross-source Microsoft 365 search (Mail, Calendar, Teams messages, SharePoint, OneDrive). KQL supported. Restriction from Graph: driveItem/drive/site/list/listItem can be combined in one call; message, event and chatMessage must each be searched in a SEPARATE call. Use the returned pointers with dedicated tools to fetch full content.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoResult offset for paging (default 0)
sizeNoNumber of results (default 25)
queryYesSearch query (KQL supported), e.g. "AI Workshop 3.0"
entityTypesNoEntity types to search (default ["driveItem","site","listItem"]). message/event/chatMessage must be searched alone.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, and non-destructive behavior. The description adds the Graph grouping constraint and clarifies that results are pointers, not full content, which materially shapes follow-up calls. It could mention pagination or result limits, but those are already exposed in the schema.

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

Conciseness5/5

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

Three dense sentences: scope first, then query capability, then the crucial Graph constraint and follow-up behavior. No filler or redundancy; every sentence earns its place.

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 cross-source search tool with no output schema, the description tells the agent what comes back (pointers) and what to do next, and documents the important entity-type restriction. It would be slightly stronger with an explicit statement that full content retrieval requires a second request via the dedicated 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 100%, so the baseline is 3; the description adds value by documenting KQL support, giving an example query, and explaining the entity-type grouping rule beyond the schema's enum. It does not need to re-describe from/size because the schema already covers them.

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?

States a specific verb ('search') and full scope ('Microsoft 365') across Mail, Calendar, Teams, SharePoint, and OneDrive, and is clearly a cross-source alternative to the many source-specific search siblings. The Graph combination restriction further reinforces what the tool spans.

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?

Gives explicit operational guidance: KQL is supported, which entity types can be combined in one call, and that message, event, and chatMessage must be searched separately. It also directs the agent to use dedicated tools for full content. However, it does not explicitly tell the agent when to choose search-m365 over dedicated source-specific search tools like search-drive-items or search-sites.

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

search-my-drivesearch-my-driveA
Read-onlyIdempotent

Search the user's OneDrive (and items shared with them) by keyword.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch keyword
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is well covered. The description adds the meaningful context that shared items are included and matching is by keyword, but it does not go further into result or pagination 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?

One compact, front-loaded sentence with no filler. It conveys the tool's purpose and scope efficiently while leaving detailed parameter documentation to the schema.

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 strong annotations and fully described schema, the description is mostly sufficient for a simple search tool. The only notable gap is the lack of explicit differentiation among the large set of sibling search tools, which could affect tool selection in ambiguous cases.

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

Parameters3/5

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

Schema description coverage is 100%, and the maxItems/cursor parameters are already richly documented in the schema. The description only restates the keyword concept and does not add parameter-level meaning beyond what the schema provides.

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

Purpose5/5

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

The description states a specific verb ('Search'), a clear resource ('the user's OneDrive'), and an important scope extension ('items shared with them'). This clearly distinguishes the tool from broader sibling searches like search-m365, search-sites, and search-drive-items.

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 intended scope is implied by 'the user's OneDrive', but the description never explicitly says when to use this tool instead of the many sibling search tools, nor does it name alternatives or exclusions. An agent could infer usage, but the routing guidance is left implicit.

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

search-onenote-pagessearch-onenote-pagesA
Read-onlyIdempotent

List OneNote pages across all personal notebooks, newest first (time filter on lastModifiedDateTime; filter e.g. "contains(title,'x')"). Full-text search is not supported by Graph v1.0 (error 20108). Accounts with many sections get Graph error 20266 here - then go notebook -> sections -> list-onenote-section-pages instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of explicit time range (ISO date or datetime)
fromNoStart of explicit time range (ISO date or datetime, overrides timeRange)
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
filterNoOData $filter expression, e.g. "importance eq 'high'" or "hasAttachments eq true"
searchNoFull-text search query
orderbyNoOData $orderby, e.g. "receivedDateTime desc"
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.
timeRangeNoNamed time range applied on lastModifiedDateTime

TDQS

A5/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses real behavioral traits: default ordering by lastModifiedDateTime, time filter semantics, unsupported full-text search with a specific error code, and a known failure mode for large accounts with an alternative path. These are exactly the kind of runtime behaviors an agent needs to predict success and avoid wasted calls.

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 sentences, each earning its place: core behavior and example, a critical unsupported-feature warning, and a targeted fallback instruction. It is front-loaded with the primary action and scoping, and the caveats are compact.

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?

The description, combined with the rich input schema and read-only annotations, gives the agent everything needed to invoke this tool correctly: scope, ordering, time filter field, filter example, unsupported search, known error fallback, and pagination semantics are already in the schema. No critical behavioral information is missing for an agent to select and call it appropriately.

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?

Although the schema already provides 100% description coverage, the tool description adds crucial semantics beyond the schema: the time filter applies to lastModifiedDateTime, default sort is newest first, filter expressions like "contains(title,'x')" are supported, and the 'search' parameter is not supported by Graph v1.0. This materially improves the agent's ability to construct valid parameter combinations and avoid the search parameter pitfall.

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 starts with a specific verb and resource ('List OneNote pages across all personal notebooks') and immediately adds the distinguishing default ordering ('newest first'). It clearly differentiates from the many OneNote section/page siblings by emphasizing scope across notebooks, not sections or sites.

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

Usage Guidelines5/5

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

The description explicitly tells the agent when this tool is appropriate ('across all personal notebooks') and when it is not, including the fallback path ('then go notebook -> sections -> list-onenote-section-pages instead') for accounts hitting error 20266. It also explicitly warns that full-text 'search' is unsupported and directs toward filter usage instead, which prevents a common misuse.

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

search-peoplesearch-peopleA
Read-onlyIdempotent

Search people relevant to the signed-in user (colleagues, frequent contacts). Good first step for fuzzy name resolution.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoName fragment to search for
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds a valuable scoping detail (results are personalized to the signed-in user) but does not elaborate on return format, rate limits, or other behavioral traits. Consistent with annotations, no contradiction.

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 concise sentences, front-loaded with the action and scope. No filler; the fuzzy-resolution positioning earns its place.

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 read-only search tool with fully documented params and annotations covering safety, the description is nearly sufficient. It could have described the returned person entity (e.g., name, email) but the schema's pagination hints and the tool's name make the return type fairly obvious.

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 query, cursor, and maxItems. The description adds no additional parameter-level semantics beyond what the schema already states. Baseline 3 is appropriate.

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

Purpose5/5

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

Description states a specific verb ('Search') and resource ('people relevant to the signed-in user', clarifying scope as colleagues/frequent contacts). It also positions the tool as the first step for fuzzy name resolution, which helps differentiate it from broader search siblings like search-users or search-m365.

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: intended as a first step for fuzzy name resolution and operates on the signed-in user's relevant people. However, it does not explicitly name alternatives or state when not to use it, leaving the agent to infer fallback options.

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

search-sitessearch-sitesA
Read-onlyIdempotent

Search SharePoint sites the signed-in user can access, by keyword.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSite search keyword, e.g. project or team name
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful context by limiting results to sites the signed-in user can access, but does not disclose additional behavioral traits such as result ordering, truncation wording, or what a missing match returns. 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.

Conciseness5/5

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

The description is a single concise sentence with no filler or repetition. The key scoping detail, 'the signed-in user can access,' is included up front, and the keyword mechanism is stated efficiently.

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 read-only search tool, the description plus the richly commented input schema and annotations provide enough to select and invoke the tool correctly. There is no output schema, so return-value details are not specified, but the simple search behavior and pagination parameters make this a minor gap rather than a blocker.

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

Parameters3/5

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

Schema description coverage is 100%, and the input schema already provides detailed semantics for query, cursor, and maxItems, including pagination behavior via nextCursor. The description adds no parameter-level meaning beyond the general 'by keyword' phrasing, so the baseline 3 applies.

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

Purpose5/5

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

The description states a specific verb and resource: 'Search SharePoint sites the signed-in user can access, by keyword.' It clearly distinguishes this tool from sibling search tools like search-drive-items, search-my-drive, search-onenote-pages, and search-m365 by scoping it to user-accessible SharePoint sites.

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 context: use this tool when you need to find SharePoint sites accessible to the signed-in user via a keyword. It does not explicitly name alternatives or when-not-to-use conditions, so it stops short of a 5, but the intended usage is evident and ambiguous scenarios are unlikely.

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

search-userssearch-usersA
Read-onlyIdempotent

Resolve a person by (partial) display name or email, e.g. "Móré Attila" -> Entra user with email + id. Use search-people first for fuzzy matches among the user's contacts.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name fragment or email address
cursorNoContinuation token (nextCursor of a previous truncated response). Continues that listing; other query inputs are ignored.
maxItemsNoMaximum items to return across pages (default 50, max 500). Pagination via @odata.nextLink is handled automatically; when the result is truncated, pass its nextCursor as cursor to continue.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds meaningful behavioral context: partial matching semantics, the returned entity shape, and the distinction from fuzzy contact search. It does not mention plural/paged results, but the schema covers pagination.

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 with no filler: the first delivers purpose, input, and output shape; the second gives the routing rule. The example is concrete and useful without being verbose.

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 low-complexity tool with complete annotations and schema, the description is nearly sufficient. It explains the return shape and the alternative tool, but framing it as 'a person' slightly obscures the paged/list behavior implied by cursor and maxItems. The schema fills that gap, so the shortfall is minor.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already describes the name parameter as 'Display name fragment or email address' plus detailed cursor and maxItems semantics. The description adds no significant new parameter meaning beyond the example, so the baseline 3 applies.

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

Purpose5/5

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

The description states a specific verb and resource: resolve a person by partial display name or email, with a concrete example showing the expected output (Entra user with email + id). It also distinguishes itself from the closest sibling, search-people, by indicating that search-users is for directory resolution rather than fuzzy contact matching.

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?

It explicitly directs the agent to prefer search-people for fuzzy matches among the user's contacts, giving a clear when-not-to-use condition and naming the alternative. This is sufficient routing guidance for the main ambiguity.

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

send-channel-messagesend-channel-messageA

POST a new message to a team channel as the signed-in user. WRITE operation - requires confirm=true after explicit user approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamIdYesValue for teamId
confirmYesSafety gate: must be explicitly true to execute this WRITE operation. Ask the user for approval before setting it.
messageYesMessage text to send
channelIdYesValue for channelId
contentTypeNoMessage content type (default text)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false, but the description goes further by explicitly labeling the operation as WRITE and requiring confirm=true after explicit user approval. This adds actionable behavioral context about the safety gate that the raw annotations do not convey.

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 tight sentences with no filler. The first sentence states the action and scope; the second adds the critical WRITE confirmation requirement. Both sentences earn their place and the key safety information is front-loaded.

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?

For a simple mutation tool with fully described parameters and appropriate annotations, the description provides the essential missing context: the explicit WRITE nature and the user-approval confirmation requirement. Nothing an agent needs to invoke it correctly is missing.

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 five parameters. The description reinforces the confirm safety gate but does not add new parameter-level semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific action—POSTing a new message to a team channel—and clarifies the acting identity ('as the signed-in user'). This clearly distinguishes it from related siblings like send-chat-message, which targets chats, and reply-to-channel-message, which targets replies.

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 clearly frames the tool's context as sending to a team channel as the signed-in user, which implies use cases where a new top-level channel message is needed. It does not explicitly name alternatives or exclusions, but the team-channel scope and WRITE designation provide adequate routing guidance.

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

send-chat-messagesend-chat-messageA

SEND a message to a Teams chat (1:1 or group) as the signed-in user. WRITE operation - requires confirm=true after explicit user approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat id (from list-chats)
confirmYesSafety gate: must be explicitly true to execute this WRITE operation. Ask the user for approval before setting it.
messageYesMessage text to send
contentTypeNoMessage content type (default text)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds valuable behavioral context: it explicitly labels the operation as WRITE, requires confirm=true, and mandates explicit user approval before execution. This goes beyond the structured annotations and clarifies the safety gate.

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 concise sentences front-load the primary action ('SEND') and the key safety requirement. Every clause adds information; there is no redundancy or filler.

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?

For a simple send operation with a fully described schema and annotations, the description covers the essential behavioral contract: what it does, the write nature, the confirm requirement, and the user identity. No output schema exists, but return value explanation is unnecessary for this action.

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 four parameters, including the confirm gate semantics. The description adds no additional parameter-level details beyond what the schema provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

Description states a specific verb ('SEND') and resource ('a message to a Teams chat (1:1 or group)') and notes it operates as the signed-in user. This distinguishes it clearly from sibling send-channel-message, which targets channels, and from mail send tools.

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 specifies the target context ('Teams chat (1:1 or group)') and the user identity, making it clear when this tool applies. It does not explicitly name alternatives or state exclusions, but the sibling list and the 'chat' vs 'channel' distinction provide enough contextual guidance.

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

send-draft-emailsend-draft-emailA

SEND a previously created draft. WRITE operation - requires confirm=true and explicit user approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesSafety gate: must be explicitly true to execute this WRITE operation. Ask the user for approval before setting it.
messageIdYesDraft message id returned by create-draft-email

TDQS

A4.2/5.0
Behavior4/5

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

The description explicitly flags this as a WRITE operation and states the safety requirement of confirm=true and user approval, which goes beyond what annotations alone provide. Annotations already indicate readOnlyHint=false and destructiveHint=false, so the description adds useful operational context without contradicting them.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that communicates the action, the write nature, and the approval requirement. No filler or redundant content; every phrase adds value.

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

Completeness4/5

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

For a simple two-parameter tool with rich schema descriptions and annotations covering the read/write profile, the description plus schema provide enough to call it correctly. It doesn't describe return values, but for a send operation with no output schema this is a minor gap.

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 both parameters already documented well: messageId points to the draft created by create-draft-email, and confirm is described as a safety gate requiring user approval. The description itself adds little beyond restating the confirm requirement, but the schema carries the semantic load.

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 ('SEND') and the specific resource ('a previously created draft'), which distinguishes it from sending new mail. The parameter description further reinforces this by tying messageId to create-draft-email. An agent can immediately tell what this tool does and how it differs from send-mail.

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

Usage Guidelines4/5

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

The description gives clear context: use this to send a draft that was previously created, and require explicit user approval with confirm=true. It doesn't explicitly name alternatives or say 'do not use send-mail for drafts,' but the draft-specific wording makes the intended flow evident.

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

send-mailsend-mailA

Compose and SEND an email in one step as the signed-in user. WRITE operation - requires confirm=true and explicit user approval. Prefer create-draft-email + user review for report emails.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCC email addresses
toYesRecipient email addresses
bccNoBCC email addresses
bodyYesEmail body content
confirmYesSafety gate: must be explicitly true to execute this WRITE operation. Ask the user for approval before setting it.
subjectYesEmail subject
bodyTypeNoBody content type (default HTML)
importanceNo
saveToSentItemsNoSave to Sent Items (default true)

TDQS

A4.2/5.0
Behavior4/5

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

Beyond annotations (readOnlyHint=false, destructiveHint=false), the description adds meaningful behavioral context: the tool acts 'as the signed-in user,' performs compose+send in a single step, and requires confirm=true plus explicit user approval before executing. These are safety-relevant traits not present in the annotation block, though it stops short of disclosing irreversibility 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?

Three sentences, each earning its place: the core action is front-loaded, the safety requirement is stated in the second sentence, and the routing to an alternative closes it. There is zero filler or repetition of schema content.

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 9-parameter write operation, the description covers purpose, safety gate, and alternative routing, while the schema covers parameters at 89%. Minor gaps remain: no mention of what the tool returns on success/failure and no explicit statement that a sent email cannot be unsent, though the strong confirm-gate emphasis partially mitigates this.

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 89%, well above the 80% threshold, so the schema carries the parameter documentation burden. The description's mention of 'confirm=true' reinforces the safety gate but does not add semantics beyond what the confirm parameter's own schema description already states, so baseline 3 applies.

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

Purpose5/5

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

The description states a specific verb+resource: 'Compose and SEND an email in one step as the signed-in user.' It clearly distinguishes from sibling tools like create-draft-email and send-draft-email by emphasizing the one-step behavior, and the WRITE-operation framing separates it from read-only mail tools.

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

Usage Guidelines4/5

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

The description gives explicit routing guidance: 'Prefer create-draft-email + user review for report emails,' naming a concrete alternative and a condition that selects it. However, it does not state affirmative when-to-use scenarios beyond the implicit 'not for report emails,' so the guidance is clear but not exhaustive.

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

send-shared-mailbox-mailsend-shared-mailbox-mailB

Compose and SEND an email from a shared mailbox. Requires confirm=true and explicit user approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCC email addresses
toYesRecipient email addresses
bccNoBCC email addresses
bodyYesEmail body content
confirmYesSafety gate: must be explicitly true to execute this WRITE operation. Ask the user for approval before setting it.
mailboxYesShared mailbox address
subjectYesEmail subject
bodyTypeNoBody content type (default HTML)
saveToSentItemsNoSave to Sent Items (default true)

TDQS

B3.4/5.0
Behavior4/5

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

The description discloses the confirm=true gate and mandatory user approval — a critical behavioral trait beyond what annotations provide (readOnlyHint=false, idempotentHint=false). No contradiction with annotations; sending is a non-destructive write operation, consistent with the declared flags. It stops short of explaining side effects or sent-item behavior, but the key safety behavior is disclosed.

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

Conciseness4/5

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

Two sentences with the action front-loaded and zero filler. Efficient, but the brevity leaves sibling-selection guidance on the table; it is concise rather than optimally 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?

For a 9-parameter write operation with a large sibling family, the description is thin: it covers the approval gate but omits when-not-to-use and how it relates to send-mail. The fully documented schema and annotations compensate for parameter and safety context, making it minimally viable but not complete.

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

Parameters3/5

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

Schema coverage is 100% — all nine parameters have descriptions in the schema, so the description adds no parameter meaning beyond it. Baseline 3 applies; the description's confirm=true mention echoes the schema's confirm parameter description rather than adding new semantics.

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

Purpose4/5

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

The description states a specific action — 'Compose and SEND an email from a shared mailbox' — with a clear verb and resource. The 'shared mailbox' qualifier distinguishes this from plain send-mail, though it doesn't explicitly contrast with the many shared-mailbox siblings (reply/forward/create-draft).

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 send-mail, send-draft-email, or the reply/forward shared-mailbox variants. The confirm=true requirement is a safety precondition, not usage context; an agent must infer selection from 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-calendar-eventupdate-calendar-eventA

UPDATE an existing calendar event (only the provided fields change; attendees are notified of changes). WRITE operation - requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd datetime, ISO local format
bodyNoEvent description (body)
startNoStart datetime, ISO local format e.g. 2026-09-01T10:00:00
confirmYesSafety gate: must be explicitly true to execute this WRITE operation. Ask the user for approval before setting it.
eventIdYesEvent id (from get-calendar-view / list-calendar-events)
subjectNoEvent subject/title
bodyTypeNoBody content type (default HTML)
locationNoLocation display name
timeZoneNoIANA time zone (default Europe/Budapest)
attendeesNoAttendee email addresses (required attendees)
isOnlineMeetingNoCreate it as a Teams online meeting

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish this is a non-read, non-idempotent operation, and the description adds valuable behavior beyond that: partial-field update semantics, attendee notification side effects, and the confirm=true safety gate. No contradiction with annotations (readOnlyHint=false aligns with 'WRITE operation'). It stops short of covering failure behavior for nonexistent eventIds, but the added context is substantial.

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 tight sentences with zero filler. The core purpose is front-loaded, the patch semantics and notification side effect fit naturally in the first sentence, and the WRITE/confirm gate is a crisp standalone second sentence. Every clause earns its place.

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 an 11-parameter mutation tool, the description covers purpose, scoping semantics, side effects, and the confirmation gate, and the schema fully documents parameters. It does not explicitly state behavior for invalid eventIds or error responses, and it leaves sibling differentiation implicit, but nothing an agent needs to invoke the tool correctly is missing.

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 reinforces the confirm=true requirement already documented in the schema and adds the mental model that omitted fields are left unchanged. It does not add meaning beyond that, but none is needed given the schema's thorough per-parameter documentation.

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

Purpose5/5

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

The description uses a specific verb (UPDATE) with a specific resource (existing calendar event), and the parenthetical clarifies partial-update semantics. This clearly differentiates it from sibling tools like create-calendar-event, get-calendar-event, and respond-to-calendar-event without needing to read their schemas.

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 word 'existing' plus the WRITE designation imply when to use it versus read or create tools, and 'only the provided fields change' clarifies patch-style usage. However, there is no explicit when-not guidance or naming of alternatives (e.g., 'to create a new event use create-calendar-event'), leaving the routing decision to inference.

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. 103 tool updatesv1.0.0
    • First observedcreate-calendar-event
    • First observedcreate-draft-email
    • First observedcreate-shared-mailbox-draft
    • First observeddownload-drive-item
    • First observeddownload-my-drive-item
    • First observedfind-meeting-times
    • First observedfind-online-meeting-by-join-url
    • First observedforward-mail
    • First observedforward-shared-mailbox-mail
    • First observedget-calendar
    • First observedget-calendar-event
    • First observedget-calendar-view
    • First observedget-channel-message
    • First observedget-chat
    • First observedget-chat-message
    • First observedget-drive
    • First observedget-drive-item
    • First observedget-loop-component-content
    • First observedget-mail-attachment-content
    • First observedget-mail-message
    • First observedget-meeting-transcript-content
    • First observedget-my-drive
    • First observedget-my-drive-item
    • First observedget-my-drive-item-download-url
    • First observedget-onenote-notebook
    • First observedget-onenote-page
    • First observedget-onenote-page-content
    • First observedget-online-meeting
    • First observedget-people-availability
    • First observedget-shared-mailbox-attachment-content
    • First observedget-shared-mailbox-message
    • First observedget-site
    • First observedget-site-list
    • First observedget-site-list-item
    • First observedget-site-onenote-page-content
    • First observedget-team
    • First observedget-team-channel
    • First observedget-user
    • First observedget-user-account-status-history
    • First observedlist-calendar-events
    • First observedlist-calendars
    • First observedlist-channel-message-replies
    • First observedlist-channel-messages
    • First observedlist-chat-messages
    • First observedlist-chats
    • First observedlist-directory-audits
    • First observedlist-drive-folder-items
    • First observedlist-drive-root-items
    • First observedlist-event-attachments
    • First observedlist-joined-teams
    • First observedlist-mail-attachments
    • First observedlist-mail-child-folders
    • First observedlist-mail-folder-messages
    • First observedlist-mail-folders
    • First observedlist-mail-messages
    • First observedlist-meeting-attendance-records
    • First observedlist-meeting-attendance-reports
    • First observedlist-meeting-recordings
    • First observedlist-meeting-transcripts
    • First observedlist-my-drive-folder-items
    • First observedlist-my-drive-root-items
    • First observedlist-onenote-notebook-section-groups
    • First observedlist-onenote-notebook-sections
    • First observedlist-onenote-notebooks
    • First observedlist-onenote-section-group-sections
    • First observedlist-onenote-section-pages
    • First observedlist-onenote-sections
    • First observedlist-shared-mailbox-folder-messages
    • First observedlist-shared-mailbox-folders
    • First observedlist-shared-mailbox-messages
    • First observedlist-site-drives
    • First observedlist-site-list-items
    • First observedlist-site-lists
    • First observedlist-site-onenote-notebook-section-groups
    • First observedlist-site-onenote-notebook-sections
    • First observedlist-site-onenote-notebooks
    • First observedlist-site-onenote-pages
    • First observedlist-site-onenote-section-group-sections
    • First observedlist-site-onenote-section-pages
    • First observedlist-site-onenote-sections
    • First observedlist-team-channels
    • First observedlist-team-members
    • First observedlist-users
    • First observedreply-all-mail
    • First observedreply-all-shared-mailbox-mail
    • First observedreply-mail
    • First observedreply-shared-mailbox-mail
    • First observedreply-to-channel-message
    • First observedrespond-to-calendar-event
    • First observedsearch-drive-items
    • First observedsearch-loop-components
    • First observedsearch-m365
    • First observedsearch-my-drive
    • First observedsearch-onenote-pages
    • First observedsearch-people
    • First observedsearch-sites
    • First observedsearch-users
    • First observedsend-channel-message
    • First observedsend-chat-message
    • First observedsend-draft-email
    • First observedsend-mail
    • First observedsend-shared-mailbox-mail
    • First observedupdate-calendar-event

TDQS

B3.3/5.0

Scored across 103 tools

Disambiguation3/5

The toolset is organized by domain and descriptions are highly detailed, but with 103 tools there are several near-overlapping pairs (list-calendar-events vs get-calendar-view, search-drive-items vs search-my-drive, search-people vs search-users/list-users) that create selection risk. The explicit 'primary' and 'prefer' notes reduce ambiguity somewhat, but the sheer number of similar retrieval variants makes it hard for an agent to always pick the right one.

Naming Consistency4/5

Tool names consistently use kebab-case verb-noun phrasing, and domain prefixes like mail-, calendar-, team-, onenote-, and site- make the hierarchy fairly predictable. Minor inconsistencies exist such as get-calendar-view vs list-calendar-events, search-drive-items vs search-my-drive, and the long shared-mailbox variants, but there is no chaotic mixing of naming conventions.

Tool Count1/5

103 tools is an extreme count, especially for a server named m365-reporting-mcp, which implies a reporting focus rather than a full Microsoft Graph client surface. This exceeds the '50+ tools' threshold for extreme mismatch, even though each tool maps to a real Graph operation.

Completeness4/5

The server covers a remarkably broad set of M365 data sources: mail including shared mailboxes, calendar, Teams chats/channels/meetings/transcripts/recordings, OneNote, SharePoint/OneDrive, Loop, people, users, and audit logs. Minor gaps exist, such as no event-attachment content download, no shared-mailbox draft sending, and no direct channel keyword search, but these are documented with workarounds and the core reporting/read workflows are well covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers