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.
screenshot_capture Screenshot Capture ~68
Captures a single frame of a display, window, or region to a PNG. Requires Screen Recording permission; without it returns an explicit permission_required, never a blank image.
| Name | Type | Req | Description |
|---|---|---|---|
| output_path | string | — | Where to write the PNG (default: temp file). |
| target | object | yes | — |
No output schema declared.
No examples provided.
search_contacts Search Contacts ~78
Searches the Mac's Contacts app (Contacts.app, local/iCloud) by name, email, or phone number. For a Microsoft 365 directory use m365_search_contacts or search_m365_directory instead.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max results (default 50) |
| query | string | yes | Name, email, or phone to search for |
| Name | Type | Req | Description |
|---|---|---|---|
| contacts | array | yes | — |
| count | integer | yes | — |
| query | string | yes | — |
No examples provided.
search_emails Search Emails ~118
Use this when the user wants to find specific emails on this Mac (Apple Mail — any account added to Mail.app). Searches by keyword, sender, or date. For a Microsoft 365 mailbox NOT added to Mail.app, use m365_search_emails. On machines with 3+ accounts, pass account=<name> (from list_email_accounts) to search a specific account and avoid timeouts.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | — | — |
| limit | integer | — | — |
| mailbox | string | — | — |
| query | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| next_actions | array | — | — |
| query | string | — | — |
| results | array | — | — |
No examples provided.
search_m365_directory Search Microsoft 365 Directory ~82
Search your organization's Microsoft 365 directory for users by name or email. Returns matching users with their title, department, and contact info.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max results (default 10, max 25) |
| query | string | yes | Name or email to search for, e.g. 'Sarah' or '[email protected]' |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| query | string | — | — |
| users | array | — | — |
No examples provided.
search_messages Search Messages ~162
Searches iMessage conversations by content, sender name, or date range.
| Name | Type | Req | Description |
|---|---|---|---|
| from_sender | string | — | Substring of sender name/handle to filter by (optional) |
| limit | integer | — | Max results (default 30) |
| query | string | — | Text to search for in message content (optional if from_sender is set) |
| since | string | — | ISO8601 date — only return messages on or after this date (optional, e.g. '2026-04-10' or '2026-04-10T00:00:00Z') |
| until | string | — | ISO8601 date — only return messages on or before this date (optional). Combine with 'since' to search a date range with no text query. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| from_sender | string | — | — |
| query | string | — | — |
| results | array | — | — |
| since | string | — | — |
| until | string | — | — |
No examples provided.
search_notes Search Notes ~30
Searches Apple Notes by title or content.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | — |
| query | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| next_actions | array | — | — |
| query | string | — | — |
| results | array | — | — |
No examples provided.
search_omnifocus_tasks Search OmniFocus Tasks ~56
Searches OmniFocus tasks by name or note content.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max matches to return (default 30). |
| query | string | yes | Text to match against task names and notes (case-insensitive). |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| query | string | — | — |
| results | array | — | — |
No examples provided.
send_email Send Email ~165
Use this when the user wants to send an email from an account configured in the Mac's Apple Mail. Composes and sends via Mail.app; supports plain text or HTML body. For sending from a Microsoft 365 account NOT added to Mail.app, use m365_send_email. Pass `from` to send from a specific configured Mail.app account instead of the default sender. Pass `attachments` as a comma-separated list of absolute file paths to attach files.
| Name | Type | Req | Description |
|---|---|---|---|
| attachments | string | — | — |
| bcc | string | — | — |
| body | string | — | — |
| cc | string | — | — |
| confirm | boolean | — | — |
| from | string | — | — |
| html_body | string | — | — |
| subject | string | yes | — |
| to | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | — | — |
| sent | boolean | — | — |
| subject | string | — | — |
| to | string | — | — |
No examples provided.
send_message Send Message ~158
Sends an iMessage via the Mac's Messages.app to a recipient handle (phone number with country code, e.g. +14155551234, or an Apple ID email). This is a write operation: the first call (without confirm) returns a preview; call again with confirm=true to actually send. Direct (1:1) iMessage only — sending into an existing group chat isn't supported yet. Requires Messages.app signed in to iMessage + Automation permission.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | — | Set true to actually send. Without it, returns a preview only. |
| text | string | yes | Message body to send. |
| to | string | yes | Recipient handle: phone number with country code (+14155551234) or Apple ID email. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | — | — |
| note | string | — | — |
| preview | boolean | — | — |
| sent | boolean | — | — |
| service | string | — | — |
| text | string | — | — |
| to | string | — | — |
No examples provided.
setup_install Install LMCP ~207
Returns a personalized LMCP install link and setup steps (~30 sec to install). LMCP is a free Mac app that gives access to Mail, Calendar, Contacts, Teams, OneDrive, Notes, Reminders, and 100+ tools on the user's Mac (data stays local). A user would invoke this to install LMCP or reconnect it. Pass os ("macos", or windows/linux/ios/android). Optional: email, step, issue.
| Name | Type | Req | Description |
|---|---|---|---|
| string | — | Optional. Helps Cloud Relay auto-connect after install. | |
| issue | string | — | Optional tag: gatekeeper_error, dot_not_green, install_failed, etc. |
| os | string | yes | macos | windows | linux | ios | android. Cloud connectors must pass os (or server asks). Desktop terminal clients may omit → macOS. Windows/Linux/mobile → waitlist (macOS-only today). |
| step | string | — | If stuck: connector | install | email | connecting_stuck | server_down. |
| Name | Type | Req | Description |
|---|---|---|---|
| install_command | string | — | One-line terminal command to install LMCP, when applicable to this OS/step. |
| instructions | string | yes | Full human-readable, step-by-step install/setup text. |
| os | string | — | Target operating system the instructions are for, when known. |
No examples provided.
signal_compose_guidance Signal Compose Guidance ~164
Composes a Signal message and returns step-by-step guidance for the user to send it themselves. This tool does NOT send: Signal Desktop exposes no local send API and LMCP reads its database read-only, so it cannot transmit Signal messages. Call it when the user wants to message someone on Signal — it drafts the text and tells them how to deliver it. First call (confirm=false or omitted) returns a preview; confirm=true returns the send-it-yourself steps. chat_id should come from a previous signal_list_chats call — never fabricate IDs.
| Name | Type | Req | Description |
|---|---|---|---|
| chat_id | string | yes | Chat ID from signal_list_chats |
| confirm | boolean | — | Set true for send guidance. Default: preview only. |
| text | string | yes | Plain-text message body |
Structured output declared, but exposes no named fields.
No examples provided.
signal_connect Signal Connect ~89
Connect Signal to Local MCP. Reports whether Signal Desktop is installed and signed in, and tells you exactly what to do next — install Signal, or open it and link your phone. (Signal links inside its own desktop app, so the QR is shown there, not here.) Once you're signed in, signal_list_chats / signal_read_messages work. If Signal is already connected, it just reports that.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
signal_list_chats Signal List Chats ~75
Lists Signal conversations (chats) with last-active timestamps. Reads from the local Signal Desktop database — no network access required. Returns chat IDs, contact names, and type (direct or group). Use the chat_id in subsequent signal_read_messages calls.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max chats to return (default 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| chats | array | yes | Signal conversations |
| count | integer | — | Number of chats returned |
No examples provided.
signal_read_messages Signal Read Messages ~84
Reads messages from a specific Signal chat. The chat_id must come from a previous signal_list_chats call. Returns messages in chronological order with sender phone numbers and body text. Only messages cached locally by Signal Desktop are available.
| Name | Type | Req | Description |
|---|---|---|---|
| chat_id | string | yes | Chat ID from signal_list_chats |
| limit | integer | — | Max messages to return (default 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | Number of messages returned |
| messages | array | yes | Messages from the chat, chronological |
No examples provided.
signal_search_messages Signal Search Messages ~89
Full-text search across locally-cached Signal messages. Only messages Signal Desktop has stored on disk are searched — no network access required. Optionally restrict search to a specific chat_id.
| Name | Type | Req | Description |
|---|---|---|---|
| chat_id | string | — | Optional chat ID to restrict search |
| limit | integer | — | Max results to return (default 50) |
| query | string | yes | Search text (case-insensitive substring match) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | Number of results returned |
| results | array | yes | Matching messages |
No examples provided.
slack_list_channels Slack List Channels ~106
Lists channels in a Slack workspace, including public channels, private channels, and direct messages (DMs). Reads from the local IndexedDB cache — only channels that Slack Desktop has synced to disk are returned. Pass workspace_id from slack_list_workspaces to filter to a specific workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max channels to return (default 200) |
| workspace_id | string | — | Workspace ID from slack_list_workspaces (optional — omit to list channels across all workspaces) |
| Name | Type | Req | Description |
|---|---|---|---|
| channels | array | yes | Channels and DMs synced to the local cache |
| count | integer | yes | Number of channels returned |
No examples provided.
slack_list_workspaces Slack List Workspaces ~50
Lists the Slack workspaces (teams) the user has connected in Slack Desktop. Reads from the local IndexedDB cache — no token needed. Only workspaces that have been synced to disk are returned.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of workspaces returned |
| workspaces | array | yes | Connected Slack workspaces synced to the local cache |
No examples provided.
slack_read_channel_messages Slack Read Channel Messages ~88
Reads recent messages from a Slack channel or DM. Reads from the local IndexedDB cache — only messages that Slack Desktop has synced to disk are available (typically the last few hundred messages for active channels). channel_id must come from slack_list_channels.
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | yes | Channel ID from slack_list_channels |
| limit | integer | — | Max messages to return (default 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of messages returned |
| messages | array | yes | Recent messages from the channel, oldest first |
No examples provided.
slack_search_messages Slack Search Messages ~98
Searches Slack messages across locally-cached channels using full-text substring matching. Only messages that Slack Desktop has synced to disk are searched — this is not the Slack cloud search API. Optionally restrict search to a specific channel_id.
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | — | Optional channel ID to restrict search |
| limit | integer | — | Max results to return (default 50) |
| query | string | yes | Search text (case-insensitive substring match) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of results returned |
| results | array | yes | Matching messages, most recent first |
No examples provided.
stocks_get_chart Stocks Get Chart ~121
Gets historical price data for a stock symbol. Range: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max.
| Name | Type | Req | Description |
|---|---|---|---|
| interval | string | — | Data interval (default: 1d). Intraday (1m–90m) needs a short range. |
| range | string | — | Time range (default: 1mo) |
| symbol | string | yes | Ticker symbol, e.g. AAPL |
| Name | Type | Req | Description |
|---|---|---|---|
| candles | array | — | — |
| change_pct | number | — | — |
| currency | string | — | — |
| current_price | number | — | — |
| data_points | integer | — | — |
| interval | string | — | — |
| name | string | — | — |
| range | string | — | — |
| symbol | string | — | — |
No examples provided.
stocks_get_quote Stocks Get Quote ~79
Gets current stock price and market data for one or more symbols (e.g. AAPL, MSFT, BTC-USD). Uses Yahoo Finance — no API key required.
| Name | Type | Req | Description |
|---|---|---|---|
| symbols | string | yes | Ticker symbols, comma-separated ('AAPL,MSFT,GOOGL') or a JSON array (['AAPL','MSFT']) |
Structured output declared, but exposes no named fields.
No examples provided.
stocks_search_symbol Stocks Search Symbol ~53
Searches for a stock ticker symbol by company name. Returns matching symbols and exchanges.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max results (default 10) |
| query | string | yes | Company name or partial ticker to search for |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| query | string | — | — |
| results | array | — | — |
No examples provided.
survey_respond Survey Respond ~108
Submits the user's answers to the short in-product survey Local MCP just showed them. Call this ONLY when the user has actually answered the survey's questions — pass their answers as an object keyed by each question's `id` (single/scale = one value, multiple = an array of values). Do not invent answers; if the user hasn't answered, don't call this.
| Name | Type | Req | Description |
|---|---|---|---|
| answers | object | yes | Answers keyed by question id. Single/scale = a value; multiple = an array. |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | — | — |
| ok | boolean | — | — |
No examples provided.
survey_skip Survey Skip ~44
Skips the short in-product survey Local MCP showed the user, for now — use this when the user doesn't want to answer right now. They won't be asked again this session.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | — | — |
| ok | boolean | — | — |
No examples provided.
teams_call_history Teams Call History ~170
Reads Microsoft Teams call & meeting history from the Mac's local Teams cache — no Graph API, no token, no admin consent (the same local store the Teams Calls tab renders). Each call includes direction (incoming/outgoing/missed), participants (names + ids), start / answered / end times, duration, call type (1:1/group/meeting) and a stable call id. Optional since/until (YYYY-MM-DD) narrow the range — e.g. a daily collector pulls the previous day's calls.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max calls to return (default 50), newest first |
| since | string | — | Only calls on/after this date, YYYY-MM-DD (optional) |
| until | string | — | Only calls on/before this date, YYYY-MM-DD (optional) |
| Name | Type | Req | Description |
|---|---|---|---|
| calls | array | — | — |
| count | integer | — | — |
| error | string | — | — |
No examples provided.
teams_list_channels Teams List Channels ~79
Lists channels in a Microsoft Teams workspace. Returns channels that are cached in the local Teams client. If the result is empty, the channels have not been loaded into the local cache yet — ask the user to open Microsoft Teams and browse to the team's channels, then try again.
| Name | Type | Req | Description |
|---|---|---|---|
| team_id | string | yes | Team ID from teams_list_teams |
| Name | Type | Req | Description |
|---|---|---|---|
| channels | array | — | — |
| count | integer | — | — |
| error | string | — | — |
No examples provided.
teams_list_chats Teams List Chats ~36
Lists Microsoft Teams chats (direct messages and group chats).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max chats to return (default 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| chats | array | — | — |
| count | integer | — | — |
| error | string | — | — |
No examples provided.
teams_list_teams Teams List Teams ~21
Lists all Microsoft Teams workspaces the user belongs to.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| error | string | — | — |
| teams | array | — | — |
No examples provided.
teams_read_channel_messages Teams Read Channel Messages ~55
Reads messages from a Microsoft Teams channel.
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | yes | Channel ID from teams_list_channels |
| limit | integer | — | Max messages (default 50) |
| team_id | string | yes | Team ID |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| error | string | — | — |
| messages | array | — | — |
No examples provided.
teams_read_chat_messages Teams Read Chat Messages ~49
Reads messages from a Teams chat or direct message thread.
| Name | Type | Req | Description |
|---|---|---|---|
| chat_id | string | yes | Chat ID from teams_list_chats |
| limit | integer | — | Max messages (default 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| error | string | — | — |
| messages | array | — | — |
No examples provided.
teams_search_messages Teams Search Messages ~170
Searches your Microsoft Teams chat and direct-message history (all conversations at once) by text, sender name, and/or date range. Use this to find where something was discussed in Teams without knowing which chat. Returns matching messages with the chat they came from. Provide at least one of query, from_sender, since, until.
| Name | Type | Req | Description |
|---|---|---|---|
| from_sender | string | — | Filter to a sender by display-name substring (optional) |
| limit | integer | — | Max results, newest first (default 50, max 200) |
| query | string | — | Text to find in message bodies (case-insensitive substring) |
| since | string | — | Only messages on/after this date, YYYY-MM-DD (optional) |
| until | string | — | Only messages on/before this date, YYYY-MM-DD (optional) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| error | string | — | — |
| messages | array | — | — |
No examples provided.
teams_send_channel_message Teams Send Channel Message ~122
Sends a text message to a Microsoft Teams channel via Graph API. Requires connect_m365_account with Chat.ReadWrite / ChannelMessage.Send permissions. team_id and channel_id must come from teams_list_teams / teams_list_channels. First call returns a preview; set confirm=true to send.
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | yes | Channel ID from teams_list_channels |
| confirm | boolean | — | Set true to send; false returns preview |
| team_id | string | yes | Team ID from teams_list_teams |
| text | string | yes | Plain-text message body |
Structured output declared, but exposes no named fields.
No examples provided.
teams_send_message Teams Send Message ~191
Sends a text message to a Microsoft Teams chat or channel. Requires Microsoft Teams to be running and signed in (token is read fresh from Teams' local cookies on each call). The chat_id MUST come from a previous teams_list_chats call — never fabricate ids. This is a write operation: the first call returns a preview, the second call (with confirm=true) actually sends.
| Name | Type | Req | Description |
|---|---|---|---|
| chat_id | string | yes | Thread id from teams_list_chats (e.g. '19:<uuid>_<uuid>@unq.gbl.spaces' for 1:1, '19:<uuid>@thread.tacv2' for group) |
| confirm | boolean | — | Must be true to actually send. Without it, returns a preview without making any network call. |
| text | string | yes | Plain-text message body. Max 28000 chars. No formatting / mentions / attachments in v1. |
Structured output declared, but exposes no named fields.
No examples provided.
todo_complete_task To Do Complete Task ~82
Marks a Microsoft To Do task as complete (via Reminders sync).
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | — | Must be true to complete |
| list | string | — | List name to narrow search by title (optional) |
| task_id | string | — | Task ID from todo_list_tasks |
| title | string | — | Task title (partial match, alternative to task_id) |
Structured output declared, but exposes no named fields.
No examples provided.
todo_create_task To Do Create Task ~125
Creates a task in Microsoft To Do (via Reminders sync). Task appears in To Do automatically once synced.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | — | Must be true to create |
| due_date | string | — | Due date (YYYY-MM-DD, optional) |
| list | string | — | List name (from todo_get_folders). Defaults to first available list. |
| notes | string | — | Task notes (optional) |
| priority | integer | — | Priority: 1=high, 5=medium, 9=low (optional) |
| title | string | yes | Task title |
Structured output declared, but exposes no named fields.
No examples provided.
todo_get_folders To Do Get Folders ~38
Lists Microsoft To Do task lists. Requires Microsoft account in Reminders sync (System Settings → Internet Accounts → Microsoft Exchange → enable Reminders).
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| lists | array | — | — |
| note | string | — | — |
No examples provided.
todo_list_tasks To Do List Tasks ~82
Lists tasks from a Microsoft To Do list (or any Reminders list). Syncs via macOS Reminders.
| Name | Type | Req | Description |
|---|---|---|---|
| include_completed | boolean | — | Include completed tasks (default false) |
| limit | integer | — | Max tasks to return (default 50) |
| list | string | — | List name (from todo_get_folders). Leave empty to show all. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| tasks | array | — | — |
No examples provided.
todoist_complete_task Todoist Complete Task ~44
Mark a Todoist task complete (closes it). Pass the task_id from todoist_list_tasks.
| Name | Type | Req | Description |
|---|---|---|---|
| task_id | string | yes | The task id to complete |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | — |
| ok | boolean | yes | — |
No examples provided.
todoist_create_task Todoist Create Task ~136
Create a Todoist task. Optionally set a project, a natural-language due date (due_string, e.g. 'tomorrow 5pm', 'every monday'), and priority (1=normal … 4=urgent).
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | The task text |
| due_string | string | — | Natural-language due date, e.g. 'tomorrow 5pm', 'next monday' |
| priority | integer | — | 1 (normal) to 4 (urgent). Todoist UI p1 = 4. |
| project_id | string | — | Project to add it to (default: Inbox) |
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | — | — |
| due | string | — | — |
| id | string | — | — |
| priority | integer | — | — |
| project_id | string | — | — |
| url | string | — | — |
No examples provided.
todoist_list_projects Todoist List Projects ~36
List your Todoist projects (id + name). Use a project's id to scope todoist_list_tasks or todoist_create_task.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | — |
| projects | array | yes | — |
No examples provided.
todoist_list_tasks Todoist List Tasks ~113
List active (incomplete) Todoist tasks. Optionally scope to a project_id, or pass a Todoist filter (e.g. 'today', 'overdue', '#Work & p1').
| Name | Type | Req | Description |
|---|---|---|---|
| filter | string | — | A Todoist filter query, e.g. 'today', 'overdue', 'p1' |
| limit | integer | — | Max results (default 50, max 200) |
| project_id | string | — | Only tasks in this project (from todoist_list_projects) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | — |
| tasks | array | yes | — |
No examples provided.
ui_click Ui Click ~121
Clicks an element (by element_ref, at its center) or a screen coordinate (by coords). button left|right, count 2 = double-click. Returns {clicked, at:{x,y}}. Requires Accessibility permission.
| Name | Type | Req | Description |
|---|---|---|---|
| button | string | — | Default left. |
| by | string | — | Default element if element_ref given, else coords. |
| coords | object | — | {x,y} in global screen points. |
| count | integer | — | 1 (default) or 2 for double-click. |
| element_ref | string | — | — |
No output schema declared.
No examples provided.
ui_find_element Ui Find Element ~196
GUI automation — control a native app's interface. Finds an element (button, field, menu…) in an app's accessibility tree by role and/or label. Scope with app_bundle_id or window_id. Returns an opaque element_ref (usable by ui_click / ui_get_element this session) plus role, label, bounds, enabled, focused. found=false when the app is reachable but no element matches; app_not_found is an explicit error. Requires Accessibility permission.
| Name | Type | Req | Description |
|---|---|---|---|
| app_bundle_id | string | — | Scope the search to this app. |
| index | integer | — | Which match to return if several (default 0). |
| label | string | — | AX title/description to match. |
| match | string | — | Default contains. |
| role | string | — | AX role, e.g. AXButton, AXMenuItem, AXTextField. |
| window_id | string | — | Alternatively scope by a window_id from list_windows. |
No output schema declared.
No examples provided.
ui_get_element Ui Get Element ~60
Re-resolves a previously returned element_ref (its bounds/state may have changed). Returns role, label, bounds, enabled, focused, value. stale_element if the handle is unknown or the element no longer exists.
| Name | Type | Req | Description |
|---|---|---|---|
| element_ref | string | yes | — |
No output schema declared.
No examples provided.
ui_keystroke Ui Keystroke ~89
Sends a key combination, e.g. "cmd+shift+5", "return", "cmd+,", "escape". Modifiers: cmd, shift, alt/option, ctrl, fn. The last token is the key. unknown_key if the key isn't recognized. Requires Accessibility permission.
| Name | Type | Req | Description |
|---|---|---|---|
| keys | string | yes | e.g. cmd+shift+5, return, cmd+, |
No output schema declared.
No examples provided.
ui_menu_bar_click Ui Menu Bar Click ~121
Clicks a status-bar (menu bar extra / NSStatusItem) item and optionally follows a nested menu path. Best-effort via the app's AX extras menu bar; apps that render fully custom (non-AX) menus may not be reachable (fall back to ui_click at known coords). Requires Accessibility permission.
| Name | Type | Req | Description |
|---|---|---|---|
| app_bundle_id | string | — | Owner of the status item. |
| label | string | — | Status item / menu item title. |
| path | array | — | Nested menu path, e.g. ["App","Settings…"]. |
No output schema declared.
No examples provided.
ui_read_tree Ui Read Tree ~223
Returns a COMPACT accessibility tree of a running native app's labeled + interactive elements (buttons, links, text fields, checkboxes, menus…) — the native equivalent of web_read's a11y mode. Use it to DISCOVER what to act on in an unfamiliar app when you don't already know an element's role/label (ui_find_element needs one up front). Each interactive node carries a `ref` you can pass straight to ui_click. Pass app_bundle_id of a running app (e.g. com.apple.finder — see list_windows); the tree is pruned to signal-bearing nodes and bounded by max_depth (default 12) and a node budget, so very large windows return partial.
| Name | Type | Req | Description |
|---|---|---|---|
| app_bundle_id | string | — | Bundle id of a RUNNING app (e.g. com.apple.finder) |
| max_depth | integer | — | Max tree depth to descend (default 12, max 20) |
| window_id | string | — | Alternative to app_bundle_id: a window id from list_windows (targets that window's app) |
Structured output declared, but exposes no named fields.
No examples provided.
ui_type Ui Type ~63
Types text into the focused control (or focuses element_ref first, then types). Sends real key events so validation/handlers fire. Requires Accessibility permission.
| Name | Type | Req | Description |
|---|---|---|---|
| element_ref | string | — | Optional; focus this element first. |
| text | string | yes | The text to type. |
No output schema declared.
No examples provided.
ui_wait_for_element Ui Wait For Element ~139
Deterministic synchronization — replaces all sleeps. Polls for an element until it reaches state (present|enabled|focused|absent) or times out. A timeout is an EXPLICIT error, never a false success. Returns {satisfied, waited_ms, element_ref?, bounds?}.
| Name | Type | Req | Description |
|---|---|---|---|
| app_bundle_id | string | — | — |
| label | string | — | — |
| match | string | — | — |
| poll_ms | integer | — | Default 150. |
| role | string | — | — |
| state | string | — | Default present. |
| timeout_ms | integer | — | Default 5000. |
| window_id | string | — | — |
No output schema declared.
No examples provided.
update_calendar_event Update Calendar Event ~213
Updates an existing event in the Mac's Calendar app (Calendar.app) by ID. Pass only the fields you want to change — unspecified fields are left as-is. Get the event_id from list_calendar_events. For Microsoft 365 use the m365 calendar tools instead.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | — | Must be true to apply changes |
| end_date | string | — | New end datetime ISO 8601 (optional). Same timezone rules as start_date. |
| event_id | string | yes | Event identifier from list_calendar_events |
| location | string | — | New location — pass empty string to clear (optional) |
| notes | string | — | New notes — pass empty string to clear (optional) |
| span | string | — | For recurring events: 'this' (default) or 'future' |
| start_date | string | — | New start datetime ISO 8601 (optional). No timezone = Mac's local time; append Z/offset to pin the zone. |
| title | string | — | New title (optional) |
| Name | Type | Req | Description |
|---|---|---|---|
| all_day | boolean | — | — |
| attendees | array | — | — |
| attendees_total | integer | — | — |
| calendar | string | — | — |
| calendar_id | string | — | — |
| end | string | — | — |
| id | string | — | — |
| location | string | — | — |
| notes | string | — | — |
| start | string | — | — |
| title | string | — | — |
| updated | boolean | — | — |
No examples provided.