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
onedrive_delete_file ~47

Deletes a file or empty folder from OneDrive.

NameTypeReqDescription
confirmbooleanMust be true to delete
pathstringyesAbsolute path to the file or folder
NameTypeReqDescription
deletedbooleanyes
pathstringyes

No examples provided.

onedrive_file_info ~58

Returns metadata for a file or folder: size, modification date, type, and extension. Faster than listing the parent directory when you only need info about one item.

NameTypeReqDescription
pathstringyesAbsolute path to the file or folder
NameTypeReqDescription
createdstring
extensionstring
modifiedstring
namestring
pathstring
sizeinteger
size_humanstring
typestringfile | directory

No examples provided.

onedrive_list_files ~118

Lists files and folders in a OneDrive path. Use onedrive_root to find valid paths. Returns up to `limit` entries (default 1000, max 5000); large folders are truncated with a note — narrow the path for more specific results.

NameTypeReqDescription
limitintegerMax entries to return (default 1000, max 5000). Folders with more entries are truncated; the response sets truncated=true and reports the total.
pathstringyesAbsolute path to the OneDrive folder
NameTypeReqDescription
countintegerEntries returned in this response.
itemsarray
notestring
totalintegerTotal entries in the folder.
truncatedbooleanTrue when total exceeds the limit.

No examples provided.

onedrive_move_file ~53

Moves or renames a file/folder within OneDrive.

NameTypeReqDescription
confirmbooleanMust be true to move
destinationstringyesDestination path
sourcestringyesSource path
NameTypeReqDescription
fromstringyes
movedbooleanyes
tostringyes

No examples provided.

onedrive_read_file ~188

Reads a text file from your OneDrive synced folder. Supports .txt, .md, .csv, .json, .xml, .log and several code file types. Auto-detects UTF-8, falls back to Latin-1/Windows-1252 for legacy files (common in Latin American banking .TXT padrones). For files elsewhere on this Mac, use file_read.

NameTypeReqDescription
encodingstringForce a specific encoding: 'auto' (default), 'utf8', 'latin1', 'cp1252', 'ascii', 'utf16'
max_bytesintegerMaximum bytes to read (default 1048576 = 1 MB, capped at 10485760 = 10 MB)
offsetintegerStart reading at byte offset (default 0)
pathstringyesAbsolute path to the file
NameTypeReqDescription
bytesintegeryesTotal file size in bytes
bytes_readintegerNumber of bytes read in this slice
contentstringyesDecoded file text content
encodingstringEncoding used to decode (utf8 | cp1252 | latin1 | ascii | utf16)
offsetintegerByte offset the read started at
pathstringyesAbsolute path of the file
truncatedbooleanTrue if more content remains beyond what was returned

No examples provided.

onedrive_root ~20

Lists all mounted OneDrive directories on this Mac.

Input schema present but exposes no named parameters.

NameTypeReqDescription
rootsarray

No examples provided.

onedrive_search_files ~87

Searches for files by name in a OneDrive directory (recursive). Returns up to max_results matches (default 50); raise max_results or narrow the root for more.

NameTypeReqDescription
max_resultsintegerMaximum results (default 50)
querystringyesFilename pattern to search for
rootstringRoot OneDrive path to search in (optional)
NameTypeReqDescription
countinteger
querystring
resultsarray

No examples provided.

onedrive_set_scope ~134

Restricts LMCP's OneDrive access to a specific folder. Once set, all OneDrive tools (read, write, list, search, delete, move) only work inside the allowed folder. Pass an empty folder to remove the restriction. Changes take effect immediately.

NameTypeReqDescription
confirmbooleanMust be true to apply
folderstringAllowed folder path relative to the root (e.g. '/000-Claude Personal Agent'). Empty string removes the scope.
root_namestringyesOneDrive root name (from onedrive_root, e.g. 'OneDrive-WPPCloud')
NameTypeReqDescription
accessstring
allowed_folderstring
effectstring
rootstring
scope_removedboolean
scope_setboolean

No examples provided.

onedrive_write_file ~59

Writes text content to a file in OneDrive.

NameTypeReqDescription
confirmbooleanMust be true to write
contentstringyesText content to write
pathstringyesAbsolute path to the file in OneDrive
NameTypeReqDescription
bytesintegeryes
pathstringyes
writtenbooleanyes

No examples provided.

outlook_diagnose ~48

Checks which email accounts are configured in Microsoft Outlook and compares them with Mail.app. If Outlook has accounts not in Mail.app, guides the user to add them so all email tools work seamlessly.

Input schema present but exposes no named parameters.

NameTypeReqDescription
installedbooleanyesTrue if Microsoft Outlook is installed
mail_app_accountsarray
missing_from_mail_apparrayOutlook account emails not present in Mail.app
notestringPlain-language guidance
outlook_accountsarray
reportstringFull formatted text report

No examples provided.

pdf_read ~49

Reads and extracts text from a PDF document (.pdf file).

NameTypeReqDescription
max_pagesintegerMax pages to extract (default: all)
pathstringyesAbsolute path to the PDF file
NameTypeReqDescription
charsintegeryesNumber of characters in the extracted text
pagesintegerTotal number of pages in the PDF
textstringyesExtracted text content

No examples provided.

permissions_status ~79

Reports the TCC permission state (screen recording, accessibility, microphone) this app needs to capture the screen and drive other apps' UI. Call it before a capture/automation run and surface the grant hints instead of failing mid-sequence. Screen Recording / Accessibility are granted in System Settings (not a JIT dialog); the URLs open the exact pane.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ppt_create ~145

Creates a PowerPoint presentation (.pptx) at `path` from an array of slides, each {title, bullets:[…]}. Requires confirm=true — called without it, returns a preview of the deck instead of writing the file. The path must be somewhere Local MCP can write; Desktop/Documents/Downloads may need a one-time Files-and-Folders grant (System Settings → Privacy & Security → Files and Folders). Returns {created, path, slides}.

NameTypeReqDescription
confirmbooleanMust be true to create
pathstringyesOutput path for the .pptx file
slidesarrayyesArray of {title, bullets:[]} slide objects
NameTypeReqDescription
createdbooleanyesTrue when the file was created
pathstringyesPath of the created .pptx file
slidesintegeryesNumber of slides created

No examples provided.

ppt_read ~37

Reads slide text content from a PowerPoint presentation (.pptx file).

NameTypeReqDescription
pathstringyesAbsolute path to the .pptx file
NameTypeReqDescription
countintegeryesNumber of slides
slidesarrayyesPer-slide structured content ({slide, title, bullets[]}), mirroring ppt_create

No examples provided.

read_email ~351

Use this when the user wants the full content of an email that lives in the Mac's Apple Mail (message ID from list_emails/search_emails). For a Microsoft 365 message ID from m365_list_emails, use m365_read_email. Pass account= (and mailbox= if known, both from list_emails/search_emails) so the lookup targets one account instead of scanning all of them. Call sequentially, not in parallel — concurrent calls serialize behind Mail.app's JXA lock and later calls will time out. Performance: body fetch is the primary latency source (avg 20s on slow IMAP). Pass include_body=false to skip it and get metadata-only (fast). Pass max_body_chars=N to cap the body at N chars after HTML stripping (default 30000; 0=unlimited). Response includes body_fetch_ms when fetch took >2s, body_omitted=true when skipped, body_truncated_at=N when cut. When a body isn't cached on this Mac, read_email returns metadata with body_omitted=true and body_omit_reason="not_downloaded" (iCloud/IMAP optimized storage) rather than making Mail fetch it (that can be slow and tie Mail up). If the user wants it anyway, retry with force_download=true to have Mail pull the body over IMAP now and return it (waits up to ~60s). Off by default; ignored while Mail is in a cooldown.

NameTypeReqDescription
accountstring
force_downloadboolean
include_bodyboolean
mailboxstring
max_body_charsinteger
message_idstringyes
NameTypeReqDescription
accountstring
bodystring
body_fetch_msinteger
body_omittedboolean
body_truncated_atinteger
ccstring
datestring
fromstring
idstring
mailboxstring
subjectstring
tostring
unreadboolean

No examples provided.

read_messages ~66

Reads messages from an iMessage conversation by chat ID or contact name.

NameTypeReqDescription
chat_idstringChat identifier from list_message_chats
contact_namestringContact name substring (alternative to chat_id)
limitintegerMax messages (default 50)
NameTypeReqDescription
chat_idstring
countinteger
messagesarray
notestring

No examples provided.

read_note ~36

Reads the full content of a note by name or ID.

NameTypeReqDescription
note_idstring
note_namestring
NameTypeReqDescription
bodystring
folderstring
idstring
modifiedstring
namestring

No examples provided.

recipe_delete ~125

Use this when the user wants to remove one of THEIR saved recipes/skills (the manifests under ~/.local/share/local-mcp/recipes). Destructive with a preview gate: the first call (without confirm) shows what would be deleted; call again with confirm=true to actually delete. Bundled starter recipes can't be deleted. To modify a recipe instead, recipe_save with the same name overwrites it (upsert).

NameTypeReqDescription
confirmbooleanMust be true to actually delete. Without it, returns a preview.
namestringyesRecipe name (from recipe_list).
NameTypeReqDescription
deletedboolean
namestring
statusstring'preview' when confirm was not set.

No examples provided.

recipe_discover ~111

Browses installable community SKILLS — ready-made LMCP workflows other people published (a morning brief, inbox triage, a weekly report). A user would browse them to find a ready-made workflow for a repeatable multi-app task instead of building it from scratch. Returns a list of {id, title, category, description, steps, votes}; install one with recipe_install(id).

NameTypeReqDescription
categorystringOptional filter hint shown to the user; the catalog is small so all skills are returned.

No output schema declared.

No examples provided.

recipe_export ~108

Exports a saved SKILL (recipe) as a single portable token the user can send to someone else — paste it in a message, email, or doc. The recipient installs it with recipe_import and runs it with recipe_run. A user would export a skill to share it with a teammate (a handy brief, a report, a workflow). Returns {name, skill_token} plus the readable manifest.

NameTypeReqDescription
namestringyesName of the saved skill to export (see recipe_list).

No output schema declared.

No examples provided.

recipe_get ~31

Returns the full manifest of a recipe by name. recipe_not_found if unknown.

NameTypeReqDescription
namestringyes
NameTypeReqDescription
descriptionstring
namestring
paramsarray
stepsarray

No examples provided.

recipe_import ~123

Installs a SKILL someone shared with you — pass the skill_token from their recipe_export (or a raw recipe manifest JSON). Saves it to this Mac so recipe_run can use it. Safe: importing only stores the skill; when it's later run, any state-changing step (send/write/delete) previews first and needs confirmation. If a skill with the same name already exists, the import is saved under a non-colliding name. Returns {name, imported}.

NameTypeReqDescription
skillstringyesA skill_token from recipe_export, or a raw recipe manifest JSON string.

No output schema declared.

No examples provided.

recipe_install ~101

Installs a community SKILL by id (from recipe_discover) onto this Mac so recipe_run can use it. Safe: installing only stores the skill; when it's later run, any state-changing step (send/write/delete) previews first and needs confirmation. If a skill with the same name already exists, it's saved under a non-colliding name. Returns {name, installed}.

NameTypeReqDescription
idintegeryesThe community skill id from recipe_discover.

No output schema declared.

No examples provided.

recipe_list ~82

Lists the user's reusable SKILLS — saved recipes (an ordered sequence of LMCP tool calls with parameters), plus bundled ones — each runnable with recipe_run. Skills turn a repeated LMCP workflow into one reusable command. A user would list them to find an existing skill for a task rather than rebuilding it from scratch. Returns each skill's name, description, and steps.

Input schema present but exposes no named parameters.

NameTypeReqDescription
recipesarray

No examples provided.

recipe_run ~133

Executes a recipe end to end: binds params, runs each step's tool in order via the registry, persists the run (see recipe_runs), and returns each step's result plus any markers_path. Recipes with state-changing steps (write/send/delete) PREVIEW first — call again with confirm:true to execute; read-only recipes run immediately. A step that errors stops the run and is reported.

NameTypeReqDescription
confirmbooleanSet true to execute a recipe that has state-changing steps; read-only recipes ignore it.
namestringyes
paramsobjectParam overrides (merged over the recipe defaults).

No output schema declared.

No examples provided.

recipe_runs ~128

Shows the history of past recipe runs and their results (recorded by recipe_run), so you can reuse, compare, or debug an automation. Pass `name` for one recipe's runs, or omit for a compact history across all recipes. Pass `run_id` (with `name`) to get that run in full detail. Newest first.

NameTypeReqDescription
limitintegerMax runs to return (default 20).
namestringRecipe name; omit for runs across all recipes.
run_idstringReturn this one run in full detail (requires name).
NameTypeReqDescription
countinteger
recipestring|nullRecipe name when scoped, null for the all-recipes history.
runsarray

No examples provided.

recipe_save ~325

Saves a reusable SKILL — a named recipe (an ordered sequence of LMCP tool calls with parameters) — to this Mac so the user can re-run it anytime with recipe_run. A user would save one to turn a multi-step LMCP workflow they repeat (a morning brief, inbox triage, a weekly report, a data pull) into a single reusable command. Saved skills can be shared with other people via recipe_export. The manifest must have a name and a non-empty steps array. Returns {name}.

NameTypeReqDescription
manifestobjectyesThe recipe manifest. Shape: {"name": string (required), "description": string, "params": [{"name": string, "type": "string"|"int"|"bool", "default": any}], "steps": [ ... ] (required, non-empty), "ou…

No output schema declared.

No examples provided.

record_marker ~124

Drops a named marker into the active recording's timeline. t_ms is elapsed ms since recording start. Provide bounds (global points, top-left) to zoom toward an element, or omit for full-frame. note becomes a caption source. Returns no_active_session if nothing is recording.

NameTypeReqDescription
boundsobjectOptional {x,y,w,h} global points to zoom toward.
namestringyesMarker name, e.g. open_tray, act2_calendar_create.
notestringFree text → caption source.
session_idstring

No output schema declared.

No examples provided.

rename_reminder_folder ~103

Renames an existing Apple Reminders list. Pass the current list name (or list_id from get_reminder_folders) and new_name. Requires confirm=true.

NameTypeReqDescription
confirmbooleanMust be true to apply
list_idstringList identifier from get_reminder_folders (alternative to name)
namestringCurrent list name (or pass list_id)
new_namestringyesNew name for the list

Structured output declared, but exposes no named fields.

No examples provided.

reply_email ~138

Use this when the user wants to reply to an email that lives in the Mac's Apple Mail (message ID from list_emails/search_emails). Supports plain text or HTML body. For a Microsoft 365 message ID from m365_list_emails, use m365_reply_email. Pass `account` (from list_emails/search_emails results) to skip scanning other accounts and avoid timeouts on multi-account Macs.

NameTypeReqDescription
accountstring
bodystring
confirmboolean
html_bodystring
message_idstringyes
reply_allboolean
NameTypeReqDescription
message_idstring
repliedboolean

No examples provided.

report_friction ~171

Send an ANONYMOUS, content-free signal when an LMCP tool fails, returns nothing useful, the user seems frustrated, or you could not accomplish what they asked. Helps the LMCP team find and fix the roughest spots. Send ONLY the category + the tool name — NEVER the user's request, message/email content, account names, or any personal data. No confirmation needed: this is anonymous (categories only) and respects the user's opt-out.

NameTypeReqDescription
attempt_countintegerHow many times this was attempted (optional).
error_categorystringCategory of what went wrong (optional).
friction_typestringyesWhat kind of friction you observed.
tool_attemptedstringName of the LMCP tool involved (e.g. list_emails). Optional.

Structured output declared, but exposes no named fields.

No examples provided.

report_problem ~279

Sends a problem report, feature request, or integration request to the LMCP team — for when a user wants to report a bug, ask for a new capability, or request support for an app LMCP doesn't cover yet. Without confirm=true it returns a preview of the anonymous payload that would be sent (version, OS, and permission status only — no personal data); with confirm=true it submits and returns a case_id. type='problem' (default) reports a bug, type='feature' requests a new capability, type='integration' requests an unsupported app.

NameTypeReqDescription
confirmbooleanMust be true to submit the report. Without it, shows a preview.
descriptionstringRequired for type=feature or integration: what the user wants.
error_messagestringFor type=problem: verbatim error string from the failed tool.
expectedstringWhat you or the user expected to happen.
report_typestring'problem' (default) | 'feature' | 'integration'
symptomstringRequired for type=problem: what is broken, in your own words.
tool_attemptedstringFor type=problem: name of the LMCP tool that failed.
user_requeststringWhat the user originally asked the AI to do.

Structured output declared, but exposes no named fields.

No examples provided.

request_feature ~144

Submits a feature request to the LMCP team — a new capability, a tool that doesn't exist yet, or an app/integration the user wishes LMCP supported. A user would invoke this when they want to ask the team for something LMCP can't do yet. Without confirm=true it returns a preview; with confirm=true it submits. The request includes the machine ID and (if set) the account email so the team can follow up — it is not anonymous.

NameTypeReqDescription
confirmbooleanMust be true to submit. Without it, shows a preview.
featurestringyesWhat the user wants LMCP to do — a capability, tool, or integration.

Structured output declared, but exposes no named fields.

No examples provided.

run_diagnostics ~108

Runs a fast health check of all LMCP integrations on this machine. Shows what works, what doesn't, and how to fix it. Optionally submits a report to the LMCP team.

NameTypeReqDescription
focusstringIntegration to focus on: calendar, mail, contacts, reminders, omnifocus, outlook, notes, finder, onedrive. Leave empty to check all.
submitbooleanSend the diagnostic report to the LMCP team for analysis (default: false)
NameTypeReqDescription
integrationsarrayyes
ok_countintegeryesNumber of integrations working
problem_countintegeryesNumber of integrations with errors or missing permissions
reportstringFull formatted text report
submittedbooleanTrue when the report was sent to the LMCP team
summarystringyesPlain-language summary of overall health
warn_countintegeryesNumber of integrations with warnings / not running

No examples provided.

safari_click ~149

Clicks the first element matching a CSS selector in the current Safari 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 (useful when clicking links or buttons that trigger navigation).

NameTypeReqDescription
nthintegerWhich match to click if there are several (0-based, default 0)
selectorstringyesCSS selector (e.g. 'button.primary', '#save', '[data-testid=login]')
wait_for_navigationbooleanWait up to 3s for page load after click (default false)

Structured output declared, but exposes no named fields.

No examples provided.

safari_fill_form ~37

Fills multiple form fields in one shot. Pass fields as a JSON object mapping CSS selector to value.

NameTypeReqDescription
fieldsstringyes
NameTypeReqDescription
okboolean
resultobject

No examples provided.

safari_go_back ~29

Navigates the current Safari tab back to the previous page.

NameTypeReqDescription
window_indexinteger
NameTypeReqDescription
fromstring
tostring
went_backboolean

No examples provided.

safari_history ~116

Lists or searches the user's Safari 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 Chrome use chrome_history.

NameTypeReqDescription
limitintegerMax entries to return (default 50, max 200).
querystringSubstring to match against the URL or page title. Omit to list the most recent history.

No output schema declared.

No examples provided.

safari_list_tabs ~28

Lists every open tab across all Safari windows with title, URL, and whether it is active.

Input schema present but exposes no named parameters.

NameTypeReqDescription
countinteger
tabsarray

No examples provided.

safari_navigate ~50

Navigates Safari to a URL. Pass new_tab=true to open in a new tab.

NameTypeReqDescription
new_tabboolean
urlstringyes
window_indexinteger
NameTypeReqDescription
navigatedboolean
new_tabboolean
urlstring

No examples provided.

safari_query_selector_all ~43

Runs document.querySelectorAll in the current Safari tab and returns a compact summary of each match.

NameTypeReqDescription
limitinteger
selectorstringyes
NameTypeReqDescription
okboolean
resultobject

No examples provided.

safari_read_tab ~236

Reads the rendered text content of a Safari tab. Identify the tab either by `url_match` (substring match against URL; first hit wins) or by `window_index` + `tab_index` (from safari_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 (useful for following navigation in SPAs like dashboards).

NameTypeReqDescription
include_htmlbooleanAlso return the HTML source (default false)
include_linksbooleanExtract all links with href + visible text (default false). Great for navigating SPAs.
max_bytesintegerMax bytes of text (and html) to return (default 102400)
tab_indexintegerTab index from safari_list_tabs (default current tab of that window)
url_matchstringSubstring to match against the tab URL. Takes precedence over indices.
window_indexintegerWindow index from safari_list_tabs (default 0)
NameTypeReqDescription
htmlstring
html_bytesinteger
html_truncatedboolean
link_countinteger
linksarray
links_errorstring
textstring
text_bytesinteger
titlestring
truncatedboolean
urlstring

No examples provided.

safari_search_tabs ~102

Searches the rendered text of every open Safari tab for a substring. Returns each matching tab with the surrounding snippet. Useful for 'do I have a tab open with X?' questions across dozens of tabs.

NameTypeReqDescription
contextintegerCharacters of context around each match (default 120)
max_tabsintegerMax tabs to scan (default 30). Higher = slower.
querystringyesSubstring to search for (case-insensitive)
NameTypeReqDescription
hitsarray
querystring
scannedinteger

No examples provided.

safari_setup_check ~43

Reports whether Safari is ready for interactive tools (safari_click, safari_type, safari_evaluate_js). Returns setup instructions if JavaScript from Apple Events is not enabled.

Input schema present but exposes no named parameters.

NameTypeReqDescription
instructionsstring
ready_for_js_toolsboolean
tabs_openinteger

No examples provided.

safari_type ~47

Sets the value of an input/textarea matching a CSS selector and fires input/change events.

NameTypeReqDescription
clearboolean
selectorstringyes
valuestringyes
NameTypeReqDescription
okboolean
resultobject

No examples provided.

safari_wait_for ~152

Polls the current Safari 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 safari_click to wait for the next page or a modal to render.

NameTypeReqDescription
selectorstringCSS selector to wait for (optional if text_match is given)
text_matchstringText to wait for. With `selector`, must appear inside that element; without it, anywhere on the page.
timeout_msintegerMax time to wait (default 10000 = 10s, max 30000)

Structured output declared, but exposes no named fields.

No examples provided.

save_attachment ~93

Saves an attachment from an email to disk. Pass account= (and mailbox= if known, both from list_emails/search_emails) so the lookup targets one account instead of scanning all of them.

NameTypeReqDescription
accountstring
attachment_namestringyes
confirmboolean
destinationstring
mailboxstring
message_idstringyes
NameTypeReqDescription
attemptsinteger
destinationstring
namestring
savedboolean

No examples provided.

screen_record_start ~132

Begins a screen recording (ScreenCaptureKit) of a display, window, or region. Single active session in v1 — a second start returns already_recording. Returns a session_id used by record_marker and screen_record_stop. Requires Screen Recording permission; without it returns an explicit permission_required error, never a silent no-op.

NameTypeReqDescription
fpsintegerFrames per second (default 60).
output_pathstringWhere to write the .mov (default: temp file, returned by stop).
show_cursorbooleanDefault true.
targetobjectyesWhat to capture.

No output schema declared.

No examples provided.

screen_record_status ~39

Reports whether a recording is active, with the session_id, elapsed_ms, output path, and marker_count.

NameTypeReqDescription
session_idstring

No output schema declared.

No examples provided.

screen_record_stop ~75

Stops the active recording, finalizes the .mov, and writes the marker timeline JSON (§6) next to it. Returns the video path, duration, resolution, marker_count and markers_path. Returns no_active_session if nothing is recording.

NameTypeReqDescription
session_idstringOptional; the single active session is used if omitted.

No output schema declared.

No examples provided.