msgmcp exposes 9 tools with basic naming and descriptions, but lacks critical depth. All tools have names starting with action verbs (get_, list_, read_, send_, search_) and descriptions present (avg ~80 chars). However, parameter descriptions are sparse or missing entirely. Input schemas are visible but incomplete: most parameters lack type constraints, enums, or validation guidance. Output schemas are undocumented, LLMs cannot predict what fields to expect. Error handling is absent from visible code. The send-message tool is destructive but has no confirmation pattern. Overall, this is a functional but immature tool set that would require significant hardening before production use.
List file attachments (images, videos, etc.) from a conversation
Get info about an iMessage contact including message count and dates
Get tapback reactions (love, like, dislike, laugh, emphasize, question) on messages in a conversation
List recent iMessage conversations with last message preview
Read and return an image/file attachment from a conversation as base64
Read messages from a specific iMessage conversation
Search iMessages by text content across all or specific conversations
No output schemas documented. LLMs cannot predict response structure, forcing them to guess at field names and types for downstream tool chaining.
send-message is destructive (WRITE risk) but lacks confirmation/dry-run pattern. Agents can send messages without user approval, risking unintended communications.
Parameter descriptions are minimal or absent. E.g., 'chat_identifier' lacks guidance on format (phone number vs email), and 'index' in read-attachment has no bounds or default behavior documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Send an iMessage or SMS to a contact
Get all unread iMessage conversations with their unread messages
No error handling guidance visible. Tools do not document what happens on invalid input (e.g., malformed phone number, non-existent chat_identifier) or how LLMs should recover.
Pagination not implemented. list-conversations and get-attachments accept 'limit' but no offset/cursor, risking context window exhaustion on large result sets.