Research: securing agentic workflows on devices with Agent IDs and OBO flows. Provides tools for sending and receiving Microsoft Teams messages, managing group chats, email polling, and daily summary generation.
Single tool with acceptable structure but significant gaps. Tool name follows verb-noun convention (wait_for_sponsor_dm) but is highly specialized and domain-specific. Input schema is present with proper types (timeout_seconds: integer, poll_interval_seconds: number) and descriptions are adequate but brief. The tool description (95 chars) explains the core function clearly but lacks critical operational details like retry behavior, error states, and what exactly is returned on success vs timeout. No output schema is documented in the source code, forcing LLMs to infer the response structure. The tool appears idempotent and read-only but lacks explicit schema documentation for the structured message data it claims to return. Code shows thoughtful progress messaging and animation frames, but these implementation details are invisible to the MCP protocol layer.
Long-blocking MCP tool: wait until a sponsor DMs the agent in Teams. Returns structured message data when a sponsor message arrives, or a timeout result if the wait window expires.
No documented output schema. Tool claims to return 'structured message data' but the MCP tool definition does not specify what fields/types are in that structure. LLMs cannot reliably parse or chain on unknown response formats.
Tool description lacks critical operational context. Does not explain: (1) What happens on timeout (does it return null, error, or partial message?)? (2) What does 'structured message data' contain (sender, text, timestamp, etc.)? (3) When should an LLM call this vs other tools? (4) Is it idempotent/retriable?
poll_interval_seconds parameter description is minimal ('Interval between polling attempts') and lacks constraint guidance (min/max values, recommended range). LLMs cannot determine if 0.1s or 3600s is acceptable.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
timeout_seconds parameter lacks minimum/maximum bounds. An LLM could pass negative, zero, or absurdly large values (e.g., 999999 seconds). No guidance on sensible ranges.
No error handling guidance documented. What errors can occur? (Network timeout, invalid credentials, sponsor offline, Teams API unavailable?) How should the LLM recover from each?