Skip to main content
Glama

Teams List Chats

teams_list_chats
Read-only

Lists the Microsoft Teams chats of a Microsoft 365 account — direct messages, group chats and meeting chats — most recently active first, read from Microsoft 365. Each chat has its id (for teams_read_chat_messages), a title, the other participants, its type (oneOnOne, group or meeting) and its last message. participants names every other member; one whose name could not be read shows as "unnamed member" (or "unnamed member (external)"), never as nothing. participants_state says how far to trust it: resolved, unresolved (at least one unnamed), only_you (nobody else in the chat) or unknown (the member list could not be read: participant_count and has_external_members are then absent). Reads at most 20 pages of 50 chats. When the read is cut (by that bound, or because the call ran out of time) the answer has truncated: true. Needs a work or school Microsoft 365 account connected with connect_m365_account (personal Microsoft accounts have no Teams reads). When no Microsoft 365 account is connected at all, it reads the Teams app's local cache on this Mac instead (needs Full Disk Access, can be hours or days behind); the answer's source says which one answered (graph or local_cache).

Input Schema

NameRequiredDescriptionDefault
limitNoMax items to return (default 50)
accountNoWhich connected Microsoft 365 account to use: its email (UPN), its id from list_m365_accounts, or its display name when unique. Leave it out to use the default account.

Output Schema

NameRequiredDescriptionDefault
noteNo
chatsNo
countNo
errorNo
sourceNoWhich source answered: graph (Microsoft 365) or local_cache (the Teams app's cache on this Mac, used only when no Microsoft 365 account is connected).
accountNoThe email (UPN) of the Microsoft 365 account this call used.
fix_toolNo
truncatedNoPresent and true only when the read was cut before it had everything it was asked for.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedOutput schema / properties / chats / items / properties / has_external_members
      Added value: +{
      +  "description": "true when a member is from outside the account's organization. Absent when participants_state is unknown.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / chats / items / properties / participant_count
      Added value: +{
      +  "description": "How many other members the chat has. Absent when participants_state is unknown.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / chats / items / properties / participants_state
      Added value: +{
      +  "enum": [
      +    "resolved",
      +    "unresolved",
      +    "only_you",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
  2. Changed2 schema fields changed
    • addedOutput schema / properties / fix_tool
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / source
      Added value: +{
      +  "description": "Which source answered: graph (Microsoft 365) or local_cache (the Teams app's cache on this Mac, used only when no Microsoft 365 account is connected).",
      +  "enum": [
      +    "graph",
      +    "local_cache"
      +  ],
      +  "type": "string"
      +}
  3. Changed5 schema fields changed
    • addedInput schema / properties / account
      Added value: +{
      +  "description": "Which connected Microsoft 365 account to use: its email (UPN), its id from list_m365_accounts, or its display name when unique. Leave it out to use the default account.",
      +  "type": "string"
      +}
    • changedInput schema / properties / limit / description
      Previous value: -"Max chats to return (default 50)"New value: +"Max items to return (default 50)"
    • addedOutput schema / properties / account
      Added value: +{
      +  "description": "The email (UPN) of the Microsoft 365 account this call used.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / note
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / truncated
      Added value: +{
      +  "description": "Present and true only when the read was cut before it had everything it was asked for.",
      +  "type": "boolean"
      +}
  4. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Goes well past the readOnly/openWorld annotations: discloses the 20-pages-of-50 read bound, the truncated flag when the read is cut by bound or timeout, the meaning of each participants_state value, and that participant_count/has_external_members are absent when the member list is unreadable. It also discloses the auth prerequisite (work/school account via connect_m365_account) and the local-cache fallback with Full Disk Access and staleness caveat — behavioral context no annotation provides.

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?

Dense but front-loaded: what it returns, then field semantics, then limits/truncation, then auth and fallback. Nearly every clause earns its place, though the participants/paticipants_state passage is long enough to slow scanning.

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

Completeness5/5

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

With an output schema present, return shape needn't be restated, and the description still covers auth prerequisites, degraded-mode behavior, source attribution, truncation signaling and field trust levels. An agent has everything needed to call it and interpret the 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 coverage is 100% and both parameters (limit, account) are fully documented there; the description adds only indirect context via the 20-pages-of-50 read cap that bounds paging. It never explains the account selector or that omitting it uses the default, 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?

States a specific verb and resource (lists the Microsoft Teams chats of a Microsoft 365 account) and scopes it to direct, group and meeting chats with explicit ordering. It names the downstream sibling teams_read_chat_messages, so an agent can place it among teams_list_channels, teams_list_teams and teams_search_messages without opening a schema.

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?

Clearly says the chat ids feed teams_read_chat_messages and explains the fallback path when no M365 account is connected, which is real routing guidance. It stops short of stating when to prefer teams_search_messages or teams_call_history over this list, so alternatives are implied rather than enumerated.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources