Connect
MCP tools
Every tool the MCP server exposes, with its scope and inputs.
85 tools, read straight from the server’s registry. A token sees every tool, and may call the ones its scopes cover.
Work
projects_listreadprojects.readProducts in the workspace, newest first, with id, slug, stage and one-line summary. Filter with `stage` or `query` (name/slug). Other tools accept a product's name or slug wherever they take `projectId`, so you rarely need the id. For one product in depth use projects_get.
4 inputs
limitintegerrequired— Page size, 1-100.cursorstring— Pass next_cursor from the previous result to get the following page.stagestringquerystring— Part of a name or slug.
work_list_issuesreadwork.readIssues across the workspace, newest first. Filter by product (`projectId`: id, slug or name), `status`, `assignee` (a person's name/email/id, or "me") or `query` (title text). Epics are containers and are included. For one issue in full use work_get_issue; for a product's progress use project_status; for what is yours today use attention_today.
6 inputs
limitintegerrequired— Page size, 1-100.cursorstring— Pass next_cursor from the previous result to get the following page.projectIdstring— Product id, slug or name.statusstringassigneestring— Person name, email or id; "me" for yourself.querystring— Part of the title.
ideas_listreadideas.readThe idea inbox, newest first, with each idea's id, status and one-line problem. Filter by `status`. Read one idea in full with `fetch` (id "idea:<id>").
3 inputs
limitintegerrequired— Page size, 1-100.cursorstring— Pass next_cursor from the previous result to get the following page.statusstring
prototypes_listreadprototypes.readThe shelf: things being trialled before they earn a product. Each carries a goal, a status and the verdict of any trials run against it.
3 inputs
limitintegerrequired— Page size, 1-100.cursorstring— Pass next_cursor from the previous result to get the following page.statusstring
pages_listreadpages.readPages in the workspace, newest first. Pages are rich documents — headings, lists, tables, callouts — and can hang off a product, an idea, a prototype, a person, an issue or a requirement.
5 inputs
limitintegerrequired— Page size, 1-100.cursorstring— Pass next_cursor from the previous result to get the following page.querystringhoststringhostIdstring
pages_getreadpages.readOne page in full, with where it sits (parentId, subPages), what links to it (linkedFrom), whether it is locked and how many comment threads are open. Returns the editor's own block JSON by default, which is the same shape pages_create and pages_append accept — read a page before rewriting it. Ask for text instead if you only need to know what it says.
2 inputs
pageIdstringrequiredformatstringrequired
searchreadprojects.readFind products, ideas, work items, pages and your messages by text, ranked together. Each hit has a kind, id ("page:ckx…"), title, link and a snippet showing the match. Pass an id to `fetch` to read it. Narrow with `types` (e.g. ["issue","page"]). Searches only what this token may read; pages match on body text as well as title.
3 inputs
querystringrequiredlimitintegerrequiredtypesarray— Only these kinds of result.
fetchreadprojects.readRead something a search result pointed at, in full, as text. Takes the id from a `search` result — for example "page:ckx…". Pages come back as their whole text; use pages_get if you need the block JSON to edit.
1 input
idstringrequired
calendar_listreadcalendar.readMeetings between two times for the token's owner, optionally overlaying teammates. Teammates' private meetings come back as busy blocks with no title. Ranges up to 62 days.
3 inputs
fromstringrequired— ISO starttostringrequired— ISO endoverlayMemberIdsarray
calendar_eventreadcalendar.readOne meeting with guests, answers, links and notes — or only busy time, if the token's owner may not see it.
2 inputs
eventIdstringrequiredoccurrenceStartstring
calendar_peoplereadcalendar.readTeammates who can be invited or overlaid, with their time zones.
calendar_find_timereadcalendar.readStart times when the token's owner and every named teammate are within working hours and free. At most three weeks ahead per call.
4 inputs
memberIdsarrayrequireddurationMinutesintegerrequiredfromstringrequiredtostringrequired
atrix_whoamireadprojects.readStart here. Says who this token acts as (name, role, workspace), which scopes it holds, which groups of tools are usable and which are not — with the exact scope or permission that would unlock each missing group — plus plan limits and how much of the rate limit is left this minute. Works for every token. Use it to explain a refusal instead of retrying it.
projects_getreadprojects.readEverything about one product in a single call: stage, summary, pitch, team, work counts by status, overdue items, the latest feed updates, and links. `projectId` may be the id, the slug ("atrix-calendar") or the name. Use project_status for a progress/blockers/workload read; use work_list_issues to list the work itself.
1 input
projectIdstringrequired— Product id, slug or name.
work_get_issuereadwork.readOne piece of work in full: detail, status, priority, dates, assignee, parent epic or children, the last comments and the status history. `issueId` may be the id or the issue's title (add `projectId` to narrow a title that appears in several products). Use work_list_issues to browse; use this once you know which one.
2 inputs
issueIdstringrequired— Issue id, or its title (or part of it).projectIdstring— Product id, slug or name; narrows a title match.
attention_todayreadwork.readThe one call to open a day with: work of yours that is overdue or due this week, unread @mentions, products you are on that are drifting, what you are in the middle of, and today's meetings — all for the person behind this token. Each part appears only if the token may read it (work.read, feed.read, calendar.read) and the result lists what was left out. Same read model as the dashboard's "For you" and the phone's Today screen.
workspace_briefreadprojects.readHow the workspace is doing, in one call: the latest written weekly brief (headline, momentum, what is slipping, what to watch, next steps) plus a live snapshot — products by stage, open and overdue work, ideas by status, open pipeline count. Money is never included (counts only). Never generates a new brief; briefs are written on Mondays.
project_statusreadwork.readA status read on one product: percent complete, work by status, what is overdue, what is stuck (in review or in progress for over a week, or urgent and unassigned), what is due in the next 7 days, what finished this week, each epic's progress, and who is carrying how much. `projectId` may be the id, slug or name. Use projects_get for identity/team/updates instead.
1 input
projectIdstringrequired— Product id, slug or name.
ideas_createwriteideas.writeAdd an idea to the inbox. Capture is meant to be near-free — a title is enough, and the brief, evidence and decision trail are added later if it survives.
2 inputs
titlestringrequirednotestring
ideas_updatewriteideas.writeChange an idea's title, note or dials.
3 inputs
ideaIdstringrequiredtitlestringnotevalue
ideas_set_briefwriteideas.writeWrite one of an idea's brief fields: the problem, the riskiest assumption, or the cheapest test that would settle it.
3 inputs
ideaIdstringrequiredfieldstringrequiredvaluestringrequired
ideas_set_statuswriteideas.writeSet an idea's status. Parking or killing one needs a reason — that reason becomes a permanent entry in the decision trail, so write it for somebody reading it in a year.
3 inputs
ideaIdstringrequiredstatusstringrequiredreasonstring
ideas_add_signalwriteideas.writeAttach a piece of evidence for or against an idea — a conversation, a link, some data, an objection. Evidence is what an idea is judged on, so record what was actually observed rather than a conclusion drawn from it.
7 inputs
ideaIdstringrequiredkindstringrequireddirectionstringrequiredbodystringrequiredurlvaluesourcevalueoccurredOnstring
ideas_promotewriteideas.writeTurn an idea into a product. This counts against the workspace's product limit and cannot be undone from here. Returns the new product's link.
2 inputs
ideaIdstringrequiredconfirmbooleanrequired— Set only after the person has explicitly agreed to promote this idea. Do not set it on your own initiative.
work_create_issuewritework.writeCreate an issue in a product. `projectId` may be the product's id, slug or name; `parentId` (optional) an epic's id or title. Defaults: type TASK, status TODO, priority NORMAL. Dates are YYYY-MM-DD. Set `ifNotExists: true` when retrying or unsure whether it was already filed: an open issue in that product with the same title is returned instead of a duplicate. An EPIC is the founder's framing rather than an agent's, so this refuses to create one — open a STORY, TASK or BUG and set its parent instead. Returns { issueId, href }.
8 inputs
projectIdstringrequiredtitlestringrequireddueDatevalueprioritystringtypestringstatusstringparentIdvalueifNotExistsboolean
work_update_issuewritework.writeChange an issue's title and/or detail (use work_schedule_issue for priority and dates, work_set_issue_status for status, work_assign_issue for the assignee). `issueId` may be the id or the title. Only the fields you pass change.
3 inputs
titlestringdetailvalueissueIdstringrequired
work_set_issue_statuswritework.writeSet an issue's status (BACKLOG, TODO, IN_PROGRESS, IN_REVIEW, DONE, CANCELLED). `issueId` may be the id or the title. Moving to DONE records who closed it, which is not the same as who it was assigned to. To move many at once use work_bulk_update.
2 inputs
issueIdstringrequiredstatusstringrequired
work_schedule_issuewritework.writeSet an issue's start date, due date (YYYY-MM-DD; null clears) and/or priority (LOW, NORMAL, HIGH, URGENT). `issueId` may be the id or the title. A due date that passes is what the overdue sweep notices, so only set one somebody means to be held to.
4 inputs
issueIdstringrequireddueDatevaluestartDatevalueprioritystring
pages_createwritepages.writeCreate a page and write its first draft. The body is the editor's own block JSON — a ProseMirror document, `{ type: "doc", content: [ ...blocks ] }`. Blocks: paragraph, heading (attrs.level 1-3), bulletList/orderedList holding listItem, taskList holding taskItem (attrs.checked), blockquote, codeBlock, horizontalRule, callout (attrs.tone "note", "warn" or "good"; holds one or more blocks), and table holding tableRow holding tableHeader/tableCell. Text marks: bold, italic, strike, code, underline, highlight, and link (attrs.href, http/https/mailto only). An unknown type is refused and named. An unknown attribute is dropped and reported back in warnings. Optionally attach the page to something by passing host and hostId.
4 inputs
titlestringrequireddocobjectrequiredhoststringhostIdstring
pages_appendwritepages.writeAppend blocks to the end of a page. This merges with anybody editing that page right now rather than overwriting them — their cursor does not move and their words are not touched — so prefer it over pages_replace for every addition. Pass `blocks` as an array of top-level blocks, not a whole document. Blocks: paragraph, heading (attrs.level 1-3), bulletList/orderedList holding listItem, taskList holding taskItem (attrs.checked), blockquote, codeBlock, horizontalRule, callout (attrs.tone "note", "warn" or "good"; holds one or more blocks), and table holding tableRow holding tableHeader/tableCell. Text marks: bold, italic, strike, code, underline, highlight, and link (attrs.href, http/https/mailto only). An unknown type is refused and named. An unknown attribute is dropped and reported back in warnings.
2 inputs
pageIdstringrequiredblocksarrayrequired
pages_replacewritepages.writeReplace everything on a page. This discards what is there, including anything somebody typed in the last few seconds. Read the page with pages_get first, and prefer pages_append unless a rewrite is what was asked for. The previous contents become a version that can be restored from the page's history. Blocks: paragraph, heading (attrs.level 1-3), bulletList/orderedList holding listItem, taskList holding taskItem (attrs.checked), blockquote, codeBlock, horizontalRule, callout (attrs.tone "note", "warn" or "good"; holds one or more blocks), and table holding tableRow holding tableHeader/tableCell. Text marks: bold, italic, strike, code, underline, highlight, and link (attrs.href, http/https/mailto only). An unknown type is refused and named. An unknown attribute is dropped and reported back in warnings.
3 inputs
pageIdstringrequireddocobjectrequiredconfirmbooleanrequired— Set only after the person has explicitly agreed to overwrite this page's existing contents. Do not set it on your own initiative.
calendar_createwritecalendar.writeCreate a meeting organized by the token's owner. Teammates by member id get it on their calendar and a notification; guests by email get an invitation. Repeat with a preset or an RRULE.
21 inputs
titlestringrequireddescriptionvaluelocationvaluemeetingUrlvaluemeetingPlatformvaluestartsAtstringrequiredendsAtstringrequiredallDaybooleanrequiredtimeZonestringrepeatstringrequiredrrulevaluevisibilitystringrequiredstatusstringrequiredattendeeMemberIdsarrayrequiredguestEmailsarrayrequiredoptionalMemberIdsarrayrequiredremindersarrayrequireddealIdvaluecontactIdvalueprojectIdvalueapplicationIdvalue
calendar_updatewritecalendar.writeChange a meeting the token's owner organizes. For a repeating meeting pass occurrenceStart and scope: this, following or all.
24 inputs
titlestringdescriptionvaluelocationvaluemeetingUrlvaluemeetingPlatformvaluestartsAtstringendsAtstringallDaybooleantimeZonestringrepeatstringrrulevaluevisibilitystringstatusstringattendeeMemberIdsarrayguestEmailsarrayoptionalMemberIdsarrayremindersarraydealIdvaluecontactIdvalueprojectIdvalueapplicationIdvalueeventIdstringrequiredoccurrenceStartvaluescopestringrequired
calendar_cancelwritecalendar.writeCancel a meeting the token's owner organizes; guests are told. For a repeating meeting pass occurrenceStart and scope.
3 inputs
eventIdstringrequiredoccurrenceStartstringscopestring
calendar_respondwritecalendar.writeAccept, decline or tentatively accept a meeting the token's owner is invited to.
2 inputs
eventIdstringrequiredresponsestringrequired
calendar_noteswritecalendar.writeCreate (or return) the notes page for a meeting the token's owner is on, prefilled with time, attendees and agenda.
1 input
eventIdstringrequired
work_assign_issuewritework.writePut an issue on a person, hand it to the agent, or unassign it. `assignee` is a name, email or member id ("me" works), or "unassigned" / "agent". The new assignee is notified (and pushed to their phone) when it changes, so only assign when somebody means it. Putting work on someone else needs the account's work.assign permission.
3 inputs
issueIdstringrequired— Issue id, or its title.projectIdstring— Narrows a title match.assigneestringrequired— A person (name, email or id; "me" for yourself), or "unassigned", or "agent".
work_comment_issuewritework.writeAdd a comment to an issue. Plain text. The assignee is notified, and so is anybody whose name appears after an @ in the body. `issueId` may be the id or the title. Comments cannot be edited or removed from here.
3 inputs
issueIdstringrequired— Issue id, or its title.projectIdstring— Narrows a title match.bodystringrequired
work_bulk_updatewritework.writeApply one change (status, priority, due date and/or assignee) to up to 50 issues. Issues may be ids or titles. Use `dryRun: true` first to see exactly what would change without changing anything. A real run over more than 10 issues also needs `confirm: true`, because it can notify several people at once; set it only after the person agreed. Issues outside this workspace are ignored and never reported.
8 inputs
issueIdsarrayrequiredprojectIdstring— Narrows title matches.statusstringprioritystringdueDatevalue— YYYY-MM-DD, or null to clear.assigneestring— A person (name, email or id; "me" for yourself), or "unassigned", or "agent".dryRunbooleanrequiredconfirmboolean
time_list_minereadtime.readYour own running timer and your own time entries between two dates (default: the last 7 days, max 31). Only ever the token owner's time: never rates, costs or other people's entries.
2 inputs
fromstring— YYYY-MM-DDtostring— YYYY-MM-DD
time_start_timerwritetime.writeStart your timer, optionally on a product and/or issue. A timer already running is stopped first and saved. Acts only on the token owner's own time.
3 inputs
projectIdstring— Product id, slug or name.issueIdstring— Issue id or title; its product is used.notestring
time_stop_timerwritetime.writeStop your running timer and save it as a time entry (split at midnight in your timezone; workspace rounding applies). Errors if none is running. Acts only on the token owner's own time.
time_logwritetime.writeLog time you already worked: a duration in minutes on a day (YYYY-MM-DD, not in the future), optionally from a start time (HH:MM, your timezone), on a product and/or issue. Refused if that week is submitted or approved. Acts only on the token owner's own time.
6 inputs
datestringrequired— YYYY-MM-DDminutesintegerrequiredstartstring— HH:MMprojectIdstring— Product id, slug or name.issueIdstring— Issue id or title; its product is used.notestring
goals_listreadgoals.readObjectives (company, team, personal) whose period overlaps a window (default: the current quarter), with owner, status, rolled-up progress 0-100, key result count and whether a check-in is due. Only goals you may see: other people's private goals are never returned. Key results, check-in notes and deal amounts come from goals_get.
4 inputs
fromstring— YYYY-MM-DD, window start (default: start of this quarter)tostring— YYYY-MM-DD, window end (default: end of this quarter)mineboolean— Only goals you own.statusstring
goals_getreadgoals.readOne goal you may see: description, key results with progress (current/target numbers; deal amounts are withheld, percentage only, unless you hold the deal value permission), recent check-ins with notes, the goals above and below it and linked products and issues. A private goal that is not yours is reported as not available.
1 input
goalIdstringrequired
goals_check_inwritegoals.writePost a check-in on a goal as you: its status, a note and, optionally, new current values for its manual key results. Only the goal's owner (or a workspace admin) may; anyone else gets the app's own refusal. Key results fed by issues, deals or hiring cannot be set by hand. Does not create, edit or delete goals.
4 inputs
goalIdstringrequiredstatusstringrequirednotestringrequiredvaluesarray— New current value per manual key result.
roadmap_listreadroadmap.readThe roadmap: initiatives (status, dates, owner, linked product ids, issue counts done/total) and milestones (product, due date, status, owner). Optionally only those overlapping a date window or with one status. Read only; whether an item is shown on the public changelog page or to clients is not returned.
3 inputs
fromstring— YYYY-MM-DDtostring— YYYY-MM-DDstatusstring
changelog_listreadroadmap.readThe workspace's changelog posts, newest edit first, with status (DRAFT, SCHEDULED, PUBLISHED), tags, product, scheduled and published times and whether subscribers were emailed. Read only: post bodies, subscribers and the public page settings are not returned, and nothing can be published, scheduled or emailed from here.
2 inputs
statusstringlimitinteger— Default 50.
expenses_list_minereadexpenses.readYour own expense claims with status and totals, for expenses dated between two days (default: the last 30 days, max 92). Only ever the token owner's claims; no receipts, no one else's.
2 inputs
fromstring— YYYY-MM-DDtostring— YYYY-MM-DD
expenses_submitwriteexpenses.writeAdd an expense for yourself and send it for approval. Amount is in major units (12.50). Receipts cannot be attached over MCP: if the workspace requires one for this amount (see expenses_list_mine receiptRequiredAboveMinor) the expense is saved as a DRAFT with submitted=false, and you attach the receipt and send it in the app. If you already have an open draft in that currency with other expenses, it is added there and NOT sent, so you never send something unseen. Acts only on the token owner's own claims.
6 inputs
datestringrequired— YYYY-MM-DD, the day you paidamountnumberrequired— Major units, e.g. 12.50currencystringrequired— Three-letter code, e.g. USDcategorystringrequiredmerchantstringrequirednotestring
expenses_delete_draft_minewriteexpenses.writeDelete one of your own DRAFT expense claims (and the expenses in it). Refuses anything already sent, approved or paid, and anyone else's. Cannot be undone.
1 input
claimIdstringrequired
Customers
crm_list_dealsreadcrm.readDeals in the pipeline. Amounts are included only if this token holds the crm.value scope AND the account behind it may see deal values; otherwise every deal is returned with its amount omitted.
3 inputs
limitintegerrequired— Page size, 1-100.cursorstring— Pass next_cursor from the previous result to get the following page.stagestring
crm_create_companywritecrm.writeAdd a company we might sell to. Adding one that already exists at the same domain returns the existing record rather than making a duplicate.
3 inputs
namestringrequiredwebsitevaluenotevalue
crm_create_contactwritecrm.writeAdd a person at a company. Contacts are customers, never teammates.
6 inputs
namestringrequiredemailvaluephonevaluetitlevaluecompanyIdvaluenotevalue
crm_create_dealwritecrm.writeOpen an opportunity. Setting an amount needs the crm.value scope as well; without it the deal is created unpriced rather than refused, and the rest of what you gave is kept.
11 inputs
titlestringrequiredstagestringrequiredamountvaluecurrencystringrequiredexpectedCloseOnvaluecompanyIdvaluecontactIdvalueownerIdvalueprojectIdvalueideaIdvalueprototypeIdvalue
crm_update_dealwritecrm.writeChange a deal's title, close date or links. Without the crm.value scope the amount is left exactly as it was — it cannot be changed and, importantly, cannot be cleared by omitting it.
12 inputs
titlestringrequiredstagestringrequiredamountvaluecurrencystringrequiredexpectedCloseOnvaluecompanyIdvaluecontactIdvalueownerIdvalueprojectIdvalueideaIdvalueprototypeIdvaluedealIdstringrequired
crm_move_dealwritecrm.writeMove a deal to another stage. Marking one lost needs a reason, and that reason is kept as a note on the deal — write it for somebody reading it next quarter.
3 inputs
dealIdstringrequiredstagestringrequiredreasonvalue
crm_add_deal_notewritecrm.writeAppend a note. Notes are append-only — there is no way to edit or remove one.
2 inputs
dealIdstringrequiredbodystringrequired
invoices_listreadinvoices.readInvoices and quotes, newest first, with number, customer, status, currency, totals and due date. Filter by kind, status, customer and issue-date range. Never payment links, bank details, tax ids or payment records. Needs the account to hold finance.manage.
6 inputs
kindstringstatusstringcustomerstring— Customer id, or part of its name.fromstring— Issued on or after, YYYY-MM-DD.tostring— Issued on or before, YYYY-MM-DD.limitinteger— Default 50.
invoices_getreadinvoices.readOne invoice or quote with line items and totals. Never the public link, payment trail, bank details, the client's email, address or tax id. Needs the account to hold finance.manage.
1 input
idstringrequired
invoices_create_draftwriteinvoices.writeCreate a DRAFT invoice or quote for an existing customer with line items (amounts in minor units, e.g. cents). A draft has no number and is never sent: a person numbers and sends it from the app. Currency defaults to the customer's last one or the workspace default. Needs the account to hold finance.manage.
9 inputs
kindstringrequiredcustomerstringrequired— Existing customer: id or exact name.linesarrayrequiredcurrencystringreferencestringdueDatestring— Invoices only.validUntilstring— Quotes only.notesstringtermsstring
People
workspace_overviewreadpeople.readThe workspace in numbers: name, plan, people, products, open issues and the scopes this token holds. Needs people.read — atrix_whoami works for every token and also says which tools are usable and why not.
people_listreadpeople.readWho is in this workspace and what they do (id, name, title, focus, role). Working profile only — employment records, contact details and pay are not here. To look someone up by name, or see workload, use people_find.
2 inputs
limitintegerrequired— Page size, 1-100.cursorstring— Pass next_cursor from the previous result to get the following page.
hiring_list_rolesreadhiring.readRoles this workspace is hiring for, with how many people have applied and how many sit at each stage (APPLIED, SCREENING, INTERVIEW, OFFER, HIRED, REJECTED, WITHDRAWN). Applications themselves are a candidate's personal data and are not returned here.
3 inputs
limitintegerrequired— Page size, 1-100.cursorstring— Pass next_cursor from the previous result to get the following page.statusstring
people_get_recordreadpeople.recordsOne person's employment record — start date, engagement and terms. Not pay: pay has its own scope and is not reachable from here at all.
1 input
memberIdstringrequired— Member id, or the person's name or email.
agreements_statusreadagreements.statusThe signing status of the team's agreements: whose paperwork, what kind, whether it is awaiting a signature, signed, expired or declined, and the dates. Never what an agreement says, the file, or a signing link. Only people whose records this account may see.
3 inputs
statestringmemberIdstring— Member id, or the person's name or email.limitintegerrequired
people_findreadpeople.readFind teammates by name, title or focus, with their open and overdue work. Use this to turn "Zara" into the member id other tools take — although most tools now accept the name directly. Omit `query` to list the whole team with workload. Returns the working profile only: no email, employment record or pay.
3 inputs
querystring— A name, or part of one: "zara", "Sam K". "me" returns you.limitintegerrequiredcursorstring— Pass next_cursor from the previous result to get the following page.
leave_balances_minereadleave.readYour own annual-leave balance for this year (entitled, carried in, used, pending, remaining), the leave types you can ask for, your own upcoming and pending requests, and who will be told about a new request. Only ever the token owner's own leave.
leave_out_todayreadleave.readNames of colleagues who are out of office today, as the app shows everyone. Names only: never the type of leave, a reason or the dates.
leave_requestwriteleave.writeAsk for leave for yourself. Counts working days (weekends and your holiday calendar are skipped), checks your balance and clashes, then submits. Pass dryRun:true to only preview: days, holidays, remaining balance, whether approval is needed. Your approvers are notified exactly as when you ask in the app. Always preview first and confirm dates with the person. Acts only on the token owner's own leave.
7 inputs
typestringrequired— Leave type key, e.g. ANNUAL, SICK, UNPAID, PARENTAL, OTHER (see leave_balances_mine).startstringrequiredendstringrequired— YYYY-MM-DD, not before startstartHalfboolean— Start with a half day (afternoon only).endHalfboolean— End with a half day (morning only).reasonstring— Shown to you and your approvers only.dryRunboolean— Preview without submitting.
leave_cancel_minewriteleave.writeCancel one of your own pending or approved leave requests (id from leave_balances_mine), while the app still allows it. Approvers are told as in the app. Cannot touch anyone else's request.
1 input
idstringrequired
policies_list_minereadpolicies.readThe workspace's published policies as every member sees them: title, version, the text, whether it applies to you, whether you have acknowledged the current version, and its due date. Only ever the token owner's own view: never who else acknowledged.
policies_acknowledgewritepolicies.writeAcknowledge the current version of one policy as yourself, confirming you have read and understood it. Pass the slug and the version from policies_list_mine; refused if it does not apply to you, is retired, or the version has changed. Acts only as the token owner.
4 inputs
slugstringrequiredversionintegerrequired— The version you read, from policies_list_mine.understoodbooleanrequired— Must be true: you have read and understood it.typedNamestring
Workspace
messages_list_conversationsreadmessages.readChannels and direct messages this account is already in. It cannot show a room it has not been added to, and it does not list the ones it cannot see.
2 inputs
limitintegerrequired— Page size, 1-100.cursorstring— Pass next_cursor from the previous result to get the following page.
integrations_listreadintegrations.readWhich repositories and services this workspace has connected, and whether each is still working. Credentials are never returned.
billing_overviewreadbilling.readThe workspace's plan, what it includes, and how much of it is used this period.
feed_listreadfeed.readRecent updates in the workspace, newest first. Filter to one product (`projectId`: id, slug or name), idea or prototype to see the conversation on that thing rather than everything.
5 inputs
limitintegerrequired— Page size, 1-100.cursorstring— Pass next_cursor from the previous result to get the following page.projectIdstring— Product id, slug or name.ideaIdstringprototypeIdstring
feed_post_updatewritefeed.postWrite an update to the workspace feed, optionally about a product (`projectId`: id, slug or name), an idea or a prototype — it then appears on that thing's own page as well. The body is plain text: line breaks are kept, markdown is not, so asterisks show up as asterisks. Writing somebody's name in it notifies them and pushes to their phone, so only name a person when the update is genuinely for them — pass `dryRun: true` first to see exactly who would be notified.
6 inputs
bodystringrequiredprojectIdvalueaboutIdeaIdvalueaboutPrototypeIdvaluedryRunboolean— Preview only: nothing is posted; returns who would be notified by name.ifNotExistsboolean— Skip if you already posted this exact text in the last 10 minutes (safe retry).
feed_commentwritefeed.postReply to a post. Plain text, same as an update. The post's author is notified, and so is anybody whose name appears in the body.
2 inputs
postIdstringrequiredbodystringrequired
ask_workspacereadask.readAsk a question in plain language and get a cited answer drawn from the workspace's pages, docs, tasks, updates, ideas and (if enabled) messages that this token may read. Honors the workspace's Ask settings and the token owner's permissions, and uses the workspace's AI allowance, so prefer a specific list/get tool when you already know what you need. Returns the answer text with [n] markers and the sources they cite. One question per call; no conversation memory.
1 input
questionstringrequired
pulse_reports_listreadpulse.readThe workspace's scheduled Pulse agents you can see (your own, plus workspace agents if you are an owner or admin): name, schedule, enabled, last run time and status, next run. Read-only; prompts are not returned. Read a report with pulse_report_latest.
pulse_report_latestreadpulse.readThe latest delivered report of one Pulse agent (by id or exact name), as the app shows it: run time, status and the report text. Preview runs are skipped. Never starts a run.
1 input
agentstringrequired— Agent id or name, from pulse_reports_list.
automations_listreadpulse.readThe workspace's automation rules: name, trigger, kinds of action, enabled, last run status and counts, and whether all automations are paused. Needs the settings permission, as the app does. Never returns filters, conditions, message bodies, webhook URLs or secrets, and never run summaries.
legal_entities_listreadentities.readThe workspace's contracting legal entities, default first: name, country, governing law, registration number, registered address and whether it is the default. Read only: no invoice payment details or tax ids, and nothing can be changed from here.
onboarding_checklist_minereadonboarding.readYour own onboarding checklist: each step with its owner (you, your manager or an admin), due date, done or overdue, plus progress. Only ever the token owner's own; nobody else's checklist, and no identity or bank details.