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.
Available components
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
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (create_omnifocus_task). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
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
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
claude mcp add --transport http com-local-mcp-local-mcp https://local-mcp.com/mcp
[mcp_servers.com-local-mcp-local-mcp] url = "https://local-mcp.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-local-mcp-local-mcp": {
"type": "remote",
"url": "https://local-mcp.com/mcp",
"enabled": true
}
}
} openclaw mcp add com-local-mcp-local-mcp --url https://local-mcp.com/mcp --transport streamable-http
mcp_servers:
com-local-mcp-local-mcp:
url: "https://local-mcp.com/mcp" {
"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.
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
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 |
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.
get_m365_person Get Microsoft 365 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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | User ID (GUID), email address (UPN), or 'me' for the authenticated user, e.g. '[email protected]', 'a1b2c3d4-...', or 'me' |
| Name | Type | Req | Description |
|---|---|---|---|
| department | string | — | — |
| string | — | — | |
| id | string | — | — |
| mobile | string | — | — |
| name | string | — | — |
| office | string | — | — |
| phones | array | — | — |
| title | string | — | — |
| upn | string | — | — |
No examples provided.
get_reminder_folders 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.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| lists | array | — | — |
No examples provided.
get_weather 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).
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | — | Number of forecast days, 1-7 (default 3) |
| location | string | yes | City 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| accounts | array | yes | — |
| count | integer | yes | — |
No examples provided.
list_calendar_events 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.
| Name | Type | Req | Description |
|---|---|---|---|
| calendar | string | — | Filter 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_id | string | — | Filter by a single calendar UUID from list_calendar_names (optional). |
| calendar_ids | array | — | Filter by multiple calendar UUIDs (optional). |
| end_date | string | — | ISO 8601 date (YYYY-MM-DD). Defaults to start_date + 7 days. |
| limit | integer | — | Max number of events to return (most recent first within the range). Optional; defaults to all in range. |
| start_date | string | — | ISO 8601 date (YYYY-MM-DD). Defaults to today. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| end_date | string | — | — |
| events | array | — | — |
| start_date | string | — | — |
No examples provided.
list_calendar_names 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.
| Name | Type | Req | Description |
|---|---|---|---|
| calendars | array | — | — |
| count | integer | — | — |
No examples provided.
list_contacts List Contacts ~52
Lists contacts from the macOS Contacts app. Optionally filter by group.
| Name | Type | Req | Description |
|---|---|---|---|
| group_name | string | — | Filter by group name (optional) |
| limit | integer | — | Max contacts to return (default 100) |
| Name | Type | Req | Description |
|---|---|---|---|
| contacts | array | yes | — |
| count | integer | yes | — |
No examples provided.
list_displays 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| accounts | array | — | Mail.app accounts, by name. |
| count | integer | — | Number of accounts. |
| tip | string | — | — |
No examples provided.
list_email_folders 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.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | — | — |
| include_counts | boolean | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| account_count | integer | — | — |
| accounts | array | — | — |
| folder_count | integer | — | — |
| next_actions | array | — | — |
| truncated | boolean | — | — |
No examples provided.
list_emails 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.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | — | — |
| limit | integer | — | — |
| mailbox | string | — | — |
| offset | integer | — | — |
| unread_only | boolean | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| messages | array | — | — |
| next_actions | array | — | — |
| offset | integer | — | — |
No examples provided.
list_m365_people_insights List Microsoft 365 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Number of people to return (default 20, max 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| people | array | — | — |
No examples provided.
list_message_chats List Message Chats ~32
Lists recent iMessage/Messages.app conversations.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max conversations (default 30) |
| Name | Type | Req | Description |
|---|---|---|---|
| chats | array | — | — |
| count | integer | — | — |
| note | string | — | — |
No examples provided.
list_missing_permissions 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.
| Name | Type | Req | Description |
|---|---|---|---|
| all_granted | boolean | — | — |
| granted | array | — | — |
| missing | array | — | — |
| summary | string | — | — |
No examples provided.
list_notes List Notes ~35
Lists notes from Apple Notes app. Optionally filter by folder.
| Name | Type | Req | Description |
|---|---|---|---|
| folder | string | — | — |
| limit | integer | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| next_actions | array | — | — |
| notes | array | — | — |
| total | integer | — | — |
No examples provided.
list_omnifocus_folders 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max folders to return (default 100). |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| folders | array | — | — |
No examples provided.
list_omnifocus_projects List OmniFocus Projects ~50
Lists projects in OmniFocus.
| Name | Type | Req | Description |
|---|---|---|---|
| include_completed | boolean | — | Include completed/dropped projects (default excludes them). |
| limit | integer | — | Max projects to return (default 100). |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| projects | array | — | — |
No examples provided.
list_omnifocus_tags List OmniFocus Tags ~20
Lists all tags defined in OmniFocus.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| tags | array | — | — |
No examples provided.
list_omnifocus_tasks List OmniFocus Tasks ~130
Lists tasks from OmniFocus. Filter by project, tag, inbox, due today, or flagged status.
| Name | Type | Req | Description |
|---|---|---|---|
| due_today | boolean | — | Only tasks due today or overdue. |
| flagged | boolean | — | Only flagged tasks. |
| inbox | boolean | — | Only unfiled inbox tasks. |
| include_completed | boolean | — | Include completed tasks (default excludes them). |
| limit | integer | — | Max tasks to return (default 50). |
| project | string | — | Only tasks in this project (name, case-insensitive). |
| tag | string | — | Only tasks carrying this tag. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| tasks | array | — | — |
No examples provided.
list_referral_candidates 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max contacts to return (default 60) |
| Name | Type | Req | Description |
|---|---|---|---|
| candidates | array | — | — |
| count | integer | — | — |
| how_to | string | — | — |
| lang | string | — | — |
| template_body | string | — | — |
| template_subject | string | — | — |
No examples provided.
list_reminders 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.
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | — | true=completed, false=incomplete (default), omit=all |
| limit | integer | — | Max number of reminders to return (earliest due first). Optional; defaults to all. |
| list_name | string | — | Filter by reminder list name (optional) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | Number returned in this response. |
| reminders | array | — | — |
| total | integer | — | Total matching before the limit. |
No examples provided.
list_safari_bookmarks List Safari Bookmarks ~55
Lists Safari bookmarks (title + URL) from the Mac's Safari (reads ~/Library/Safari/Bookmarks.plist — needs Full Disk Access).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max bookmarks to return (default 100) |
| Name | Type | Req | Description |
|---|---|---|---|
| bookmarks | array | — | — |
| count | integer | — | — |
| note | string | — | Present when bookmarks can't be read (e.g. Full Disk Access needed). |
No examples provided.
list_windows 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.
| Name | Type | Req | Description |
|---|---|---|---|
| app_bundle_id | string | — | Only return windows owned by this app bundle id. |
| on_screen_only | boolean | — | Only on-screen windows (default true). |
No output schema declared.
No examples provided.
lmcp_install_upgrade 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.
| Name | Type | Req | Description |
|---|---|---|---|
| check_only | boolean | — | If true, only report availability — no download, no install, no restart. |
| confirm | boolean | — | Must 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_client | string | — | — |
| arch | string | — | — |
| build_sha | string | — | Git short SHA of the build (F-041). 'unknown' if unstamped. |
| built_at | string | — | UTC build timestamp (F-041). 'unknown' if unstamped. |
| cloud_data_enabled | boolean | — | — |
| cloud_token_set | boolean | — | — |
| last_activity | object | — | — |
| license_status | string | — | trial | active | expired |
| machine_id | string | — | — |
| os_version | string | — | — |
| services | object | — | Per-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… |
| tcc | object | — | TCC permission states, e.g. granted | denied | authorized. |
| tray_version | string | — | — |
| tunnel_connected | boolean | — | — |
| update | object | — | — |
| version | string | — | Serving (running) server version. |
No examples provided.
lmcp_upgrade_diagnostics 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max recent attempts to return (default 10) |
| Name | Type | Req | Description |
|---|---|---|---|
| binaries_found | array | yes | LMCP binaries found at known alternate paths. |
| cache_dir | string | yes | — |
| cache_writable | boolean | yes | Whether the update cache dir is writable (#1 silent-failure cause). |
| consecutive_failures | integer | yes | — |
| current_version | string | yes | — |
| last_success_at | string | yes | ISO 8601 timestamp of last successful update, empty if none. |
| recent_attempts | array | yes | Recent update attempts, newest first. |
| recent_attempts_count | integer | yes | — |
| running_from | string | yes | Real path of the currently running binary. |
No examples provided.
lmcp_welcome 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.
| Name | Type | Req | Description |
|---|---|---|---|
| automations | array | — | Example multi-step prompts the user can try immediately. |
| capabilities | array | — | Domains grouped by the job the user wants done, each with one example ask (the discoverability map). |
| domains | array | — | Every domain LMCP reaches, with a short capability blurb. |
| snapshot | object | — | — |
No examples provided.
m365_create_event Microsoft 365 Create Event ~186
Create a calendar event in your Microsoft 365 / Outlook calendar.
| Name | Type | Req | Description |
|---|---|---|---|
| attendees | string | — | Comma-separated email addresses to invite (optional) |
| body | string | — | Event description (optional) |
| calendar | string | — | Calendar name to create the event in — partial, case-insensitive match (optional). Omit to use the primary calendar. |
| end | string | yes | End time in ISO 8601, e.g. '2026-05-20T11:00:00' |
| location | string | — | Location (optional) |
| start | string | yes | Start time in ISO 8601, e.g. '2026-05-20T10:00:00' |
| subject | string | yes | Event title |
| timezone | string | — | IANA timezone, e.g. 'America/New_York' (default: UTC) |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | — | — |
| message | string | — | — |
| ok | boolean | — | — |
No examples provided.
m365_delete_event Microsoft 365 Delete Event ~55
Delete a calendar event from your Microsoft 365 / Outlook calendar by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | yes | Set to true to confirm deletion (required) |
| id | string | yes | Event ID from m365_list_events |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | — | — |
| ok | boolean | — | — |
No examples provided.
m365_get_contact Microsoft 365 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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Contact ID from m365_list_contacts or m365_search_contacts |
| Name | Type | Req | Description |
|---|---|---|---|
| business_address | string | — | — |
| company | string | — | — |
| emails | array | — | — |
| given_name | string | — | — |
| home_address | string | — | — |
| id | string | — | — |
| mobile | string | — | — |
| name | string | — | — |
| notes | string | — | — |
| phones | array | — | — |
| surname | string | — | — |
| title | string | — | — |
No examples provided.
m365_list_contacts Microsoft 365 List Contacts ~41
List contacts from your Microsoft 365 / Outlook address book.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max contacts to return (default 50, max 100) |
| Name | Type | Req | Description |
|---|---|---|---|
| contacts | array | — | — |
| count | integer | — | — |
| query | string | — | — |
No examples provided.
m365_list_emails Microsoft 365 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.
| Name | Type | Req | Description |
|---|---|---|---|
| folder | string | — | Folder name: inbox (default), sentitems, drafts, deleteditems |
| limit | integer | — | Number of emails to return (default 20, max 50) |
| unread_only | boolean | — | If true, return only unread emails |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| emails | array | — | — |
No examples provided.
m365_list_events Microsoft 365 List Events ~92
List upcoming calendar events from your Microsoft 365 / Outlook calendar.
| Name | Type | Req | Description |
|---|---|---|---|
| calendar | string | — | Calendar name to filter by — partial, case-insensitive match (optional). Omit to use the primary calendar. |
| days | integer | — | Number of days ahead to look (default 7, max 30) |
| limit | integer | — | Max events to return (default 20, max 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| calendar | string | — | — |
| count | integer | — | — |
| days | integer | — | — |
| events | array | — | — |
No examples provided.
m365_read_email Microsoft 365 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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The email message ID from m365_list_emails or m365_search_emails |
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | — | — |
| cc | array | — | — |
| date | string | — | — |
| from | string | — | — |
| from_address | string | — | — |
| id | string | — | — |
| is_read | boolean | — | — |
| subject | string | — | — |
| to | array | — | — |
No examples provided.
m365_reply_email Microsoft 365 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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | — | Set to true to actually send (default: shows preview only) |
| id | string | yes | Message ID to reply to (from m365_list_emails or m365_read_email) |
| message | string | yes | Your reply text |
| reply_all | boolean | — | If true, reply to all recipients (default: false) |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | — | — |
| ok | boolean | — | — |
No examples provided.
m365_search_contacts Microsoft 365 Search Contacts ~43
Search contacts in your Microsoft 365 address book by name, email, or company.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Search term — name, email, or company |
| Name | Type | Req | Description |
|---|---|---|---|
| contacts | array | — | — |
| count | integer | — | — |
| query | string | — | — |
No examples provided.
m365_search_emails Microsoft 365 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max results (default 20, max 50) |
| query | string | yes | Search query, e.g. 'budget Q2', 'from:[email protected]', 'subject:invoice' |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| emails | array | — | — |
| query | string | — | — |
No examples provided.
m365_send_email Microsoft 365 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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | Email body (plain text) |
| cc | string | — | CC recipients (optional, comma-separated) |
| confirm | boolean | — | Set to true to actually send (default: shows preview only) |
| subject | string | yes | Email subject |
| to | string | yes | Recipient email address. For multiple, separate with commas. |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | — | — |
| ok | boolean | — | — |
No examples provided.
media_probe 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.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Path to the media file. |
No output schema declared.
No examples provided.
move_email 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.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | — | — |
| confirm | boolean | — | — |
| mailbox | string | — | — |
| message_id | string | yes | — |
| target_mailbox | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| message_id | string | — | — |
| moved | boolean | — | — |
| to | string | — | — |
| warning | string | — | — |
No examples provided.
nordvpn_diagnose 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.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | — | — |
| auto_connect | boolean | — | True if auto-connect / connect on demand is on |
| connected | boolean | — | True if the VPN is connected |
| installed | boolean | yes | True if NordVPN is installed |
| kill_switch | boolean | — | True if the kill switch is enabled |
| last_location | string | — | — |
| logged_in | boolean | — | True if a NordVPN account is logged in |
| protocols | array | — | Supported VPN protocols |
| report | string | — | Full formatted text report |
| running | boolean | — | True if the NordVPN app is running |
| subscription | string | — | — |
| version | string | — | — |
No examples provided.
nordvpn_servers 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.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | — | Country name or 2-letter code (e.g. 'US', 'United States', 'JP'). Omit for auto-recommendation. |
| limit | integer | — | Number of servers to return (1-10). Default: 5. |
| type | string | — | Server type filter: 'standard', 'p2p', 'double_vpn', 'onion', 'dedicated_ip'. Default: standard. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| note | string | — | — |
| servers | array | — | — |
No examples provided.
nordvpn_status 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.
| Name | Type | Req | Description |
|---|---|---|---|
| app_running | boolean | — | — |
| auto_connect | boolean | — | — |
| connected | boolean | — | — |
| installed | boolean | — | — |
| last_location | string | — | — |
| snoozed_until | string | — | — |
| version | string | — | — |
No examples provided.
notion_list_databases 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.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| databases | array | — | — |
| note | string | — | — |
No examples provided.
notion_list_pages 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max pages (default 50, max 500) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| note | string | — | — |
| pages | array | — | — |
No examples provided.
notion_list_workspaces 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.
| Name | Type | Req | Description |
|---|---|---|---|
| known_users | array | — | — |
| workspaces | array | — | — |
No examples provided.
notion_open_page 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.
| Name | Type | Req | Description |
|---|---|---|---|
| page | string | yes | Page id (UUID) or title (partial, case-insensitive) |
| Name | Type | Req | Description |
|---|---|---|---|
| opened | boolean | — | — |
| page_id | string | — | — |
| title | string | — | — |
No examples provided.
notion_read_database 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.
| Name | Type | Req | Description |
|---|---|---|---|
| database | string | yes | Database id (UUID) or name (partial, case-insensitive) |
| limit | integer | — | Max rows (default 50, max 500) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| note | string | — | — |
| rows | array | — | — |
No examples provided.
notion_read_page 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.
| Name | Type | Req | Description |
|---|---|---|---|
| max_blocks | integer | — | Max blocks to render (default 300, max 1000) |
| page | string | yes | Page id (UUID) or title (partial, case-insensitive) |
| Name | Type | Req | Description |
|---|---|---|---|
| blocks_rendered | integer | — | — |
| content_markdown | string | — | — |
| id | string | — | — |
| last_edited | string | — | — |
| note | string | — | — |
| title | string | — | — |
| uncached_blocks | integer | — | — |
No examples provided.
notion_search 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max results (default 20, max 100) |
| query | string | yes | Text to search for |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| note | string | — | — |
| query | string | — | — |
| results | array | — | — |
No examples provided.