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.

com.local-mcp/local-mcp

REMOTE · LOCAL-MCP.COM · 2 COMPONENTS · SCANNED AUG 3

Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.

+1 this week 64 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security66
Transport & Reachability100
Schema Quality & AI Usability69
  • 75% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Partial
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 23427 tokens (~103/item across 227 items; 226 tools + 1 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 Management11
  • Stability check failed: schema churn in the 8 days we've observed: 38 tool removals, 0 breaking changes, 0 auth/transport breaks, 26 additions. See how to fix → Fail
Tool Coverage95
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 81% of tool parameters carry a description.Partial
  • Structured output schemas are declared (84% of tools); any adoption earns full credit.Pass
Capabilities47
  • Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28. See how to fix → Fail
  • Supports UI / widget rendering.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.

remote · local-mcp.com

# add to Claude Code
claude mcp add --transport http com-local-mcp-local-mcp https://local-mcp.com/mcp
# ~/.codex/config.toml
[mcp_servers.com-local-mcp-local-mcp]
url = "https://local-mcp.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-local-mcp-local-mcp": {
      "type": "remote",
      "url": "https://local-mcp.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-local-mcp-local-mcp --url https://local-mcp.com/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  com-local-mcp-local-mcp:
    url: "https://local-mcp.com/mcp"
// mcp.json
{
  "mcpServers": {
    "com-local-mcp-local-mcp": {
      "type": "http",
      "url": "https://local-mcp.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

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 7 to 11.

  • 2 Aug 26 0
    • Tool “update_self_diagnosis” was removed security
    • Tool “update_local_mcp” was removed security
    • Tool “todo_list_lists” was removed security
    • Tool “delete_reminder_list” was removed security
    • Tool “signal_friction” was removed security
    • Tool “rename_reminder_list” was removed security
    • Tool “list_reminder_lists” was removed security
    • New tool “delete_reminder_folder”, which the server declares destructive security
    • Tool “word_append” rewrote its description, which is the text the model reads security
    • Tool “word_create” rewrote its description, which is the text the model reads security
    • Tool “file_read” rewrote its description, which is the text the model reads security
    • Tool “ppt_create” rewrote its description, which is the text the model reads security
    • Tool “safari_wait_for” rewrote its description, which is the text the model reads security
    • Tool “chrome_wait_for” rewrote its description, which is the text the model reads security
    • Schema quality: good → fair functional
    • Server version: ff5a8769-3ea → 592a6ae2-fec functional
    • Server version: 08fa612d-2a3 → ff5a8769-3ea functional
    • New tool “todo_get_folders” functional
    • New tool “report_friction” functional
    • New tool “rename_reminder_folder” functional
    • New tool “lmcp_upgrade_diagnostics” functional
    • New tool “lmcp_install_upgrade” functional
    • New tool “get_reminder_folders” functional
    • New tool “todoist_create_task” functional
    • New tool “connect_todoist” functional
    • New tool “todoist_list_tasks” functional
    • New tool “todoist_list_projects” functional
    • New tool “survey_respond” functional
    • New tool “disconnect_todoist” functional
    • New tool “survey_skip” functional
    • New tool “todoist_complete_task” functional
    • “list_omnifocus_tasks” reworded the description of “include_completed” cosmetic
    • “list_omnifocus_tasks” reworded the description of “inbox” cosmetic
    • “list_omnifocus_tasks” reworded the description of “flagged” cosmetic
    • “list_omnifocus_tasks” reworded the description of “due_today” cosmetic
    • “list_omnifocus_projects” reworded the description of “limit” cosmetic
    • “list_omnifocus_projects” reworded the description of “include_completed” cosmetic
    • “list_omnifocus_folders” reworded the description of “limit” cosmetic
    • “create_omnifocus_task” reworded the description of “name” cosmetic
    • “create_omnifocus_task” reworded the description of “due_date” cosmetic
    • “list_omnifocus_tasks” reworded the description of “limit” cosmetic
    • “create_omnifocus_task” reworded the description of “flagged” cosmetic
    • “complete_omnifocus_task” reworded the description of “confirm” cosmetic
    • “complete_omnifocus_task” reworded the description of “task_id” cosmetic
    • “complete_omnifocus_task” reworded the description of “task_name” cosmetic
    • “create_omnifocus_task” reworded the description of “confirm” cosmetic
    • “create_omnifocus_task” reworded the description of “defer_date” cosmetic
    • “update_reminder” reworded the description of “list_name” cosmetic
    • “todo_list_tasks” reworded the description of “list” cosmetic
    • “todo_create_task” reworded the description of “list” cosmetic
    • “create_omnifocus_task” reworded the description of “project” cosmetic
    • “create_omnifocus_task” reworded the description of “note” cosmetic
    • “list_omnifocus_tasks” reworded the description of “project” cosmetic
    • “search_omnifocus_tasks” reworded the description of “query” cosmetic
    • “search_omnifocus_tasks” reworded the description of “limit” cosmetic
    • “list_omnifocus_tasks” reworded the description of “tag” cosmetic
    • “safari_wait_for” reworded the description of “selector” cosmetic
    • “safari_wait_for” reworded the description of “text_match” cosmetic
    • “chrome_wait_for” reworded the description of “selector” cosmetic
    • “chrome_wait_for” reworded the description of “text_match” cosmetic
    • “safari_wait_for” made “selector” optional cosmetic
    • “chrome_wait_for” made “selector” optional cosmetic
  • 1 Aug 26 +1
    • Server version: b4f82cea-409 → 08fa612d-2a3 functional
  • 31 Jul 26 −4
    • Tool “servicenow_get_incident” was removed security
    • Tool “connect_servicenow” was removed security
    • Tool “disconnect_servicenow” was removed security
    • Tool “servicenow_add_comment” was removed security
    • Tool “servicenow_create_incident” was removed security
    • Tool “servicenow_list_my_incidents” was removed security
    • Tool “servicenow_search_incidents” was removed security
    • Tool “servicenow_search_kb” was removed security
    • Tool “servicenow_update_incident” was removed security
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “create_calendar_event” rewrote its description, which is the text the model reads security
    • Tool “create_referral_invites” rewrote its description, which is the text the model reads security
    • Tool “delete_calendar_event” rewrote its description, which is the text the model reads security
    • Tool “file_read” rewrote its description, which is the text the model reads security
    • Tool “finder_list” rewrote its description, which is the text the model reads security
    • Tool “finder_search” rewrote its description, which is the text the model reads security
    • Tool “report_problem” rewrote its description, which is the text the model reads security
    • Schema quality: pass → fail functional
    • MCP protocol: pass → fail functional
    • The server now declares the “prompts” capability functional
    • The server now declares the “resources” capability functional
    • First check of Schema quality: 75 functional
    • New prompt “draft_email” functional
    • New prompt “daily_briefing” functional
    • New prompt “summarize_inbox” functional
    • MCP protocol version: 2025-11-25 → 2024-11-05 functional
    • New resource “welcome.html” functional
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
    • Server version: 1.0 → b4f82cea-409 functional
    • “create_calendar_event” added an optional parameter “recurrence” cosmetic
    • “create_calendar_event” added an optional parameter “recurrence_count” cosmetic
    • “create_calendar_event” added an optional parameter “recurrence_interval” cosmetic
    • “create_calendar_event” added an optional parameter “recurrence_until” cosmetic
    • “delete_calendar_event” added an optional parameter “span” cosmetic
  • 30 Jul 26 +6
    • Stability: 0.10 → fail security
    • Schema quality: fair → good functional
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 29 Jul 26 +1

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

  • 28 Jul 26 −4
    • Tool “lmcp_state” rewrote its description, which is the text the model reads security
    • Schema quality: good → fair functional
    • New tool “list_missing_permissions” functional
    • New tool “configure_clients” functional
  • 27 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
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 · Probed https://local-mcp.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=local-mcp.com CN=YE2,O=Let's Encrypt,C=US 19 Jul 2026 17 Oct 2026 ECDSA 256 ECDSA-SHA384 534465691c49f58d100f7c86d2438a66172
SANs: *.local-mcp.com, local-mcp.com
CN=YE2,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 4df3b15dd6c0784c507cd37b58e6f115
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd
DNSSEC secure

Validation of local-mcp.com. Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
local-mcp.com. present 2371 13 Verified
local-mcp.com. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=15552000
content-security-policy default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' static.cloudflareinsights.com plausible.io https://*.clarity.ms https://www.googletagmanager.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https: blob:; font-src 'self' data:; connect-src 'self' https://www.local-mcp.com https://office-mcp-production.up.railway.app https://plausible.io https://static.cloudflareinsights.com https://cloudflareinsights.com https://api.npmjs.org https://*.clarity.ms https://*.google-analytics.com https://*.analytics.google.com https://www.googletagmanager.com https://cdn.growthbook.io; frame-ancestors 'none'; base-uri 'self'; form-action 'self' https://www.local-mcp.com https://chatgpt.com https://claude.ai
x-content-type-options nosniff
x-frame-options DENY
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(), microphone=(), geolocation=(), payment=()
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://local-mcp.com/mcp Verified 200
http (plaintext) http://local-mcp.com/mcp HTTPS enforced 301 https://local-mcp.com/mcp
MCP tools — 226 exposed · ~23,278 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
get_m365_person ~95

Get detailed information about a specific person in your Microsoft 365 directory by their user ID or email address. Use 'me' to get the currently authenticated user's profile.

NameTypeReqDescription
idstringyesUser ID (GUID), email address (UPN), or 'me' for the authenticated user, e.g. '[email protected]', 'a1b2c3d4-...', or 'me'
NameTypeReqDescription
departmentstring
emailstring
idstring
mobilestring
namestring
officestring
phonesarray
titlestring
upnstring

No examples provided.

get_reminder_folders ~41

Lists the lists (folders) in Apple Reminders (Reminders.app) on this Mac. For Microsoft To Do use todo_get_folders instead.

Input schema present but exposes no named parameters.

NameTypeReqDescription
countinteger
listsarray

No examples provided.

get_weather ~132

Gets the current weather and a short daily forecast for a location. Pass a city name ('London', 'San Francisco', 'Tokyo,JP') or 'lat,lon' coordinates. Uses Open-Meteo — no API key required. Location must be provided (there is no device-location access).

NameTypeReqDescription
daysintegerNumber of forecast days, 1-7 (default 3)
locationstringyesCity name (e.g. 'London', 'Buenos Aires', 'Tokyo,JP') or 'lat,lon' coordinates (e.g. '40.71,-74.01')

Structured output declared, but exposes no named fields.

No examples provided.

list_accounts ~79

Lists Mail.app email accounts WITH each account's email addresses and type (imap/pop/iCloud). Slower — queries Mail directly. For just the account NAMES (to pass to list_emails(account=...)), prefer list_email_accounts: it's faster (cached, no Mail lock). Use list_accounts only when you specifically need the addresses or account type.

Input schema present but exposes no named parameters.

NameTypeReqDescription
accountsarrayyes
countintegeryes

No examples provided.

list_calendar_events ~223

Lists events from the Mac's Calendar app (Calendar.app, local/iCloud calendars) in a date range. Defaults to today + 7 days. For a Microsoft 365 calendar use m365_list_events instead.

NameTypeReqDescription
calendarstringFilter by calendar name — partial, case-insensitive (optional). To pick one of several same-titled calendars, qualify it as "Account/Calendar" (e.g. "Exchange/Calendario") using the source from list_…
calendar_idstringFilter by a single calendar UUID from list_calendar_names (optional).
calendar_idsarrayFilter by multiple calendar UUIDs (optional).
end_datestringISO 8601 date (YYYY-MM-DD). Defaults to start_date + 7 days.
limitintegerMax number of events to return (most recent first within the range). Optional; defaults to all in range.
start_datestringISO 8601 date (YYYY-MM-DD). Defaults to today.
NameTypeReqDescription
countinteger
end_datestring
eventsarray
start_datestring

No examples provided.

list_calendar_names ~39

Lists the calendars in the Mac's Calendar app (Calendar.app, local/iCloud). For Microsoft 365 calendars use the m365 calendar tools instead.

Input schema present but exposes no named parameters.

NameTypeReqDescription
calendarsarray
countinteger

No examples provided.

list_contacts ~52

Lists contacts from the macOS Contacts app. Optionally filter by group.

NameTypeReqDescription
group_namestringFilter by group name (optional)
limitintegerMax contacts to return (default 100)
NameTypeReqDescription
contactsarrayyes
countintegeryes

No examples provided.

list_displays ~56

Lists connected displays with bounds (global space, top-left origin, points), backing scale_factor, and which is main. display_id is stable for the session so a scripted run can target the same display across steps. No permission required.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_email_accounts ~80

Lists all Mail.app account NAMES (fast — cached, no Mail lock). This is the preferred way to get account names: call it first to discover them, then use list_emails(account=name) to fetch messages from a specific account. If you also need each account's email addresses or type (imap/pop/iCloud), use list_accounts instead.

Input schema present but exposes no named parameters.

NameTypeReqDescription
accountsarrayMail.app accounts, by name.
countintegerNumber of accounts.
tipstring

No examples provided.

list_email_folders ~176

Lists the full folder (mailbox) tree for Apple Mail (Mail.app) accounts, including nested subfolders. Use this to discover the exact folder names that move_email(target_mailbox=...) and list_emails(mailbox=...) expect. Outlook.com, Exchange, Gmail, iCloud and IMAP accounts added to Mail.app are all included. For a Graph-only Microsoft 365 mailbox not added to Mail.app, use m365_list_emails instead. Pass account=<name> (from list_email_accounts) to enumerate one account fully; without it, every account is walked which can be slow on macOS 15+. Message counts are off by default (slow on IMAP) — pass include_counts=true to add unread/total per folder.

NameTypeReqDescription
accountstring
include_countsboolean
NameTypeReqDescription
account_countinteger
accountsarray
folder_countinteger
next_actionsarray
truncatedboolean

No examples provided.

list_emails ~223

Use this when the user wants to see or triage their inbox on this Mac (Apple Mail — any account added to Mail.app: iCloud, Gmail, IMAP, Exchange). Lists email headers (subject, sender, date, unread); call read_email(message_id) for the full body. For a Microsoft 365 mailbox NOT added to Mail.app, use m365_list_emails. IMPORTANT: On machines with 3+ accounts, always pass account=<name> (from list_email_accounts) to avoid timeouts. Without account, all accounts are scanned which can be slow on macOS 15+. Supports pagination: use offset to page through results (e.g. offset=20 for page 2 with limit=20). The limit parameter is capped at 50 per call (default 20); to read more, page with offset rather than requesting a larger limit.

NameTypeReqDescription
accountstring
limitinteger
mailboxstring
offsetinteger
unread_onlyboolean
NameTypeReqDescription
countinteger
messagesarray
next_actionsarray
offsetinteger

No examples provided.

list_m365_people_insights ~65

List the people most relevant to you in Microsoft 365 — based on your communication patterns, collaboration history, and org chart. Useful for meeting prep and contact enrichment.

NameTypeReqDescription
limitintegerNumber of people to return (default 20, max 50)
NameTypeReqDescription
countinteger
peoplearray

No examples provided.

list_message_chats ~32

Lists recent iMessage/Messages.app conversations.

NameTypeReqDescription
limitintegerMax conversations (default 30)
NameTypeReqDescription
chatsarray
countinteger
notestring

No examples provided.

list_missing_permissions ~116

Returns the macOS privacy (TCC) permissions Local MCP needs that are NOT granted yet, each with a one-click `open_url` that opens the exact System Settings → Privacy & Security pane. Read-only and passive (never prompts). Use it during setup or before a workflow to tell the user precisely which "Allow" clicks remain (Calendar, Contacts, Reminders, Mail Automation, Full Disk Access, Screen Recording, Accessibility) instead of failing mid-task. `all_granted: true` means nothing is left to do.

Input schema present but exposes no named parameters.

NameTypeReqDescription
all_grantedboolean
grantedarray
missingarray
summarystring

No examples provided.

list_notes ~35

Lists notes from Apple Notes app. Optionally filter by folder.

NameTypeReqDescription
folderstring
limitinteger
NameTypeReqDescription
countinteger
next_actionsarray
notesarray
totalinteger

No examples provided.

list_omnifocus_folders ~63

Lists folders in OmniFocus. Folders group related projects (e.g. "Work", "Personal"). Use list_omnifocus_projects to see the projects inside them.

NameTypeReqDescription
limitintegerMax folders to return (default 100).
NameTypeReqDescription
countinteger
foldersarray

No examples provided.

list_omnifocus_projects ~50

Lists projects in OmniFocus.

NameTypeReqDescription
include_completedbooleanInclude completed/dropped projects (default excludes them).
limitintegerMax projects to return (default 100).
NameTypeReqDescription
countinteger
projectsarray

No examples provided.

list_omnifocus_tags ~20

Lists all tags defined in OmniFocus.

Input schema present but exposes no named parameters.

NameTypeReqDescription
countinteger
tagsarray

No examples provided.

list_omnifocus_tasks ~130

Lists tasks from OmniFocus. Filter by project, tag, inbox, due today, or flagged status.

NameTypeReqDescription
due_todaybooleanOnly tasks due today or overdue.
flaggedbooleanOnly flagged tasks.
inboxbooleanOnly unfiled inbox tasks.
include_completedbooleanInclude completed tasks (default excludes them).
limitintegerMax tasks to return (default 50).
projectstringOnly tasks in this project (name, case-insensitive).
tagstringOnly tasks carrying this tag.
NameTypeReqDescription
countinteger
tasksarray

No examples provided.

list_referral_candidates ~83

Returns the user's emailable contacts plus an invite template, for recommending LMCP to a colleague. A user would invoke this when they want to invite or recommend someone. Returns a list of candidate contacts and a message template; create_referral_invites then generates each chosen person's unique invite link.

NameTypeReqDescription
limitintegerMax contacts to return (default 60)
NameTypeReqDescription
candidatesarray
countinteger
how_tostring
langstring
template_bodystring
template_subjectstring

No examples provided.

list_reminders ~103

Lists reminders from Apple Reminders (Reminders.app) on this Mac. Optionally filter by completion status or list name. For Microsoft To Do use todo_list_tasks instead.

NameTypeReqDescription
completedbooleantrue=completed, false=incomplete (default), omit=all
limitintegerMax number of reminders to return (earliest due first). Optional; defaults to all.
list_namestringFilter by reminder list name (optional)
NameTypeReqDescription
countintegerNumber returned in this response.
remindersarray
totalintegerTotal matching before the limit.

No examples provided.

list_safari_bookmarks ~55

Lists Safari bookmarks (title + URL) from the Mac's Safari (reads ~/Library/Safari/Bookmarks.plist — needs Full Disk Access).

NameTypeReqDescription
limitintegerMax bookmarks to return (default 100)
NameTypeReqDescription
bookmarksarray
countinteger
notestringPresent when bookmarks can't be read (e.g. Full Disk Access needed).

No examples provided.

list_windows ~121

Lists on-screen windows of any app with window_id, owning app bundle id + name, title, bounds (global space, top-left, points), display_id, and is_focused. Window TITLES require Screen Recording permission — without it this returns an explicit permission_required error rather than a title-less result. Optional app_bundle_id filter. window_id is stable within the session for later targeting.

NameTypeReqDescription
app_bundle_idstringOnly return windows owned by this app bundle id.
on_screen_onlybooleanOnly on-screen windows (default true).

No output schema declared.

No examples provided.

lmcp_install_upgrade ~112

Checks for and installs LMCP updates. Installing downloads the update and RESTARTS LMCP (the AI client briefly reconnects), so it requires confirm=true. Pass check_only=true to only report whether an update is available, with no download or restart.

NameTypeReqDescription
check_onlybooleanIf true, only report availability — no download, no install, no restart.
confirmbooleanMust be true to actually install (which restarts LMCP). Without it, returns availability + a preview.

Structured output declared, but exposes no named fields.

No examples provided.

lmcp_state ~301

Returns a structured snapshot of the LMCP environment: server/tray/teams-proxy versions, detected AI client, cloud relay state, TCC permission states (Calendar/Reminders/Contacts), and a compact summary of which services (Mail/Calendar/Contacts/Teams/OneDrive/Reminders/Notes) are reachable. Fast (<500ms), passive — never prompts the user, never opens app windows, never touches the network. Call this when you need to verify the environment is healthy before attempting a tool, or to understand what's installed and accessible. If `services.scan_pending` is true, the background service scan hasn't finished yet (just after startup) and the per-service running/accounts values are placeholders — do NOT treat them as a real outage; just call the tool you need. Otherwise `services.scanned_seconds_ago` tells you how many seconds ago that scan ran (cadence ~60s): the per-service values are a snapshot, NOT a live probe. A `false`/`0`/`not available` for a service is advisory only — it can be stale (e.g. the user connected WhatsApp or opened Mail seconds ago) — so never use this tool as a preflight gate to skip or cancel a task; the actual tool call is the source of truth, just attempt it. For reporting failures, use `report_problem` instead — it captures this same snapshot plus logs and submits to the team.

Input schema present but exposes no named parameters.

NameTypeReqDescription
ai_clientstring
archstring
build_shastringGit short SHA of the build (F-041). 'unknown' if unstamped.
built_atstringUTC build timestamp (F-041). 'unknown' if unstamped.
cloud_data_enabledboolean
cloud_token_setboolean
last_activityobject
license_statusstringtrial | active | expired
machine_idstring
os_versionstring
servicesobjectPer-domain reachability summary (mail, calendar, contacts, teams, onedrive, slack, …); shape varies by domain. May include `scan_pending: true` right after startup, meaning the per-service running/ac…
tccobjectTCC permission states, e.g. granted | denied | authorized.
tray_versionstring
tunnel_connectedboolean
updateobject
versionstringServing (running) server version.

No examples provided.

lmcp_upgrade_diagnostics ~86

Returns the self-update health state: current version, last N update attempts (with errors), writability of the update cache, and any stale LMCP binaries found at alternate paths. Call this when auto-update seems stuck or when you need to explain to a user why they're on an old version.

NameTypeReqDescription
limitintegerMax recent attempts to return (default 10)
NameTypeReqDescription
binaries_foundarrayyesLMCP binaries found at known alternate paths.
cache_dirstringyes
cache_writablebooleanyesWhether the update cache dir is writable (#1 silent-failure cause).
consecutive_failuresintegeryes
current_versionstringyes
last_success_atstringyesISO 8601 timestamp of last successful update, empty if none.
recent_attemptsarrayyesRecent update attempts, newest first.
recent_attempts_countintegeryes
running_fromstringyesReal path of the currently running binary.

No examples provided.

lmcp_welcome ~116

Onboarding overview for a newly installed LMCP connection. Returns a live snapshot of what LMCP can currently see on this Mac — today's calendar events, due reminders, unread email counts, and total contacts — along with a short list of the domains LMCP reaches (Mail, Calendar, Contacts, Files, and more) and example first requests. Useful right after install, when a user wants to see what LMCP can do. Available only until the first other tool call runs, after which it is removed from the tool list.

Input schema present but exposes no named parameters.

NameTypeReqDescription
automationsarrayExample multi-step prompts the user can try immediately.
capabilitiesarrayDomains grouped by the job the user wants done, each with one example ask (the discoverability map).
domainsarrayEvery domain LMCP reaches, with a short capability blurb.
snapshotobject

No examples provided.

m365_create_event ~186

Create a calendar event in your Microsoft 365 / Outlook calendar.

NameTypeReqDescription
attendeesstringComma-separated email addresses to invite (optional)
bodystringEvent description (optional)
calendarstringCalendar name to create the event in — partial, case-insensitive match (optional). Omit to use the primary calendar.
endstringyesEnd time in ISO 8601, e.g. '2026-05-20T11:00:00'
locationstringLocation (optional)
startstringyesStart time in ISO 8601, e.g. '2026-05-20T10:00:00'
subjectstringyesEvent title
timezonestringIANA timezone, e.g. 'America/New_York' (default: UTC)
NameTypeReqDescription
idstring
messagestring
okboolean

No examples provided.

m365_delete_event ~55

Delete a calendar event from your Microsoft 365 / Outlook calendar by its ID.

NameTypeReqDescription
confirmbooleanyesSet to true to confirm deletion (required)
idstringyesEvent ID from m365_list_events
NameTypeReqDescription
messagestring
okboolean

No examples provided.

m365_get_contact ~56

Get full details of a specific Microsoft 365 contact by ID. Get the ID from m365_list_contacts or m365_search_contacts.

NameTypeReqDescription
idstringyesContact ID from m365_list_contacts or m365_search_contacts
NameTypeReqDescription
business_addressstring
companystring
emailsarray
given_namestring
home_addressstring
idstring
mobilestring
namestring
notesstring
phonesarray
surnamestring
titlestring

No examples provided.

m365_list_contacts ~41

List contacts from your Microsoft 365 / Outlook address book.

NameTypeReqDescription
limitintegerMax contacts to return (default 50, max 100)
NameTypeReqDescription
contactsarray
countinteger
querystring

No examples provided.

m365_list_emails ~130

Use this when the user wants their Microsoft 365 / Outlook / Exchange inbox via the cloud — requires a connected M365 account (connect_m365_account). Returns subject, sender, date, and preview. For mail already in the Mac's Mail.app (including an Exchange account added there), use list_emails.

NameTypeReqDescription
folderstringFolder name: inbox (default), sentitems, drafts, deleteditems
limitintegerNumber of emails to return (default 20, max 50)
unread_onlybooleanIf true, return only unread emails
NameTypeReqDescription
countinteger
emailsarray

No examples provided.

m365_list_events ~92

List upcoming calendar events from your Microsoft 365 / Outlook calendar.

NameTypeReqDescription
calendarstringCalendar name to filter by — partial, case-insensitive match (optional). Omit to use the primary calendar.
daysintegerNumber of days ahead to look (default 7, max 30)
limitintegerMax events to return (default 20, max 50)
NameTypeReqDescription
calendarstring
countinteger
daysinteger
eventsarray

No examples provided.

m365_read_email ~89

Use this when the user wants the full content of a Microsoft 365 email (message ID from m365_list_emails/m365_search_emails). Requires a connected M365 account. For a message found via list_emails/search_emails (Apple Mail), use read_email.

NameTypeReqDescription
idstringyesThe email message ID from m365_list_emails or m365_search_emails
NameTypeReqDescription
bodystring
ccarray
datestring
fromstring
from_addressstring
idstring
is_readboolean
subjectstring
toarray

No examples provided.

m365_reply_email ~139

Use this when the user wants to reply to a Microsoft 365 email (message ID from m365_list_emails). Requires a connected M365 account. Shows a preview first — set confirm=true to actually send. For replying to a message found in Apple Mail, use reply_email.

NameTypeReqDescription
confirmbooleanSet to true to actually send (default: shows preview only)
idstringyesMessage ID to reply to (from m365_list_emails or m365_read_email)
messagestringyesYour reply text
reply_allbooleanIf true, reply to all recipients (default: false)
NameTypeReqDescription
messagestring
okboolean

No examples provided.

m365_search_contacts ~43

Search contacts in your Microsoft 365 address book by name, email, or company.

NameTypeReqDescription
querystringyesSearch term — name, email, or company
NameTypeReqDescription
contactsarray
countinteger
querystring

No examples provided.

m365_search_emails ~111

Use this when the user wants to find emails in their Microsoft 365 / Outlook mailbox via the cloud — requires a connected M365 account. Searches by keyword, sender, or subject. For accounts added to the Mac's Mail.app, use search_emails.

NameTypeReqDescription
limitintegerMax results (default 20, max 50)
querystringyesSearch query, e.g. 'budget Q2', 'from:[email protected]', 'subject:invoice'
NameTypeReqDescription
countinteger
emailsarray
querystring

No examples provided.

m365_send_email ~137

Use this when the user wants to send from their Microsoft 365 / Outlook account via the cloud — requires a connected M365 account. Shows a preview first — set confirm=true to actually send. For sending from an account configured in the Mac's Mail.app, use send_email.

NameTypeReqDescription
bodystringyesEmail body (plain text)
ccstringCC recipients (optional, comma-separated)
confirmbooleanSet to true to actually send (default: shows preview only)
subjectstringyesEmail subject
tostringyesRecipient email address. For multiple, separate with commas.
NameTypeReqDescription
messagestring
okboolean

No examples provided.

media_probe ~68

Reports duration_ms, width, height, fps, whether it has audio, and file size for a video/audio file. Call it before editing to reason about the footage (compute trim ranges, pick a reframe crop). No permission required.

NameTypeReqDescription
pathstringyesPath to the media file.

No output schema declared.

No examples provided.

move_email ~136

Moves an email to another mailbox (nested target folders are found by name). Pass account= (returned by list_emails/search_emails) so the message lookup targets one account instead of scanning all of them — without it, multi-account Macs are slow and can time out on bulk moves. If you know the folder the message is in, also pass mailbox= (the `mailbox` field from the listing) so the lookup searches it first.

NameTypeReqDescription
accountstring
confirmboolean
mailboxstring
message_idstringyes
target_mailboxstringyes
NameTypeReqDescription
message_idstring
movedboolean
tostring
warningstring

No examples provided.

nordvpn_diagnose ~38

Run a diagnostic check on NordVPN: installation, login state, connection status, kill switch, and supported protocols. Useful for troubleshooting.

Input schema present but exposes no named parameters.

NameTypeReqDescription
accountstring
auto_connectbooleanTrue if auto-connect / connect on demand is on
connectedbooleanTrue if the VPN is connected
installedbooleanyesTrue if NordVPN is installed
kill_switchbooleanTrue if the kill switch is enabled
last_locationstring
logged_inbooleanTrue if a NordVPN account is logged in
protocolsarraySupported VPN protocols
reportstringFull formatted text report
runningbooleanTrue if the NordVPN app is running
subscriptionstring
versionstring

No examples provided.

nordvpn_servers ~137

Get recommended NordVPN servers by country or specialty. Uses NordVPN public API (no account needed). Returns server name, hostname, country, city, load %, and supported technologies.

NameTypeReqDescription
countrystringCountry name or 2-letter code (e.g. 'US', 'United States', 'JP'). Omit for auto-recommendation.
limitintegerNumber of servers to return (1-10). Default: 5.
typestringServer type filter: 'standard', 'p2p', 'double_vpn', 'onion', 'dedicated_ip'. Default: standard.
NameTypeReqDescription
countinteger
notestring
serversarray

No examples provided.

nordvpn_status ~36

Check NordVPN connection status: connected/disconnected, auto-connect, snooze, and last known location. Does NOT open NordVPN.

Input schema present but exposes no named parameters.

NameTypeReqDescription
app_runningboolean
auto_connectboolean
connectedboolean
installedboolean
last_locationstring
snoozed_untilstring
versionstring

No examples provided.

notion_list_databases ~36

Lists Notion databases cached on this Mac with their schema (column names and types). Use notion_read_database to get the rows.

Input schema present but exposes no named parameters.

NameTypeReqDescription
countinteger
databasesarray
notestring

No examples provided.

notion_list_pages ~81

Lists Notion pages cached on this Mac (titles, last edited, hierarchy), newest first. Reads the Notion desktop app's local cache — no Notion API, no integration token. Note: only pages visited in Notion (or marked Available offline) are cached.

NameTypeReqDescription
limitintegerMax pages (default 50, max 500)
NameTypeReqDescription
countinteger
notestring
pagesarray

No examples provided.

notion_list_workspaces ~28

Lists the Notion workspaces cached on this Mac with their members (names and emails).

Input schema present but exposes no named parameters.

NameTypeReqDescription
known_usersarray
workspacesarray

No examples provided.

notion_open_page ~73

Opens a Notion page in the desktop app (deep link). Accepts a page id or title. Useful to let the user view or edit a page, or to pull an uncached page into the local cache.

NameTypeReqDescription
pagestringyesPage id (UUID) or title (partial, case-insensitive)
NameTypeReqDescription
openedboolean
page_idstring
titlestring

No examples provided.

notion_read_database ~82

Reads the cached rows of a Notion database with their properties mapped through the schema. Accepts the database id or name (partial match). Only locally-cached rows are returned.

NameTypeReqDescription
databasestringyesDatabase id (UUID) or name (partial, case-insensitive)
limitintegerMax rows (default 50, max 500)
NameTypeReqDescription
countinteger
notestring
rowsarray

No examples provided.

notion_read_page ~122

Reads a Notion page from the local cache and returns its content as markdown (headings, lists, to-dos, code, files, subpage links). Accepts a page id or a title (partial match). If parts of the page aren't cached yet, says so — open the page in Notion or mark it Available offline for full content.

NameTypeReqDescription
max_blocksintegerMax blocks to render (default 300, max 1000)
pagestringyesPage id (UUID) or title (partial, case-insensitive)
NameTypeReqDescription
blocks_renderedinteger
content_markdownstring
idstring
last_editedstring
notestring
titlestring
uncached_blocksinteger

No examples provided.

notion_search ~83

Searches cached Notion content (page titles and block text) for a phrase, case-insensitive. Returns matching blocks with the page they belong to. Only locally-cached content is searched — pages never opened in Notion won't match.

NameTypeReqDescription
limitintegerMax results (default 20, max 100)
querystringyesText to search for
NameTypeReqDescription
countinteger
notestring
querystring
resultsarray

No examples provided.