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.
chrome_click Chrome Click ~139
Clicks the first element matching a CSS selector in the current Google Chrome tab. Returns the tag name and visible text of the clicked element so you can confirm the right thing was hit. Pass `wait_for_navigation: true` to wait up to 3 seconds for the page to load after the click.
| Name | Type | Req | Description |
|---|---|---|---|
| nth | integer | — | Which match to click if there are several (0-based, default 0) |
| selector | string | yes | CSS selector (e.g. 'button.primary', '#save', '[data-testid=login]') |
| wait_for_navigation | boolean | — | Wait up to 3s for page load after click (default false) |
Structured output declared, but exposes no named fields.
No examples provided.
chrome_fill_form Chrome Fill Form ~43
Fills multiple form fields in one shot in the current Google Chrome tab. Pass fields as a JSON object mapping CSS selector to value.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| ok | boolean | — | — |
| result | object | — | — |
No examples provided.
chrome_go_back Chrome Go Back ~30
Navigates the current Google Chrome tab back to the previous page.
| Name | Type | Req | Description |
|---|---|---|---|
| window_index | integer | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | — | — |
| to | string | — | — |
| went_back | boolean | — | — |
No examples provided.
chrome_history Chrome History ~117
Lists or searches the user's Google Chrome browsing history (local SQLite, read-only — no page is opened). Optional `query` matches the URL or page title (case-insensitive substring). Returns url, title, visit_count and last_visit (ISO), newest first. Requires Full Disk Access. For Safari use safari_history.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max entries to return (default 50, max 200). |
| query | string | — | Substring to match against the URL or page title. Omit to list the most recent history. |
No output schema declared.
No examples provided.
chrome_list_tabs Chrome List Tabs ~29
Lists every open tab across all Google Chrome windows with title, URL, and whether it is active.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| tabs | array | — | — |
No examples provided.
chrome_navigate Chrome Navigate ~51
Navigates Google Chrome to a URL. Pass new_tab=true to open in a new tab.
| Name | Type | Req | Description |
|---|---|---|---|
| new_tab | boolean | — | — |
| url | string | yes | — |
| window_index | integer | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| navigated | boolean | — | — |
| new_tab | boolean | — | — |
| url | string | — | — |
No examples provided.
chrome_query_selector_all Chrome Query Selector All ~44
Runs document.querySelectorAll in the current Google Chrome tab and returns a compact summary of each match.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | — |
| selector | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| ok | boolean | — | — |
| result | object | — | — |
No examples provided.
chrome_read_tab Chrome Read Tab ~252
Reads the rendered text content of a Google Chrome tab. Identify the tab either by `url_match` (substring match against URL; first hit wins) or by `window_index` + `tab_index` (from chrome_list_tabs). Text is capped at `max_bytes` (default 100 KB). Pass `include_html: true` to also get the raw HTML source. Pass `include_links: true` to extract all links with their href and text. Requires 'Allow JavaScript from Apple Events' (Chrome → View → Developer); run chrome_setup_check if reads come back empty.
| Name | Type | Req | Description |
|---|---|---|---|
| include_html | boolean | — | Also return the HTML source (default false) |
| include_links | boolean | — | Extract all links with href + visible text (default false). Great for navigating SPAs. |
| max_bytes | integer | — | Max bytes of text (and html) to return (default 102400) |
| tab_index | integer | — | Tab index from chrome_list_tabs (default active tab of that window) |
| url_match | string | — | Substring to match against the tab URL. Takes precedence over indices. |
| window_index | integer | — | Window index from chrome_list_tabs (default 0) |
| Name | Type | Req | Description |
|---|---|---|---|
| html | string | — | — |
| html_bytes | integer | — | — |
| html_truncated | boolean | — | — |
| link_count | integer | — | — |
| links | array | — | — |
| links_error | string | — | — |
| text | string | — | — |
| text_bytes | integer | — | — |
| title | string | — | — |
| truncated | boolean | — | — |
| url | string | — | — |
No examples provided.
chrome_search_tabs Chrome Search Tabs ~117
Searches the rendered text of every open Google Chrome tab for a substring. Returns each matching tab with the surrounding snippet. Useful for 'do I have a tab open with X?' across many tabs. Requires 'Allow JavaScript from Apple Events' (Chrome → View → Developer).
| Name | Type | Req | Description |
|---|---|---|---|
| context | integer | — | Characters of context around each match (default 120) |
| max_tabs | integer | — | Max tabs to scan (default 30). Higher = slower. |
| query | string | yes | Substring to search for (case-insensitive) |
| Name | Type | Req | Description |
|---|---|---|---|
| hits | array | — | — |
| query | string | — | — |
| scanned | integer | — | — |
No examples provided.
chrome_setup_check Chrome Setup Check ~48
Reports whether Google Chrome is ready for interactive tools (chrome_click, chrome_type, chrome_evaluate_js, chrome_read_tab text). Returns setup instructions if JavaScript from Apple Events is not enabled.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| instructions | string | — | — |
| ready_for_js_tools | boolean | — | — |
| tabs_open | integer | — | — |
No examples provided.
chrome_type Chrome Type ~53
Sets the value of an input/textarea matching a CSS selector in the current Google Chrome tab and fires input/change events.
| Name | Type | Req | Description |
|---|---|---|---|
| clear | boolean | — | — |
| selector | string | yes | — |
| value | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| ok | boolean | — | — |
| result | object | — | — |
No examples provided.
chrome_wait_for Chrome Wait For ~153
Polls the current Google Chrome tab until a CSS `selector` appears, or until `text_match` appears (anywhere on the page, or inside `selector` if you also pass one). Pass at least one of `selector`/`text_match`. Useful after chrome_click to wait for the next page or a modal to render.
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | — | CSS selector to wait for (optional if text_match is given) |
| text_match | string | — | Text to wait for. With `selector`, must appear inside that element; without it, anywhere on the page. |
| timeout_ms | integer | — | Max time to wait (default 10000 = 10s, max 30000) |
Structured output declared, but exposes no named fields.
No examples provided.
complete_omnifocus_task Complete OmniFocus Task ~93
Marks an OmniFocus task as complete by task ID or name. Requires confirm=true.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | — | Must be true to complete; called without it, returns a preview. |
| task_id | string | — | Exact task id from list_omnifocus_tasks (preferred). Provide this OR task_name. |
| task_name | string | — | Task title to match when you don't have the id. |
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | — | — |
| id | string | — | — |
| name | string | — | — |
No examples provided.
complete_reminder Complete Reminder ~62
Marks a reminder complete in Apple Reminders (Reminders.app). Requires confirm=true. For Microsoft To Do use todo_complete_task instead.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | — | Must be true to complete |
| reminder_id | string | yes | Reminder ID from list_reminders |
Structured output declared, but exposes no named fields.
No examples provided.
configure_clients Configure Clients ~179
Adds Local MCP to the config of installed MCP-capable AI clients on this Mac (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, Zed) so they can use LMCP's tools — no manual JSON editing. Read-only PREVIEW unless confirm:true. Optionally pass a single `client` id to configure just that one. Returns which clients it set up, which already had Local MCP, which aren't installed, and the restart step for each. Pair with list_missing_permissions for fully agent-driven setup.
| Name | Type | Req | Description |
|---|---|---|---|
| client | string | — | Optional: configure only this client — one of claude, claude-code, cursor, windsurf, vscode, zed. Omit to do all installed ones. |
| confirm | boolean | — | Must be true to write the config. Without it, returns a preview of what would change. |
Structured output declared, but exposes no named fields.
No examples provided.
connect_m365_account Connect Microsoft 365 Account ~43
Connect your Microsoft 365 account. Call once to get a login code, then call again after you've authenticated at microsoft.com/devicelogin to confirm the connection.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | — | — |
| ok | boolean | — | — |
No examples provided.
connect_todoist Connect Todoist ~64
Connect Todoist using your personal API token (Todoist → Settings → Integrations → Developer → copy the API token). Stored locally, never sent to Claude's servers.
| Name | Type | Req | Description |
|---|---|---|---|
| api_token | string | yes | Your Todoist API token (a 40-char hex string) |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | — |
| ok | boolean | yes | — |
No examples provided.
create_calendar_event Create Calendar Event ~473
Creates an event in the Mac's Calendar app (Calendar.app). Requires title, start_date, end_date. Optionally invite attendees by email (CalDAV/Exchange calendars only), or make it a repeating event with `recurrence` (daily/weekly/monthly/yearly). For Microsoft 365 use m365_create_event instead.
| Name | Type | Req | Description |
|---|---|---|---|
| attendees | array | — | List of email addresses to invite (optional, CalDAV/Exchange only) |
| calendar | string | — | Calendar name to match (optional, alternative to calendar_id) |
| calendar_id | string | — | Calendar UUID from list_calendar_names (optional, defaults to default calendar) |
| confirm | boolean | — | Must be true to create the event |
| end_date | string | yes | ISO 8601 date or datetime, same timezone rules as start_date. For an all-day event pass a bare date (end is inclusive: same date as start = a one-day all-day event; a later date spans through that da… |
| location | string | — | Location (optional) |
| notes | string | — | Event notes (optional) |
| recurrence | string | — | Make it a repeating event: 'daily', 'weekly', 'monthly', or 'yearly' (optional; omit for a one-time event). |
| recurrence_count | integer | — | Total number of occurrences (optional). Mutually exclusive with recurrence_until; if neither is given the event repeats indefinitely. |
| recurrence_interval | integer | — | Repeat every N periods (optional, default 1 — e.g. recurrence='weekly' + recurrence_interval=2 = every 2 weeks). |
| recurrence_until | string | — | ISO 8601 date the repetition stops on (optional; takes precedence over recurrence_count). |
| start_date | string | yes | ISO 8601 date or datetime. With a time (2026-06-27T09:00:00) the event is timed; a time with NO timezone is read in the Mac's LOCAL zone, append Z or an offset (2026-06-27T09:00:00Z, or +02:00) to pi… |
| title | string | yes | Event title |
| Name | Type | Req | Description |
|---|---|---|---|
| attendees_note | string | — | — |
| attendees_requested | array | — | — |
| created | boolean | — | — |
| end | string | — | — |
| id | string | — | — |
| recurrence | string | — | Present when the event repeats (human-readable summary) |
| start | string | — | — |
| title | string | — | — |
No examples provided.
create_draft Create Draft ~245
Saves an email to the Mail.app Drafts folder for the user to review and send manually — never sends. Composes a new draft (pass `to`/`subject`/`body`), or a reply draft (pass `reply_to_message_id` plus `body`). On a multi-account Mac, pass `account` (an account name from list_email_accounts) or `from` (a sender address) to place the draft in that account's Drafts; otherwise it lands in the default account. Attach files by passing `attachments` (comma-separated absolute file paths, e.g. a PDF quote) — they are attached to the saved draft. Use this for the cautious user who wants AI-composed mail but insists on sending it themselves.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | — | — |
| attachments | string | — | — |
| bcc | string | — | — |
| body | string | — | — |
| cc | string | — | — |
| from | string | — | — |
| html_body | string | — | — |
| reply_all | boolean | — | — |
| reply_to_message_id | string | — | — |
| subject | string | — | — |
| to | string | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | — | — |
| attachments | array | — | — |
| attachments_failed | array | — | — |
| from | string | — | — |
| kind | string | — | — |
| reply_to_message_id | string | — | — |
| saved_draft | boolean | — | — |
| subject | string | — | — |
| to | string | — | — |
No examples provided.
create_email_folder Create Email Folder ~53
Creates a new mailbox folder in Mail.app.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | — | Account name (optional, uses default) |
| confirm | boolean | — | Must be true to create |
| name | string | yes | Folder name |
| Name | Type | Req | Description |
|---|---|---|---|
| created | boolean | yes | — |
| name | string | yes | — |
No examples provided.
create_note Create Note ~83
Creates a new note in Apple Notes. The body accepts Markdown (headings, bold/italic, bullet/numbered lists, links, inline code) — it's converted to Apple Notes' native formatting. Requires confirm=true to execute.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | — |
| confirm | boolean | — | — |
| folder | string | — | — |
| name | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| created | boolean | — | — |
| id | string | — | — |
| name | string | — | — |
No examples provided.
create_omnifocus_task Create OmniFocus Task ~147
Creates a new task in OmniFocus. Requires confirm=true to execute.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | — | Must be true to create; called without it, returns a preview. |
| defer_date | string | — | Defer/start date, ISO 8601 — the task stays hidden until then. |
| due_date | string | — | Due date, ISO 8601 (YYYY-MM-DD or full timestamp). |
| flagged | boolean | — | Create the task flagged. |
| name | string | yes | The task title. |
| note | string | — | Longer note/body for the task. |
| project | string | — | Project to file the task under (name). Omit for the inbox. |
| Name | Type | Req | Description |
|---|---|---|---|
| created | boolean | — | — |
| id | string | — | — |
| name | string | — | — |
No examples provided.
create_referral_invites Create Referral Invites ~132
Records referral invites for the colleagues a user chose to invite and returns a unique referral link per person, so the user can later see who installed or activated LMCP. It does not send anything itself — each returned link can be included in an email or message to that person. `lang` records the language the invite is written in (e.g. "es", "en").
| Name | Type | Req | Description |
|---|---|---|---|
| lang | string | — | ISO language of the invite you're writing (the user's conversation language, e.g. 'es', 'en'). Defaults to the Mac's language. |
| recipients | array | yes | The picked recipients. |
| Name | Type | Req | Description |
|---|---|---|---|
| invites | array | — | — |
| next | string | — | — |
No examples provided.
create_reminder Create Reminder ~94
Creates a reminder in Reminders.app.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | — | Must be true to create |
| due_date | string | — | ISO 8601 date (optional) |
| list_name | string | — | Reminder list name (optional) |
| notes | string | — | Notes (optional) |
| priority | string | — | Priority: none | low | medium | high (optional) |
| title | string | yes | Reminder title |
Structured output declared, but exposes no named fields.
No examples provided.
create_reminder_list Create Reminder List ~52
Creates a new list in Apple Reminders (Reminders.app). Requires confirm=true.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | — | Must be true to create |
| name | string | yes | Name for the new reminder list |
Structured output declared, but exposes no named fields.
No examples provided.
daily_brief Daily Brief ~125
Returns a single morning briefing combining today's calendar events, overdue and due-today reminders, unread inbox email count + subjects, and — when a location is provided — today's weather. Perfect for starting each day: one call gives you everything on your plate.
| Name | Type | Req | Description |
|---|---|---|---|
| include_emails | boolean | — | Include unread email summary from Mail.app (default true, skipped gracefully if Mail is not running) |
| location | string | — | Optional city name or 'lat,lon' to include today's weather in the brief (e.g. 'London', 'San Francisco'). Omitted if not provided. |
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | Today's date (YYYY-MM-DD). |
| emails | object|null | yes | Unread email summary (unread_count + recent_unread), or {skipped} / {error}, or null when not requested. |
| events | array | yes | Today's calendar events. |
| note | string | — | Onboarding enrichment shown when nothing is scheduled. |
| reminders | array | yes | Reminders due today or overdue. |
| weather | object | — | Today's weather (current conditions + forecast), only present when a location was provided. |
No examples provided.
delete_calendar_event Delete Calendar Event ~136
Deletes an event from the Mac's Calendar app (Calendar.app) by ID. Requires confirm=true. For a repeating event, pass span='future' to delete the whole series (this and all following occurrences); the default deletes only the single occurrence. For Microsoft 365 use m365_delete_event instead.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | — | Must be true to delete |
| event_id | string | yes | Event identifier from list_calendar_events |
| span | string | — | For a recurring event: 'this' (default — only this occurrence) or 'future' (this and all following occurrences). Ignored for non-recurring events. |
Structured output declared, but exposes no named fields.
No examples provided.
delete_reminder Delete Reminder ~65
Permanently deletes a reminder in Apple Reminders (Reminders.app) by ID. Get the reminder_id from list_reminders. Requires confirm=true.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | — | Must be true to delete |
| reminder_id | string | yes | Reminder identifier from list_reminders |
Structured output declared, but exposes no named fields.
No examples provided.
delete_reminder_folder Delete Reminder Folder ~93
Deletes an Apple Reminders list AND all reminders inside it — cannot be undone. Pass the list name (or list_id from get_reminder_folders). Requires confirm=true.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | — | Must be true to delete |
| list_id | string | — | List identifier from get_reminder_folders (alternative to name) |
| name | string | — | List name to delete (or pass list_id) |
Structured output declared, but exposes no named fields.
No examples provided.
disconnect_m365_account Disconnect Microsoft 365 Account ~21
Disconnect your Microsoft 365 account and remove stored tokens.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | — | — |
| ok | boolean | — | — |
No examples provided.
disconnect_todoist Disconnect Todoist ~20
Disconnect Todoist and remove the stored API token.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | — |
| ok | boolean | yes | — |
No examples provided.
excel_create Excel Create ~74
Creates a new Excel spreadsheet (.xlsx file) with headers and optional data rows.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | — | Must be true to create |
| headers | array | yes | Column headers |
| path | string | yes | Output path for the .xlsx file |
| rows | array | — | Array of row arrays with data (optional) |
| Name | Type | Req | Description |
|---|---|---|---|
| created | boolean | yes | True when the file was created |
| headers | array | yes | Column headers written |
| path | string | yes | Path of the created .xlsx file |
| rows | integer | yes | Number of data rows written |
No examples provided.
excel_read Excel Read ~113
Reads data from an Excel spreadsheet (.xlsx file). Returns the first row as `headers` and the remaining data rows as `rows` — mirroring excel_create's `headers`/`rows` params, so a read→create round-trip needs no manual row-0 handling.
| Name | Type | Req | Description |
|---|---|---|---|
| max_rows | integer | — | Max rows to return (default 100) |
| path | string | yes | Absolute path to the .xlsx file |
| sheet_name | string | — | Sheet name to read (optional, reads first sheet) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of DATA rows returned (excludes the header row) |
| headers | array | yes | The first row, as column headers — mirrors excel_create's `headers` param |
| rows | array | yes | Data rows AFTER the header row (each an array of cell-value strings) — feeds straight into excel_create's `rows` |
| sheet | string | yes | Name of the sheet that was read |
| sheets | array | yes | All sheet names in the workbook |
No examples provided.
excel_write_cell Excel Write Cell ~95
Writes a value to a specific cell in an Excel file.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer | yes | Column number (1-based) |
| confirm | boolean | — | Must be true to modify |
| path | string | yes | Path to the .xlsx file |
| row | integer | yes | Row number (1-based) |
| sheet_name | string | — | Sheet name (default: first sheet) |
| value | string | yes | Value to write |
| Name | Type | Req | Description |
|---|---|---|---|
| col | integer | yes | Column that was written (1-based) |
| row | integer | yes | Row that was written (1-based) |
| value | string | yes | Value written to the cell |
| written | boolean | yes | True when the cell was written |
No examples provided.
file_list File List ~96
Lists files and folders in a local directory. Defaults to the user's home directory. Returns name, path, type (file/directory), size, and modification date for each item. Sorted: directories first, then files, both alphabetically.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | — | Absolute path to the directory. Defaults to the home directory (~) if omitted. |
| show_hidden | boolean | — | Include hidden files (starting with '.'). Default false. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| dirs | integer | — | — |
| files | integer | — | — |
| items | array | — | — |
| path | string | — | — |
No examples provided.
file_read File Read ~241
Reads a plain text file from the local filesystem by its absolute path — the primary, default tool for reading a local text file (use this unless the file is a PDF, Word, Excel, or PowerPoint document, which have their own readers). The path must be inside an allowed folder — the same allowlist as file_write (the home directory by default; extend via Settings → Advanced → Allowed folders). A path outside the allowlist returns an actionable 'access denied' naming the allowed folders. Supports .txt, .md, .csv, .json, .xml, .log, .yaml, .toml and common code file types; auto-detects UTF-8 with Latin-1/Windows-1252 fallback. For files in OneDrive use onedrive_read_file, in Google Drive gdrive_read_file; for PDFs pdf_read, Word word_read, Excel excel_read.
| Name | Type | Req | Description |
|---|---|---|---|
| max_bytes | integer | — | Maximum bytes to read (default 1 MB, max 10 MB) |
| offset | integer | — | Start reading at this byte offset (default 0) |
| path | string | yes | Absolute path to the file |
| Name | Type | Req | Description |
|---|---|---|---|
| bytes | integer | yes | Total file size in bytes |
| content | string | yes | Decoded file text content |
| encoding | string | — | Encoding used to decode (utf8 | cp1252 | latin1) |
| offset | integer | — | Byte offset the read started at |
| path | string | yes | Resolved absolute path of the file |
| truncated | boolean | — | True if more content remains beyond what was returned |
No examples provided.
file_search File Search ~134
Searches for files and folders by name (case-insensitive, partial match) starting from a root directory. Defaults to the home directory. Returns matching items with path, type, and size.
| Name | Type | Req | Description |
|---|---|---|---|
| file_type | string | — | Filter by extension, e.g. 'pdf', 'docx', 'xlsx'. Omit for all types. |
| max_results | integer | — | Maximum number of results to return. Default 50, max 200. |
| query | string | yes | Filename pattern to search for (partial, case-insensitive) |
| root | string | — | Root directory to search from. Defaults to home directory (~). |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| query | string | — | — |
| results | array | — | — |
| root | string | — | — |
No examples provided.
file_write File Write ~192
Writes text to a local file — create, overwrite, or append. For .txt/.md/.csv/.json/.log and any plain-text or code file. (For Word use word_create, Excel excel_create, PowerPoint ppt_create.) The path must be inside an allowed folder — the same allowlist as file_read (home directory by default; extend via Advanced Settings → Allowed folders). Overwriting an existing file requires confirm=true (the first call returns a preview instead); append=true adds to the end and never needs confirm. Missing parent folders are created.
| Name | Type | Req | Description |
|---|---|---|---|
| append | boolean | — | Append to the end instead of overwriting (default false) |
| confirm | boolean | — | Required (true) to OVERWRITE an existing file. Not needed to create a new file or to append. |
| content | string | yes | Text content to write |
| path | string | yes | Absolute path to the file to write |
Structured output declared, but exposes no named fields.
No examples provided.
finder_list Finder List ~100
Lists files and folders in a directory (Spotlight-free). The path must be inside an allowed folder — the same allowlist as file_read/file_write (the home directory by default; extend via Settings → Advanced → Allowed folders). A path outside the allowlist returns an actionable 'access denied' naming the allowed folders.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max items (default 100) |
| path | string | — | Absolute path to list (default: ~) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | Items returned in this response. |
| items | array | — | — |
| note | string | — | — |
| path | string | — | — |
| total | integer | — | Total items when the listing was truncated. |
| truncated | boolean | — | — |
No examples provided.
finder_search Finder Search ~110
Searches for files by name within the allowlist (uses mdfind/Spotlight). Scoped to the allowed folders — the home directory by default (extend via Settings → Advanced → Allowed folders); pass path= to search a specific allowed folder. A path outside the allowlist returns an actionable 'access denied'.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max results (default 50) |
| path | string | — | Limit search to this directory (optional) |
| query | string | yes | Filename or content to search for |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | — |
| query | string | yes | — |
| results | array | yes | — |
No examples provided.
gdrive_file_info Gdrive File Info ~50
Metadata for a file/folder in the synced Google Drive: size, dates, type. Cheaper than listing the whole directory.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Absolute path to the file or folder |
| Name | Type | Req | Description |
|---|---|---|---|
| created | string | — | — |
| modified | string | — | — |
| name | string | — | — |
| path | string | — | — |
| size | integer | — | — |
| size_human | string | — | — |
| type | string | — | — |
No examples provided.
gdrive_list_files Gdrive List Files ~96
Lists files and folders in a Google Drive path (the locally-synced folder). Use gdrive_root first for valid roots — 'My Drive' and 'Shared drives' live inside each mount. Returns up to `limit` entries (default 1000).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max entries (default 1000, max 5000) |
| path | string | yes | Absolute path to the Google Drive folder |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| items | array | — | — |
| note | string | — | — |
| total | integer | — | — |
| truncated | boolean | — | — |
No examples provided.
gdrive_read_file Gdrive Read File ~175
Reads a text file from the synced Google Drive folder (.txt, .md, .csv, .json, code files...). Note: native Google Docs/Sheets/Slides sync as .gdoc/.gsheet pointers, not real files — export them from Drive or read Office/PDF copies instead. Auto-detects UTF-8 with Latin-1/CP1252 fallback. For files outside Google Drive, use file_read.
| Name | Type | Req | Description |
|---|---|---|---|
| encoding | string | — | 'auto' (default), 'utf8', 'latin1', 'cp1252', 'ascii', 'utf16' |
| max_bytes | integer | — | Max bytes (default 1MB, cap 10MB) |
| offset | integer | — | Start byte offset (default 0) |
| path | string | yes | Absolute path to the file |
| Name | Type | Req | Description |
|---|---|---|---|
| bytes | integer | yes | Total file size in bytes |
| bytes_read | integer | — | Number of bytes read in this slice |
| content | string | yes | Decoded file text content |
| encoding | string | — | Encoding used to decode (utf8 | cp1252 | latin1 | ascii | utf16) |
| offset | integer | — | Byte offset the read started at |
| path | string | yes | Absolute path of the file |
| truncated | boolean | — | True if more content remains beyond what was returned |
No examples provided.
gdrive_root Gdrive Root ~61
Lists the Google Drive folders synced on this Mac (My Drive, Shared drives, per-account mounts). Start here to get valid paths for the other gdrive_* tools. Reads the folder Google Drive for Desktop already syncs — no Google API, no OAuth.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| roots | array | — | — |
No examples provided.
gdrive_search_files Gdrive Search Files ~80
Searches the synced Google Drive folder for files by name (recursive). Returns up to max_results matches (default 50).
| Name | Type | Req | Description |
|---|---|---|---|
| max_results | integer | — | Maximum results (default 50) |
| query | string | yes | Filename pattern to search for |
| root | string | — | Restrict to this Drive path (optional - defaults to all mounts) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| query | string | — | — |
| results | array | — | — |
No examples provided.
gdrive_write_file Gdrive Write File ~82
Writes or overwrites a text file in the synced Google Drive folder — it uploads automatically via the official client. First call returns a preview; pass confirm=true to write.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | — | Must be true to actually write |
| content | string | yes | Text content to write |
| path | string | yes | Absolute path under a Google Drive mount |
| Name | Type | Req | Description |
|---|---|---|---|
| bytes | integer | yes | — |
| overwrote | boolean | yes | — |
| path | string | yes | — |
| written | boolean | yes | — |
No examples provided.
get_audit_log Get Audit Log ~113
Returns recent LMCP tool call history from the local audit log. Each entry shows timestamp, tool name, call source (local/cloud), success status, and duration. Useful for GDPR Article 30 compliance reporting and debugging.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Number of recent entries to return (default 50, max 200) |
| ok | boolean | — | Filter to successes (true) or failures (false) only (optional) |
| tool | string | — | Filter to entries for a specific tool name (optional) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| entries | array | — | — |
No examples provided.
get_config Get Config ~19
Returns the current LMCP configuration (api_key masked).
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
get_contact Get Contact ~121
Gets a contact from the Mac's Contacts app (Contacts.app) by name or ID. Pass `name` to look up directly by name (no need to search_contacts first — if several people match it returns a compact list to choose from), or `contact_id` for an exact lookup. For Microsoft 365 use m365_get_contact instead.
| Name | Type | Req | Description |
|---|---|---|---|
| contact_id | string | — | Exact identifier from list_contacts/search_contacts. Provide this OR name. |
| name | string | — | Full or partial contact name — the one-step path. Provide this OR contact_id. |
Structured output declared, but exposes no named fields.
No examples provided.
get_datetime Get Datetime ~73
Get the current date and time of the machine where LMCP runs — with timezone and UTC offset. Call this whenever you need the real 'now' on the user's computer: before creating calendar events or reminders, resolving relative dates like 'today'/'tomorrow'/'next Friday', or timestamping. Takes no arguments.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| epoch_seconds | integer | yes | Unix epoch seconds. |
| human | string | yes | Human-readable local date/time. |
| iso_local | string | yes | Current time in ISO 8601 with the machine's local UTC offset. |
| iso_utc | string | yes | Current time in ISO 8601, UTC. |
| timezone | string | yes | IANA timezone identifier. |
| utc_offset | string | yes | UTC offset like +02:00. |
| weekday | string | yes | — |
No examples provided.