Docs

Cases

What it does

Cases keep a customer problem on the account it belongs to, so the outcome is something you can confirm instead of a note that disappears.

Open Cases (/cases). A case needs an account. A project is optional. You can open one from the board and mark it resolved. Outcomes are the committed results on a deal or a project. An agent can create and update an outcome. Setting it achieved files a human-only card (engagement_outcome_achieve). The agent cannot flip that itself.

The screen is a thin client over the case routes. Agents use the case and outcome tools and see the same rows.

MCP tools

ToolScopeRole
cases_listcases:readList. Filters: status, account_id, project_id, limit
case_createcases:writeOpen a case. account_id is required
case_updatecases:writeUpdate a case and link or unlink an outcome
outcomes_listengagement_outcomes:readList outcomes
outcome_createengagement_outcomes:writeCreate an outcome. Cannot set achieved
outcome_updateengagement_outcomes:writeUpdate fields. Does not confirm or achieve
outcome_confirmengagement_outcomes:writeconfirm, reject, or achieve. Achieved files a human-only card

HTTP endpoints

MethodPathRole
GET, POST/cockpit/api/casesList or create. Create requires title and account_id
GET, PATCH/cockpit/api/cases/:idRead or update, including status resolved
GET, POST/cockpit/api/cases/:id/outcomesOutcomes on the case

List filters: status, account_id, project_id, outcome_id, and q.

Permissions

Token scopes come from one permission-set layer. Case reads need cases:read. Case writes need cases:write. Outcomes use engagement_outcomes:read and engagement_outcomes:write. The screen uses the signed-in session.

Row access is RLS by creator. Admins see all rows. Members see their own.

Agent example

Call case_create with the account the issue belongs to.

{
  "tool": "case_create",
  "arguments": {
    "title": "Nightly load failed twice",
    "description": "The second run stopped on the same file.",
    "account_id": "account-1",
    "status": "open"
  }
}

Expected result: an open case on that account. cases_list with status open includes it. outcome_confirm with action achieve does not mark the outcome achieved. It files a pending card a person has to accept.

{
  "ok": true,
  "title": "Nightly load failed twice",
  "status": "open"
}