Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

iMessage MCP

NPM · IMESSAGE-MCP · SCANNED AUG 3

25 tools for searching, analyzing, and exploring your iMessage history on macOS.

Available components

+23 this week 69 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security87
  • No malware found by supply-chain analysis.Pass
  • Only part of the dependency tree could be resolved (130 of 134), so this covers what we could see, not the whole tree.Partial
  • No install/post-install scripts declared.Pass
  • Only part of the dependency tree could be resolved (130 of 134), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability74
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2887 tokens (~115/item across 25 items; 25 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · imessage-mcp

# add to Claude Code
claude mcp add anipotts-imessage-mcp -- npx -y imessage-mcp
# add to Codex CLI
codex mcp add anipotts-imessage-mcp -- npx -y imessage-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "anipotts-imessage-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "imessage-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add anipotts-imessage-mcp --command npx --arg -y --arg imessage-mcp
# ~/.hermes/config.yaml
mcp_servers:
  anipotts-imessage-mcp:
    command: "npx"
    args: ["-y", "imessage-mcp"]
// mcp.json
{
  "mcpServers": {
    "anipotts-imessage-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "imessage-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

  • 2 Aug 26 +10
    • Provenance: fail → unverified security
    • Install scripts: pass → unverified security
    • Known CVEs: unverified → partial security
    • Maintenance: pass → unverified functional
    • License: pass → unverified functional
    • Dependency health: unverified → partial functional
    • Stability: unverified → 0.23 functional
    • Licence: MIT functional
  • 1 Aug 26 −10
    • Known CVEs: partial → unverified security
    • Dependency health: partial → unverified functional
  • 31 Jul 26 +53
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 −64
    • Known CVEs: partial → unverified security
    • Malware scan: pass → unverified security
    • Dependency health: partial → unverified functional
    • Tool coverage: 100 → unverified functional
  • 29 Jul 26 +54
    • Provenance: unverified → fail security
    • Known CVEs: unverified → partial security
    • Install scripts: unverified → pass security
    • Maintenance: unverified → pass functional
    • License: unverified → pass functional
    • Tool coverage: unverified → 100 functional
    • Schema quality: unverified → excellent functional
    • Licence: MIT functional
  • 28 Jul 26 −21
    • Tool coverage: 100 → unverified functional
    • Dependency health: unverified → partial functional
    • First check of Schema quality: unverified functional
  • 27 Jul 26 46

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Analysed npm/[email protected]

Provenance none

Ecosystem: npm · Outcome: none

Dependencies 130 packages

130 packages in the resolved dependency tree · 130 deprecated · 49 stale.

The dependency tree was only partially resolved, so these counts may be incomplete.

MCP tools — 25 exposed · ~2,686 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
contact_stats ~57

Deep per-contact analytics: message volumes, response time estimates, conversation patterns, and yearly trends.

NameTypeReqDescription
contactstringyesContact handle or name fragment
date_fromstringStart date
date_toEnd date

No output schema declared.

No examples provided.

conversation_gaps ~93

Find the longest silences in a conversation. Detects periods where you and a contact stopped talking — falling-outs, busy periods, or drifting apart. Shows gap duration and when it happened.

NameTypeReqDescription
contactstringyesContact handle or name
limitnumberMax gaps to return (default 10)
min_gap_daysnumberMinimum gap in days to include (default: 7)

No output schema declared.

No examples provided.

double_texts ~134

Detect double-texting and unanswered message patterns. Finds when you (or a contact) sent multiple consecutive messages without a reply. Shows frequency, longest bursts, and who does it more. Omit contact for a global ranking of who you double-text the most.

NameTypeReqDescription
contactstringContact handle or name (omit for global double-text ranking)
date_fromstringStart date (ISO)
date_toEnd date (ISO)
limitnumberMax burst results (default 20)
min_consecutivenumberMinimum consecutive messages to count (default: 2)

No output schema declared.

No examples provided.

first_last_message ~71

The very first and very last message ever exchanged with a contact. People use this for sentimental lookups like 'what was the first text I sent my partner?' or 'what was the last thing my grandparent texted me?'

NameTypeReqDescription
contactstringyesContact handle (phone/email) or name

No output schema declared.

No examples provided.

forgotten_contacts ~124

Find dormant relationships — contacts you used to message but haven't talked to in a long time. Great for reconnecting with people you've lost touch with. By default excludes contacts you've never replied to.

NameTypeReqDescription
inactive_daysnumberDays of inactivity to count as 'forgotten' (default: 365)
include_allbooleanInclude messages from all contacts, even those you've never replied to (default: false)
limitnumberMax results (default 20)
min_messagesnumberMinimum past messages to qualify (default: 10)

No output schema declared.

No examples provided.

get_contact ~43

Deep info on a specific contact: tier, message stats, yearly breakdown, and recent messages.

NameTypeReqDescription
contactstringyesContact handle (phone/email) or name fragment

No output schema declared.

No examples provided.

get_conversation ~124

Get a full conversation thread with a specific contact or chat. Supports cursor-based pagination via before_rowid for scrolling through history.

NameTypeReqDescription
before_rowidnumberCursor: only messages before this ROWID (for pagination)
chat_idstringChat identifier (e.g. chat123456789)
contactstringContact handle (phone/email) or name
date_fromstringStart date filter
date_toEnd date filter
limitnumberMax messages (default 50, max 500)

No output schema declared.

No examples provided.

get_edited_messages ~110

Find edited and unsent (retracted) messages. Queries date_retracted and date_edited columns. Returns message list with timestamps and per-contact stats.

NameTypeReqDescription
contactstringFilter by contact handle or name
date_fromstringStart date (ISO)
date_toEnd date (ISO)
limitnumberMax results (default 50, max 500)
typestringType of edit to search for (default: both)

No output schema declared.

No examples provided.

get_group_chat ~65

Detailed info on a specific group chat: all members with per-member message counts, activity timeline, and recent messages.

NameTypeReqDescription
chat_idstringChat identifier (e.g. chat123456789)
namestringGroup chat display name (fuzzy match)

No output schema declared.

No examples provided.

get_message_effects ~97

iMessage expressive send effects and screen effects analytics: slam, loud, gentle, invisible ink, confetti, fireworks, balloons, lasers, etc. Queries expressive_send_style_id.

NameTypeReqDescription
contactstringFilter by contact handle or name
date_fromstringStart date (ISO)
date_toEnd date (ISO)
limitnumberMax results for detail lists (default 20)

No output schema declared.

No examples provided.

get_reactions ~131

Tapback/reaction analytics: distribution by type, top reactors, most-reacted messages, emoji breakdown. Queries associated_message_type 2000-2005 for love/like/dislike/laugh/emphasize/question reactions.

NameTypeReqDescription
contactstringFilter by contact handle or name
date_fromstringStart date (ISO)
date_toEnd date (ISO)
limitnumberMax results for top lists (default 20)
reaction_typestringFilter by specific reaction type
sent_onlybooleanOnly reactions sent by you

No output schema declared.

No examples provided.

get_read_receipts ~91

Read receipt and delivery timing analytics: per-contact read latency stats, unread patterns, fastest/slowest readers. Queries date_read and date_delivered columns.

NameTypeReqDescription
contactstringFilter by contact handle or name
date_fromstringStart date (ISO)
date_toEnd date (ISO)
limitnumberMax contacts to show (default 20)

No output schema declared.

No examples provided.

get_thread ~84

Reconstruct iMessage reply threads using thread_originator_guid. Returns nested thread trees with parent message and all replies in order.

NameTypeReqDescription
contactstringFilter by contact handle or name -- shows threads from conversations with this contact
limitnumberMax threads to return (default 10)
message_guidstringGUID of the thread originator message

No output schema declared.

No examples provided.

help ~31

Show the imessage-mcp guide: all 25 tools and usage examples. Call this when you're unsure what's available.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_attachments ~125

Query message attachments (images, videos, audio, documents) with filtering by contact, MIME type, and date range. Returns file metadata, not file contents.

NameTypeReqDescription
contactstringFilter by contact handle
date_fromstringStart date (ISO)
date_toEnd date (ISO)
limitnumberMax results (default 50, max 500)
mime_typestringFilter by MIME type prefix (e.g. 'image/', 'video/', 'audio/')
offsetnumberPagination offset

No output schema declared.

No examples provided.

list_contacts ~128

List all contacts with message counts and tier assignments. Supports filtering by tier and minimum message threshold. By default, only shows contacts you've actually messaged (replied to). Use include_all to see all.

NameTypeReqDescription
include_allbooleanInclude messages from all contacts, even those you've never replied to (default: false)
limitnumberMax results (default 50, max 500)
min_messagesnumberMinimum message count to include
sort_bystringSort order (default: messages)
tierstringFilter by contact tier

No output schema declared.

No examples provided.

list_group_chats ~75

List all group chats with member counts, message volumes, and activity dates. Group chats have multiple participants.

NameTypeReqDescription
limitnumberMax results (default 50, max 500)
min_messagesnumberMinimum message count to include
sort_bystringSort order (default: messages)

No output schema declared.

No examples provided.

message_stats ~124

Aggregate message statistics with flexible time-series grouping. Returns counts, sent/received splits, and averages grouped by day, week, month, year, hour, or day-of-week. By default excludes contacts you've never replied to.

NameTypeReqDescription
contactstringFilter by contact handle
date_fromstringStart date (ISO)
date_toEnd date (ISO)
group_bystringTime grouping (default: month)
include_allbooleanInclude messages from all contacts, even those you've never replied to (default: false)

No output schema declared.

No examples provided.

on_this_day ~160

Messages from this date in previous years — like 'Memories' for iMessage. Shows what you and your contacts were talking about exactly 1, 2, 3+ years ago today. By default excludes contacts you've never replied to.

NameTypeReqDescription
contactstringFilter by contact handle or name
datestringDate to look up (ISO format, default: today)
include_allbooleanInclude messages from all contacts, even those you've never replied to (default: false)
limitnumberMax messages per year (default 5)
month_daystringMonth-day to look up (MM-DD format, e.g. '12-25' for Christmas). Defaults to today.

No output schema declared.

No examples provided.

resolve_contact ~58

Fuzzy-match a name, phone number, or email to a contact record. Uses multi-level resolution: exact match, digits, fuzzy, and macOS AddressBook.

NameTypeReqDescription
querystringyesName, phone number, or email to resolve

No output schema declared.

No examples provided.

search_messages ~236

Full-text search across all iMessages with rich filtering. Supports query text, contact, date range, direction, group chat, and attachment filters. By default, only searches contacts you've messaged. Use include_all to search everything.

NameTypeReqDescription
contactstringFilter by contact handle (phone/email) or name
date_fromstringStart date (ISO format, e.g. 2024-01-01)
date_toEnd date (ISO format, e.g. 2024-12-31)
group_chatstringFilter by group chat name or chat_identifier
has_attachmentbooleanOnly messages with attachments
include_allbooleanInclude messages from all contacts, even those you've never replied to (default: false)
limitnumberMax results (default 50, max 500)
offsetnumberPagination offset
querystringText to search for (case-insensitive substring match)
received_onlybooleanOnly messages received
sent_onlybooleanOnly messages sent by you

No output schema declared.

No examples provided.

streaks ~124

Consecutive-day messaging streaks with contacts. Like Snapchat streaks but for iMessage. Shows longest streak, when it happened, and current streak status. By default excludes contacts you've never replied to.

NameTypeReqDescription
contactstringFilter by contact (omit for top streaks across all contacts)
include_allbooleanInclude messages from all contacts, even those you've never replied to (default: false)
limitnumberMax contacts (default 20)
min_streaknumberMinimum streak length in days (default: 3)

No output schema declared.

No examples provided.

temporal_heatmap ~113

Generate a 7x24 activity heatmap (day-of-week x hour-of-day). Returns message counts for each of the 168 weekly time slots. By default excludes contacts you've never replied to.

NameTypeReqDescription
contactstringFilter by contact handle
date_fromstringStart date
date_toEnd date
include_allbooleanInclude messages from all contacts, even those you've never replied to (default: false)
sent_onlybooleanOnly your messages

No output schema declared.

No examples provided.

who_initiates ~173

Who starts conversations? After a gap of N hours, the next message is a 'conversation initiation.' Shows per-contact who reaches out first and how often. Answers 'do I always text first?' By default excludes contacts you've never replied to.

NameTypeReqDescription
contactstringFilter by contact (omit for global ranking)
date_fromstringStart date (ISO)
date_toEnd date (ISO)
gap_hoursnumberHours of silence before a new conversation (default: 8)
include_allbooleanInclude messages from all contacts, even those you've never replied to (default: false)
limitnumberMax contacts to show (default 20)
min_conversationsnumberMinimum conversations to include contact (default: 5)

No output schema declared.

No examples provided.

yearly_wrapped ~115

Your iMessage Year in Review — like Spotify Wrapped but for texting. Returns a complete summary of a year: total messages, top contacts, busiest day, monthly trends, reactions, group chats, media shared, late-night texting, new contacts, and effects used. By default excludes contacts you've never replied to. Defaults to last year.

NameTypeReqDescription
include_allbooleanInclude messages from all contacts, even those you've never replied to (default: false)
yearnumberYear to summarize (default: last year)

No output schema declared.

No examples provided.