Local MCP
Qué hace este MCP
Connects AI assistants to Mac email, calendars, reminders, notes, tasks, files, Microsoft 365, Todoist, spreadsheets, and daily briefings.
Herramientas
Esquema de entrada
{'type': 'object', 'properties': {'confirm': {'type': 'boolean', 'description': 'Must be true to complete; called without it, returns a preview.'}, 'task_id': {'type': 'string', 'description': 'Exact task id from list_omnifocus_tasks (preferred). Provide this OR task_name.'}, 'task_name': {'type': 'string', 'description': "Task title to match when you don't have the id."}}}
Esquema de salida
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'completed': {'type': 'boolean'}}}
Esquema de entrada
{'type': 'object', 'required': ['reminder_id'], 'properties': {'confirm': {'type': 'boolean', 'description': 'Must be true to complete'}, 'reminder_id': {'type': 'string', 'description': 'Reminder ID from list_reminders'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'client': {'type': 'string', 'description': 'Optional: configure only this client. One of: claude-desktop, claude-code, cursor, windsurf, vscode, zed, lmstudio, warp, antigravity, cline, roo, codex, jan, opencode, goose, hermes, raycast, msty, cherry-studio. Omit to do all installed ones.'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to write the config. Without it, returns a preview of what would change.'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'message': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'required': ['ok', 'message'], 'properties': {'ok': {'type': 'boolean'}, 'message': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['title', 'start_date', 'end_date'], 'properties': {'notes': {'type': 'string', 'description': 'Event notes (optional)'}, 'title': {'type': 'string', 'description': 'Event title'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to create the event'}, 'calendar': {'type': 'string', 'description': 'Calendar name to match (optional, alternative to calendar_id)'}, 'end_date': {'type': 'string', 'description': 'ISO 8601 date or datetime, same timezone rules as start_date. For an all-day event pass a bare date (end is inclusive: same date as start = a one-day all-day event; a later date spans through that day).'}, 'location': {'type': 'string', 'description': 'Location (optional)'}, 'attendees': {'type': 'array', 'items': {'type': 'string'}, 'description': 'List of email addresses to invite (optional, CalDAV/Exchange only)'}, 'recurrence': {'type': 'string', 'description': "Make it a repeating event: 'daily', 'weekly', 'monthly', or 'yearly' (optional; omit for a one-time event)."}, 'start_date': {'type': 'string', 'description': "ISO 8601 date or datetime. With a time (2026-06-27T09:00:00) the event is timed; a time with NO timezone is read in the Mac's LOCAL zone, append Z or an offset (2026-06-27T09:00:00Z, or +02:00) to pin it to UTC/another zone. Pass a bare DATE (YYYY-MM-DD) for BOTH start_date and end_date to create an ALL-DAY event."}, 'calendar_id': {'type': 'string', 'description': 'Calendar UUID from list_calendar_names (optional, defaults to default calendar)'}, 'recurrence_count': {'type': 'integer', 'description': 'Total number of occurrences (optional). Mutually exclusive with recurrence_until; if neither is given the event repeats indefinitely.'}, 'recurrence_until': {'type': 'string', 'description': 'ISO 8601 date the repetition stops on (optional; takes precedence over recurrence_count).'}, 'recurrence_interval': {'type': 'integer', 'description': "Repeat every N periods (optional, default 1 — e.g. recurrence='weekly' + recurrence_interval=2 = every 2 weeks)."}}}
Esquema de salida
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'end': {'type': 'string'}, 'start': {'type': 'string'}, 'title': {'type': 'string'}, 'created': {'type': 'boolean'}, 'recurrence': {'type': 'string', 'description': 'Present when the event repeats (human-readable summary)'}, 'attendees_note': {'type': 'string'}, 'attendees_requested': {'type': 'array', 'items': {'type': 'string'}}}}
Esquema de entrada
{'type': 'object', 'properties': {'cc': {'type': 'string', 'description': 'CC address(es), comma-separated.'}, 'to': {'type': 'string', 'description': 'Recipient address(es) for a new draft, comma-separated. Omit for a reply draft (uses reply_to_message_id).'}, 'bcc': {'type': 'string', 'description': 'BCC address(es), comma-separated.'}, 'body': {'type': 'string', 'description': 'Plain-text body of the draft.'}, 'from': {'type': 'string', 'description': "Sender address — on a multi-account Mac, selects which account's Drafts to use. Alternative to `account`."}, 'account': {'type': 'string', 'description': 'Account name (from list_email_accounts) whose Drafts folder receives the draft. Alternative to `from`.'}, 'confirm': {'type': 'boolean', 'default': 'false', 'description': 'Must be true to actually save the draft. Without it, returns a preview of the recipient/sender, subject, and that the body will be saved.'}, 'subject': {'type': 'string', 'description': 'Subject line for a new draft. Ignored for reply drafts (they inherit the original subject).'}, 'html_body': {'type': 'string', 'description': 'HTML body of the draft. Takes precedence over `body` when both are given.'}, 'reply_all': {'type': 'boolean', 'default': 'false', 'description': 'For a reply draft, include all original recipients (reply-all) instead of just the sender.'}, 'attachments': {'type': 'string', 'description': 'Files to attach, as comma-separated absolute paths (e.g. a PDF).'}, 'reply_to_message_id': {'type': 'string', 'description': 'Message id (from list_emails/search_emails) to draft a reply to, instead of a new message.'}}}
Esquema de salida
{'type': 'object', 'properties': {'to': {'type': 'string'}, 'from': {'type': 'string'}, 'kind': {'type': 'string'}, 'account': {'type': 'string'}, 'mailbox': {'type': 'string'}, 'subject': {'type': 'string'}, 'attachments': {'type': 'array', 'items': {'type': 'string'}}, 'saved_draft': {'type': 'boolean'}, 'attachments_failed': {'type': 'array', 'items': {'type': 'string'}}, 'reply_to_message_id': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Folder name'}, 'account': {'type': 'string', 'description': 'Account name (optional, uses default)'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to create'}}}
Esquema de salida
{'type': 'object', 'required': ['created', 'name'], 'properties': {'name': {'type': 'string'}, 'created': {'type': 'boolean'}}}
Esquema de entrada
{'type': 'object', 'required': ['name', 'body'], 'properties': {'body': {'type': 'string', 'description': "Body of the note. Accepts Markdown (headings, bold/italic, bullet and numbered lists, links, inline code), converted to Apple Notes' native formatting."}, 'name': {'type': 'string', 'description': 'Title of the new note.'}, 'folder': {'type': 'string', 'description': "Notes folder to create it in. Defaults to the account's default folder."}, 'confirm': {'type': 'boolean', 'description': 'Set to true to actually create the note. Defaults to false.'}}}
Esquema de salida
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'created': {'type': 'boolean'}}}
Esquema de entrada
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'The task title.'}, 'note': {'type': 'string', 'description': 'Longer note/body for the task.'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to create; called without it, returns a preview.'}, 'flagged': {'type': 'boolean', 'default': 'false', 'description': 'Create the task flagged.'}, 'project': {'type': 'string', 'description': 'Project to file the task under (name). Omit for the inbox.'}, 'due_date': {'type': 'string', 'description': 'Due date, ISO 8601 (YYYY-MM-DD or full timestamp).'}, 'defer_date': {'type': 'string', 'description': 'Defer/start date, ISO 8601 — the task stays hidden until then.'}}}
Esquema de salida
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'created': {'type': 'boolean'}}}
Esquema de entrada
{'type': 'object', 'required': ['recipients'], 'properties': {'lang': {'type': 'string', 'description': "ISO language of the invite you're writing (the user's conversation language, e.g. 'es', 'en'). Defaults to the Mac's language."}, 'recipients': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string', 'description': "Recipient's name"}, 'email': {'type': 'string', 'description': "Recipient's email"}}}, 'description': 'The picked recipients.'}}}
Esquema de salida
{'type': 'object', 'properties': {'next': {'type': 'string'}, 'invites': {'type': 'array', 'items': {'type': 'object', 'properties': {'link': {'type': 'string'}, 'name': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['title'], 'properties': {'notes': {'type': 'string', 'description': 'Notes (optional)'}, 'title': {'type': 'string', 'description': 'Reminder title'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to create'}, 'due_date': {'type': 'string', 'description': 'ISO 8601 date (optional)'}, 'priority': {'enum': ['none', 'low', 'medium', 'high'], 'type': 'string', 'description': 'Priority: none | low | medium | high (optional)'}, 'list_name': {'type': 'string', 'description': 'Reminder list name (optional)'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Name for the new reminder list'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to create'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'location': {'type': 'string', 'description': "Optional city name or 'lat,lon' to include today's weather in the brief (e.g. 'London', 'San Francisco'). Omitted if not provided."}, 'include_emails': {'type': 'boolean', 'description': 'Include unread email summary from Mail.app (default true, skipped gracefully if Mail is not running)'}}}
Esquema de salida
{'type': 'object', 'required': ['date', 'events', 'reminders', 'emails'], 'properties': {'date': {'type': 'string', 'description': "Today's date (YYYY-MM-DD)."}, 'note': {'type': 'string', 'description': 'Onboarding enrichment shown when nothing is scheduled.'}, 'emails': {'type': ['object', 'null'], 'description': 'Unread email summary (unread_count + recent_unread), or {skipped} / {error}, or null when not requested.'}, 'events': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'end': {'type': 'string'}, 'start': {'type': 'string'}, 'title': {'type': 'string'}, 'all_day': {'type': 'boolean'}, 'calendar': {'type': 'string'}, 'location': {'type': 'string'}}}, 'description': "Today's calendar events."}, 'weather': {'type': 'object', 'description': "Today's weather (current conditions + forecast), only present when a location was provided."}, 'reminders': {'type': 'array', 'items': {'type': 'object', 'properties': {'list': {'type': 'string'}, 'title': {'type': 'string'}, 'overdue': {'type': 'boolean'}, 'due_date': {'type': 'string'}, 'reminder_id': {'type': 'string'}}}, 'description': 'Reminders due today or overdue.'}, 'incomplete': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Sections that could NOT be read this time (each step has its own ceiling). An empty/absent list means every section was actually read; a section named here means its data is missing, NOT that it is empty.'}}}
Esquema de entrada
{'type': 'object', 'required': ['event_id'], 'properties': {'span': {'type': 'string', 'description': "For a recurring event: 'this' (default — only this occurrence) or 'future' (this and all following occurrences; 'all'/'series' mean the same). Any other value is refused. Ignored for non-recurring events."}, 'confirm': {'type': 'boolean', 'description': 'Must be true to delete'}, 'event_id': {'type': 'string', 'description': 'Event (or occurrence) identifier from list_calendar_events. For a recurring event this addresses exactly the occurrence that id came from — the preview names the date and scope so you can confirm before deleting.'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'properties': {'confirm': {'type': 'boolean', 'description': 'Set to true to actually delete. Defaults to false, which returns a preview and deletes nothing.'}, 'note_id': {'type': 'string', 'description': "The note's id, as list_notes/search_notes report it."}, 'note_name': {'type': 'string', 'description': "Exact title, when you don't have the id. If several notes share it, the first match is deleted — prefer note_id."}}}
Esquema de salida
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'deleted': {'type': 'boolean', 'description': 'True only when the deletion was VERIFIED by re-reading the note'}, 'in_trash': {'type': 'boolean', 'description': 'The note moved to Recently Deleted (Apple purges it after 30 days) rather than vanishing outright'}, 'verified': {'type': 'boolean', 'description': 'The note was re-read after deleting and is no longer where it was'}, 'folder_after': {'type': 'string', 'description': 'Where it ended up (present when it moved instead of vanishing)'}, 'next_actions': {'type': 'array'}, 'folder_before': {'type': 'string', 'description': 'The folder the note was in before deleting'}}}
Esquema de entrada
{'type': 'object', 'required': ['reminder_id'], 'properties': {'confirm': {'type': 'boolean', 'description': 'Must be true to delete'}, 'reminder_id': {'type': 'string', 'description': 'Reminder identifier from list_reminders'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'name': {'type': 'string', 'description': 'List name to delete (or pass list_id)'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to delete'}, 'list_id': {'type': 'string', 'description': 'List identifier from get_reminder_folders (alternative to name)'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'message': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'required': ['ok', 'message'], 'properties': {'ok': {'type': 'boolean'}, 'message': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['service'], 'properties': {'service': {'type': 'string', 'description': "Service id, e.g. 'calendar', 'reminders', 'contacts', 'mail', 'notes', 'messages', 'teams', 'slack'."}}}
Esquema de entrada
{'type': 'object', 'required': ['path', 'headers'], 'properties': {'path': {'type': 'string', 'description': 'Output path for the .xlsx file'}, 'rows': {'type': 'array', 'items': {'type': 'array', 'description': 'One row: the cell values, in column order'}, 'description': 'Array of ROW ARRAYS — each row is itself an array of cell values (optional)'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to create'}, 'headers': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Column headers'}}}
Esquema de salida
{'type': 'object', 'required': ['created', 'path', 'headers', 'rows'], 'properties': {'path': {'type': 'string', 'description': 'Path of the created .xlsx file'}, 'rows': {'type': 'integer', 'description': 'Number of data rows written'}, 'created': {'type': 'boolean', 'description': 'True when the file was created'}, 'headers': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Column headers written'}}}
Esquema de entrada
{'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path to the .xlsx file'}, 'max_rows': {'type': 'integer', 'description': 'Max rows to return (default 100)'}, 'sheet_name': {'type': 'string', 'description': 'Sheet name to read (optional, reads first sheet). Matched without case. A name that no sheet has is an error listing the available ones — it never falls back to the first sheet.'}, 'force_download': {'type': 'boolean', 'description': "If the file is stored in the cloud and evicted from this Mac (dataless), request the download and wait for it instead of failing. Off by default: a download can take minutes and use metered data, so it is the caller's decision."}}}
Esquema de salida
{'type': 'object', 'required': ['sheet', 'sheets', 'headers', 'rows', 'count'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'array', 'items': {}}, 'description': "Data rows AFTER the header row; numeric cells are numbers and text cells are strings — feeds straight into excel_create's `rows`"}, 'count': {'type': 'integer', 'description': 'Number of DATA rows returned (excludes the header row)'}, 'sheet': {'type': 'string', 'description': 'Name of the sheet that was read'}, 'sheets': {'type': 'array', 'items': {'type': 'string'}, 'description': 'All sheet names in the workbook'}, 'headers': {'type': 'array', 'items': {'type': 'string'}, 'description': "The first row, as column headers — mirrors excel_create's `headers` param"}, 'sparse_cells': {'type': 'array', 'items': {'type': 'object'}, 'description': "Present only when the sheet has cells far outside the table (beyond column 64): each is {row, col, value} with REAL 1-based indices. Kept out of `rows` so one stray cell can't pad every row — but never dropped."}}}
Esquema de entrada
{'type': 'object', 'required': ['path', 'value'], 'properties': {'row': {'type': 'integer', 'description': 'Row number (1-based) — use with `column`, or use `cell` instead'}, 'cell': {'type': 'string', 'description': 'Cell in A1 notation, e.g. "B2" (alternative to row+column)'}, 'path': {'type': 'string', 'description': 'Path to the .xlsx file'}, 'value': {'type': 'string', 'description': 'Value to write'}, 'column': {'type': 'integer', 'description': 'Column number (1-based) — use with `row`, or use `cell` instead'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to modify'}, 'sheet_name': {'type': 'string', 'description': 'Sheet name (default: first sheet). Matched without case. A name that no sheet has is an error listing the available ones — it never falls back to the first sheet.'}}}
Esquema de salida
{'type': 'object', 'required': ['written', 'row', 'col', 'value'], 'properties': {'col': {'type': 'integer', 'description': 'Column that was written (1-based)'}, 'row': {'type': 'integer', 'description': 'Row that was written (1-based)'}, 'sheet': {'type': 'string', 'description': 'Sheet the value actually landed in'}, 'value': {'type': 'string', 'description': 'Value written to the cell'}, 'written': {'type': 'boolean', 'description': 'True when the cell was written'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'path': {'type': 'string', 'description': 'Absolute path to the directory. Defaults to the home directory (~) if omitted.'}, 'show_hidden': {'type': 'boolean', 'description': "Include hidden files (starting with '.'). Default false."}}}
Esquema de salida
{'type': 'object', 'properties': {'dirs': {'type': 'integer'}, 'path': {'type': 'string'}, 'count': {'type': 'integer'}, 'files': {'type': 'integer'}, 'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'path': {'type': 'string'}, 'size': {'type': 'integer'}, 'type': {'type': 'string', 'description': 'file | directory'}, 'modified': {'type': 'string'}, 'extension': {'type': 'string'}, 'is_symlink': {'type': 'boolean'}, 'size_human': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path to the file'}, 'offset': {'type': 'integer', 'description': 'Start reading at this byte offset (default 0)'}, 'max_bytes': {'type': 'integer', 'description': 'Maximum bytes to read (default 1 MB, max 10 MB)'}, 'force_download': {'type': 'boolean', 'description': "If the file is stored in the cloud and evicted from this Mac (dataless), request the download and wait for it instead of failing. Off by default: a download can take minutes and use metered data, so it is the caller's decision."}}}
Esquema de salida
{'type': 'object', 'required': ['content', 'path', 'bytes'], 'properties': {'path': {'type': 'string', 'description': 'Resolved absolute path of the file'}, 'bytes': {'type': 'integer', 'description': 'Total file size in bytes'}, 'offset': {'type': 'integer', 'description': 'Byte offset the read started at'}, 'content': {'type': 'string', 'description': 'Decoded file text content'}, 'encoding': {'type': 'string', 'description': 'Encoding used to decode (utf8 | cp1252 | latin1)'}, 'truncated': {'type': 'boolean', 'description': 'True if more content remains beyond what was returned'}}}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'root': {'type': 'string', 'description': 'Root directory to search from. Defaults to home directory (~).'}, 'query': {'type': 'string', 'description': 'Filename pattern to search for (partial, case-insensitive)'}, 'file_type': {'type': 'string', 'description': "Filter by extension, e.g. 'pdf', 'docx', 'xlsx'. Omit for all types."}, 'max_results': {'type': 'integer', 'description': 'Maximum number of results to return. Default 50, max 200.'}}}
Esquema de salida
{'type': 'object', 'properties': {'root': {'type': 'string'}, 'count': {'type': 'integer'}, 'query': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'path': {'type': 'string'}, 'size': {'type': 'integer'}, 'type': {'type': 'string', 'description': 'file | directory'}, 'modified': {'type': 'string'}, 'extension': {'type': 'string'}, 'is_symlink': {'type': 'boolean'}, 'size_human': {'type': 'string'}, 'relative_path': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path to the file to write'}, 'append': {'type': 'boolean', 'description': 'Append to the end instead of overwriting (default false)'}, 'confirm': {'type': 'boolean', 'description': 'Required (true) to OVERWRITE an existing file. Not needed to create a new file or to append.'}, 'content': {'type': 'string', 'description': 'Text content to write'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'path': {'type': 'string', 'description': 'Absolute path to list (default: ~)'}, 'limit': {'type': 'integer', 'description': 'Max items (default 100)'}}}
Esquema de salida
{'type': 'object', 'properties': {'note': {'type': 'string'}, 'path': {'type': 'string'}, 'count': {'type': 'integer', 'description': 'Items returned in this response.'}, 'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'path': {'type': 'string'}, 'size': {'type': 'integer'}, 'type': {'type': 'string', 'description': 'file | directory'}, 'modified': {'type': 'string'}}}}, 'total': {'type': 'integer', 'description': 'Total items when the listing was truncated.'}, 'truncated': {'type': 'boolean'}}}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'path': {'type': 'string', 'description': 'Limit search to this directory (optional)'}, 'limit': {'type': 'integer', 'description': 'Max results (default 50)'}, 'query': {'type': 'string', 'description': 'Filename or content to search for'}}}
Esquema de salida
{'type': 'object', 'required': ['query', 'count', 'results'], 'properties': {'count': {'type': 'integer'}, 'query': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'path': {'type': 'string'}, 'type': {'type': 'string', 'description': 'file | directory'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path under a Google Drive mount (use gdrive_root / gdrive_list_files to get one)'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to actually delete'}}}
Esquema de salida
{'type': 'object', 'required': ['deleted', 'path', 'type'], 'properties': {'path': {'type': 'string'}, 'type': {'type': 'string', 'description': 'What was deleted: file, folder, or google_doc_pointer'}, 'deleted': {'type': 'boolean', 'description': 'True only when the folder listing no longer shows the item'}}}
Esquema de entrada
{'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path to the file or folder'}}}
Esquema de salida
{'type': 'object', 'properties': {'name': {'type': 'string'}, 'path': {'type': 'string'}, 'size': {'type': 'integer'}, 'type': {'type': 'string'}, 'created': {'type': 'string'}, 'modified': {'type': 'string'}, 'size_human': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path to the Google Drive folder'}, 'limit': {'type': 'integer', 'description': 'Max entries (default 1000, max 5000)'}}}
Esquema de salida
{'type': 'object', 'properties': {'note': {'type': 'string'}, 'count': {'type': 'integer'}, 'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'path': {'type': 'string'}, 'size': {'type': 'integer'}, 'type': {'type': 'string'}, 'modified': {'type': 'string'}}}}, 'total': {'type': 'integer'}, 'truncated': {'type': 'boolean'}}}
Esquema de entrada
{'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path to the file'}, 'offset': {'type': 'integer', 'description': 'Start byte offset (default 0)'}, 'encoding': {'type': 'string', 'description': "'auto' (default), 'utf8', 'latin1', 'cp1252', 'ascii', 'utf16'"}, 'max_bytes': {'type': 'integer', 'description': 'Max bytes (default 1MB, cap 10MB)'}}}
Esquema de salida
{'type': 'object', 'required': ['content', 'path', 'bytes'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path of the file'}, 'bytes': {'type': 'integer', 'description': 'Total file size in bytes'}, 'offset': {'type': 'integer', 'description': 'Byte offset the read started at'}, 'content': {'type': 'string', 'description': 'Decoded file text content'}, 'encoding': {'type': 'string', 'description': 'Encoding used to decode (utf8 | cp1252 | latin1 | ascii | utf16)'}, 'truncated': {'type': 'boolean', 'description': 'True if more content remains beyond what was returned'}, 'bytes_read': {'type': 'integer', 'description': 'Number of bytes read in this slice'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'roots': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'path': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'root': {'type': 'string', 'description': 'Restrict to this Drive path (optional - defaults to all mounts)'}, 'query': {'type': 'string', 'description': 'Filename pattern to search for'}, 'max_results': {'type': 'integer', 'description': 'Maximum results (default 50)'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'query': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'path': {'type': 'string'}, 'size': {'type': 'integer'}, 'type': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path under a Google Drive mount'}, 'confirm': {'type': 'boolean', 'description': 'Required (true) to OVERWRITE an existing file. Not needed to create a new file.'}, 'content': {'type': 'string', 'description': 'Text content to write'}}}
Esquema de salida
{'type': 'object', 'required': ['written', 'path', 'bytes', 'overwrote'], 'properties': {'path': {'type': 'string'}, 'bytes': {'type': 'integer'}, 'written': {'type': 'boolean'}, 'overwrote': {'type': 'boolean'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'ok': {'type': 'boolean', 'description': 'Filter to successes (true) or failures (false) only (optional)'}, 'tool': {'type': 'string', 'description': 'Filter to entries for a specific tool name (optional)'}, 'limit': {'type': 'integer', 'description': 'Number of recent entries to return (default 50, max 200)'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'entries': {'type': 'array', 'items': {'type': 'object', 'properties': {'ms': {'type': 'integer'}, 'ok': {'type': 'boolean'}, 'ts': {'type': 'string'}, 'tool': {'type': 'string'}, 'source': {'type': 'string'}, 'confirmed': {'type': 'boolean', 'description': 'For a gated tool (takes confirm): true = the mutation executed, false = preview only. Absent for read-only tools.'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'name': {'type': 'string', 'description': 'Full or partial contact name — the one-step path. Provide this OR contact_id.'}, 'contact_id': {'type': 'string', 'description': 'Exact identifier from list_contacts/search_contacts. Provide this OR name.'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'required': ['iso_local', 'iso_utc', 'human', 'weekday', 'timezone', 'utc_offset', 'epoch_seconds'], 'properties': {'human': {'type': 'string', 'description': 'Human-readable local date/time.'}, 'iso_utc': {'type': 'string', 'description': 'Current time in ISO 8601, UTC.'}, 'weekday': {'type': 'string'}, 'timezone': {'type': 'string', 'description': 'IANA timezone identifier.'}, 'iso_local': {'type': 'string', 'description': "Current time in ISO 8601 with the machine's local UTC offset."}, 'utc_offset': {'type': 'string', 'description': 'UTC offset like +02:00.'}, 'epoch_seconds': {'type': 'integer', 'description': 'Unix epoch seconds.'}}}
Esquema de entrada
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': "User ID (GUID), email address (UPN), or 'me' for the authenticated user, e.g. 'sarah@contoso.com', 'a1b2c3d4-...', or 'me'"}}}
Esquema de salida
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'upn': {'type': 'string'}, 'name': {'type': 'string'}, 'email': {'type': 'string'}, 'title': {'type': 'string'}, 'mobile': {'type': 'string'}, 'office': {'type': 'string'}, 'phones': {'type': 'array', 'items': {'type': 'string'}}, 'department': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'note': {'type': 'string', 'description': 'Present only when the snapshot is not fresh: says how old it is and what may be missing.'}, 'as_of': {'type': 'string', 'description': 'ISO 8601 UTC instant when this list snapshot was read from EventKit (not when iCloud last synced).'}, 'count': {'type': 'integer'}, 'lists': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'color': {'type': 'string'}}}}, 'cache_age_seconds': {'type': 'integer', 'description': 'Age of the snapshot. 0 means it was read fresh for this call.'}}}
Esquema de entrada
{'type': 'object', 'required': ['location'], 'properties': {'days': {'type': 'integer', 'description': 'Number of forecast days, 1-7 (default 3)'}, 'location': {'type': 'string', 'description': "City name (e.g. 'London', 'Buenos Aires', 'Tokyo,JP') or 'lat,lon' coordinates (e.g. '40.71,-74.01')"}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'required': ['count', 'accounts'], 'properties': {'note': {'type': 'string', 'description': "Present when some account's type could not be determined: how many, and what to do."}, 'count': {'type': 'integer'}, 'accounts': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'type': {'type': 'string', 'description': "What Mail reports: imap | pop | iCloud | smtp | unknown. Mail has no Exchange value, so an Exchange (EWS) account reports unknown — that is Mail's answer, not a failed lookup."}, 'emails': {'type': 'array', 'items': {'type': 'string'}}, 'type_note': {'type': 'string', 'description': 'Present when type_undetermined: why the type is unknowable and which tools to use for that mailbox.'}, 'server_name': {'type': 'string', 'description': 'Host Mail connects to. The evidence for an untyped account (an Exchange host looks like outlook.office365.com or an on-prem EWS host).'}, 'type_undetermined': {'type': 'boolean', 'description': 'true when Mail did not name the type (typically Exchange). Branch on this instead of matching the string "unknown".'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max number of events to return (most recent first within the range). Optional; defaults to all in range.'}, 'calendar': {'type': 'string', 'description': 'Filter by calendar name — partial, case-insensitive (optional). To pick one of several same-titled calendars, qualify it as "Account/Calendar" (e.g. "Exchange/Calendario") using the source from list_calendar_names, or pass calendar_id.'}, 'end_date': {'type': 'string', 'description': 'ISO 8601 date (YYYY-MM-DD). Defaults to start_date + 7 days.'}, 'event_id': {'type': 'string', 'description': 'Read exactly ONE event by its id (from a previous list — for a recurring event, the per-occurrence id) with FULL notes and the complete attendee roster — required before editing notes of an event whose list entry says notes_truncated. When set, all other filters are ignored.'}, 'start_date': {'type': 'string', 'description': 'ISO 8601 date (YYYY-MM-DD). Defaults to today.'}, 'calendar_id': {'type': 'string', 'description': 'Filter by a single calendar UUID from list_calendar_names (optional).'}, 'calendar_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Filter by multiple calendar UUIDs (optional).'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'events': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': "For a recurring event, this is a per-OCCURRENCE id (distinct for each of the 3 'Gym' rows below, for example) — pass it back to update_calendar_event/delete_calendar_event to target that exact occurrence, not just the series. Stable across calls; ignore its internal shape."}, 'end': {'type': 'string'}, 'start': {'type': 'string'}, 'title': {'type': 'string'}, 'all_day': {'type': 'boolean'}, 'calendar': {'type': 'string'}, 'calendar_id': {'type': 'string'}}}}, 'end_date': {'type': 'string'}, 'start_date': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'calendars': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'type': {'type': 'string', 'description': 'caldav | exchange | subscription | birthday | local'}, 'color': {'type': 'string'}, 'title': {'type': 'string'}, 'source': {'type': 'string', 'description': 'Owning account (iCloud, Exchange, an email address, On My Mac). Two calendars can share a title across accounts — use this (or id) to disambiguate.'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max contacts to return (default 100)'}, 'group_name': {'type': 'string', 'description': 'Filter by group name (optional)'}}}
Esquema de salida
{'type': 'object', 'required': ['count', 'contacts'], 'properties': {'count': {'type': 'integer'}, 'contacts': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'full_name'], 'properties': {'id': {'type': 'string'}, 'emails': {'type': 'array', 'items': {'type': 'object', 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}}}, 'phones': {'type': 'array', 'items': {'type': 'object', 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}}}, 'company': {'type': 'string'}, 'birthday': {'type': 'string'}, 'addresses': {'type': 'array', 'items': {'type': 'object', 'properties': {'zip': {'type': 'string'}, 'city': {'type': 'string'}, 'label': {'type': 'string'}, 'state': {'type': 'string'}, 'street': {'type': 'string'}, 'country': {'type': 'string'}}}}, 'full_name': {'type': 'string'}, 'last_name': {'type': 'string'}, 'first_name': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de entrada
{'type': 'object', 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'tip': {'type': 'string'}, 'count': {'type': 'integer', 'description': 'Number of accounts.'}, 'accounts': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}}}, 'description': 'Mail.app accounts, by name.'}}}
Esquema de entrada
{'type': 'object', 'properties': {'account': {'type': 'string', 'description': 'Mail.app account whose folder tree to list (from list_email_accounts). Defaults to every account.'}, 'include_counts': {'type': 'boolean', 'default': 'false', 'description': 'Include the message count of each folder. Slower, because each folder has to be counted.'}}}
Esquema de salida
{'type': 'object', 'properties': {'accounts': {'type': 'array', 'items': {'type': 'object', 'properties': {'account': {'type': 'string'}, 'folders': {'type': 'array'}}}}, 'truncated': {'type': 'boolean'}, 'folder_count': {'type': 'integer'}, 'next_actions': {'type': 'array'}, 'account_count': {'type': 'integer'}}}
Esquema de entrada
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': '20', 'maximum': 50, 'minimum': 0, 'description': 'How many messages to return, 0-50 (0 returns none). Defaults to 20.'}, 'offset': {'type': 'integer', 'default': '0', 'minimum': 0, 'description': 'How many messages to skip before returning, for paging through a folder. Defaults to 0.'}, 'account': {'type': 'string', 'description': 'Mail.app account name (from list_email_accounts). On a Mac with 2+ accounts, passing it is much faster than letting the walk cover all of them.'}, 'mailbox': {'type': 'string', 'description': 'Folder to list, by name (see list_email_folders). Defaults to the Inbox.'}, 'unread_only': {'type': 'boolean', 'default': 'false', 'description': 'Return only unread messages. Defaults to false.'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'offset': {'type': 'integer'}, 'messages': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'date': {'type': 'string'}, 'from': {'type': 'string'}, 'unread': {'type': 'boolean'}, 'account': {'type': 'string'}, 'subject': {'type': 'string'}}}}, 'next_actions': {'type': 'array'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Number of people to return (default 20, max 50)'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'people': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'email': {'type': 'string'}, 'title': {'type': 'string'}, 'department': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max conversations (default 30)'}}}
Esquema de salida
{'type': 'object', 'properties': {'note': {'type': 'string'}, 'chats': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'service': {'type': 'string'}, 'chat_type': {'type': 'string'}, 'last_message': {'type': 'string'}, 'last_message_at': {'type': 'string'}}}}, 'count': {'type': 'integer'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'granted': {'type': 'array', 'items': {'type': 'string'}}, 'missing': {'type': 'array', 'items': {'type': 'object'}}, 'summary': {'type': 'string'}, 'unverified': {'type': 'array', 'items': {'type': 'object'}}, 'all_granted': {'type': 'boolean'}}}
Esquema de entrada
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': '50', 'description': 'Notes per page (default 50, capped at 500). To get more, page with offset.'}, 'order': {'type': 'string', 'default': 'modified', 'description': 'order: "modified" (default) sorts newest-modified first — what you want to SHOW someone, but NOT safe for paging: modification date changes, so a note edited between two calls jumps to the front and another note is pushed past your cursor and never returned. "id" sorts by the note\'s immutable store id — stable, never renumbered, new notes append at the end — so use order="id" to walk an entire library page by page: edits and insertions mid-crawl are safe with it. One case it cannot cover, because pages are addressed by offset: if a note is DELETED mid-crawl, every note after the hole shifts one slot back and the note that was on the page boundary is skipped, silently. If completeness matters, re-run the crawl and reconcile against total, or crawl while nothing is deleting notes.'}, 'folder': {'type': 'string', 'description': 'Exact name of the Notes folder to list. Leave it out to list every folder, which excludes trashed notes; naming a folder scopes to it, and naming the trash folder lists what is in the trash.'}, 'offset': {'type': 'integer', 'default': '0', 'minimum': 0, 'description': 'How many notes to skip (default 0). offset=500 with limit=500 returns notes 501-1000. An offset past the end returns an empty page with has_more=false, not an error.'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer', 'description': 'Notes in THIS page'}, 'notes': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'modified': {'type': 'string'}}}}, 'order': {'type': 'string', 'description': 'The ordering actually applied (modified | id)'}, 'total': {'type': 'integer', 'description': 'Notes matching in total, ignoring limit/offset. A LOWER BOUND, not the exact figure, when total_is_estimated is true'}, 'offset': {'type': 'integer', 'description': 'Where this page started'}, 'has_more': {'type': 'boolean', 'description': 'True when notes remain past this page — call again with offset = offset + count'}, 'next_actions': {'type': 'array'}, 'total_is_estimated': {'type': 'boolean', 'description': 'True when the exact count could not be taken (the unbounded COUNT failed, or the JXA fallback answered) — total is then only a lower bound. has_more stays exact either way: page until it is false, never until count reaches total'}}}
Esquema de entrada
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': '100', 'description': 'Max folders to return (default 100).'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'folders': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'status': {'type': 'string'}, 'project_count': {'type': 'integer'}}}}}}
Esquema de entrada
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': '100', 'description': 'Max projects to return (default 100).'}, 'include_completed': {'type': 'boolean', 'default': 'false', 'description': 'Include completed/dropped projects (default excludes them).'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'projects': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'note': {'type': 'string'}, 'status': {'type': 'string'}, 'due_date': {'type': 'string'}, 'task_count': {'type': 'integer'}}}}}}
Esquema de entrada
{'type': 'object', 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'tags': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'task_count': {'type': 'integer'}}}}, 'count': {'type': 'integer'}}}
Esquema de entrada
{'type': 'object', 'properties': {'tag': {'type': 'string', 'description': 'Only tasks carrying this tag.'}, 'inbox': {'type': 'boolean', 'default': 'false', 'description': 'Only unfiled inbox tasks.'}, 'limit': {'type': 'integer', 'default': '50', 'description': 'Max tasks to return (default 50).'}, 'flagged': {'type': 'boolean', 'default': 'false', 'description': 'Only flagged tasks.'}, 'project': {'type': 'string', 'description': 'Only tasks in this project (name, case-insensitive).'}, 'due_today': {'type': 'boolean', 'default': 'false', 'description': 'Only tasks due today or overdue.'}, 'include_completed': {'type': 'boolean', 'default': 'false', 'description': 'Include completed tasks (default excludes them).'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'tasks': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'note': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'flagged': {'type': 'boolean'}, 'project': {'type': 'string'}, 'due_date': {'type': 'string'}, 'completed': {'type': 'boolean'}, 'defer_date': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max contacts to return (default 60)'}}}
Esquema de salida
{'type': 'object', 'properties': {'lang': {'type': 'string'}, 'count': {'type': 'integer'}, 'notes': {'type': 'string'}, 'candidates': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'email': {'type': 'string'}}}}, 'template_body': {'type': 'string'}, 'template_subject': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max number of reminders to return (earliest due first). Optional; defaults to all.'}, 'completed': {'type': 'boolean', 'description': "false or omitted = incomplete (the default). true = completed. There is no 'both': ask twice if you need them."}, 'list_name': {'type': 'string', 'description': 'Filter by reminder list name (optional)'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer', 'description': 'Number returned in this response.'}, 'total': {'type': 'integer', 'description': 'Total matching before the limit.'}, 'reminders': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'list': {'type': 'string'}, 'notes': {'type': 'string'}, 'title': {'type': 'string'}, 'due_date': {'type': 'string'}, 'priority': {'type': 'string', 'description': 'none | low | medium | high (omitted when none)'}, 'completed': {'type': 'boolean'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'app_bundle_id': {'type': 'string', 'description': 'Only return windows owned by this app bundle id.'}, 'on_screen_only': {'type': 'boolean', 'description': 'Only on-screen windows (default true).'}, 'include_overlays': {'type': 'boolean', 'description': 'Include non-zero-layer windows — Notification Center, desktop widgets, menus (default false).'}, 'include_minimized_state': {'type': 'boolean', 'description': 'Add `minimized` (true/false) to each window via an Accessibility lookup; null without Accessibility granted (default false).'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'confirm': {'type': 'boolean', 'description': 'Must be true to apply the fixes. Without it, returns what would be fixed and what needs the user.'}}}
Esquema de salida
{'type': 'object', 'required': ['mode', 'fixed', 'would_fix', 'failed', 'needs_you', 'summary'], 'properties': {'mode': {'type': 'string', 'description': 'preview | applied'}, 'fixed': {'type': 'array', 'items': {'type': 'object', 'properties': {'how': {'type': 'string'}, 'what': {'type': 'string'}}}}, 'failed': {'type': 'array', 'items': {'type': 'object', 'properties': {'how': {'type': 'string'}, 'what': {'type': 'string'}}}}, 'summary': {'type': 'string'}, 'ok_count': {'type': 'integer'}, 'needs_you': {'type': 'array', 'items': {'type': 'object', 'properties': {'how': {'type': 'string'}, 'what': {'type': 'string'}}}}, 'would_fix': {'type': 'array', 'items': {'type': 'object', 'properties': {'how': {'type': 'string'}, 'what': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'confirm': {'type': 'boolean', 'description': 'Must be true to actually install (which restarts LMCP). Without it, returns availability + a preview.'}, 'check_only': {'type': 'boolean', 'description': 'If true, only report availability — no download, no install, no restart.'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'tcc': {'type': 'object', 'properties': {'calendar': {'type': 'string'}, 'contacts': {'type': 'string'}, 'reminders': {'type': 'string'}, 'mail_automation': {'type': 'string'}, 'notes_automation': {'type': 'string'}, 'messages_automation': {'type': 'string'}, 'omnifocus_automation': {'type': 'string', 'description': 'Each <app>_automation is present only if the app is installed; <app>_last_known and <app>_note may accompany it.'}, 'mail_automation_last_known': {'type': 'string', 'description': 'Present only when mail_automation is notRunning: "authorized" if the grant was confirmed before. Not a live verdict.'}}, 'description': 'TCC permission states. Automation keys (<app>_automation) are one of notDetermined | authorized | denied | notRunning.'}, 'arch': {'type': 'string'}, 'update': {'type': 'object', 'properties': {'available': {'type': 'boolean'}, 'disk_version': {'type': 'string'}, 'needs_restart': {'type': 'boolean'}, 'latest_version': {'type': 'string'}, 'process_version': {'type': 'string'}, 'versions_behind': {'type': 'integer'}}}, 'version': {'type': 'string', 'description': 'Serving (running) server version.'}, 'built_at': {'type': 'string', 'description': "UTC build timestamp (F-041). 'unknown' if unstamped."}, 'services': {'type': 'object', 'description': 'Per-domain reachability summary (mail, calendar, contacts, teams, onedrive, slack, …); shape varies by domain. May include `scan_pending: true` right after startup, meaning the per-service running/accounts values are placeholders and not yet authoritative. Once scanned, `scanned_seconds_ago` gives the age (seconds) of that background snapshot and `freshness` restates that a false/0/not-available is advisory, not a live check — never gate a task on it.'}, 'ai_client': {'type': 'string'}, 'build_sha': {'type': 'string', 'description': "Git short SHA of the build (F-041). 'unknown' if unstamped."}, 'machine_id': {'type': 'string'}, 'os_version': {'type': 'string'}, 'web_agents': {'type': 'object', 'description': 'Web (cloud-relay) clients, counts only: `count` connected (absent when unknown), `relayed_calls_since_launch`, `last_remote_call` {at, tool, ok, ago_s}.'}, 'tray_version': {'type': 'string'}, 'last_activity': {'type': 'object', 'properties': {'at': {'type': 'string'}, 'tool': {'type': 'string'}, 'ago_s': {'type': 'integer'}, 'source': {'type': 'string'}, 'last_remote': {'type': 'object', 'description': 'Last call relayed from a web client (source cloud), when there was one.'}}}, 'skill_capture': {'type': 'object', 'properties': {'ring_size': {'type': 'integer'}, 'would_fire_signatures': {'type': 'integer'}}, 'description': 'Dark-launch counters for repeated-workflow detection (user-generated skills, PR-1). would_fire_signatures = how many times a save-this-workflow nudge WOULD have fired; ring_size = entries in the recent-calls ring. PRIVACY: the ring is IN-MEMORY ONLY — never written to disk, never transmitted, cleared on restart — and argument values are PII-scrubbed on entry, so it holds the SHAPE of a workflow, not its content. No UI acts on it yet; it exists to tune thresholds. Opt out with the skill_capture_enabled config flag.'}, 'license_status': {'type': 'string', 'description': 'trial | active | expired'}, 'cloud_token_set': {'type': 'boolean'}, 'tunnel_connected': {'type': 'boolean'}, 'cloud_data_enabled': {'type': 'boolean'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max recent attempts to return (default 10)'}}}
Esquema de salida
{'type': 'object', 'required': ['current_version', 'running_from', 'cache_dir', 'cache_writable', 'last_success_at', 'consecutive_failures', 'binaries_found', 'recent_attempts', 'recent_attempts_count'], 'properties': {'cache_dir': {'type': 'string'}, 'running_from': {'type': 'string', 'description': 'Real path of the currently running binary.'}, 'binaries_found': {'type': 'array', 'items': {'type': 'object', 'properties': {'path': {'type': 'string'}, 'size': {'type': 'integer'}, 'modified': {'type': 'string'}}}, 'description': 'LMCP binaries found at known alternate paths.'}, 'cache_writable': {'type': 'boolean', 'description': 'Whether the update cache dir is writable (#1 silent-failure cause).'}, 'current_version': {'type': 'string'}, 'last_success_at': {'type': 'string', 'description': 'ISO 8601 timestamp of last successful update, empty if none.'}, 'recent_attempts': {'type': 'array', 'items': {'type': 'object', 'properties': {'to': {'type': 'string'}, 'from': {'type': 'string'}, 'note': {'type': 'string'}, 'error': {'type': 'string'}, 'phase': {'type': 'string'}, 'success': {'type': 'boolean'}, 'timestamp': {'type': 'string'}, 'duration_ms': {'type': 'integer'}}}, 'description': 'Recent update attempts, newest first.'}, 'consecutive_failures': {'type': 'integer'}, 'recent_attempts_count': {'type': 'integer'}}}
Esquema de entrada
{'type': 'object', 'required': ['subject', 'start', 'end'], 'properties': {'end': {'type': 'string', 'description': "End time in ISO 8601, e.g. '2026-05-20T11:00:00'"}, 'body': {'type': 'string', 'description': 'Event description (optional)'}, 'start': {'type': 'string', 'description': "Start time in ISO 8601, e.g. '2026-05-20T10:00:00'"}, 'confirm': {'type': 'boolean', 'description': 'Must be true to create the event'}, 'subject': {'type': 'string', 'description': 'Event title'}, 'calendar': {'type': 'string', 'description': 'Calendar name to create the event in — partial, case-insensitive match (optional). Omit to use the primary calendar.'}, 'location': {'type': 'string', 'description': 'Location (optional)'}, 'timezone': {'type': 'string', 'description': "IANA timezone, e.g. 'America/New_York' (default: UTC)"}, 'attendees': {'type': 'string', 'description': 'Comma-separated email addresses to invite (optional)'}}}
Esquema de salida
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'ok': {'type': 'boolean'}, 'message': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['id', 'confirm'], 'properties': {'id': {'type': 'string', 'description': 'Event ID from m365_list_events'}, 'confirm': {'type': 'boolean', 'description': 'Set to true to confirm deletion (required)'}}}
Esquema de salida
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'message': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Contact ID from m365_list_contacts or m365_search_contacts'}}}
Esquema de salida
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'notes': {'type': 'string'}, 'title': {'type': 'string'}, 'emails': {'type': 'array', 'items': {'type': 'string'}}, 'mobile': {'type': 'string'}, 'phones': {'type': 'array', 'items': {'type': 'string'}}, 'company': {'type': 'string'}, 'surname': {'type': 'string'}, 'given_name': {'type': 'string'}, 'home_address': {'type': 'string'}, 'business_address': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max contacts to return (default 50, max 100)'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'query': {'type': 'string'}, 'contacts': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'title': {'type': 'string'}, 'emails': {'type': 'array', 'items': {'type': 'string'}}, 'mobile': {'type': 'string'}, 'phones': {'type': 'array', 'items': {'type': 'string'}}, 'company': {'type': 'string'}, 'surname': {'type': 'string'}, 'given_name': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Number of emails to return (default 20, max 50)'}, 'folder': {'type': 'string', 'description': 'Folder name: inbox (default), sentitems, drafts, deleteditems'}, 'unread_only': {'type': 'boolean', 'description': 'If true, return only unread emails'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'emails': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'from': {'type': 'string'}, 'is_read': {'type': 'boolean'}, 'preview': {'type': 'string'}, 'subject': {'type': 'string'}, 'received': {'type': 'string'}, 'from_address': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'days': {'type': 'integer', 'description': 'Number of days ahead to look (default 7, max 30)'}, 'limit': {'type': 'integer', 'description': 'Max events to return (default 20, max 50)'}, 'calendar': {'type': 'string', 'description': 'Calendar name to filter by — partial, case-insensitive match (optional). Omit to use the primary calendar.'}}}
Esquema de salida
{'type': 'object', 'properties': {'days': {'type': 'integer'}, 'count': {'type': 'integer'}, 'events': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'end': {'type': 'string'}, 'start': {'type': 'string'}, 'preview': {'type': 'string'}, 'subject': {'type': 'string'}, 'location': {'type': 'string'}, 'organizer': {'type': 'string'}}}}, 'calendar': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'The email message ID from m365_list_emails or m365_search_emails'}}}
Esquema de salida
{'type': 'object', 'properties': {'cc': {'type': 'array', 'items': {'type': 'string'}}, 'id': {'type': 'string'}, 'to': {'type': 'array', 'items': {'type': 'string'}}, 'body': {'type': 'string'}, 'date': {'type': 'string'}, 'from': {'type': 'string'}, 'is_read': {'type': 'boolean'}, 'subject': {'type': 'string'}, 'from_address': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['id', 'message'], 'properties': {'id': {'type': 'string', 'description': 'Message ID to reply to (from m365_list_emails or m365_read_email)'}, 'confirm': {'type': 'boolean', 'description': 'Set to true to actually send (default: shows preview only)'}, 'message': {'type': 'string', 'description': 'Your reply text'}, 'reply_all': {'type': 'boolean', 'description': 'If true, reply to all recipients (default: false)'}}}
Esquema de salida
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'message': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': 'Search term — name, email, or company'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'query': {'type': 'string'}, 'contacts': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'title': {'type': 'string'}, 'emails': {'type': 'array', 'items': {'type': 'string'}}, 'mobile': {'type': 'string'}, 'phones': {'type': 'array', 'items': {'type': 'string'}}, 'company': {'type': 'string'}, 'surname': {'type': 'string'}, 'given_name': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'description': 'Max results (default 20, max 50)'}, 'query': {'type': 'string', 'description': "Search query, e.g. 'budget Q2', 'from:alice@contoso.com', 'subject:invoice'"}, 'scope': {'enum': ['metadata', 'body', 'all'], 'type': 'string', 'description': '"all" (default — sender+subject+body, today\'s behavior), "metadata" (sender+subject only), or "body" (body only).'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'query': {'type': 'string'}, 'emails': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'from': {'type': 'string'}, 'is_read': {'type': 'boolean'}, 'preview': {'type': 'string'}, 'subject': {'type': 'string'}, 'received': {'type': 'string'}, 'from_address': {'type': 'string'}}}}, 'search_scope': {'type': 'string'}, 'search_backend': {'type': 'string'}, 'search_coverage': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['to', 'subject', 'body'], 'properties': {'cc': {'type': 'string', 'description': 'CC recipients (optional, comma-separated)'}, 'to': {'type': 'string', 'description': 'Recipient email address. For multiple, separate with commas.'}, 'body': {'type': 'string', 'description': 'Email body (plain text)'}, 'confirm': {'type': 'boolean', 'description': 'Set to true to actually send (default: shows preview only)'}, 'subject': {'type': 'string', 'description': 'Email subject'}}}
Esquema de salida
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'message': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Path to the media file.'}}}
Esquema de entrada
{'type': 'object', 'required': ['message_id', 'target_mailbox'], 'properties': {'account': {'type': 'string', 'description': 'Mail.app account the message lives in (returned alongside the id). Pass it so the message is found in the right account.'}, 'confirm': {'type': 'boolean', 'default': 'false', 'description': 'Set to true to actually move the message. Defaults to false.'}, 'mailbox': {'type': 'string', 'description': 'Folder the message is in TODAY, before the move. Passing it skips searching the other folders.'}, 'message_id': {'type': 'string', 'description': 'The message id returned by list_emails or search_emails. Accepts the bare id or the <angle-bracketed> form.'}, 'target_mailbox': {'type': 'string', 'description': 'Destination folder, by name (see list_email_folders). Nested folders are found by their own name, not by a path.'}}}
Esquema de salida
{'type': 'object', 'properties': {'to': {'type': 'string'}, 'moved': {'type': 'boolean'}, 'warning': {'type': 'string'}, 'message_id': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'properties': {}}
Esquema de salida
{'type': 'object', 'required': ['installed'], 'properties': {'report': {'type': 'string', 'description': 'Full formatted text report'}, 'account': {'type': 'string'}, 'running': {'type': 'boolean', 'description': 'True if the NordVPN app is running'}, 'version': {'type': 'string'}, 'connected': {'type': 'boolean', 'description': 'True if the VPN is connected'}, 'installed': {'type': 'boolean', 'description': 'True if NordVPN is installed'}, 'logged_in': {'type': 'boolean', 'description': 'True if a NordVPN account is logged in'}, 'protocols': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Supported VPN protocols'}, 'kill_switch': {'type': 'boolean', 'description': 'True if the kill switch is enabled'}, 'auto_connect': {'type': 'boolean', 'description': 'True if auto-connect / connect on demand is on'}, 'subscription': {'type': 'string'}, 'last_location': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'properties': {'type': {'type': 'string', 'description': "Server type filter: 'standard', 'p2p', 'double_vpn', 'onion', 'dedicated_ip'. Default: standard."}, 'limit': {'type': 'integer', 'description': 'Number of servers to return (1-10). Default: 5.'}, 'country': {'type': 'string', 'description': "Country name or 2-letter code (e.g. 'US', 'United States', 'JP'). Omit for auto-recommendation."}}}
Esquema de salida
{'type': 'object', 'properties': {'note': {'type': 'string'}, 'count': {'type': 'integer'}, 'servers': {'type': 'array', 'items': {'type': 'object', 'properties': {'city': {'type': 'string'}, 'load': {'type': 'integer'}, 'name': {'type': 'string'}, 'status': {'type': 'string'}, 'country': {'type': 'string'}, 'hostname': {'type': 'string'}, 'technologies': {'type': 'array', 'items': {'type': 'string'}}}}}}}
Esquema de entrada
{'type': 'object', 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'version': {'type': 'string'}, 'connected': {'type': 'boolean'}, 'installed': {'type': 'boolean'}, 'app_running': {'type': 'boolean'}, 'auto_connect': {'type': 'boolean'}, 'last_location': {'type': 'string'}, 'snoozed_until': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'note': {'type': 'string'}, 'count': {'type': 'integer'}, 'databases': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'properties': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'type': {'type': 'string'}}}}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max pages (default 50, max 500)'}}}
Esquema de salida
{'type': 'object', 'properties': {'note': {'type': 'string'}, 'count': {'type': 'integer'}, 'pages': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'type': {'type': 'string'}, 'title': {'type': 'string'}, 'last_edited': {'type': 'string'}, 'parent_type': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'note': {'type': 'string'}, 'count': {'type': 'integer'}, 'workspaces': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['page'], 'properties': {'page': {'type': 'string', 'description': 'Page id (UUID) or title (partial, case-insensitive)'}}}
Esquema de salida
{'type': 'object', 'properties': {'title': {'type': 'string'}, 'opened': {'type': 'boolean'}, 'page_id': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['database'], 'properties': {'limit': {'type': 'integer', 'description': 'Max rows (default 50, max 500)'}, 'database': {'type': 'string', 'description': 'Database id (UUID) or name (partial, case-insensitive)'}}}
Esquema de salida
{'type': 'object', 'properties': {'note': {'type': 'string'}, 'rows': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'properties': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'last_edited': {'type': 'string'}}}}, 'count': {'type': 'integer'}}}
Esquema de entrada
{'type': 'object', 'required': ['page'], 'properties': {'page': {'type': 'string', 'description': 'Page id (UUID) or title (partial, case-insensitive)'}, 'max_blocks': {'type': 'integer', 'description': 'Max blocks to render (default 300, max 1000)'}}}
Esquema de salida
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'note': {'type': 'string'}, 'title': {'type': 'string'}, 'last_edited': {'type': 'string'}, 'blocks_rendered': {'type': 'integer'}, 'uncached_blocks': {'type': 'integer'}, 'content_markdown': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'description': 'Max results (default 20, max 100)'}, 'query': {'type': 'string', 'description': 'Text to search for'}}}
Esquema de salida
{'type': 'object', 'properties': {'note': {'type': 'string'}, 'count': {'type': 'integer'}, 'query': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'text': {'type': 'string'}, 'type': {'type': 'string'}, 'page_id': {'type': 'string'}, 'block_id': {'type': 'string'}, 'page_title': {'type': 'string'}, 'last_edited': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path to the file or folder'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to delete'}}}
Esquema de salida
{'type': 'object', 'required': ['deleted', 'path'], 'properties': {'path': {'type': 'string'}, 'deleted': {'type': 'boolean'}}}
Esquema de entrada
{'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path to the file or folder'}}}
Esquema de salida
{'type': 'object', 'properties': {'name': {'type': 'string'}, 'path': {'type': 'string'}, 'size': {'type': 'integer'}, 'type': {'type': 'string', 'description': 'file | directory'}, 'created': {'type': 'string'}, 'modified': {'type': 'string'}, 'extension': {'type': 'string'}, 'size_human': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path to the OneDrive folder'}, 'limit': {'type': 'integer', 'description': 'Max entries to return (default 1000, max 5000). Folders with more entries are truncated; the response sets truncated=true and reports the total.'}}}
Esquema de salida
{'type': 'object', 'properties': {'note': {'type': 'string'}, 'count': {'type': 'integer', 'description': 'Entries returned in this response.'}, 'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'path': {'type': 'string'}, 'size': {'type': 'integer'}, 'type': {'type': 'string', 'description': 'file | directory'}, 'modified': {'type': 'string'}}}}, 'total': {'type': 'integer', 'description': 'Total entries in the folder.'}, 'truncated': {'type': 'boolean', 'description': 'True when total exceeds the limit.'}}}
Esquema de entrada
{'type': 'object', 'required': ['source', 'destination'], 'properties': {'source': {'type': 'string', 'description': 'Source path'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to move'}, 'destination': {'type': 'string', 'description': 'Destination path'}}}
Esquema de salida
{'type': 'object', 'required': ['moved', 'from', 'to'], 'properties': {'to': {'type': 'string'}, 'from': {'type': 'string'}, 'moved': {'type': 'boolean'}}}
Esquema de entrada
{'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path to the file'}, 'offset': {'type': 'integer', 'description': 'Start reading at byte offset (default 0)'}, 'encoding': {'type': 'string', 'description': "Force a specific encoding: 'auto' (default), 'utf8', 'latin1', 'cp1252', 'ascii', 'utf16'"}, 'max_bytes': {'type': 'integer', 'description': 'Maximum bytes to read (default 1048576 = 1 MB, capped at 10485760 = 10 MB)'}}}
Esquema de salida
{'type': 'object', 'required': ['content', 'path', 'bytes'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path of the file'}, 'bytes': {'type': 'integer', 'description': 'Total file size in bytes'}, 'offset': {'type': 'integer', 'description': 'Byte offset the read started at'}, 'content': {'type': 'string', 'description': 'Decoded file text content'}, 'encoding': {'type': 'string', 'description': 'Encoding used to decode (utf8 | cp1252 | latin1 | ascii | utf16)'}, 'truncated': {'type': 'boolean', 'description': 'True if more content remains beyond what was returned'}, 'bytes_read': {'type': 'integer', 'description': 'Number of bytes read in this slice'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'roots': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'path': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'root': {'type': 'string', 'description': 'Root OneDrive path to search in (optional)'}, 'query': {'type': 'string', 'description': 'Filename pattern to search for'}, 'max_results': {'type': 'integer', 'description': 'Maximum results (default 50)'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'query': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'path': {'type': 'string'}, 'size': {'type': 'integer'}, 'type': {'type': 'string', 'description': 'file | directory'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['root_name'], 'properties': {'folder': {'type': 'string', 'description': "Allowed folder path relative to the root (e.g. '/000-Claude Personal Agent'). Empty string removes the scope."}, 'confirm': {'type': 'boolean', 'description': 'Must be true to apply'}, 'root_name': {'type': 'string', 'description': "OneDrive root name (from onedrive_root, e.g. 'OneDrive-WPPCloud')"}}}
Esquema de salida
{'type': 'object', 'properties': {'root': {'type': 'string'}, 'access': {'type': 'string'}, 'effect': {'type': 'string'}, 'scope_set': {'type': 'boolean'}, 'scope_removed': {'type': 'boolean'}, 'allowed_folder': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path to the file in OneDrive'}, 'confirm': {'type': 'boolean', 'description': 'Required (true) to OVERWRITE an existing file. Not needed to create a new file.'}, 'content': {'type': 'string', 'description': 'Text content to write'}}}
Esquema de salida
{'type': 'object', 'required': ['written', 'path', 'bytes'], 'properties': {'path': {'type': 'string'}, 'bytes': {'type': 'integer'}, 'written': {'type': 'boolean'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'required': ['installed'], 'properties': {'note': {'type': 'string', 'description': 'Plain-language guidance'}, 'report': {'type': 'string', 'description': 'Full formatted text report'}, 'installed': {'type': 'boolean', 'description': 'True if Microsoft Outlook is installed'}, 'outlook_accounts': {'type': 'array', 'items': {'type': 'object', 'properties': {'email': {'type': 'string'}, 'in_mail_app': {'type': 'boolean', 'description': 'Whether this account is also configured in Mail.app'}}}}, 'mail_app_accounts': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'emails': {'type': 'array', 'items': {'type': 'string'}}}}}, 'missing_from_mail_app': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Outlook account emails not present in Mail.app'}}}
Esquema de entrada
{'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path to the PDF file'}, 'max_pages': {'type': 'integer', 'description': 'Max pages to extract (default: all)'}, 'force_download': {'type': 'boolean', 'description': "If the file is stored in the cloud and evicted from this Mac (dataless), request the download and wait for it instead of failing. Off by default: a download can take minutes and use metered data, so it is the caller's decision."}}}
Esquema de salida
{'type': 'object', 'required': ['text', 'chars'], 'properties': {'text': {'type': 'string', 'description': 'Extracted text content'}, 'chars': {'type': 'integer', 'description': 'Number of characters in the extracted text'}, 'pages': {'type': 'integer', 'description': 'Total number of pages in the PDF'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de entrada
{'type': 'object', 'required': ['path', 'slides'], 'properties': {'path': {'type': 'string', 'description': 'Output path for the .pptx file'}, 'slides': {'type': 'array', 'items': {'type': 'object', 'required': ['title'], 'properties': {'title': {'type': 'string', 'description': 'Slide title'}, 'bullets': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Bullet lines'}}}, 'description': 'Array of slide OBJECTS, each with a title and optional bullets'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to create'}}}
Esquema de salida
{'type': 'object', 'required': ['created', 'path', 'slides'], 'properties': {'path': {'type': 'string', 'description': 'Path of the created .pptx file'}, 'slides': {'type': 'integer', 'description': 'Number of slides created'}, 'created': {'type': 'boolean', 'description': 'True when the file was created'}}}
Esquema de entrada
{'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path to the .pptx file'}, 'force_download': {'type': 'boolean', 'description': "If the file is stored in the cloud and evicted from this Mac (dataless), request the download and wait for it instead of failing. Off by default: a download can take minutes and use metered data, so it is the caller's decision."}}}
Esquema de salida
{'type': 'object', 'required': ['slides', 'count'], 'properties': {'count': {'type': 'integer', 'description': 'Number of slides'}, 'slides': {'type': 'array', 'items': {'type': 'object', 'properties': {'slide': {'type': 'integer', 'description': '1-based slide number'}, 'title': {'type': 'string', 'description': "The slide's title (empty if the slide has none)"}, 'bullets': {'type': 'array', 'items': {'type': 'string'}, 'description': "The slide's body paragraphs, one entry per line"}}}, 'description': 'Per-slide structured content ({slide, title, bullets[]}), mirroring ppt_create'}}}
Esquema de entrada
{'type': 'object', 'required': ['message_id'], 'properties': {'account': {'type': 'string', 'description': 'Mail.app account the message lives in (returned alongside the id). Passing it skips searching the other accounts.'}, 'mailbox': {'type': 'string', 'description': 'Folder the message lives in (returned alongside the id). Passing it skips searching the other folders.'}, 'message_id': {'type': 'string', 'description': 'The message id returned by list_emails or search_emails. Accepts the bare id or the <angle-bracketed> form.'}, 'include_body': {'type': 'boolean', 'default': 'true', 'description': 'Return the message body, not just its headers.'}, 'force_download': {'type': 'boolean', 'default': 'false', 'description': 'Ask Mail to fetch the full message from the server when only part of it is cached locally. Slower, and it needs the account to be online.'}, 'max_body_chars': {'type': 'integer', 'default': '30000', 'minimum': 0, 'description': 'Cap on how many characters of the body to return. Defaults to 30000; the reply says when it truncated.'}}}
Esquema de salida
{'type': 'object', 'properties': {'cc': {'type': 'string'}, 'id': {'type': 'string'}, 'to': {'type': 'string'}, 'body': {'type': 'string'}, 'date': {'type': 'string'}, 'from': {'type': 'string'}, 'unread': {'type': 'boolean'}, 'account': {'type': 'string'}, 'mailbox': {'type': 'string'}, 'subject': {'type': 'string'}, 'body_omitted': {'type': 'boolean'}, 'body_fetch_ms': {'type': 'integer'}, 'body_truncated_at': {'type': 'integer'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max messages (default 50)'}, 'chat_id': {'type': 'string', 'description': 'Chat identifier from list_message_chats'}, 'contact_name': {'type': 'string', 'description': 'Contact name substring (alternative to chat_id)'}}}
Esquema de salida
{'type': 'object', 'properties': {'note': {'type': 'string'}, 'count': {'type': 'integer'}, 'chat_id': {'type': 'string'}, 'messages': {'type': 'array', 'items': {'type': 'object', 'properties': {'date': {'type': 'string'}, 'sender': {'type': 'string'}, 'chat_id': {'type': 'string'}, 'content': {'type': 'string'}, 'from_me': {'type': 'boolean'}, 'chat_name': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'properties': {'note_id': {'type': 'string', 'description': 'Id of the note, from list_notes or search_notes. Use this or note_name.'}, 'note_name': {'type': 'string', 'description': 'Title of the note, when you do not have its id. Use this or note_id.'}}}
Esquema de salida
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'body': {'type': 'string'}, 'name': {'type': 'string'}, 'folder': {'type': 'string'}, 'modified': {'type': 'string'}, 'body_format': {'enum': ['markdown', 'plain_text'], 'type': 'string', 'description': 'What `body` actually is. "markdown": the note\'s formatting survived and update_note accepts this body back unchanged. "plain_text": the formatting could not be recovered — writing this body back flattens the note.'}}}
Esquema de entrada
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Recipe name (from recipe_list).'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to actually delete. Without it, returns a preview.'}}}
Esquema de salida
{'type': 'object', 'properties': {'name': {'type': 'string'}, 'status': {'type': 'string', 'description': "'preview' when confirm was not set."}, 'deleted': {'type': 'boolean'}}, 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'properties': {'category': {'type': 'string', 'description': 'Optional filter hint shown to the user; the catalog is small so all skills are returned.'}}}
Esquema de entrada
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Name of the saved skill to export (see recipe_list).'}}}
Esquema de entrada
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Name of the recipe, as listed by recipe_list. Returns recipe_not_found if it is unknown.'}}}
Esquema de salida
{'type': 'object', 'properties': {'name': {'type': 'string'}, 'steps': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'params': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'description': {'type': 'string'}}, 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'skill': {'type': 'string', 'description': 'A skill_token from recipe_export, or a raw recipe manifest JSON string.'}, 'skill_token': {'type': 'string', 'description': 'Alias for `skill` — the exact field name recipe_export returns.'}}}
Esquema de entrada
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'integer', 'description': 'The community skill id from recipe_discover.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'recipes': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'params': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'Declared parameters (name/type/default).'}, 'description': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['name'], 'properties': {'apps': {'type': 'string', 'description': 'Free-text apps the recipe touches (e.g. "Mail, Calendar"), shown in the moderation queue.'}, 'name': {'type': 'string', 'description': 'Name of the saved recipe/skill to publish (see recipe_list).'}, 'title': {'type': 'string', 'description': "Shown once approved on /community/skills. Defaults to the recipe's own name."}, 'confirm': {'type': 'boolean', 'description': 'Must be true to actually submit. Without it, returns a preview — nothing is sent.'}, 'category': {'type': 'string', 'description': 'Free-text category shown in the moderation queue and, once approved, on /community/skills.'}, 'workflow': {'type': 'string', 'description': "The public write-up of what the recipe does. Defaults to the recipe's own `description` if it's at least 15 characters; required otherwise."}}}
Esquema de entrada
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Name of the saved skill (recipe) to run, exactly as recipe_list reports it.'}, 'params': {'type': 'object', 'description': 'Param overrides (merged over the recipe defaults).'}, 'confirm': {'type': 'boolean', 'description': 'Set true to execute a recipe that has state-changing steps; read-only recipes ignore it.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'name': {'type': 'string', 'description': 'Recipe name; omit for runs across all recipes.'}, 'limit': {'type': 'integer', 'description': 'Max runs to return (default 20).'}, 'run_id': {'type': 'string', 'description': 'Return this one run in full detail (requires name).'}}}
Esquema de salida
{'type': 'object', 'properties': {'runs': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'count': {'type': 'integer'}, 'recipe': {'type': ['string', 'null'], 'description': 'Recipe name when scoped, null for the all-recipes history.'}}, 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': ['manifest'], 'properties': {'manifest': {'type': 'object', 'description': 'The recipe manifest. Shape: {"name": string (required), "description": string, "params": [{"name": string, "type": "string"|"int"|"bool", "default": any}], "steps": [ ... ] (required, non-empty), "outputs": [{"kind": string}]}. A step is EITHER a tool call {"tool": <tool_name>, "args": {...}} OR a pause {"wait": {"seconds": N}} (also {"wait": N}). Any arg string may interpolate a declared param with ${name} (e.g. "limit": "${count}"); an arg that is exactly "${name}" keeps the param\'s type. Steps run in order; a later step can consume an EARLIER step\'s output with "${steps[N].result.KEY}" (0-based; supports .key and [i], e.g. "account": "${steps[0].result.accounts[0].name}"). On recipe_run a state-changing step previews first unless confirm:true.'}}}
Esquema de entrada
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Marker name, e.g. open_tray, act2_calendar_create.'}, 'note': {'type': 'string', 'description': 'Free text → caption source.'}, 'bounds': {'type': 'object', 'description': 'Optional {x,y,w,h} global points to zoom toward.'}, 'session_id': {'type': 'string', 'description': 'Accepted and IGNORED: v1 records one session at a time, so a marker always lands on the active recording. It is here so echoing back the session_id from screen_record_start is not an error.'}}}
Esquema de entrada
{'type': 'object', 'required': ['new_name'], 'properties': {'name': {'type': 'string', 'description': 'Current list name (or pass list_id)'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to apply'}, 'list_id': {'type': 'string', 'description': 'List identifier from get_reminder_folders (alternative to name)'}, 'new_name': {'type': 'string', 'description': 'New name for the list'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': ['message_id'], 'properties': {'body': {'type': 'string', 'description': 'Plain-text reply body.'}, 'account': {'type': 'string', 'description': 'Account (from the listing) the message is in — pass it to skip scanning other accounts and avoid multi-account timeouts.'}, 'confirm': {'type': 'boolean', 'default': 'false', 'description': 'Consent gate: the first call previews the reply; call again with confirm=true to actually SEND it — or to save it when save_as_draft is set.'}, 'html_body': {'type': 'string', 'description': 'HTML reply body. Takes precedence over `body` when both are given.'}, 'reply_all': {'type': 'boolean', 'default': 'false', 'description': 'Reply to all original recipients instead of just the sender.'}, 'message_id': {'type': 'string', 'description': 'Id of the message to reply to (from list_emails/search_emails).'}, 'save_as_draft': {'type': 'boolean', 'default': 'false', 'description': "Save the native reply in Drafts instead of sending it. Keeps Mail's reply template: automatic quote of the original, the right thread, and the Reply/Reply-All recipients. Nothing is sent on this path."}}}
Esquema de salida
{'type': 'object', 'properties': {'sent': {'type': 'boolean', 'description': "False on the draft path — stated explicitly so 'no error' is never read as 'it went out'."}, 'replied': {'type': 'boolean'}, 'message_id': {'type': 'string'}, 'draft_mailbox': {'type': 'string', 'description': 'Where the draft was left, so the user knows where to look.'}, 'draft_subject': {'type': 'string', 'description': 'Subject of the draft that was created.'}, 'saved_as_draft': {'type': 'boolean', 'description': 'True when save_as_draft was used: the reply is in Drafts and nothing was sent.'}}}
Esquema de entrada
{'type': 'object', 'required': ['friction_type'], 'properties': {'attempt_count': {'type': 'integer', 'description': 'How many times this was attempted (optional).'}, 'friction_type': {'enum': ['repeated_failure', 'user_frustrated', 'task_abandoned', 'workaround_needed', 'cannot_complete', 'other'], 'type': 'string', 'description': 'What kind of friction you observed.'}, 'error_category': {'enum': ['permission', 'timeout', 'empty', 'not_found', 'parse', 'wrong_result', 'missing_capability', 'crash', 'other'], 'type': 'string', 'description': 'Category of what went wrong (optional).'}, 'tool_attempted': {'type': 'string', 'description': 'Name of the LMCP tool involved (e.g. list_emails). Optional.'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'confirm': {'type': 'boolean', 'description': 'Must be true to submit the report. Without it, shows a preview.'}, 'symptom': {'type': 'string', 'description': 'Required for type=problem: what is broken, in your own words.'}, 'expected': {'type': 'string', 'description': 'What you or the user expected to happen.'}, 'description': {'type': 'string', 'description': 'Required for type=feature or integration: what the user wants.'}, 'report_type': {'type': 'string', 'description': "'problem' (default) | 'feature' | 'integration'"}, 'user_request': {'type': 'string', 'description': 'What the user originally asked the AI to do.'}, 'error_message': {'type': 'string', 'description': 'For type=problem: verbatim error string from the failed tool.'}, 'tool_attempted': {'type': 'string', 'description': 'For type=problem: name of the LMCP tool that failed.'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': ['feature'], 'properties': {'confirm': {'type': 'boolean', 'description': 'Must be true to submit. Without it, shows a preview.'}, 'feature': {'type': 'string', 'description': 'What the user wants LMCP to do — a capability, tool, or integration.'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'focus': {'type': 'string', 'description': 'Integration to focus on: calendar, mail, contacts, reminders, omnifocus, outlook, notes, finder, onedrive, screen_recording, accessibility — or `clients` for the AI apps connected to LMCP (or one app id, e.g. cursor). Leave empty to check all.'}, 'submit': {'type': 'boolean', 'description': 'Send the diagnostic report to the LMCP team for analysis (default: false)'}}}
Esquema de salida
{'type': 'object', 'required': ['summary', 'ok_count', 'warn_count', 'problem_count', 'integrations'], 'properties': {'report': {'type': 'string', 'description': 'Full formatted text report'}, 'summary': {'type': 'string', 'description': 'Plain-language summary of overall health'}, 'ok_count': {'type': 'integer', 'description': 'Number of integrations working'}, 'submitted': {'type': 'boolean', 'description': 'True when the report was sent to the LMCP team'}, 'warn_count': {'type': 'integer', 'description': 'Number of integrations with warnings / not running'}, 'web_agents': {'type': 'object', 'description': 'Web (cloud-relay) clients, counts only: count (absent when unknown), relayed_calls_since_launch, last_remote_call'}, 'integrations': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string', 'description': 'Integration tool key'}, 'label': {'type': 'string', 'description': 'Human-readable name'}, 'detail': {'type': 'string', 'description': 'What was found'}, 'status': {'type': 'string', 'description': 'ok | warning | error | permission | not_running | skip'}, 'fix_hint': {'type': 'string', 'description': 'How to fix, when applicable'}}}}, 'problem_count': {'type': 'integer', 'description': 'Number of integrations with errors or missing permissions'}}}
Esquema de entrada
{'type': 'object', 'required': ['message_id', 'attachment_name'], 'properties': {'account': {'type': 'string', 'description': 'Mail.app account the message lives in (returned alongside the id). Passing it skips searching the other accounts.'}, 'confirm': {'type': 'boolean', 'default': 'false', 'description': 'Set to true to actually write the file. Without it you get a preview of where it would be written. Defaults to false.'}, 'mailbox': {'type': 'string', 'description': 'Folder the message lives in (returned alongside the id). Passing it skips searching the other folders.'}, 'message_id': {'type': 'string', 'description': 'The message id of the email that carries the attachment, from list_emails or search_emails. Accepts the bare id or the <angle-bracketed> form.'}, 'destination': {'type': 'string', 'default': '~/Downloads', 'description': 'Folder to write the file into. Defaults to ~/Downloads.'}, 'attachment_name': {'type': 'string', 'description': 'File name of the attachment as it appears in the message.'}}}
Esquema de salida
{'type': 'object', 'properties': {'name': {'type': 'string'}, 'saved': {'type': 'boolean'}, 'attempts': {'type': 'integer'}, 'destination': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['target'], 'properties': {'fps': {'type': 'integer', 'description': 'Frames per second (default 60).'}, 'target': {'type': 'object', 'required': ['kind'], 'properties': {'kind': {'enum': ['display', 'window', 'region'], 'type': 'string'}, 'region': {'type': 'object', 'description': 'Required if kind=region: {x,y,w,h} global points.'}, 'window_id': {'type': 'string', 'description': 'Required if kind=window.'}, 'display_id': {'type': 'string', 'description': 'Required if kind=display.'}}, 'description': 'What to capture.'}, 'output_path': {'type': 'string', 'description': 'Where to write the .mov (default: temp file, returned by stop). Missing parent folders are created.'}, 'show_cursor': {'type': 'boolean', 'description': 'Default true.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'session_id': {'type': 'string', 'description': 'Recording session to report on, from screen_record_start. Leave it out to report on the active recording.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'session_id': {'type': 'string', 'description': 'Optional; the single active session is used if omitted.'}}}
Esquema de entrada
{'type': 'object', 'required': ['target'], 'properties': {'target': {'type': 'object', 'required': ['kind'], 'properties': {'kind': {'enum': ['display', 'window', 'window_title', 'region'], 'type': 'string'}, 'title': {'type': 'string', 'description': 'Exact window title to capture (kind:"window_title"). Enumerates ALL windows directly — including overlays/panels like Notification Center that list_windows hides unless include_overlays:true. If more than one window has this title, the frontmost one is captured and the response reports matched_windows > 1.'}, 'region': {'type': 'object', 'description': '{x,y,w,h} global points.'}, 'window_id': {'type': 'string'}, 'display_id': {'type': 'string'}}, 'description': 'What to capture. Required: {kind: "display"|"window"|"window_title"|"region"} plus display_id (see list_displays), window_id (see list_windows), title, or region {x,y,w,h} in global points.'}, 'output_path': {'type': 'string', 'description': 'Where to write the PNG (default: temp file). Missing parent folders are created.'}}}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'description': 'Max results (default 50)'}, 'query': {'type': 'string', 'description': 'Name, email, or phone to search for'}}}
Esquema de salida
{'type': 'object', 'required': ['query', 'count', 'contacts'], 'properties': {'count': {'type': 'integer'}, 'query': {'type': 'string'}, 'contacts': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'full_name'], 'properties': {'id': {'type': 'string'}, 'emails': {'type': 'array', 'items': {'type': 'object', 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}}}, 'phones': {'type': 'array', 'items': {'type': 'object', 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}}}, 'company': {'type': 'string'}, 'birthday': {'type': 'string'}, 'addresses': {'type': 'array', 'items': {'type': 'object', 'properties': {'zip': {'type': 'string'}, 'city': {'type': 'string'}, 'label': {'type': 'string'}, 'state': {'type': 'string'}, 'street': {'type': 'string'}, 'country': {'type': 'string'}}}}, 'full_name': {'type': 'string'}, 'last_name': {'type': 'string'}, 'first_name': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': '20', 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of matches to return.'}, 'query': {'type': 'string', 'description': 'What to look for. Matched against subject and sender, or also the body when scope is "body" or "all".'}, 'scope': {'type': 'string', 'default': 'metadata', 'description': '"metadata" (default, subject+sender — fast, unchanged behavior), "body" (message body only, via a local index — see search_coverage in the response), or "all" (subject+sender+body).'}, 'account': {'type': 'string', 'description': 'Mail.app account to search (from list_email_accounts). On a Mac with 2+ accounts this is effectively required: without it, and when the fast index cannot answer, the tool returns the account list instead of scanning them all.'}, 'mailbox': {'type': 'string', 'description': 'Restrict the search to one folder, by name (see list_email_folders). Defaults to every folder of the account.'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'query': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'date': {'type': 'string'}, 'from': {'type': 'string'}, 'unread': {'type': 'boolean'}, 'account': {'type': 'string'}, 'subject': {'type': 'string'}}}}, 'warnings': {'type': 'array'}, 'next_actions': {'type': 'array'}, 'search_scope': {'type': 'string'}, 'search_backend': {'type': 'string'}, 'search_coverage': {'type': 'string'}, 'omitted_mailboxes': {'type': 'array'}}}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'description': 'Max results (default 10, max 25)'}, 'query': {'type': 'string', 'description': "Name or email to search for, e.g. 'Sarah' or 'sarah@contoso.com'"}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'query': {'type': 'string'}, 'users': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'upn': {'type': 'string'}, 'name': {'type': 'string'}, 'email': {'type': 'string'}, 'title': {'type': 'string'}, 'mobile': {'type': 'string'}, 'office': {'type': 'string'}, 'phones': {'type': 'array', 'items': {'type': 'string'}}, 'department': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max results (default 30)'}, 'query': {'type': 'string', 'description': 'Text to search for in message content (optional if from_sender is set)'}, 'since': {'type': 'string', 'description': "ISO8601 date — only return messages on or after this date (optional, e.g. '2026-04-10' or '2026-04-10T00:00:00Z')"}, 'until': {'type': 'string', 'description': "ISO8601 date — only return messages on or before this date (optional). Combine with 'since' to search a date range with no text query."}, 'from_sender': {'type': 'string', 'description': 'Substring of sender name/handle to filter by (optional)'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'query': {'type': 'string'}, 'since': {'type': 'string'}, 'until': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'date': {'type': 'string'}, 'sender': {'type': 'string'}, 'chat_id': {'type': 'string'}, 'content': {'type': 'string'}, 'chat_name': {'type': 'string'}}}}, 'from_sender': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': '20', 'description': 'Matches per page (default 20, capped at 100). To get more, page with offset.'}, 'order': {'type': 'string', 'default': 'modified', 'description': 'order: "modified" (default) sorts newest-modified first — what you want to SHOW someone, but NOT safe for paging: modification date changes, so a note edited between two calls jumps to the front and another note is pushed past your cursor and never returned. "id" sorts by the note\'s immutable store id — stable, never renumbered, new notes append at the end — so use order="id" to walk an entire library page by page: edits and insertions mid-crawl are safe with it. One case it cannot cover, because pages are addressed by offset: if a note is DELETED mid-crawl, every note after the hole shifts one slot back and the note that was on the page boundary is skipped, silently. If completeness matters, re-run the crawl and reconcile against total, or crawl while nothing is deleting notes.'}, 'query': {'type': 'string', 'description': "Text to look for. Matches a note's title or its snippet (the opening of the body), NOT the full body — a word that appears only deep inside a long note will not be found. Must not be empty."}, 'offset': {'type': 'integer', 'default': '0', 'minimum': 0, 'description': 'How many matches to skip (default 0). An offset past the end returns an empty page with has_more=false, not an error.'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer', 'description': 'Matches in THIS page'}, 'order': {'type': 'string', 'description': 'The ordering actually applied (modified | id)'}, 'query': {'type': 'string'}, 'total': {'type': 'integer', 'description': 'Matches in total, ignoring limit/offset. A LOWER BOUND, not the exact figure, when total_is_estimated is true'}, 'offset': {'type': 'integer', 'description': 'Where this page started'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'match': {'type': 'string'}, 'folder': {'type': 'string'}, 'preview': {'type': 'string'}}}}, 'has_more': {'type': 'boolean', 'description': 'True when matches remain past this page — call again with offset = offset + count'}, 'next_actions': {'type': 'array'}, 'total_is_estimated': {'type': 'boolean', 'description': 'True when the exact count could not be taken (the unbounded COUNT failed, or the JXA fallback answered) — total is then only a lower bound. has_more stays exact either way: page until it is false, never until count reaches total'}}}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': '30', 'description': 'Max matches to return (default 30).'}, 'query': {'type': 'string', 'description': 'Text to match against task names and notes (case-insensitive).'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'query': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'note': {'type': 'string'}, 'project': {'type': 'string'}, 'due_date': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['to', 'subject'], 'properties': {'cc': {'type': 'string', 'description': 'CC address(es), comma-separated.'}, 'to': {'type': 'string', 'description': 'Recipient address(es), comma-separated for multiple.'}, 'bcc': {'type': 'string', 'description': 'BCC address(es), comma-separated.'}, 'body': {'type': 'string', 'description': 'Plain-text body. Use this OR html_body; if both are given, html_body wins.'}, 'from': {'type': 'string', 'description': "Sender address — on a multi-account Mac, selects which configured Mail.app account sends. Omit to use Mail's default account."}, 'confirm': {'type': 'boolean', 'default': 'false', 'description': 'Safety gate: the call only PREVIEWS (nothing is sent) unless confirm:true. Set true to actually send.'}, 'subject': {'type': 'string', 'description': 'Subject line.'}, 'html_body': {'type': 'string', 'description': 'HTML body. Takes precedence over `body` when both are set.'}, 'attachments': {'type': 'string', 'description': 'Files to attach, as comma-separated absolute paths (e.g. a PDF).'}}}
Esquema de salida
{'type': 'object', 'properties': {'to': {'type': 'string'}, 'from': {'type': 'string'}, 'sent': {'type': 'boolean'}, 'subject': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['to', 'text'], 'properties': {'to': {'type': 'string', 'description': 'Recipient handle: phone number with country code (+14155551234) or Apple ID email.'}, 'text': {'type': 'string', 'description': 'Message body to send.'}, 'confirm': {'type': 'boolean', 'description': 'Set true to actually send. Without it, returns a preview only.'}, 'attachments': {'type': 'string', 'description': 'Files to send, as comma-separated absolute paths (e.g. a photo or PDF). Each is sent as a separate iMessage, before the text.'}}}
Esquema de salida
{'type': 'object', 'properties': {'to': {'type': 'string'}, 'note': {'type': 'string'}, 'sent': {'type': 'boolean'}, 'text': {'type': 'string'}, 'error': {'type': 'string'}, 'preview': {'type': 'boolean'}, 'service': {'type': 'string'}, 'attachments': {'type': 'array', 'items': {'type': 'string'}}, 'attachments_failed': {'type': 'array', 'items': {'type': 'string'}}}}
Esquema de entrada
{'type': 'object', 'required': ['os'], 'properties': {'os': {'enum': ['macos', 'windows', 'linux', 'ios', 'android'], 'type': 'string', 'description': 'macos | windows | linux | ios | android. Cloud connectors must pass os (or server asks). Desktop terminal clients may omit → macOS. macOS and Windows both get real install steps. Linux/mobile → waitlist (not supported yet).'}, 'step': {'enum': ['connector', 'install', 'email', 'connecting_stuck', 'server_down'], 'type': 'string', 'description': 'If stuck: connector | install | email | connecting_stuck | server_down.'}, 'email': {'type': 'string', 'description': 'Optional. Helps Cloud Relay auto-connect after install.'}, 'issue': {'type': 'string', 'description': 'Optional tag: gatekeeper_error, dot_not_green, install_failed, etc.'}}}
Esquema de salida
{'type': 'object', 'required': ['instructions'], 'properties': {'os': {'type': 'string', 'description': 'Target operating system the instructions are for, when known.'}, 'instructions': {'type': 'string', 'description': 'Full human-readable, step-by-step install/setup text.'}, 'install_command': {'type': 'string', 'description': 'One-line terminal command to install LMCP, when applicable to this OS/step.'}}, 'description': 'Structured install/setup guidance for LMCP.', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'folder': {'type': 'string', 'description': 'Filter to shortcuts in this folder (name, identifier, or "none"). Ignored when folders:true.'}, 'folders': {'type': 'boolean', 'description': 'List folder names instead of shortcuts. Default false.'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'folders': {'type': 'array', 'items': {'type': 'string'}}, 'shortcuts': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'identifier': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['name_or_identifier'], 'properties': {'confirm': {'type': 'boolean', 'description': 'Must be true to actually run the shortcut. Without it, returns a preview.'}, 'input_text': {'type': 'string', 'description': 'Optional text input for the shortcut, passed via a temp file — omit if the shortcut takes no input.'}, 'name_or_identifier': {'type': 'string', 'description': 'Shortcut name or identifier, from shortcuts_list. An ambiguous name is refused — pass the identifier instead.'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': ['name_or_identifier'], 'properties': {'name_or_identifier': {'type': 'string', 'description': 'Shortcut name or identifier, from shortcuts_list.'}}}
Esquema de salida
{'type': 'object', 'properties': {'name': {'type': 'string'}, 'opened': {'type': 'boolean'}, 'identifier': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['chat_id', 'text'], 'properties': {'text': {'type': 'string', 'description': 'Plain-text message body'}, 'chat_id': {'type': 'string', 'description': 'Chat ID from signal_list_chats'}, 'show_send_steps': {'type': 'boolean', 'description': 'Set true to get the send-it-yourself steps. Default: preview only.'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max chats to return (default 50)'}}}
Esquema de salida
{'type': 'object', 'required': ['chats'], 'properties': {'chats': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string', 'description': 'Contact or group name'}, 'type': {'type': 'string', 'description': 'Chat type (direct or group)'}, 'chat_id': {'type': 'string', 'description': 'Chat ID for subsequent calls'}}}, 'description': 'Signal conversations'}, 'count': {'type': 'integer', 'description': 'Number of chats returned'}}}
Esquema de entrada
{'type': 'object', 'required': ['chat_id'], 'properties': {'limit': {'type': 'integer', 'description': 'Max messages to return (default 50)'}, 'chat_id': {'type': 'string', 'description': 'Chat ID from signal_list_chats'}}}
Esquema de salida
{'type': 'object', 'required': ['messages'], 'properties': {'count': {'type': 'integer', 'description': 'Number of messages returned'}, 'messages': {'type': 'array', 'items': {'type': 'object', 'properties': {'body': {'type': ['string', 'null'], 'description': 'Message body text (null for messages without text)'}, 'date': {'type': 'string', 'description': 'Timestamp'}, 'sender': {'type': ['string', 'null'], 'description': 'Sender phone number (null for messages sent by you)'}}}, 'description': 'Messages from the chat, chronological'}}}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'description': 'Max results to return (default 50)'}, 'query': {'type': 'string', 'description': 'Search text (case-insensitive substring match)'}, 'chat_id': {'type': 'string', 'description': 'Optional chat ID to restrict search'}}}
Esquema de salida
{'type': 'object', 'required': ['results'], 'properties': {'count': {'type': 'integer', 'description': 'Number of results returned'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'body': {'type': ['string', 'null'], 'description': 'Message body text (null for messages without text)'}, 'date': {'type': 'string', 'description': 'Timestamp'}, 'sender': {'type': ['string', 'null'], 'description': 'Sender phone number (null for messages sent by you)'}}}, 'description': 'Matching messages'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max channels to return (default 200)'}, 'workspace_id': {'type': 'string', 'description': 'Workspace ID from slack_list_workspaces (optional — omit to list channels across all workspaces)'}}}
Esquema de salida
{'type': 'object', 'required': ['channels', 'count'], 'properties': {'count': {'type': 'integer', 'description': 'Number of channels returned'}, 'channels': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Channel ID'}, 'name': {'type': 'string', 'description': 'Channel name (or dm:<user> for DMs)'}, 'is_im': {'type': 'boolean', 'description': 'Whether this is a direct message'}, 'is_mpim': {'type': 'boolean', 'description': 'Whether this is a multi-person DM'}, 'purpose': {'type': 'string', 'description': 'Channel purpose/topic'}, 'is_private': {'type': 'boolean', 'description': 'Whether the channel is private'}, 'is_archived': {'type': 'boolean', 'description': 'Whether the channel is archived'}, 'workspace_id': {'type': 'string', 'description': 'Owning workspace ID'}}}, 'description': 'Channels and DMs synced to the local cache'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'required': ['workspaces', 'count'], 'properties': {'count': {'type': 'integer', 'description': 'Number of workspaces returned'}, 'workspaces': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Workspace (team) ID'}, 'icon': {'type': 'string', 'description': 'Workspace icon URL'}, 'name': {'type': 'string', 'description': 'Workspace name'}, 'domain': {'type': 'string', 'description': 'Workspace domain'}}}, 'description': 'Connected Slack workspaces synced to the local cache'}}}
Esquema de entrada
{'type': 'object', 'required': ['channel_id'], 'properties': {'limit': {'type': 'integer', 'description': 'Max messages to return (default 50)'}, 'channel_id': {'type': 'string', 'description': 'Channel ID from slack_list_channels'}}}
Esquema de salida
{'type': 'object', 'required': ['messages', 'count'], 'properties': {'count': {'type': 'integer', 'description': 'Number of messages returned'}, 'messages': {'type': 'array', 'items': {'type': 'object', 'properties': {'ts': {'type': 'string', 'description': 'Slack timestamp (e.g. 1234567890.123456)'}, 'sent': {'type': 'string', 'description': 'Human-readable sent datetime'}, 'text': {'type': 'string', 'description': 'Message text (truncated to 500 chars)'}, 'user': {'type': 'string', 'description': 'Sender user ID or username'}}}, 'description': 'Recent messages from the channel, oldest first'}}}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'description': 'Max results to return (default 50)'}, 'query': {'type': 'string', 'description': 'Search text (case-insensitive substring match)'}, 'channel_id': {'type': 'string', 'description': 'Optional channel ID to restrict search'}}}
Esquema de salida
{'type': 'object', 'required': ['results', 'count'], 'properties': {'note': {'type': 'string', 'description': 'Present when something about the answer needs stating: bodies that did not survive the reader, unresolved channel names, or a genuine zero'}, 'count': {'type': 'integer', 'description': 'Number of results returned'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'ts': {'type': 'string', 'description': 'Slack timestamp (e.g. 1234567890.123456)'}, 'sent': {'type': 'string', 'description': 'Human-readable sent datetime'}, 'text': {'type': 'string', 'description': 'Message text (truncated to 500 chars), or an explicit marker when the body is missing — never a silent empty string'}, 'user': {'type': 'string', 'description': 'Sender user ID or username'}, 'channel_id': {'type': 'string', 'description': 'ID of the channel the message is in'}, 'body_missing': {'type': 'boolean', 'description': "True when the match's text did not survive the reader — the message exists and matched; see `note`"}, 'channel_name': {'type': 'string', 'description': 'Name of the channel (when known)'}, 'user_unresolved': {'type': 'boolean', 'description': 'True when `user` is a raw Slack id, not a name'}, 'channel_name_unresolved': {'type': 'boolean', 'description': 'True when the channel could not be resolved to a readable name'}}}, 'description': 'Matching messages, most recent first'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol'], 'properties': {'range': {'enum': ['1d', '5d', '1mo', '3mo', '6mo', '1y', '2y', '5y', '10y', 'ytd', 'max'], 'type': 'string', 'description': 'Time range (default: 1mo)'}, 'symbol': {'type': 'string', 'description': 'Ticker symbol, e.g. AAPL'}, 'interval': {'enum': ['1m', '2m', '5m', '15m', '30m', '60m', '90m', '1h', '1d', '5d', '1wk', '1mo', '3mo'], 'type': 'string', 'description': 'Data interval (default: 1d). Intraday (1m–90m) needs a short range.'}}}
Esquema de salida
{'type': 'object', 'properties': {'name': {'type': 'string'}, 'range': {'type': 'string'}, 'symbol': {'type': 'string'}, 'candles': {'type': 'array', 'items': {'type': 'object', 'properties': {'low': {'type': 'number'}, 'date': {'type': 'string'}, 'high': {'type': 'number'}, 'open': {'type': 'number'}, 'close': {'type': 'number'}, 'volume': {'type': 'integer'}}}}, 'currency': {'type': 'string'}, 'interval': {'type': 'string'}, 'change_pct': {'type': 'number'}, 'data_points': {'type': 'integer'}, 'current_price': {'type': 'number'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbols'], 'properties': {'symbols': {'type': 'string', 'description': "Ticker symbols, comma-separated ('AAPL,MSFT,GOOGL') or a JSON array (['AAPL','MSFT'])"}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'description': 'Max results (default 10)'}, 'query': {'type': 'string', 'description': 'Company name or partial ticker to search for'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'query': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'type': {'type': 'string'}, 'symbol': {'type': 'string'}, 'exchange': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'answers': {'type': 'object', 'description': 'Answers keyed by question id. Single/scale = a value; multiple = an array.', 'additionalProperties': True}, 'confirm': {'type': 'boolean', 'description': 'Set true to actually record the answers. Omit/false = preview only (nothing is stored).'}}}
Esquema de salida
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'survey': {'type': 'object', 'description': 'The pending survey (no-args call) — rendered by the MCP Apps card.', 'additionalProperties': True}, 'message': {'type': 'string'}, 'preview': {'type': 'boolean'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'message': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max calls to return (default 50), newest first'}, 'since': {'type': 'string', 'description': 'Only calls on/after this date, YYYY-MM-DD (optional)'}, 'until': {'type': 'string', 'description': 'Only calls on/before this date, YYYY-MM-DD (optional)'}}}
Esquema de salida
{'type': 'object', 'properties': {'calls': {'type': 'array', 'items': {'type': 'object', 'properties': {'end': {'type': 'string'}, 'start': {'type': 'string'}, 'state': {'type': 'string'}, 'call_id': {'type': 'string'}, 'answered': {'type': 'string'}, 'call_type': {'type': 'string'}, 'direction': {'type': 'string'}, 'duration_s': {'type': 'integer'}, 'participants': {'type': 'array'}}}}, 'count': {'type': 'integer'}, 'error': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['team_id'], 'properties': {'team_id': {'type': 'string', 'description': 'Team ID from teams_list_teams'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'error': {'type': 'string'}, 'channels': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max chats to return (default 50)'}}}
Esquema de salida
{'type': 'object', 'properties': {'chats': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'type': {'type': 'string'}, 'title': {'type': 'string'}, 'last_sender': {'type': 'string'}, 'last_message': {'type': 'string'}, 'participants': {'type': 'string'}, 'last_message_at': {'type': 'string'}}}}, 'count': {'type': 'integer'}, 'error': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'error': {'type': 'string'}, 'teams': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['team_id', 'channel_id'], 'properties': {'limit': {'type': 'integer', 'description': 'Max messages (default 50)'}, 'team_id': {'type': 'string', 'description': 'Team ID'}, 'channel_id': {'type': 'string', 'description': 'Channel ID from teams_list_channels'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'error': {'type': 'string'}, 'messages': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'body': {'type': 'string'}, 'sent': {'type': 'string'}, 'sender': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['chat_id'], 'properties': {'limit': {'type': 'integer', 'description': 'Max messages (default 50)'}, 'chat_id': {'type': 'string', 'description': 'Chat ID from teams_list_chats'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'error': {'type': 'string'}, 'messages': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'body': {'type': 'string'}, 'sent': {'type': 'string'}, 'sender': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max results, newest first (default 50, max 200)'}, 'query': {'type': 'string', 'description': 'Text to find in message bodies (case-insensitive substring)'}, 'since': {'type': 'string', 'description': 'Only messages on/after this date, YYYY-MM-DD (optional)'}, 'until': {'type': 'string', 'description': 'Only messages on/before this date, YYYY-MM-DD (optional)'}, 'from_sender': {'type': 'string', 'description': 'Filter to a sender by display-name substring (optional)'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'error': {'type': 'string'}, 'messages': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'body': {'type': 'string'}, 'sent': {'type': 'string'}, 'sender': {'type': 'string'}, 'chat_id': {'type': 'string'}, 'chat_name': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['team_id', 'channel_id', 'text'], 'properties': {'text': {'type': 'string', 'description': 'Plain-text message body'}, 'confirm': {'type': 'boolean', 'description': 'Set true to send; false returns preview'}, 'team_id': {'type': 'string', 'description': "Team ID from teams_list_teams, or the team's name"}, 'channel_id': {'type': 'string', 'description': "Channel ID from teams_list_channels, or the channel's name"}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': ['chat_id', 'text'], 'properties': {'text': {'type': 'string', 'description': 'Plain-text message body. Max 28000 chars. No formatting / mentions / attachments in v1.'}, 'chat_id': {'type': 'string', 'description': "Thread id from teams_list_chats (e.g. '19:<uuid>_<uuid>@unq.gbl.spaces' for 1:1, '19:<uuid>@thread.tacv2' for group)"}, 'confirm': {'type': 'boolean', 'description': 'Must be true to actually send. Without it, returns a preview without making any network call.'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'list': {'type': 'string', 'description': 'List name to narrow search by title (optional)'}, 'title': {'type': 'string', 'description': 'Task title (partial match, alternative to task_id)'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to complete'}, 'task_id': {'type': 'string', 'description': 'Task ID from todo_list_tasks'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': ['title'], 'properties': {'list': {'type': 'string', 'description': 'List name (from todo_get_folders). Defaults to first available list.'}, 'notes': {'type': 'string', 'description': 'Task notes (optional)'}, 'title': {'type': 'string', 'description': 'Task title'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to create'}, 'due_date': {'type': 'string', 'description': 'Due date (YYYY-MM-DD, optional)'}, 'priority': {'type': 'integer', 'description': 'Priority: 1=high, 5=medium, 9=low (optional)'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'note': {'type': 'string'}, 'count': {'type': 'integer'}, 'lists': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'type': {'type': 'string', 'description': 'exchange | caldav'}, 'account': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['task_id'], 'properties': {'task_id': {'type': 'string', 'description': 'The task id to complete'}}}
Esquema de salida
{'type': 'object', 'required': ['ok', 'message'], 'properties': {'ok': {'type': 'boolean'}, 'message': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['content'], 'properties': {'content': {'type': 'string', 'description': 'The task text'}, 'priority': {'type': 'integer', 'description': '1 (normal) to 4 (urgent). Todoist UI p1 = 4.'}, 'due_string': {'type': 'string', 'description': "Natural-language due date, e.g. 'tomorrow 5pm', 'next monday'"}, 'project_id': {'type': 'string', 'description': 'Project to add it to (default: Inbox)'}}}
Esquema de salida
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'due': {'type': 'string'}, 'url': {'type': 'string'}, 'content': {'type': 'string'}, 'priority': {'type': 'integer'}, 'project_id': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'required': ['projects', 'count'], 'properties': {'count': {'type': 'integer'}, 'projects': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max results (default 50, max 200)'}, 'filter': {'type': 'string', 'description': "A Todoist filter query, e.g. 'today', 'overdue', 'p1'"}, 'project_id': {'type': 'string', 'description': 'Only tasks in this project (from todoist_list_projects)'}}}
Esquema de salida
{'type': 'object', 'required': ['tasks', 'count'], 'properties': {'count': {'type': 'integer'}, 'tasks': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'due': {'type': 'string'}, 'url': {'type': 'string'}, 'content': {'type': 'string'}, 'priority': {'type': 'integer'}, 'project_id': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'list': {'type': 'string', 'description': 'List name (from todo_get_folders). Leave empty to show all.'}, 'limit': {'type': 'integer', 'description': 'Max tasks to return (default 50)'}, 'include_completed': {'type': 'boolean', 'description': 'Include completed tasks (default false)'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'tasks': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'due': {'type': 'string'}, 'list': {'type': 'string'}, 'notes': {'type': 'string'}, 'title': {'type': 'string'}, 'priority': {'type': 'integer'}, 'completed': {'type': 'boolean'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'by': {'enum': ['element', 'coords'], 'type': 'string', 'description': 'Default element if element_ref given, else coords.'}, 'count': {'type': 'integer', 'description': '1 (default) or 2 for double-click.'}, 'button': {'enum': ['left', 'right'], 'type': 'string', 'description': 'Default left.'}, 'coords': {'type': 'object', 'description': '{x,y} in global screen points.'}, 'element_ref': {'type': 'string', 'description': "Element handle returned by ui_find_element or ui_read_tree; the click lands at that element's center. Needed when by=element, which is the default whenever element_ref is present."}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'role': {'type': 'string', 'description': 'AX role, e.g. AXButton, AXMenuItem, AXTextField.'}, 'index': {'type': 'integer', 'description': 'Which match to return if several (default 0).'}, 'label': {'type': 'string', 'description': 'AX title/description to match.'}, 'match': {'enum': ['exact', 'contains'], 'type': 'string', 'description': 'Default contains.'}, 'window_id': {'type': 'string', 'description': 'Alternatively scope by a window_id from list_windows.'}, 'app_bundle_id': {'type': 'string', 'description': 'Scope the search to this app.'}}}
Esquema de entrada
{'type': 'object', 'required': ['element_ref'], 'properties': {'element_ref': {'type': 'string', 'description': 'Reference returned by an earlier UI call. Re-resolving it picks up bounds and state that may have changed since.'}}}
Esquema de entrada
{'type': 'object', 'required': ['keys'], 'properties': {'keys': {'type': 'string', 'description': 'e.g. cmd+shift+5, return, cmd+,'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'path': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Nested menu path, e.g. ["App","Settings…"].'}, 'label': {'type': 'string', 'description': 'Status item / menu item title.'}, 'app_bundle_id': {'type': 'string', 'description': 'Owner of the status item.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'max_depth': {'type': 'integer', 'description': 'Max tree depth to descend (default 12, max 20)'}, 'window_id': {'type': 'string', 'description': "Alternative to app_bundle_id: a window id from list_windows (targets that window's app)"}, 'app_bundle_id': {'type': 'string', 'description': 'Bundle id of a RUNNING app (e.g. com.apple.finder)'}, 'include_menu_bar': {'type': 'boolean', 'description': "Include the app's macOS menu bar (hundreds of menu-item nodes). Default false."}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'The text to type.'}, 'element_ref': {'type': 'string', 'description': 'Optional; focus this element first.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'role': {'type': 'string', 'description': 'Accessibility role of the element (e.g. AXButton, AXTextField).'}, 'label': {'type': 'string', 'description': 'Visible label or title of the element.'}, 'match': {'enum': ['exact', 'contains'], 'type': 'string', 'description': 'How to compare label: "exact" (default) or "contains".'}, 'state': {'enum': ['present', 'enabled', 'focused', 'absent'], 'type': 'string', 'description': 'Default present.'}, 'poll_ms': {'type': 'integer', 'description': 'Default 150.'}, 'window_id': {'type': 'string', 'description': 'Window to look in, from list_windows. Narrows the search to one window.'}, 'timeout_ms': {'type': 'integer', 'description': 'Default 5000.'}, 'app_bundle_id': {'type': 'string', 'description': 'Bundle id of the app to look in (e.g. com.apple.Safari). Narrows the search and makes it faster.'}}}
Esquema de entrada
{'type': 'object', 'required': ['event_id'], 'properties': {'span': {'type': 'string', 'description': "For recurring events: 'this' (default — only this occurrence) or 'future' (this and all following occurrences; 'all'/'series' mean the same). Any other value is refused."}, 'notes': {'type': 'string', 'description': 'New notes — pass empty string to clear (optional)'}, 'title': {'type': 'string', 'description': 'New title (optional)'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to apply changes'}, 'end_date': {'type': 'string', 'description': 'New end datetime ISO 8601 (optional). Same timezone rules as start_date.'}, 'event_id': {'type': 'string', 'description': 'Event (or occurrence) identifier from list_calendar_events. For a recurring event this addresses exactly the occurrence that id came from — the preview names the date and scope so you can confirm before applying.'}, 'location': {'type': 'string', 'description': 'New location — pass empty string to clear (optional)'}, 'start_date': {'type': 'string', 'description': "New start datetime ISO 8601 (optional). No timezone = Mac's local time; append Z/offset to pin the zone."}}}
Esquema de salida
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'end': {'type': 'string'}, 'notes': {'type': 'string'}, 'start': {'type': 'string'}, 'title': {'type': 'string'}, 'all_day': {'type': 'boolean'}, 'updated': {'type': 'boolean'}, 'calendar': {'type': 'string'}, 'location': {'type': 'string'}, 'attendees': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'role': {'type': 'string'}, 'email': {'type': 'string'}, 'is_me': {'type': 'boolean'}, 'status': {'type': 'string'}}}}, 'calendar_id': {'type': 'string'}, 'attendees_total': {'type': 'integer'}}}
Esquema de entrada
{'type': 'object', 'properties': {'body': {'type': 'string', 'description': "New body, replacing the current one. Accepts Markdown, converted to Apple Notes' native formatting. Check body_format from read_note before writing a body back."}, 'title': {'type': 'string', 'description': 'New title. Leave it out to keep the current one.'}, 'confirm': {'type': 'boolean', 'description': 'Set to true to actually apply the change. Defaults to false.'}, 'note_id': {'type': 'string', 'description': 'Id of the note to change, from list_notes or search_notes. Use this or note_name.'}, 'note_name': {'type': 'string', 'description': 'Title of the note to change, when you do not have its id. Use this or note_id.'}}}
Esquema de salida
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'updated': {'type': 'boolean'}}}
Esquema de entrada
{'type': 'object', 'required': ['reminder_id'], 'properties': {'notes': {'type': 'string', 'description': 'New notes text (optional)'}, 'title': {'type': 'string', 'description': 'New title (optional)'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to apply changes'}, 'due_date': {'type': 'string', 'description': 'New ISO 8601 due date. Pass empty string to clear (optional)'}, 'priority': {'enum': ['none', 'low', 'medium', 'high'], 'type': 'string', 'description': 'Priority: none | low | medium | high (optional)'}, 'list_name': {'type': 'string', 'description': 'Move the reminder to this list (a name from get_reminder_folders) (optional). Moving to a list in ANOTHER account recreates the reminder and CHANGES its id — read the new one from reminder_id in the response (id_changed: true).'}, 'reminder_id': {'type': 'string', 'description': 'Reminder identifier from list_reminders'}}}
Esquema de salida
{'type': 'object', 'properties': {'list': {'type': 'string', 'description': 'Destination list, when the update moved the reminder.'}, 'note': {'type': 'string'}, 'title': {'type': 'string'}, 'updated': {'type': 'boolean'}, 'id_changed': {'type': 'boolean', 'description': 'true when the update recreated the reminder (a move across accounts), which invalidates the id you passed in.'}, 'reminder_id': {'type': 'string', 'description': "The reminder's id AFTER the update — use this one from now on."}, 'previous_reminder_id': {'type': 'string', 'description': 'Only when id_changed: the id you passed in, which no longer exists.'}}, 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': ['input', 'regions'], 'properties': {'input': {'type': 'string', 'description': 'Path to the source video file.'}, 'output': {'type': 'string', 'description': 'Default: <input>_blurred.mov. Missing parent folders are created.'}, 'regions': {'type': 'array', 'items': {'type': 'object'}, 'description': '[{x,y,w,h, start_ms?, end_ms?}] in source pixels (top-left).'}}}
Esquema de entrada
{'type': 'object', 'required': ['inputs'], 'properties': {'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Ordered list of video file paths.'}, 'output': {'type': 'string', 'description': 'Output path (default: <first-input>_joined.mov). Missing parent folders are created.'}}}
Esquema de entrada
{'type': 'object', 'required': ['input'], 'properties': {'fps': {'type': 'integer', 'description': 'Frames per second in the GIF (default 12).'}, 'input': {'type': 'string', 'description': 'Path to the source video.'}, 'width': {'type': 'integer', 'description': 'Output width in px, height scales to keep aspect (default 640).'}, 'end_ms': {'type': 'integer', 'description': 'Slice end (default: end of video).'}, 'output': {'type': 'string', 'description': 'Output path (default: <input>.gif). Missing parent folders are created.'}, 'start_ms': {'type': 'integer', 'description': 'Slice start (default 0).'}}}
Esquema de entrada
{'type': 'object', 'required': ['input', 'aspect'], 'properties': {'focus': {'type': 'object', 'description': '{x,y} center of interest in source pixels (top-left). Default: frame center.'}, 'input': {'type': 'string', 'description': 'Path to the source video file.'}, 'aspect': {'type': 'string', 'description': 'Target aspect "W:H", e.g. 9:16, 1:1, 4:5, 16:9.'}, 'output': {'type': 'string', 'description': 'Default: <input>_<aspect>.mov. Missing parent folders are created.'}}}
Esquema de entrada
{'type': 'object', 'required': ['input', 'ranges'], 'properties': {'input': {'type': 'string', 'description': 'Path to the source video.'}, 'output': {'type': 'string', 'description': 'Output path (default: <input>_trimmed.mov). Missing parent folders are created.'}, 'ranges': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Ordered [{start_ms, end_ms}] to keep.'}}}
Esquema de entrada
{'type': 'object', 'required': ['target'], 'properties': {'target': {'type': 'string', 'description': 'CSS selector or visible text of the element to click.'}, 'confirm': {'type': 'boolean', 'description': 'Required (true) to perform a click that submits a form.'}, 'session': {'type': 'string', 'description': "Session name (default 'default')."}}}
Esquema de entrada
{'type': 'object', 'required': ['selectors'], 'properties': {'session': {'type': 'string', 'description': "Session name (default 'default')."}, 'selectors': {'type': 'object', 'description': 'Field name → CSS selector map.', 'additionalProperties': {'type': 'string'}}}}
Esquema de salida
{'type': 'object', 'properties': {'url': {'type': 'string'}, 'data': {'type': 'object', 'description': 'One key per requested field; first-match text/href, null when absent.', 'additionalProperties': True}, 'title': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': "A CSS selector (e.g. 'input[name=q]') or visible text (e.g. 'Sign in')."}, 'session': {'type': 'string', 'description': "Session name (default 'default')."}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer', 'description': 'Number of matching elements (max 30 returned).'}, 'query': {'type': 'string'}, 'matches': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'Matched elements with tag/text/name/type/href.'}}}
Esquema de entrada
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': "The site's login URL to open, e.g. https://www.linkedin.com/login"}, 'session': {'type': 'string', 'description': "A stable name for this login profile, e.g. 'linkedin'."}}}
Esquema de entrada
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'URL to open (https).'}, 'session': {'type': 'string', 'description': "Session name (default 'default')."}, 'timeout_seconds': {'type': 'integer', 'description': 'Max seconds to wait for load (default 25).'}}}
Esquema de salida
{'type': 'object', 'properties': {'ok': {'type': 'boolean', 'description': 'True only when the requested page actually loaded.'}, 'url': {'type': 'string', 'description': "The URL the browser settled on (redirects followed). If it isn't the page you asked for, the navigation didn't deliver it."}, 'error': {'type': 'string', 'description': 'Present only on failure: nav_failed (the browser rejected the load), nav_timeout, or nav_blank (it finished on a blank document).'}, 'title': {'type': 'string', 'description': 'The resulting page title.'}, 'loaded': {'type': 'boolean', 'description': 'True only when the browser ended on a real web page. False means nothing was loaded — do NOT read the session and treat the result as page content.'}, 'message': {'type': 'string', 'description': "Present only on failure: why the page didn't load, and what to do about it."}, 'settle_rejected_by': {'type': 'string', 'description': "Present only with nav_timeout: which check ruled out 'the page arrived and WebKit just did not say so' - navigation_started (another navigation began and hung, so the visible document is the old one), other_url (it settled on a different page), or not_complete (the document never finished parsing)."}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'mode': {'enum': ['text', 'a11y', 'html'], 'type': 'string', 'description': 'What to return (default text).'}, 'session': {'type': 'string', 'description': "Session name (default 'default')."}}}
Esquema de salida
{'type': 'object', 'properties': {'url': {'type': 'string'}, 'mode': {'type': 'string', 'description': 'The mode that was read (text/a11y/html).'}, 'title': {'type': 'string'}, 'content': {'type': 'string', 'description': 'The page content in the requested mode.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'session': {'type': 'string', 'description': "Session name (a named login profile, e.g. 'linkedin'). Defaults to 'default'."}}}
Esquema de salida
{'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'URL of the page that was captured.'}, 'bytes': {'type': 'integer', 'description': 'PNG size in bytes (the image itself is an inline content block).'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'session': {'type': 'string', 'description': "Session name (a named login profile, e.g. 'linkedin'). Defaults to 'default'."}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'confirm': {'type': 'boolean', 'description': 'Must be true to actually delete. Without it, returns a preview and deletes nothing.'}, 'session': {'type': 'string', 'description': "Name of the profile to delete, as web_session_list reports it. Defaults to 'default'."}}}
Esquema de salida
{'type': 'object', 'properties': {'ok': {'type': 'boolean', 'description': 'True only when BOTH halves are done: data erased and name removed from the list'}, 'closed': {'type': 'boolean', 'description': 'Whether a live window had to be closed first'}, 'deleted': {'type': 'string', 'description': 'The profile name that was deleted'}, 'data_removed': {'type': 'boolean', 'description': 'Whether the cookies and site data were erased'}, 'name_forgotten': {'type': 'boolean', 'description': 'Whether the name was removed from web_session_list'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'sessions': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'Current URL (only when open)'}, 'name': {'type': 'string'}, 'open': {'type': 'boolean', 'description': 'The session window is currently open'}, 'saved': {'type': 'boolean', 'description': 'A persisted login profile exists on disk for this name'}, 'title': {'type': 'string', 'description': 'Current page title (only when open)'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'reason': {'type': 'string', 'description': "Short reason shown to the user, e.g. 'a CAPTCHA appeared' or 'confirm which account'."}, 'session': {'type': 'string', 'description': "Session name (default 'default')."}}}
Esquema de entrada
{'type': 'object', 'required': ['target', 'text'], 'properties': {'text': {'type': 'string', 'description': 'The text to type. For an input[type=file], this is instead the LOCAL FILE PATH to upload.'}, 'target': {'type': 'string', 'description': 'CSS selector or visible label/placeholder of the field.'}, 'session': {'type': 'string', 'description': "Session name (default 'default')."}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'session': {'type': 'string', 'description': "Session name (default 'default')."}, 'selector': {'type': 'string', 'description': 'CSS selector to wait for (preferred; treated as data, never executed). e.g. .feed'}, 'condition': {'type': 'string', 'description': 'Alternative to selector: "document.querySelector(\'...\')" is accepted as-is; any other JS expression runs arbitrary code on the page (same power as web_eval).'}, 'timeout_seconds': {'type': 'integer', 'description': 'Max seconds to wait (default 15).'}}}
Esquema de salida
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'met': {'type': 'boolean', 'description': 'True if the condition became truthy before the timeout.'}, 'message': {'type': 'string', 'description': 'Present when the condition was not met.'}}}
Esquema de entrada
{'type': 'object', 'required': ['window_id'], 'properties': {'window_id': {'type': 'string', 'description': 'Window to bring to the front, from list_windows. Returns window_not_found if it cannot be resolved.'}}}
Esquema de entrada
{'type': 'object', 'required': ['window_id', 'bounds'], 'properties': {'bounds': {'type': 'object', 'description': '{x,y,w,h} global points.'}, 'window_id': {'type': 'string', 'description': 'Window to move or resize, from list_windows.'}}}
Esquema de entrada
{'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'description': 'Path to the existing .docx file'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to modify'}, 'content': {'type': 'string', 'description': 'Text to append'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Esquema de entrada
{'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'description': 'Output path for the .docx file'}, 'title': {'type': 'string', 'description': 'Document title (optional)'}, 'confirm': {'type': 'boolean', 'description': 'Must be true to create'}, 'content': {'type': 'string', 'description': 'Document text content'}}}
Esquema de salida
{'type': 'object', 'required': ['created', 'path'], 'properties': {'path': {'type': 'string', 'description': 'Path of the created .docx file'}, 'created': {'type': 'boolean', 'description': 'True when the document was created'}}}
Esquema de entrada
{'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Absolute path to the .docx file'}, 'force_download': {'type': 'boolean', 'description': "If the file is stored in the cloud and evicted from this Mac (dataless), request the download and wait for it instead of failing. Off by default: a download can take minutes and use metered data, so it is the caller's decision."}}}
Esquema de salida
{'type': 'object', 'required': ['text', 'chars'], 'properties': {'text': {'type': 'string', 'description': 'Extracted text content'}, 'chars': {'type': 'integer', 'description': 'Number of characters in the extracted text'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'description': 'Max recordings to return (default 20)'}}}
Esquema de salida
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'total': {'type': 'integer'}, 'recordings': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'path': {'type': 'string'}, 'files': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'size': {'type': 'integer'}}}}, 'has_chat': {'type': 'boolean'}, 'modified': {'type': 'string'}, 'has_transcript': {'type': 'boolean'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['recording'], 'properties': {'include': {'enum': ['all', 'transcript', 'chat'], 'type': 'string', 'description': "'all' (default), 'transcript' or 'chat'"}, 'recording': {'type': 'string', 'description': 'Recording folder name (or full path) from zoom_list_recordings. Partial name match works.'}}}
Esquema de salida
{'type': 'object', 'properties': {'chat': {'type': ['string', 'null']}, 'note': {'type': 'string'}, 'path': {'type': 'string'}, 'recording': {'type': 'string'}, 'transcript': {'type': ['string', 'null']}, 'chat_source': {'type': 'string'}, 'transcript_source': {'type': 'string'}}}
Cambios recientes en herramientas
Servidores MCP similares
mu
Supports personal and collaborative tasks including web browsing, app creation, blogs, bookmarks, discussions, and contact manage…
Agent Commons
Provides rooms, threads, messaging, file sharing, invitations, subscriptions, search, and resumable events for agent collaboratio…
Dock
Provides collaborative workspaces with tables, documents, HTML surfaces, files, formulas, comments, activity tracking, agent mess…
agendaforge
Manages events, agendas, sessions, speakers, attendees, sponsors, forms, contacts, email templates, approvals, and organizer work…
Kythene
Provides shared team memory, collections, wikis, artifacts, comments, approvals, review workflows, presence, and controlled shari…
northreach
Supports direct agent questions and answers, shared memories, broadcasts, polls, compute jobs, governance, and persistent network…
PingRoom
Sends mobile notifications, asks questions, requests approvals, and coordinates human handoffs through rooms and live status upda…
lyra-mcp-server
Searches Lyra profiles and supports contact management, profile information, gift recommendations, calendar availability, group o…