Skip to main content
Glama
outlook-mcp

outlook-mcp

by ajs117

list_messages

Lists Outlook folder messages newest first with compact ref handles for follow-up reads, moves, deletes, or bulk actions, and supports search, filters, paging, and fetch-all triage.

Instructions

List messages in a folder, newest first (unless searching).

Returns compact rows keyed by a short ref handle (not the raw Graph id) — pass that ref to get_message / move / delete / the bulk_* tools.

Args: folder: folder id or well-known name (inbox, archive, deleteditems, sentitems, drafts, junkemail). top: max number of messages to return per page (ignored if fetch_all is True). skip: number of messages to skip, for manual paging (ignored if fetch_all is True). filter_query: raw OData $filter, e.g. "receivedDateTime le 2026-01-01T00:00:00Z" or "isRead eq false". search: free-text search (Graph $search); when set, filter_query/order are ignored. fetch_all: if True, follow pagination automatically and return up to max_results messages instead of a single page of top. Use this for bulk operations over a whole folder. max_results: cap on messages returned when fetch_all is True (safety limit, default 500). include_keywords: attach a short salient-keyword list per message (subject+preview) for triage. include_preview: attach the full plaintext preview per message. Prefer include_keywords for triage and get_message for a full read — a preview per message across a big folder is costly.

Input Schema

NameRequiredDescriptionDefault
topNo
skipNo
folderNoinbox
searchNo
fetch_allNo
max_resultsNo
filter_queryNo
include_previewNo
include_keywordsNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden and does well: it discloses default ordering, the `ref` handle indirection, automatic pagination under fetch_all, a default safety cap of 500, and an explicit cost warning that per-message previews across a big folder are expensive. It stops short of stating read-only semantics, auth/permission needs, or rate limits.

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

Conciseness4/5

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

Front-loaded with the one-line purpose, ordering, and the critical `ref` handoff before the Args block, and each Args line adds real information rather than restating a name. It runs long, but the length is driven by nine undocumented parameters, so little is wasted.

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?

An output schema exists, so return values need no elaboration beyond the `ref` handoff, which is supplied anyway. For a zero-required-parameter, nine-argument listing tool with no annotations, an agent has everything needed to page, filter, search, or bulk-fetch correctly.

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?

Schema description coverage is 0%, so the description must compensate entirely and it does — all nine parameters are explained with behavior the schema cannot express: well-known folder names enumerated, top/skip nullified by fetch_all, an OData $filter example, search precedence over filter, and max_results described as a safety limit with its default.

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 and resource ('List messages in a folder') plus the default ordering and the one condition that changes it ('newest first (unless searching)'). It also explains the returned shape ('compact rows keyed by a short `ref` handle (not the raw Graph id)'), which instantly distinguishes it from get_message and the bulk_* siblings.

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 conditions for the tricky flags: fetch_all for whole-folder bulk work, include_keywords for triage vs get_message for a full read, and notes that search causes filter_query/order to be ignored. It does not, however, route the agent between this tool and siblings like inbox_summary, sender_summary, or bulk_by_query, so the alternatives coverage is partial.

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