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

com.local-mcp/local-mcp

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

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

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

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

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

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

remote · local-mcp.com

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

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

Changelog

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

  • 3 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 11.

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

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

  • 28 Jul 26 −4
    • Tool “lmcp_state” rewrote its description, which is the text the model reads security
    • Schema quality: good → fair functional
    • New tool “list_missing_permissions” functional
    • New tool “configure_clients” functional
  • 27 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostics

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

Captured 3 Aug 2026 · Probed https://local-mcp.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

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

Validation of local-mcp.com. Secure

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

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

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

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

Tool Tokens
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.

NameTypeReqDescription
output_pathstringWhere to write the PNG (default: temp file).
targetobjectyes

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
limitintegerMax results (default 50)
querystringyesName, email, or phone to search for
NameTypeReqDescription
contactsarrayyes
countintegeryes
querystringyes

No examples provided.

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.

NameTypeReqDescription
accountstring
limitinteger
mailboxstring
querystringyes
NameTypeReqDescription
countinteger
next_actionsarray
querystring
resultsarray

No examples provided.

search_m365_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.

NameTypeReqDescription
limitintegerMax results (default 10, max 25)
querystringyesName or email to search for, e.g. 'Sarah' or '[email protected]'
NameTypeReqDescription
countinteger
querystring
usersarray

No examples provided.

search_messages ~162

Searches iMessage conversations by content, sender name, or date range.

NameTypeReqDescription
from_senderstringSubstring of sender name/handle to filter by (optional)
limitintegerMax results (default 30)
querystringText to search for in message content (optional if from_sender is set)
sincestringISO8601 date — only return messages on or after this date (optional, e.g. '2026-04-10' or '2026-04-10T00:00:00Z')
untilstringISO8601 date — only return messages on or before this date (optional). Combine with 'since' to search a date range with no text query.
NameTypeReqDescription
countinteger
from_senderstring
querystring
resultsarray
sincestring
untilstring

No examples provided.

search_notes ~30

Searches Apple Notes by title or content.

NameTypeReqDescription
limitinteger
querystringyes
NameTypeReqDescription
countinteger
next_actionsarray
querystring
resultsarray

No examples provided.

search_omnifocus_tasks ~56

Searches OmniFocus tasks by name or note content.

NameTypeReqDescription
limitintegerMax matches to return (default 30).
querystringyesText to match against task names and notes (case-insensitive).
NameTypeReqDescription
countinteger
querystring
resultsarray

No examples provided.

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.

NameTypeReqDescription
attachmentsstring
bccstring
bodystring
ccstring
confirmboolean
fromstring
html_bodystring
subjectstringyes
tostringyes
NameTypeReqDescription
fromstring
sentboolean
subjectstring
tostring

No examples provided.

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.

NameTypeReqDescription
confirmbooleanSet true to actually send. Without it, returns a preview only.
textstringyesMessage body to send.
tostringyesRecipient handle: phone number with country code (+14155551234) or Apple ID email.
NameTypeReqDescription
errorstring
notestring
previewboolean
sentboolean
servicestring
textstring
tostring

No examples provided.

setup_install ~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.

NameTypeReqDescription
emailstringOptional. Helps Cloud Relay auto-connect after install.
issuestringOptional tag: gatekeeper_error, dot_not_green, install_failed, etc.
osstringyesmacos | 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).
stepstringIf stuck: connector | install | email | connecting_stuck | server_down.
NameTypeReqDescription
install_commandstringOne-line terminal command to install LMCP, when applicable to this OS/step.
instructionsstringyesFull human-readable, step-by-step install/setup text.
osstringTarget operating system the instructions are for, when known.

No examples provided.

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.

NameTypeReqDescription
chat_idstringyesChat ID from signal_list_chats
confirmbooleanSet true for send guidance. Default: preview only.
textstringyesPlain-text message body

Structured output declared, but exposes no named fields.

No examples provided.

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 ~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.

NameTypeReqDescription
limitintegerMax chats to return (default 50)
NameTypeReqDescription
chatsarrayyesSignal conversations
countintegerNumber of chats returned

No examples provided.

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.

NameTypeReqDescription
chat_idstringyesChat ID from signal_list_chats
limitintegerMax messages to return (default 50)
NameTypeReqDescription
countintegerNumber of messages returned
messagesarrayyesMessages from the chat, chronological

No examples provided.

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.

NameTypeReqDescription
chat_idstringOptional chat ID to restrict search
limitintegerMax results to return (default 50)
querystringyesSearch text (case-insensitive substring match)
NameTypeReqDescription
countintegerNumber of results returned
resultsarrayyesMatching messages

No examples provided.

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.

NameTypeReqDescription
limitintegerMax channels to return (default 200)
workspace_idstringWorkspace ID from slack_list_workspaces (optional — omit to list channels across all workspaces)
NameTypeReqDescription
channelsarrayyesChannels and DMs synced to the local cache
countintegeryesNumber of channels returned

No examples provided.

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.

NameTypeReqDescription
countintegeryesNumber of workspaces returned
workspacesarrayyesConnected Slack workspaces synced to the local cache

No examples provided.

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.

NameTypeReqDescription
channel_idstringyesChannel ID from slack_list_channels
limitintegerMax messages to return (default 50)
NameTypeReqDescription
countintegeryesNumber of messages returned
messagesarrayyesRecent messages from the channel, oldest first

No examples provided.

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.

NameTypeReqDescription
channel_idstringOptional channel ID to restrict search
limitintegerMax results to return (default 50)
querystringyesSearch text (case-insensitive substring match)
NameTypeReqDescription
countintegeryesNumber of results returned
resultsarrayyesMatching messages, most recent first

No examples provided.

stocks_get_chart ~121

Gets historical price data for a stock symbol. Range: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max.

NameTypeReqDescription
intervalstringData interval (default: 1d). Intraday (1m–90m) needs a short range.
rangestringTime range (default: 1mo)
symbolstringyesTicker symbol, e.g. AAPL
NameTypeReqDescription
candlesarray
change_pctnumber
currencystring
current_pricenumber
data_pointsinteger
intervalstring
namestring
rangestring
symbolstring

No examples provided.

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.

NameTypeReqDescription
symbolsstringyesTicker 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 ~53

Searches for a stock ticker symbol by company name. Returns matching symbols and exchanges.

NameTypeReqDescription
limitintegerMax results (default 10)
querystringyesCompany name or partial ticker to search for
NameTypeReqDescription
countinteger
querystring
resultsarray

No examples provided.

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.

NameTypeReqDescription
answersobjectyesAnswers keyed by question id. Single/scale = a value; multiple = an array.
NameTypeReqDescription
messagestring
okboolean

No examples provided.

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.

NameTypeReqDescription
messagestring
okboolean

No examples provided.

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.

NameTypeReqDescription
limitintegerMax calls to return (default 50), newest first
sincestringOnly calls on/after this date, YYYY-MM-DD (optional)
untilstringOnly calls on/before this date, YYYY-MM-DD (optional)
NameTypeReqDescription
callsarray
countinteger
errorstring

No examples provided.

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.

NameTypeReqDescription
team_idstringyesTeam ID from teams_list_teams
NameTypeReqDescription
channelsarray
countinteger
errorstring

No examples provided.

teams_list_chats ~36

Lists Microsoft Teams chats (direct messages and group chats).

NameTypeReqDescription
limitintegerMax chats to return (default 50)
NameTypeReqDescription
chatsarray
countinteger
errorstring

No examples provided.

teams_list_teams ~21

Lists all Microsoft Teams workspaces the user belongs to.

Input schema present but exposes no named parameters.

NameTypeReqDescription
countinteger
errorstring
teamsarray

No examples provided.

teams_read_channel_messages ~55

Reads messages from a Microsoft Teams channel.

NameTypeReqDescription
channel_idstringyesChannel ID from teams_list_channels
limitintegerMax messages (default 50)
team_idstringyesTeam ID
NameTypeReqDescription
countinteger
errorstring
messagesarray

No examples provided.

teams_read_chat_messages ~49

Reads messages from a Teams chat or direct message thread.

NameTypeReqDescription
chat_idstringyesChat ID from teams_list_chats
limitintegerMax messages (default 50)
NameTypeReqDescription
countinteger
errorstring
messagesarray

No examples provided.

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.

NameTypeReqDescription
from_senderstringFilter to a sender by display-name substring (optional)
limitintegerMax results, newest first (default 50, max 200)
querystringText to find in message bodies (case-insensitive substring)
sincestringOnly messages on/after this date, YYYY-MM-DD (optional)
untilstringOnly messages on/before this date, YYYY-MM-DD (optional)
NameTypeReqDescription
countinteger
errorstring
messagesarray

No examples provided.

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.

NameTypeReqDescription
channel_idstringyesChannel ID from teams_list_channels
confirmbooleanSet true to send; false returns preview
team_idstringyesTeam ID from teams_list_teams
textstringyesPlain-text message body

Structured output declared, but exposes no named fields.

No examples provided.

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.

NameTypeReqDescription
chat_idstringyesThread id from teams_list_chats (e.g. '19:<uuid>_<uuid>@unq.gbl.spaces' for 1:1, '19:<uuid>@thread.tacv2' for group)
confirmbooleanMust be true to actually send. Without it, returns a preview without making any network call.
textstringyesPlain-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 ~82

Marks a Microsoft To Do task as complete (via Reminders sync).

NameTypeReqDescription
confirmbooleanMust be true to complete
liststringList name to narrow search by title (optional)
task_idstringTask ID from todo_list_tasks
titlestringTask title (partial match, alternative to task_id)

Structured output declared, but exposes no named fields.

No examples provided.

todo_create_task ~125

Creates a task in Microsoft To Do (via Reminders sync). Task appears in To Do automatically once synced.

NameTypeReqDescription
confirmbooleanMust be true to create
due_datestringDue date (YYYY-MM-DD, optional)
liststringList name (from todo_get_folders). Defaults to first available list.
notesstringTask notes (optional)
priorityintegerPriority: 1=high, 5=medium, 9=low (optional)
titlestringyesTask title

Structured output declared, but exposes no named fields.

No examples provided.

todo_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.

NameTypeReqDescription
countinteger
listsarray
notestring

No examples provided.

todo_list_tasks ~82

Lists tasks from a Microsoft To Do list (or any Reminders list). Syncs via macOS Reminders.

NameTypeReqDescription
include_completedbooleanInclude completed tasks (default false)
limitintegerMax tasks to return (default 50)
liststringList name (from todo_get_folders). Leave empty to show all.
NameTypeReqDescription
countinteger
tasksarray

No examples provided.

todoist_complete_task ~44

Mark a Todoist task complete (closes it). Pass the task_id from todoist_list_tasks.

NameTypeReqDescription
task_idstringyesThe task id to complete
NameTypeReqDescription
messagestringyes
okbooleanyes

No examples provided.

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).

NameTypeReqDescription
contentstringyesThe task text
due_stringstringNatural-language due date, e.g. 'tomorrow 5pm', 'next monday'
priorityinteger1 (normal) to 4 (urgent). Todoist UI p1 = 4.
project_idstringProject to add it to (default: Inbox)
NameTypeReqDescription
contentstring
duestring
idstring
priorityinteger
project_idstring
urlstring

No examples provided.

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.

NameTypeReqDescription
countintegeryes
projectsarrayyes

No examples provided.

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').

NameTypeReqDescription
filterstringA Todoist filter query, e.g. 'today', 'overdue', 'p1'
limitintegerMax results (default 50, max 200)
project_idstringOnly tasks in this project (from todoist_list_projects)
NameTypeReqDescription
countintegeryes
tasksarrayyes

No examples provided.

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.

NameTypeReqDescription
buttonstringDefault left.
bystringDefault element if element_ref given, else coords.
coordsobject{x,y} in global screen points.
countinteger1 (default) or 2 for double-click.
element_refstring

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
app_bundle_idstringScope the search to this app.
indexintegerWhich match to return if several (default 0).
labelstringAX title/description to match.
matchstringDefault contains.
rolestringAX role, e.g. AXButton, AXMenuItem, AXTextField.
window_idstringAlternatively scope by a window_id from list_windows.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
element_refstringyes

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
keysstringyese.g. cmd+shift+5, return, cmd+,

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
app_bundle_idstringOwner of the status item.
labelstringStatus item / menu item title.
patharrayNested menu path, e.g. ["App","Settings…"].

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
app_bundle_idstringBundle id of a RUNNING app (e.g. com.apple.finder)
max_depthintegerMax tree depth to descend (default 12, max 20)
window_idstringAlternative 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 ~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.

NameTypeReqDescription
element_refstringOptional; focus this element first.
textstringyesThe text to type.

No output schema declared.

No examples provided.

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?}.

NameTypeReqDescription
app_bundle_idstring
labelstring
matchstring
poll_msintegerDefault 150.
rolestring
statestringDefault present.
timeout_msintegerDefault 5000.
window_idstring

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
confirmbooleanMust be true to apply changes
end_datestringNew end datetime ISO 8601 (optional). Same timezone rules as start_date.
event_idstringyesEvent identifier from list_calendar_events
locationstringNew location — pass empty string to clear (optional)
notesstringNew notes — pass empty string to clear (optional)
spanstringFor recurring events: 'this' (default) or 'future'
start_datestringNew start datetime ISO 8601 (optional). No timezone = Mac's local time; append Z/offset to pin the zone.
titlestringNew title (optional)
NameTypeReqDescription
all_dayboolean
attendeesarray
attendees_totalinteger
calendarstring
calendar_idstring
endstring
idstring
locationstring
notesstring
startstring
titlestring
updatedboolean

No examples provided.