Skip to main content
Glama
tinobruno

Teams Puppeteer MCP Server

by tinobruno

get_last_unread_message

Retrieve the most recent unread message from a specific Microsoft Teams chat, or scan all chats to get a compact list of unread messages with senders and text in one call.

Instructions

Reads unread messages. If 'chat_name' is provided, returns the latest unread message in that specific chat. If 'chat_name' is omitted, scans all Teams chats and returns a compact list of all unread messages with their senders and text in one single call. NEVER call list_teams_chats first.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
chat_nameNoOptional contact or group name. Leave empty/omitted to scan unread messages across ALL Teams chats.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of disclosure. It correctly signals a read-only operation, explains both execution modes, and discloses the return format for the scan-all case ('compact list of all unread messages with their senders and text'). It doesn't cover rate limits or the empty-result case, but the core behavior is transparent.

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 with zero waste: main action first, then the two-mode explanation, then a terse imperative exclusion. The most decision-relevant info (mode behavior) is front-loaded, and the 'NEVER' directive earns its place as a guardrail.

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 tool with one optional parameter and no annotations, the description is thorough: it covers both invocation modes, the return shape of the scan-all mode, and an exclusion. Minor gaps are the unspecified return format for the single-chat mode and the no-unread-messages case, but these are small for the tool's complexity.

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 baseline is 3. The description adds value beyond the schema by explaining the behavioral consequence of omitting chat_name (scan all chats and return a compact list in one call) versus providing it (return latest in that specific chat), which the schema's 'Optional contact or group name' does not convey.

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 ('Reads') and resource ('unread messages'), and clearly distinguishes the tool from siblings by its focus on unread status. It differentiates behavior for the two invocation modes (specific chat vs. all chats), making it unambiguous what this tool does relative to get_last_message and get_last_messages.

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

Usage Guidelines4/5

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

The description gives explicit guidance on when to use it with vs. without chat_name, and includes a strong exclusion directive ('NEVER call list_teams_chats first') that prevents a common mistake. However, it doesn't explicitly contrast with get_last_message/get_last_messages, leaving the unread-vs-all distinction to be inferred rather than stated.

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