Privacy-first MCP server for iMessage conversation analysis with Claude
This server presents 18 tools with significant definition quality gaps. While 3 tools (semantic_search_tool, emotion_timeline_tool, topic_clusters_ml_tool) have comprehensive schemas and descriptions meeting A-grade baselines, the remaining 15 tools have critical deficiencies: 12 tools are defined in archived/old files with no visibility into actual schema implementations, and 3 consent/health tools lack input schema documentation. Naming is inconsistent, tools mix verb_noun (semantic_search_tool, imsg_health_check) with noun-heavy patterns (imsg_relationship_intelligence, imsg_anomaly_scan). Only the 3 ML tools in active src/ have complete parameter descriptions; the others are inferred from archive files with no schema evidence. Error handling is absent across all tools, no recovery guidance, categorization, or actionable messages. Output schemas are undocumented for all 18 tools. The server lacks composition patterns: no clear tool chain design, no pagination for list-like tools, and no batch variants for repeated operations.
Check current consent status.
Track emotional dimensions over time using ML models. Analyzes joy, sadness, anger, and anxiety levels in conversations using a lightweight emotion detection model.
Detect unusual communication patterns.
Predict optimal times to contact someone.
Generate communication frequency heatmap data.
Resolve phone/email/handle to hashed contact ID.
Extract conversation topics using keyword analysis.
12 of 18 tools defined in archive/old_main_versions/main_complete.py with no visible schema implementations. Tool definitions inferred from docstrings only; actual registration and input_schemas not visible in provided source.
No output schemas documented for any of the 18 tools. LLMs cannot predict return types, structure follow-up calls, or extract relevant fields. Critical for tool composition and context efficiency.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 51 | - | v1 |
Validate DB access, schema presence, index hints, and read-only mode.
Analyze social network structure from group chats.
Comprehensive relationship analysis with a specific contact.
Analyze response time patterns.
Get heavily redacted sample messages for context.
Track sentiment changes over time.
Global overview for Claude's kickoff context.
Request user consent to access iMessage data.
Revoke user consent to access iMessage data.
Semantic search across messages using embeddings. This tool uses sentence transformers to find messages semantically similar to a natural language query, going beyond keyword matching.
Cluster messages into semantic topics using ML. Uses embeddings and clustering to discover natural topic groups in conversations, with automatic labeling.
No error handling guidance in any tool. Errors return bare messages without recovery steps, error classification (retryable vs fatal), or actionable next steps for the LLM.
Parameter naming inconsistency: some tools use 'contact_id' (hashed), others use bare 'contact_id' without clarifying it expects a hash. The tool imsg_contact_resolve returns a hashed contact ID, but this contract is not explicit in downstream tool descriptions. Creates ambiguity about ID format and linkage.
Three consent tools (request_consent, check_consent, revoke_consent) have vague descriptions (<45 chars) and no visible input schemas. revoke_consent is marked WRITE risk but has no confirmation/dry-run pattern to prevent accidental consent revocation.
No pagination support on list-like tools (imsg_conversation_topics, imsg_cadence_calendar, imsg_network_intelligence). Without limits and pagination, large result sets risk context window exhaustion. Baseline requires pagination with limit, offset/cursor, and total count.
Naming lacks clear verb prefix for analysis tools. Names like imsg_anomaly_scan, imsg_sentiment_evolution, imsg_response_time_distribution are noun-heavy and don't start with action verbs (e.g., get_, analyze_, detect_). This forces LLMs to read full descriptions to infer intent. Baseline: 90% of A+ tools start with action verb.
Tool composition is underdeveloped. 15 of 18 tools operate on iMessage data but no clear chaining pattern is documented. E.g., imsg_contact_resolve returns hashed contact IDs, but no tool explicitly states it accepts that ID format. No tool outputs IDs needed for follow-up calls (team_id, conversation_id, message_id).
The ML tools (semantic_search_tool, emotion_timeline_tool, topic_clusters_ml_tool) have good descriptions but rely on optional dependencies. require_ml_dependencies() decorator returns errors, but no tool documentation mentions this optional nature upfront. LLMs may invoke tools that fail silently if [ml] extras not installed.
Privacy/redaction is mentioned in semantic_search_tool and imsg_summary_overview descriptions, but no consistent security pattern across tools. Tools return 'hashed contact IDs' but no documentation on whether this is reversible, what the hashing algorithm is, or if users can map hashes back. No audit trail or logging documented.