{"name":"superset","title":"Paradev","icon":"https://paradev.com/apple-touch-icon.png","description":"Paradev MCP server: create Git-worktree workspaces, launch coding-agent sessions, schedule automations, open terminals, and manage tasks on behalf of a Paradev user.","version":"0.1.0","serverUrl":"https://api.superset.sh/mcp","transport":"streamable-http","documentationUrl":"https://docs.paradev.com/mcp-server","authentication":{"type":"oauth2","resourceMetadataUrl":"https://api.superset.sh/.well-known/oauth-protected-resource","description":"OAuth 2.1 authorization code + PKCE with RFC 7591 dynamic client registration, or a user-issued Paradev API key as a Bearer token. Walkthrough: https://paradev.com/auth.md"},"tools":[{"name":"tasks_list","description":"List tasks in the active organization, optionally filtered by status, priority, assignee, or a free-text search. When the organization tracks tasks in Linear this lists its Linear issues. Use this when the user asks 'what tasks are open', 'find tasks about X', or 'what's assigned to me'.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"tracker":{"description":"Work on Paradev tasks or Linear issues. Omit to use the organization's task tracker setting. A call reaches one tracker only.","anyOf":[{"type":"string","enum":["superset","linear"]},{"type":"null"}]},"statusId":{"description":"Paradev only: filter by status ID. Call tasks_statuses_list if you don't have one.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"linearStatus":{"description":"Linear only: status filter. Defaults to 'active'.","anyOf":[{"type":"string","enum":["all","open","active","backlog","unstarted","started","completed","canceled"]},{"type":"null"}]},"team":{"description":"Filter by team key or name, e.g. ENG.","anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"priority":{"description":"Paradev only: filter by priority.","anyOf":[{"type":"string","enum":["urgent","high","medium","low","none"]},{"type":"null"}]},"assigneeId":{"description":"Filter by assignee: a Paradev user ID, or for Linear a Linear user id or email.","anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"assigneeMe":{"description":"Shorthand for tasks assigned to the calling user.","type":["boolean","null"]},"creatorMe":{"description":"Paradev only: tasks created by the calling user.","type":["boolean","null"]},"search":{"description":"Free-text search on title.","anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"labels":{"description":"Paradev only: label names. A task must have all of them (case-insensitive). A label also matches its sub-labels: acme matches acme/web.","anyOf":[{"maxItems":20,"type":"array","items":{"type":"string","minLength":1}},{"type":"null"}]},"limit":{"default":50,"description":"Max tasks to return. Default 50, max 500.","type":"integer","exclusiveMinimum":0,"maximum":500},"offset":{"default":0,"description":"Pagination offset.","type":"integer","minimum":0,"maximum":9007199254740991}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tasks_get","description":"Fetch one task by UUID or slug, or a Linear issue by identifier (e.g. ENG-123) when the organization tracks tasks in Linear. Use this when you have a task ID or slug from a list call or the user.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"idOrSlug":{"type":"string","minLength":1,"description":"Task UUID or slug (e.g. SUPER-172), or a Linear identifier (e.g. ENG-123)."},"tracker":{"description":"Work on Paradev tasks or Linear issues. Omit to use the organization's task tracker setting. A call reaches one tracker only.","anyOf":[{"type":"string","enum":["superset","linear"]},{"type":"null"}]}},"required":["idOrSlug"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tasks_create","description":"Create a task in the active organization, or a Linear issue when the organization tracks tasks in Linear. Use this when the user describes work they want to track. The task is auto-assigned a default status if statusId is omitted.","annotations":{"destructiveHint":false},"inputSchema":{"type":"object","properties":{"tracker":{"description":"Work on Paradev tasks or Linear issues. Omit to use the organization's task tracker setting. A call reaches one tracker only.","anyOf":[{"type":"string","enum":["superset","linear"]},{"type":"null"}]},"title":{"type":"string","minLength":1,"description":"Task title."},"description":{"description":"Optional task description.","type":["string","null"]},"statusId":{"description":"Status UUID, or for Linear a status name or id in the team. Omit for the default status.","type":["string","null"]},"team":{"description":"Team key or name, e.g. ENG. For Linear, needed when the workspace has several teams. Omit for the default team.","anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"priority":{"default":"none","description":"Task priority. Defaults to 'none'.","type":"string","enum":["urgent","high","medium","low","none"]},"assigneeId":{"description":"Assignee: a Paradev user ID, or for Linear a Linear user id or email. Omit for unassigned.","type":["string","null"]},"estimate":{"description":"Story-point estimate.","anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"dueDate":{"description":"ISO 8601 due date.","anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"labels":{"description":"Paradev only: free-text labels.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["title"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tasks_update","description":"Update fields on an existing task, or a Linear issue when the organization tracks tasks in Linear. Only the fields you pass are changed. Omitting a field preserves its current value (set null explicitly to clear nullable fields).","annotations":{"destructiveHint":false,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Task UUID or slug, or a Linear identifier (e.g. ENG-123)."},"tracker":{"description":"Work on Paradev tasks or Linear issues. Omit to use the organization's task tracker setting. A call reaches one tracker only.","anyOf":[{"type":"string","enum":["superset","linear"]},{"type":"null"}]},"title":{"type":"string","minLength":1},"description":{"type":["string","null"]},"statusId":{"description":"Status UUID, or for Linear a status name or id.","type":"string"},"priority":{"type":"string","enum":["urgent","high","medium","low","none"]},"assigneeId":{"description":"Assignee: a Paradev user ID, or for Linear a Linear user id or email. Null unassigns.","type":["string","null"]},"prUrl":{"description":"Paradev only.","anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"estimate":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"dueDate":{"description":"ISO 8601 due date.","anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"labels":{"description":"Paradev only.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tasks_delete","description":"Delete a task (soft delete — the row is tombstoned, not purged). A Linear issue is archived when the organization tracks tasks in Linear.","annotations":{"destructiveHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Task UUID or slug, or a Linear identifier (e.g. ENG-123)."},"tracker":{"description":"Work on Paradev tasks or Linear issues. Omit to use the organization's task tracker setting. A call reaches one tracker only.","anyOf":[{"type":"string","enum":["superset","linear"]},{"type":"null"}]}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tasks_statuses_list","description":"List the available task statuses in the active organization, or each Linear team's statuses when the organization tracks tasks in Linear. Use this to look up a status by name (e.g. 'In Progress', 'Done') before creating or updating a task.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"tracker":{"description":"Work on Paradev tasks or Linear issues. Omit to use the organization's task tracker setting. A call reaches one tracker only.","anyOf":[{"type":"string","enum":["superset","linear"]},{"type":"null"}]},"team":{"description":"Linear only: team key, e.g. ENG.","anyOf":[{"type":"string","minLength":1},{"type":"null"}]}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"organization_members_list","description":"List members of the active organization. Use this to look up a user's id by name or email before assigning a task or filtering by assignee.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"search":{"description":"Free-text search on name or email.","anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"limit":{"default":50,"description":"Max members to return. Default 50, max 100.","type":"integer","exclusiveMinimum":0,"maximum":100}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"automations_list","description":"List automations (agent runs on a schedule or on events) the calling user owns in the active organization. Returns a summary shape — call automations_get_prompt to fetch the prompt for one automation, or automations_get for the rest of its config. Pass `name` to filter rows by case-insensitive substring match on the automation name.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"name":{"description":"Filter rows by case-insensitive substring match on automation name.","anyOf":[{"type":"string","minLength":1},{"type":"null"}]}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"automations_get","description":"Get a single automation's metadata. Returns name, schedule, agent, host — the prompt body is omitted (call automations_get_prompt to fetch it). For run history, call automations_logs. Caller must be the automation's owner.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Automation UUID."}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"automations_get_prompt","description":"Fetch the full prompt body (markdown) for one automation. Use this when you need to read or edit the prompt — automations_get and automations_list omit the body to keep responses small. Caller must be the automation's owner.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Automation UUID."}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"automations_create","description":"Create an automation that runs an agent on a schedule, on an external event, or both. Provide either `rrule` (a schedule) or `triggers` (the full trigger set, which may include event triggers). Pass v2ProjectId (run in a fresh workspace), v2WorkspaceId (reuse an existing workspace), or neither to run each time in a fresh project-less session workspace — call projects_list or workspaces_list first to get IDs. `agent` is the host-agent instance id (or presetId fallback) that runs the prompt.","annotations":{"destructiveHint":false},"inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200,"description":"Human name for the automation."},"prompt":{"type":"string","minLength":1,"maxLength":100000,"description":"Prompt the agent runs (markdown)."},"agent":{"type":"string","minLength":1,"maxLength":200,"description":"Host agent instance id (UUID from /settings/agents) or presetId (e.g. 'claude', 'codex'). A cloud automation runs 'claude' or 'codex'."},"targetHostId":{"description":"Host that should run the automation. Defaults to the owner's online host. 'cloud' runs it in a cloud workspace: pass environmentId to start one per run, cloudWorkspaceId to reuse one, or both.","anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"cloudWorkspaceId":{"description":"With targetHostId 'cloud': the cloud workspace to reuse every run.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"environmentId":{"description":"With targetHostId 'cloud': the environment each run's cloud workspace starts from.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"v2ProjectId":{"description":"Project UUID. Omit both this and v2WorkspaceId for session mode (fresh project-less session workspace per run).","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"v2WorkspaceId":{"description":"Workspace UUID to reuse. Pass targetHostId with it — required for session workspaces (no cloud record to resolve the host from).","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"rrule":{"description":"RFC 5545 RRULE body, no DTSTART prefix. Example: FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;BYHOUR=9;BYMINUTE=0. Omit when passing `triggers`.","type":"string","minLength":1,"maxLength":500},"dtstart":{"description":"First scheduled fire (ISO 8601). Defaults to now.","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"timezone":{"description":"IANA timezone (e.g. America/New_York). Required with `rrule`.","type":"string","minLength":1},"triggers":{"description":"Full replacement of the automation's triggers — omitted triggers are DELETED. Read automations_get first and resend the existing entries (with their `id`) alongside any new one; an entry without `id` is created, and an existing `id` is updated in place, which preserves a webhook's signing key and a schedule's next run. Each entry is {id?, config}. config.kind is one of: schedule, webhook, github, slack, linear, sentry, notion, microsoft_teams, gmail. Most filter fields are scope objects: {mode:'any'} matches everything, {mode:'list', ids:[...]} matches those ids, {mode:'me'} resolves to the automation owner's account at that provider. An empty ids list matches nothing and is rejected on save. Text filters are not scopes: messageFilter, commentFilter and subjectFilter take {pattern, isRegex}. hasAttachment is a plain boolean. Resolve ids with automations_trigger_options before writing a list scope — ids are provider ids (Slack channel ids, Linear team uuids, numeric Sentry project ids, numeric GitHub repository ids), never names. Examples: schedule: {\"config\":{\"kind\":\"schedule\",\"rrule\":\"FREQ=DAILY;BYHOUR=9;BYMINUTE=0\",\"dtstart\":\"2026-01-01T09:00:00Z\",\"timezone\":\"America/New_York\"}} slack: {\"config\":{\"kind\":\"slack\",\"event\":\"reaction_added\",\"channels\":{\"mode\":\"list\",\"ids\":[\"C123\"]},\"emoji\":{\"mode\":\"list\",\"ids\":[\"bug\"]},\"actor\":{\"mode\":\"any\"}}} github: {\"config\":{\"kind\":\"github\",\"event\":\"pull_request.opened\",\"repositories\":{\"mode\":\"list\",\"ids\":[\"123456789\"]},\"branches\":{\"mode\":\"any\"},\"labels\":{\"mode\":\"any\"},\"actor\":{\"mode\":\"any\"}}} linear: {\"config\":{\"kind\":\"linear\",\"event\":\"issue.assigned\",\"teams\":{\"mode\":\"list\",\"ids\":[\"<team-uuid>\"]},\"projects\":{\"mode\":\"any\"},\"labels\":{\"mode\":\"any\"},\"toStatus\":{\"mode\":\"any\"},\"assignee\":{\"mode\":\"me\"}}}","maxItems":25,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"connectionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"config":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"schedule"},"rrule":{"type":"string","minLength":1,"maxLength":500},"dtstart":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"timezone":{"type":"string","minLength":1}},"required":["kind","rrule","dtstart","timezone"]},{"type":"object","properties":{"kind":{"type":"string","const":"webhook"}},"required":["kind"]},{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"github"},"repositories":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"branches":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"labels":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"includeForks":{"default":false,"type":"boolean","const":false},"event":{"type":"string","enum":["draft_opened","pull_request.opened","pull_request.pushed","pull_request.merged","pull_request.closed","push_to_branch","label_change","checks_completed","pr_review_comment","pr_review_submitted.approved","pr_review_submitted.changes_requested","pr_review_submitted.commented","pr_review_submitted.any","review_thread.resolved","review_thread.unresolved","review_thread.any","workflow_run.success","workflow_run.failure","workflow_run.cancelled","workflow_run.any","release.published","release.created","release.edited","release.unpublished","release.deleted"]},"actor":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]}},"required":["kind","event"]},{"type":"object","properties":{"kind":{"type":"string","const":"github"},"repositories":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"branches":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"labels":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"includeForks":{"default":false,"type":"boolean","const":false},"event":{"type":"string","enum":["comment_added","issue_comment"]},"actor":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"subjectAuthor":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"commentFilter":{"default":null,"anyOf":[{"type":"object","properties":{"pattern":{"type":"string","maxLength":500},"isRegex":{"default":false,"type":"boolean","const":false}},"required":["pattern"]},{"type":"null"}]}},"required":["kind","event"]},{"type":"object","properties":{"kind":{"type":"string","const":"github"},"repositories":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"branches":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"labels":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"includeForks":{"default":false,"type":"boolean","const":false},"event":{"type":"string","enum":["pull_request.assigned","pull_request.review_requested"]},"actor":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"assignee":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]}},"required":["kind","event"]}]},{"type":"object","properties":{"kind":{"type":"string","const":"slack"},"event":{"type":"string","enum":["message_in_channel","reaction_added","channel_created"]},"channels":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"emoji":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"actor":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"messageFilter":{"default":null,"anyOf":[{"type":"object","properties":{"pattern":{"type":"string","maxLength":500},"isRegex":{"default":false,"type":"boolean","const":false}},"required":["pattern"]},{"type":"null"}]},"completionReaction":{"default":"white_check_mark","anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]}},"required":["kind","event"]},{"type":"object","properties":{"kind":{"type":"string","const":"linear"},"event":{"type":"string","enum":["issue.created","issue.status_changed","issue.assigned","cycle.ended"]},"teams":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"projects":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"labels":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"toStatus":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"assignee":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]}},"required":["kind","event"]},{"type":"object","properties":{"kind":{"type":"string","const":"sentry"},"event":{"type":"string","enum":["issue.created","issue.resolved","issue.assigned","issue.archived","issue.unresolved","issue.any"]},"projects":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"level":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]}},"required":["kind","event"]},{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"notion"},"dataSources":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"event":{"type":"string","const":"data_source.content_updated"}},"required":["kind","event"]},{"type":"object","properties":{"kind":{"type":"string","const":"notion"},"dataSources":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"event":{"type":"string","const":"comment.created"},"pages":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"actor":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]}},"required":["kind","event"]},{"type":"object","properties":{"kind":{"type":"string","const":"notion"},"dataSources":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"event":{"type":"string","const":"comment.mentioned"},"pages":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"mentionedUser":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]}},"required":["kind","event"]}]},{"type":"object","properties":{"kind":{"type":"string","const":"microsoft_teams"},"event":{"type":"string","enum":["message_in_channel","channel_created"]},"teams":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"channels":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"actor":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"messageFilter":{"default":null,"anyOf":[{"type":"object","properties":{"pattern":{"type":"string","maxLength":500},"isRegex":{"default":false,"type":"boolean","const":false}},"required":["pattern"]},{"type":"null"}]}},"required":["kind","event"]},{"type":"object","properties":{"kind":{"type":"string","const":"gmail"},"event":{"type":"string","enum":["message.received"]},"from":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"to":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"subjectFilter":{"default":null,"anyOf":[{"type":"object","properties":{"pattern":{"type":"string","maxLength":500},"isRegex":{"default":false,"type":"boolean","const":false}},"required":["pattern"]},{"type":"null"}]},"labels":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"hasAttachment":{"default":false,"type":"boolean"}},"required":["kind","event"]}]}},"required":["config"]}},"continueAgentSession":{"description":"Deliver each run's prompt into the agent session the previous run left behind instead of starting another beside it. Requires a pinned v2WorkspaceId or cloudWorkspaceId — that is where the session lives. Use for an automation that should build up one conversation (triaging items one by one) rather than starting clean each time.","type":"boolean"},"tags":{"description":"Workspace tags applied to each run's created workspace; each tag files it into a sidebar folder of the same name. Defaults to ['automation'] so runs group out of the box.","type":"array","items":{"type":"string"}}},"required":["name","prompt","agent"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"automations_update","description":"Update an existing automation (name, schedule, triggers, agent, host). Only the fields you pass change, except `triggers`, which replaces the whole trigger set. Caller must be the automation's owner. Use automations_set_prompt to change the prompt body.","annotations":{"destructiveHint":false,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Automation UUID."},"name":{"type":"string","minLength":1,"maxLength":200},"agent":{"description":"Host agent instance id (UUID from /settings/agents) or presetId. A cloud automation runs 'claude' or 'codex'.","type":"string","minLength":1,"maxLength":200},"targetHostId":{"description":"'cloud' runs it in a cloud workspace started from environmentId, or the cloud workspace cloudWorkspaceId names.","anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"cloudWorkspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"environmentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"v2ProjectId":{"description":"Pass null to switch to session mode (no project).","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"v2WorkspaceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"continueAgentSession":{"description":"Continue the agent session the previous run left, instead of starting another. Requires a pinned v2WorkspaceId or cloudWorkspaceId.","type":"boolean"},"rrule":{"type":"string","minLength":1,"maxLength":500},"dtstart":{"description":"First scheduled fire (ISO 8601).","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"timezone":{"type":"string","minLength":1},"triggers":{"description":"Full replacement of the automation's triggers — omitted triggers are DELETED. Read automations_get first and resend the existing entries (with their `id`) alongside any new one; an entry without `id` is created, and an existing `id` is updated in place, which preserves a webhook's signing key and a schedule's next run. Each entry is {id?, config}. config.kind is one of: schedule, webhook, github, slack, linear, sentry, notion, microsoft_teams, gmail. Most filter fields are scope objects: {mode:'any'} matches everything, {mode:'list', ids:[...]} matches those ids, {mode:'me'} resolves to the automation owner's account at that provider. An empty ids list matches nothing and is rejected on save. Text filters are not scopes: messageFilter, commentFilter and subjectFilter take {pattern, isRegex}. hasAttachment is a plain boolean. Resolve ids with automations_trigger_options before writing a list scope — ids are provider ids (Slack channel ids, Linear team uuids, numeric Sentry project ids, numeric GitHub repository ids), never names. Examples: schedule: {\"config\":{\"kind\":\"schedule\",\"rrule\":\"FREQ=DAILY;BYHOUR=9;BYMINUTE=0\",\"dtstart\":\"2026-01-01T09:00:00Z\",\"timezone\":\"America/New_York\"}} slack: {\"config\":{\"kind\":\"slack\",\"event\":\"reaction_added\",\"channels\":{\"mode\":\"list\",\"ids\":[\"C123\"]},\"emoji\":{\"mode\":\"list\",\"ids\":[\"bug\"]},\"actor\":{\"mode\":\"any\"}}} github: {\"config\":{\"kind\":\"github\",\"event\":\"pull_request.opened\",\"repositories\":{\"mode\":\"list\",\"ids\":[\"123456789\"]},\"branches\":{\"mode\":\"any\"},\"labels\":{\"mode\":\"any\"},\"actor\":{\"mode\":\"any\"}}} linear: {\"config\":{\"kind\":\"linear\",\"event\":\"issue.assigned\",\"teams\":{\"mode\":\"list\",\"ids\":[\"<team-uuid>\"]},\"projects\":{\"mode\":\"any\"},\"labels\":{\"mode\":\"any\"},\"toStatus\":{\"mode\":\"any\"},\"assignee\":{\"mode\":\"me\"}}}","maxItems":25,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"connectionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"config":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"schedule"},"rrule":{"type":"string","minLength":1,"maxLength":500},"dtstart":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"timezone":{"type":"string","minLength":1}},"required":["kind","rrule","dtstart","timezone"]},{"type":"object","properties":{"kind":{"type":"string","const":"webhook"}},"required":["kind"]},{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"github"},"repositories":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"branches":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"labels":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"includeForks":{"default":false,"type":"boolean","const":false},"event":{"type":"string","enum":["draft_opened","pull_request.opened","pull_request.pushed","pull_request.merged","pull_request.closed","push_to_branch","label_change","checks_completed","pr_review_comment","pr_review_submitted.approved","pr_review_submitted.changes_requested","pr_review_submitted.commented","pr_review_submitted.any","review_thread.resolved","review_thread.unresolved","review_thread.any","workflow_run.success","workflow_run.failure","workflow_run.cancelled","workflow_run.any","release.published","release.created","release.edited","release.unpublished","release.deleted"]},"actor":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]}},"required":["kind","event"]},{"type":"object","properties":{"kind":{"type":"string","const":"github"},"repositories":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"branches":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"labels":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"includeForks":{"default":false,"type":"boolean","const":false},"event":{"type":"string","enum":["comment_added","issue_comment"]},"actor":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"subjectAuthor":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"commentFilter":{"default":null,"anyOf":[{"type":"object","properties":{"pattern":{"type":"string","maxLength":500},"isRegex":{"default":false,"type":"boolean","const":false}},"required":["pattern"]},{"type":"null"}]}},"required":["kind","event"]},{"type":"object","properties":{"kind":{"type":"string","const":"github"},"repositories":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"branches":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"labels":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"includeForks":{"default":false,"type":"boolean","const":false},"event":{"type":"string","enum":["pull_request.assigned","pull_request.review_requested"]},"actor":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"assignee":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]}},"required":["kind","event"]}]},{"type":"object","properties":{"kind":{"type":"string","const":"slack"},"event":{"type":"string","enum":["message_in_channel","reaction_added","channel_created"]},"channels":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"emoji":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"actor":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"messageFilter":{"default":null,"anyOf":[{"type":"object","properties":{"pattern":{"type":"string","maxLength":500},"isRegex":{"default":false,"type":"boolean","const":false}},"required":["pattern"]},{"type":"null"}]},"completionReaction":{"default":"white_check_mark","anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]}},"required":["kind","event"]},{"type":"object","properties":{"kind":{"type":"string","const":"linear"},"event":{"type":"string","enum":["issue.created","issue.status_changed","issue.assigned","cycle.ended"]},"teams":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"projects":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"labels":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"toStatus":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"assignee":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]}},"required":["kind","event"]},{"type":"object","properties":{"kind":{"type":"string","const":"sentry"},"event":{"type":"string","enum":["issue.created","issue.resolved","issue.assigned","issue.archived","issue.unresolved","issue.any"]},"projects":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"level":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]}},"required":["kind","event"]},{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"notion"},"dataSources":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"event":{"type":"string","const":"data_source.content_updated"}},"required":["kind","event"]},{"type":"object","properties":{"kind":{"type":"string","const":"notion"},"dataSources":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"event":{"type":"string","const":"comment.created"},"pages":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"actor":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]}},"required":["kind","event"]},{"type":"object","properties":{"kind":{"type":"string","const":"notion"},"dataSources":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"event":{"type":"string","const":"comment.mentioned"},"pages":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"mentionedUser":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]}},"required":["kind","event"]}]},{"type":"object","properties":{"kind":{"type":"string","const":"microsoft_teams"},"event":{"type":"string","enum":["message_in_channel","channel_created"]},"teams":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"channels":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"actor":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"messageFilter":{"default":null,"anyOf":[{"type":"object","properties":{"pattern":{"type":"string","maxLength":500},"isRegex":{"default":false,"type":"boolean","const":false}},"required":["pattern"]},{"type":"null"}]}},"required":["kind","event"]},{"type":"object","properties":{"kind":{"type":"string","const":"gmail"},"event":{"type":"string","enum":["message.received"]},"from":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"to":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"subjectFilter":{"default":null,"anyOf":[{"type":"object","properties":{"pattern":{"type":"string","maxLength":500},"isRegex":{"default":false,"type":"boolean","const":false}},"required":["pattern"]},{"type":"null"}]},"labels":{"default":{"mode":"any"},"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"any"}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","const":"list"},"ids":{"maxItems":200,"type":"array","items":{"type":"string","minLength":1}}},"required":["mode","ids"]},{"type":"object","properties":{"mode":{"type":"string","const":"me"}},"required":["mode"]}]},"hasAttachment":{"default":false,"type":"boolean"}},"required":["kind","event"]}]}},"required":["config"]}},"tags":{"description":"Workspace tags applied to each run's created workspace; each tag files it into a sidebar folder of the same name. Update replaces the whole set.","type":"array","items":{"type":"string"}}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"automations_set_prompt","description":"Replace the full prompt body (markdown) for one automation. The new prompt fully overwrites the old one — fetch with automations_get_prompt first if you only want to edit. Caller must be the automation's owner.","annotations":{"destructiveHint":false,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Automation UUID."},"prompt":{"type":"string","minLength":1,"maxLength":100000,"description":"Full markdown prompt the automation runs. Replaces the existing prompt entirely."}},"required":["id","prompt"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"automations_delete","description":"Delete an automation. Its schedules and event triggers stop immediately; past runs remain. Caller must be the owner.","annotations":{"destructiveHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Automation UUID."}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"automations_pause","description":"Pause an automation. Its schedules and event triggers stop firing until resumed. Caller must be the owner.","annotations":{"destructiveHint":false,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Automation UUID."}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"automations_resume","description":"Resume a paused automation. Event triggers fire again, and the next scheduled fire is recomputed from the RRULE. Caller must be the owner.","annotations":{"destructiveHint":false,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Automation UUID."}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"automations_trigger_options","description":"List the values an event trigger can filter on for one connected provider — Slack channels, GitHub repositories, Linear teams and projects, Sentry projects, Notion data sources, Gmail labels and people. Call this before writing a {mode:'list', ids:[...]} scope in automations_create or automations_update: those ids are provider ids, and a name will not match. Each list comes back keyed by name, and a list is empty both when the organization has not connected that provider and when the lookup failed (a revoked token, or the provider being down) — so treat empty as unknown and ask the user to check the connection rather than reporting it as not connected.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"group":{"type":"string","enum":["github","linear","sentry","microsoftTeams","google","notion","slack"],"description":"Provider option group. 'google' returns Gmail labels and people; 'microsoftTeams' is Teams."}},"required":["group"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"automations_run","description":"Dispatch an automation immediately, without waiting for a schedule or event. Returns the new run ID; does not wait for completion. Use automations_logs to track progress.","annotations":{"destructiveHint":false},"inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Automation UUID."}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"automations_logs","description":"List recent runs for an automation. Returns up to `limit` runs ordered newest-first. Caller must be the automation's owner.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"automationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Automation UUID."},"limit":{"default":20,"description":"Max runs to return. Default 20, max 100.","type":"integer","minimum":1,"maximum":100}},"required":["automationId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"workspaces_list","description":"List workspaces. Without hostId, the organization's cloud workspaces with their status ('provisioning', 'ready', 'failed') — use it to watch one created by workspaces_create reach 'ready'. With hostId, the workspaces on that host (see hosts_list), including the host-served projectName; use this to find a workspace ID for automations_create's v2WorkspaceId.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"hostId":{"description":"Host machineId to query (see `hosts_list`). Omit to list cloud workspaces (accounts with cloud workspaces only).","type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"workspaces_create","description":"Create a workspace. Without hostId it is a cloud workspace: it starts from `environment` (by id — a create without one, when several exist, fails listing the ids; its repositories are the checkouts; required when several environments have repositories), runs on Paradev's infrastructure so it keeps going when the user's laptop sleeps, and returns as soon as its row exists in status 'provisioning' — poll workspaces_list until it is 'ready'. It bills until deleted, so call workspaces_delete when the work is done. A cloud workspace takes `name`, `branch`, `machineSize` and at most one entry in `agents` (claude or codex); host-only fields are rejected. With hostId it is created on that host (see projects_list and hosts_list): use `checkout: local` to share the project checkout without switching branches, or omit checkout for an isolated worktree with a branch or PR; omit `projectId` (and `branch`/`pr`/`baseBranch`/`taskId`) for a project-less session. `agents` spawns agents once the workspace is ready (the equivalent of agents_create) and `command` runs a one-off shell command.","annotations":{"destructiveHint":false},"inputSchema":{"type":"object","properties":{"checkout":{"description":"Where files live. Local shares the project checkout; worktree creates an isolated checkout.","type":"string","enum":["worktree","local"]},"projectId":{"description":"Project UUID. Omit to create a project-less session (managed scratch folder).","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"description":"Workspace name. Required on a host; a cloud workspace without one is named from its agent's prompt.","type":"string","minLength":1},"environment":{"description":"Cloud only: id of the environment the workspace starts from. Required when several environments have repositories.","type":"string","minLength":1},"machineSize":{"description":"Cloud only: size of the machine. `small` (2 vCPU, 4 GB) for light work such as triage, review or answering questions; `medium` (4 vCPU, 8 GB) for most coding work and the default; `large` (8 vCPU, 16 GB) for big builds, large test suites or heavy compiles. `xlarge` and `2xlarge` only where the organization's plan includes them.","type":"string","enum":["small","medium","large","xlarge","2xlarge"]},"branch":{"description":"Git branch the workspace tracks. Omit for a local checkout.","type":"string","minLength":1},"pr":{"description":"Pull request number — server checks out the verified PR head and derives the branch.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"baseBranch":{"description":"Branch to fork from when `branch` does not exist (defaults to project default). Ignored when `pr` is set.","type":"string"},"hostId":{"description":"Host machineId to create the workspace on. Omit for a cloud workspace (accounts with cloud workspaces only).","type":"string","minLength":1},"taskId":{"description":"Optional Paradev task id to link to the new workspace.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"agents":{"description":"Agents to spawn in the workspace immediately after creation.","type":"array","items":{"type":"object","properties":{"agent":{"type":"string","minLength":1,"description":"Agent preset id (e.g. `claude`, `codex`, `superset`) or HostAgentConfig instance UUID."},"prompt":{"type":"string","minLength":1,"description":"Initial prompt the agent starts with."},"model":{"description":"Model for this launch. Supported values depend on the agent; omit to use its default.","type":"string","minLength":1},"effort":{"description":"Reasoning effort for this launch. Supported values depend on the agent; omit to use its default.","type":"string","minLength":1},"attachmentIds":{"description":"Host-scoped attachment UUIDs. The host resolves these to absolute paths and appends them to the prompt.","type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["agent","prompt"]}},"command":{"description":"Shell command to run in the new worktree after creation.","type":"string","minLength":1}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"workspaces_update","description":"Rename a cloud workspace (omit hostId), or rename or retag a workspace on a host (see hosts_list / workspaces_list for the hostId). Tags exist only on host workspaces.","annotations":{"destructiveHint":false,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"hostId":{"description":"Host machineId the workspace lives on. Omit for a cloud workspace (accounts with cloud workspaces only).","type":"string","minLength":1},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Workspace UUID."},"name":{"description":"New workspace name.","type":"string","minLength":1},"tags":{"description":"Full replacement of the workspace's tag set. Tags are plain strings, normalized to trimmed lowercase; each tag surfaces as a sidebar folder.","type":"array","items":{"type":"string"}}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"workspaces_delete","description":"Delete a workspace by UUID. Without hostId it is a cloud workspace: its sandbox is torn down, which is what stops it billing (nothing else does, including leaving it idle), and everything inside is destroyed, so push or save work first; returns { deleted: false } when no such workspace exists. With hostId, the host runs the project's teardown script (.superset/config.json teardown commands or .superset/teardown.sh, if configured), then removes the git worktree; a teardown failure does not block the delete and is reported in `warnings`, and 'main'-type workspaces cannot be deleted. `found: false` means the host has no workspace with that id and nothing was deleted (hosts older than this field omit it).","annotations":{"destructiveHint":true},"inputSchema":{"type":"object","properties":{"hostId":{"description":"Host machineId the workspace lives on. Omit for a cloud workspace (accounts with cloud workspaces only).","type":"string","minLength":1},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Workspace UUID."}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"agents_create","description":"Create (launch) an agent session inside an existing workspace on its host: runs the named agent preset (or HostAgentConfig instance) with the given prompt in a fresh terminal session. Omit hostId for a cloud workspace; for a host workspace, use hosts_list / workspaces_list to find the hostId. Use this to start a second agent in a workspace that already exists; for create-and-spawn in a single call, pass `agents` to workspaces_create instead.","annotations":{"destructiveHint":false},"inputSchema":{"type":"object","properties":{"hostId":{"description":"Host machineId the workspace lives on. Omit for a cloud workspace (accounts with cloud workspaces only).","type":"string","minLength":1},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Workspace UUID to run the agent in."},"agent":{"type":"string","minLength":1,"description":"Agent preset id (e.g. `claude`, `codex`, `superset`) or HostAgentConfig instance UUID."},"prompt":{"description":"Prompt sent to the agent. Required unless resumeSessionId is provided.","type":"string"},"model":{"description":"Model for this launch. Supported values depend on the agent; omit to use its default.","type":"string","minLength":1},"effort":{"description":"Reasoning effort for this launch. Supported values depend on the agent; omit to use its default.","type":"string","minLength":1},"resumeSessionId":{"description":"The agent CLI's own session id to restore instead of starting fresh (e.g. `claude --resume <id>`). NOT the `sessionId` this tool returns — that is a Paradev terminal id. Use the id the agent reported (e.g. from the agent's own session list). Fails for agents without an id-based resume.","type":"string","minLength":1},"attachmentIds":{"description":"Host-scoped attachment UUIDs. The host resolves these to absolute paths and appends them to the prompt.","type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["workspaceId","agent"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"agents_list","description":"List terminal-agent instances configured on a host (the rows in Settings → Agents on that machine). Returns each row with its instance UUID, presetId, label, command, args, and env. Use to find an `agent` value for `agents_create` or to confirm what's installed before launching.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"hostId":{"type":"string","minLength":1,"description":"Host machineId to query. See `hosts_list` to enumerate accessible hosts."}},"required":["hostId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"terminals_create","description":"Create a terminal session in an existing workspace on its host: opens a fresh PTY in the worktree. Omit hostId for a cloud workspace; for a host workspace, use hosts_list / workspaces_list to find the hostId. Pass `command` to run a one-off shell command, or omit it to open an interactive shell. For create-and-run in a single call, pass `command` to workspaces_create instead.","annotations":{"destructiveHint":false},"inputSchema":{"type":"object","properties":{"hostId":{"description":"Host machineId the workspace lives on. Omit for a cloud workspace (accounts with cloud workspaces only).","type":"string","minLength":1},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Workspace UUID to create the terminal in."},"command":{"description":"Shell command to run in the terminal. Omit to open an interactive shell.","type":"string","minLength":1},"cwd":{"description":"Working directory for the terminal (defaults to the worktree).","type":"string"}},"required":["workspaceId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"terminals_list","description":"List the live terminal sessions in a workspace (ids, titles, attach state). Use to discover a terminalId to terminals_send/terminals_read/terminals_close against when you didn't keep the one agents_create returned. Omit hostId for a cloud workspace; for a host workspace, use hosts_list / workspaces_list to find the hostId.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"hostId":{"description":"Host machineId the workspace lives on. Omit for a cloud workspace (accounts with cloud workspaces only).","type":"string","minLength":1},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Workspace UUID whose terminals to list."}},"required":["workspaceId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"terminals_send","description":"Send text to a terminal ALREADY running in a workspace — e.g. a follow-up prompt to a claude/codex agent — instead of spawning a new session. Targets the terminal by id (the value agents_create returned as `sessionId`, or terminals_create returned as `terminalId`). Use agents_create only to START an agent; use this for every message after. Multi-line text is delivered as a single paste, not separate submits.","annotations":{"destructiveHint":false},"inputSchema":{"type":"object","properties":{"hostId":{"description":"Host machineId the workspace lives on. Omit for a cloud workspace (accounts with cloud workspaces only).","type":"string","minLength":1},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Workspace UUID the terminal runs in."},"terminalId":{"type":"string","description":"Terminal id (the `sessionId` agents_create returned, or `terminalId` from terminals_create)."},"text":{"type":"string","minLength":1,"description":"Text to write into the terminal."},"submit":{"description":"Press Enter after the text. Default true.","type":"boolean"}},"required":["workspaceId","terminalId","text"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"terminals_read","description":"Read a terminal's current screen back as plain text — for a claude/codex agent this is the agent's rendered output, so use it to see the reply after terminals_send. Returns what is on screen now (plus recent scrollback), not a full transcript.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"hostId":{"description":"Host machineId the workspace lives on. Omit for a cloud workspace (accounts with cloud workspaces only).","type":"string","minLength":1},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Workspace UUID the terminal runs in."},"terminalId":{"type":"string","description":"Terminal id (the `sessionId` agents_create returned, or `terminalId` from terminals_create)."},"maxLines":{"description":"Cap returned rows from the bottom. Omit for the full snapshot.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["workspaceId","terminalId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"terminals_close","description":"Close (dispose) a terminal by id — kills the PTY and the agent running in it. Use to shut down an agent session you started; targets the terminal by id (the value agents_create returned as `sessionId`).","annotations":{"destructiveHint":true},"inputSchema":{"type":"object","properties":{"hostId":{"description":"Host machineId the workspace lives on. Omit for a cloud workspace (accounts with cloud workspaces only).","type":"string","minLength":1},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Workspace UUID the terminal runs in."},"terminalId":{"type":"string","description":"Terminal id (the `sessionId` agents_create returned, or `terminalId` from terminals_create)."}},"required":["workspaceId","terminalId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"pages_list","description":"List published pages in the active organization, newest-created first. A page is one self-contained HTML file published to a shareable URL. Returns only pages the caller may read: everything shared with the organization, plus the caller's own private ones. Use this to find a page's id or slug before calling any other pages_* tool. Ordering is by creation, so republishing a page does not move it. Results are paginated: pass `search` to narrow by title, slug or description, and when `nextCursor` comes back non-null pass it as `cursor` to get the next batch.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"workspaceId":{"description":"Only pages published from this workspace. Omit for every page in the organization.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"search":{"description":"Only pages whose title, slug or description contains this text, case-insensitive.","anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"limit":{"description":"How many pages to return, 1-200 (default 50).","anyOf":[{"type":"integer","minimum":1,"maximum":200},{"type":"null"}]},"scope":{"description":"`team` for pages shared with the organization, `mine` for the caller's private ones, `all` for both (default).","anyOf":[{"type":"string","enum":["all","team","mine","shared"]},{"type":"null"}]},"cursor":{"description":"The `nextCursor` string from a previous call, passed back unchanged, to fetch the next batch. Omit for the first batch. Treat it as opaque.","anyOf":[{"type":"string","maxLength":256},{"type":"null"}]}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"pages_get","description":"Show one published page's metadata: title, description, visibility, public URL, and which version is currently served. Does NOT return the page's HTML — use pages_pull for that. Address the page by id or by slug; exactly one is required.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"id":{"description":"Page UUID.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"slug":{"description":"Page slug, the last path segment of its public URL.","anyOf":[{"type":"string","minLength":1,"maxLength":120},{"type":"null"}]}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"pages_versions","description":"List a page's version history, newest first, with each version's label, size, and who published it. Every publish creates a new version; nothing is overwritten. Address the page by id or slug; exactly one is required.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"id":{"description":"Page UUID.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"slug":{"description":"Page slug.","anyOf":[{"type":"string","minLength":1,"maxLength":120},{"type":"null"}]}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"pages_pull","description":"Get a download URL for a published page's HTML, plus that version's metadata. Fetch the returned `downloadUrl` to read the bytes — this tool does not return the document itself. The URL is signed and expires after an hour, so fetch it promptly and never store it. Use this when you need to see what a page currently says before editing the source it was published from. Address the page by id or by slug; exactly one is required.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"id":{"description":"Page UUID.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"slug":{"description":"Page slug, the last path segment of its public URL.","anyOf":[{"type":"string","minLength":1,"maxLength":120},{"type":"null"}]},"version":{"description":"A specific version number. Omit for whichever version is currently served.","anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"pages_storage","description":"Read what viewers stored on a page through window.superset.storage. Each key holds one slot per person, or one private or shared value when scope is set. Without key, lists every key with its record count and last update. With key, returns every person's slot for that key: name, value, and updatedAt. With scope private, you see only your own value. On a just_me page only the creator can read storage; on an org or everyone page, members of the page's organization can, even when the page is public. Anyone else gets an error. Address the page by id or slug; exactly one is required.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"id":{"description":"Page UUID.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"slug":{"description":"Page slug.","anyOf":[{"type":"string","minLength":1,"maxLength":120},{"type":"null"}]},"key":{"description":"Storage key to read every person's slot for. Omit to list keys.","anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"scope":{"description":"slot (default): one value per person, everyone reads all. private: only you read it. shared: one value for everyone, last writer wins.","anyOf":[{"type":"string","enum":["slot","private","shared"]},{"type":"null"}]}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"pages_storage_set","description":"Store a JSON value on a page through window.superset.storage, as you. Use scope shared for data the page renders for everyone, like a dashboard an automation refreshes. Values are at most 64 KiB and a page holds at most 20 MiB. Address the page by id or slug; exactly one is required.","annotations":{"destructiveHint":true},"inputSchema":{"type":"object","properties":{"id":{"description":"Page UUID.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"slug":{"description":"Page slug.","anyOf":[{"type":"string","minLength":1,"maxLength":120},{"type":"null"}]},"key":{"type":"string","minLength":1,"maxLength":128},"value":{"description":"Any JSON value. Required; null stores null."},"scope":{"description":"slot (default): one value per person, everyone reads all. private: only you read it. shared: one value for everyone, last writer wins.","anyOf":[{"type":"string","enum":["slot","private","shared"]},{"type":"null"}]}},"required":["key","value"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"pages_storage_remove","description":"Remove your value under a key on a page's storage. For scope shared, removes the one shared value. Address the page by id or slug; exactly one is required.","annotations":{"destructiveHint":true},"inputSchema":{"type":"object","properties":{"id":{"description":"Page UUID.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"slug":{"description":"Page slug.","anyOf":[{"type":"string","minLength":1,"maxLength":120},{"type":"null"}]},"key":{"type":"string","minLength":1,"maxLength":128},"scope":{"description":"slot (default): one value per person, everyone reads all. private: only you read it. shared: one value for everyone, last writer wins.","anyOf":[{"type":"string","enum":["slot","private","shared"]},{"type":"null"}]}},"required":["key"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"pages_publish","description":"Publish an HTML document as a page and return its public URL. This is how a shareable HTML deliverable gets published in a Paradev workspace — prefer it over a Claude artifact whenever a teammate will open the result, since a page is listed in the organization, keeps version history, and takes pinned comments that come back to an agent. ALWAYS read the `superset:page` skill before calling this, whenever that skill is available to you — pages are served from their own origin under a strict content policy, and a document that ignores it looks correct locally and breaks silently once published: no network from script (fetch, XHR, and WebSockets are blocked — bake data into the document as a literal), no `eval` or `new Function` (several chart libraries rely on them and render nothing), and no external scripts or stylesheets (inline all CSS and JS). Images, video, and audio may load from remote hosts, though data: URIs keep the page whole offline. Storage (localStorage, cookies) works and is scoped to the page. A page is ONE self-contained file: pass the document itself in `html`, not a file path. A document over about 4 MB does not fit in a tool call: publish it with the CLI instead (`superset pages publish <path>`), which takes pages up to 16 MB. A call carrying `pageId`, or the same `workspaceId` and `entryPath` as before, adds a version to that page; any other call creates a new page. Keep the `id` this returns: passing it back as `pageId` is what adds a version to that page instead of publishing a second one the reader's existing link will not follow. Working in a workspace, pass `workspaceId` (from `$SUPERSET_WORKSPACE_ID`, or `superset workspaces list`) plus an `entryPath` naming where the page lives in it, and republishing the same path versions it for you. Outside a workspace — a chat session, for instance — omit both and rely on `pageId`.","annotations":{"destructiveHint":false},"inputSchema":{"type":"object","properties":{"html":{"type":"string","minLength":1,"description":"The complete HTML document, as text. Must be self-contained."},"filename":{"description":"Filename recorded for this version, e.g. `report.html`. Defaults to `page.html`.","anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}]},"pageId":{"description":"Publish a new version of this existing page. Omit to create a new page.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"description":"Page title. Defaults to the filename.","anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"description":{"description":"Short description shown alongside the page.","anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"label":{"description":"What changed in this version, shown in the version history. Display-only.","anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"visibility":{"description":"`org` (the default) lets anyone in the organization open it; `just_me` keeps it private to the publisher; `everyone` lets anyone with the link open it without signing in.","anyOf":[{"type":"string","enum":["just_me","org","everyone"]},{"type":"null"}]},"workspaceId":{"description":"The workspace this page belongs to. Pass it whenever you have one — it is how a later publish of the same `entryPath` becomes a version rather than a second page. Check `$SUPERSET_WORKSPACE_ID` before deciding you have none: every agent running in a Paradev terminal has it set, and leaving it out there is what turns the next republish into a second page. Otherwise run `superset workspaces list`. Omit it only when you are genuinely outside a workspace; the page is still created and still listed, and `pageId` is then the only way to version it.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"entryPath":{"description":"Where this page lives in the workspace, as a path relative to the workspace root, e.g. `reports/q3-pipeline.html`. Together with `workspaceId` it is the key a later publish reuses to add a version rather than minting a second page, so reuse the same value when updating. Pass both or neither.","anyOf":[{"type":"string","minLength":1,"maxLength":1024},{"type":"null"}]}},"required":["html"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"pages_comments_list","description":"List the comment threads left on a published page, oldest first, with every reply and whether the thread is resolved. A thread is anchored either to one element or to the page as a whole. When `anchorKind` is \"element\", `anchor.path` is a CSS selector path from <body> in the published HTML and `anchorText` is what that element contained when the comment was written; when it is \"page\", both are null and the comment is about the page rather than any one part of it. Use the returned thread ids with pages_comments_reply and pages_comments_resolve. Only threads a person has handed to an agent are returned, and those are the only ones you can reply to or resolve — a page whose comments nobody handed off comes back empty, which means there is nothing for you to do, not that something went wrong.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Page UUID. Find it with pages_list or pages_get."}},"required":["pageId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"pages_comments_reply","description":"Post a reply into an existing comment thread on a published page. Answer only the threads you were asked to address, and say what you actually changed — the reply is what the person who left the comment reads next. Reply before calling pages_comments_resolve, so closing the thread is not silent.","annotations":{"destructiveHint":false},"inputSchema":{"type":"object","properties":{"threadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Thread UUID, from pages_comments_list."},"body":{"type":"string","minLength":1,"maxLength":10000,"description":"The reply text."}},"required":["threadId","body"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"pages_comments_resolve","description":"Mark a comment thread on a published page resolved, or reopen one. Call pages_comments_reply first so the thread records what changed before it closes. Anyone who can read the page may resolve a thread — that is a statement about the page, not about the comment.","annotations":{"destructiveHint":false},"inputSchema":{"type":"object","properties":{"threadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Thread UUID, from pages_comments_list."},"resolved":{"default":true,"description":"True to resolve the thread, false to reopen it.","type":"boolean"}},"required":["threadId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"projects_list","description":"List projects set up on a host. A project is a checked-out repo; projects are host-owned — use hosts_list first to get the hostId. Use this to find a project's id before creating a workspace or scheduling an automation.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"hostId":{"type":"string","minLength":1,"description":"Host machineId to query. See `hosts_list` to enumerate accessible hosts."}},"required":["hostId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"hosts_list","description":"List the hosts (registered machines) the calling user has access to in the active organization. Use this to find a host's id before creating a workspace or scheduling an automation.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}}]}