servers / ai-taskive-mcp
ai.taskive/mcp
communitystreamable_httpremotedestructive capablehealthy
AI-native project management + agent memory: tasks, sprints, risk, burnout, knowledge search.
01Tools · 98
How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.
| Tool | Risk | Side effects | Approval |
|---|---|---|---|
| get_task_risk Get Task Risk
Return cached risk score for a task.
Returns 200 with {risk_score, risk_level, risk_factors, summary, scored_at}
when risk has been computed.
Returns 202 with {status: "pending"} when risk_scored_at is NULL (ARQ job not yet run).
Returns 404 when task does not exist or does not belong to the caller's org.
SEC-01 (finding 7): org filter is the only tenant boundary (RLS is bypassed at runtime).
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| extract_tasks Extract Tasks
Extract tasks from pasted text (JSON body). MCP-usable.
D-07: returns extracted tasks for user review; DOES NOT persist anything.
Caller bulk-creates via POST /api/v1/tasks once user confirms.
Body schema: {text: "...", project_id: "..."} — application/json only.
Keeping this endpoint JSON-only fixes the FastAPI File/Body content-type conflict (CR-01)
and restores MCP usability (the upload variant is excluded from the mcp tag).
When project_id is provided, each extracted task is enriched with
suggested_assignee_id / suggested_assignee via a single batch assignment
call (best-effort — failure never blocks extraction) (CR-02).
Gates:
- require_entitlement("ai_features") → 402 for free-tier orgs (WR-03)
- @limiter.limit("10/minute") → 429 on abuse (WR-04)
Size guard: 50,000 char truncation applied before AI call (truncated flag in response).
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| extract_tasks_upload Extract Tasks Upload
Extract tasks from a file upload (multipart/form-data). NOT MCP-exposed (tags=["ai"]).
D-07: returns extracted tasks for user review; DOES NOT persist anything.
Caller bulk-creates via POST /api/v1/tasks once user confirms.
File field name: 'file'. Optional form field: 'project_id' (string UUID).
Accepted types: PDF, DOCX, TXT, MD — 10 MB max.
When project_id is provided, each extracted task is enriched with
suggested_assignee_id / suggested_assignee via a single batch assignment
call (best-effort — failure never blocks extraction) (CR-02).
Gates:
- require_entitlement("ai_features") → 402 for free-tier orgs (WR-03)
- @limiter.limit("10/minute") → 429 on abuse (WR-04)
Error responses:
- 413: file exceeds 10 MB limit
- 415: unsupported file type (also returned for legacy .doc / application/msword)
- 422: corrupt or password-protected file; or AI returned malformed output
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| get_my_burnout Get My Burnout
Return the caller's cached burnout signal. Allowed for any authenticated user.
Defaults to risk_level='none' when no row exists (e.g. brand-new user before first cron).
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
``` | read | false | unknown |
| get_team_burnout Get Team Burnout
Return burnout signals for all members of a team. PRIVACY GATE: role=team_lead+ only (Pitfall 7).
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| recompute_burnout Recompute Burnout
Admin-only: enqueue a one-off burnout recomputation for this org.
### Responses:
**202**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
``` | unknown | unknown | unknown |
| get_board_summary Get Board Summary
Return top-5 risky tasks for an AI sidebar 'board' context panel.
NO AI call — pure DB query against cached risk_score. Fast (<50ms).
SEC-01 (finding 8): org filter ensures only caller-org tasks are returned;
also neutralises the unvalidated project_id (foreign project → empty result).
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| create_project Create Project Route
PROJECT-01 / PRIV-01: Team Lead+ can create open/closed projects. Any org
member can create a project. Members lacking create_project:
- no team_id → forced visibility='private' (personal project, T-264-04)
- team_id supplied → normal team-scoped project (visibility='closed'),
validated against team_memberships (member must belong to the team)
Holders of create_project may choose open/closed/private explicitly;
open/closed still require a team_id (422 without one).
### Responses:
**201**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"name": "Name",
"organization_id": "Organization Id",
"visibility": "Visibility",
"created_at": "Created At",
"agile_mode": true
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"team_id": {
"title": "Team Id"
},
"visibility": {
"type": "string",
"title": "Visibility"
},
"archived_at": {
"title": "Archived At"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"agile_mode": {
"type": "boolean",
"title": "Agile Mode",
"default": false
},
"template_id": {
"title": "Template Id"
},
"created_by": {
"title": "Created By"
}
},
"type": "object",
"required": [
"id",
"name",
"organization_id",
"team_id",
"visibility",
"archived_at",
"created_at"
],
"title": "ProjectOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| list_projects List Projects
PROJECT-05: List projects visible to the calling user.
Admin/owner: see all projects (including closed).
Others: see open projects + closed projects where they are in the team.
Default: exclude archived projects. Pass include_archived=true to include them.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
[
{
"id": "Id",
"name": "Name",
"organization_id": "Organization Id",
"visibility": "Visibility",
"created_at": "Created At",
"agile_mode": true
}
]
```
**Output Schema:** Array of items with the following structure:
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"team_id": {
"title": "Team Id"
},
"visibility": {
"type": "string",
"title": "Visibility"
},
"archived_at": {
"title": "Archived At"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"agile_mode": {
"type": "boolean",
"title": "Agile Mode",
"default": false
},
"template_id": {
"title": "Template Id"
},
"created_by": {
"title": "Created By"
}
},
"type": "object",
"required": [
"id",
"name",
"organization_id",
"team_id",
"visibility",
"archived_at",
"created_at"
],
"title": "ProjectOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| get_project Get Project
Get a single project by ID. Required by board page (BOARD-01 through BOARD-04).
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"name": "Name",
"organization_id": "Organization Id",
"visibility": "Visibility",
"created_at": "Created At",
"agile_mode": true
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"team_id": {
"title": "Team Id"
},
"visibility": {
"type": "string",
"title": "Visibility"
},
"archived_at": {
"title": "Archived At"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"agile_mode": {
"type": "boolean",
"title": "Agile Mode",
"default": false
},
"template_id": {
"title": "Template Id"
},
"created_by": {
"title": "Created By"
}
},
"type": "object",
"required": [
"id",
"name",
"organization_id",
"team_id",
"visibility",
"archived_at",
"created_at"
],
"title": "ProjectOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| delete_project Delete Project
PROJECT-07: Permanent delete. Tasks and all child data cascade via FK constraints.
Multi-step confirmation is handled in the frontend (user must type project name).
The backend does not re-verify the name — trust the guard + org_id scope.
R2 attachment objects are orphaned (acceptable v1 behavior per CLAUDE.md constraints).
Creator of a private project may delete their own project (260714-264 UAT-2).
### Responses:
**204**: Successful Response (Success Response)
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | destructive | true | true |
| update_project_settings Update Project Settings
PROJECT-05: Update project name/visibility/team. Team Lead+ (org permission)
or the creator of a private project (creator-scoped bypass, 260714-264 UAT-2).
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"name": "Name",
"organization_id": "Organization Id",
"visibility": "Visibility",
"created_at": "Created At",
"agile_mode": true
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"team_id": {
"title": "Team Id"
},
"visibility": {
"type": "string",
"title": "Visibility"
},
"archived_at": {
"title": "Archived At"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"agile_mode": {
"type": "boolean",
"title": "Agile Mode",
"default": false
},
"template_id": {
"title": "Template Id"
},
"created_by": {
"title": "Created By"
}
},
"type": "object",
"required": [
"id",
"name",
"organization_id",
"team_id",
"visibility",
"archived_at",
"created_at"
],
"title": "ProjectOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| update_agile_settings Update Agile Settings
D-02: Toggle agile mode on/off. Team Lead+ or private-project creator. T-3.5-05.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"name": "Name",
"organization_id": "Organization Id",
"visibility": "Visibility",
"created_at": "Created At",
"agile_mode": true
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"team_id": {
"title": "Team Id"
},
"visibility": {
"type": "string",
"title": "Visibility"
},
"archived_at": {
"title": "Archived At"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"agile_mode": {
"type": "boolean",
"title": "Agile Mode",
"default": false
},
"template_id": {
"title": "Template Id"
},
"created_by": {
"title": "Created By"
}
},
"type": "object",
"required": [
"id",
"name",
"organization_id",
"team_id",
"visibility",
"archived_at",
"created_at"
],
"title": "ProjectOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| archive_project Archive Project
PROJECT-07: Soft-delete — sets archived_at to now(). Data preserved, hidden from sidebar.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | destructive | true | true |
| restore_project Restore Project
PROJECT-07: Restore an archived project — clears archived_at.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | unknown | unknown | unknown |
| list_assignable_members Get Assignable Members
PROJECT-06: Return the correct assignee candidates for this project.
Logic:
- If project has a team_id set (open OR closed): return team members only
- Private project (no team_id): return only the creator + explicit
project_members rows + org owner/admin — NOT the whole org (quick
260715-5lt Bug B; a private project's whole point is restricted visibility,
so the assignee picker must not leak every org member into it)
- Otherwise (open, no team): return all org members
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
[
{
"user_id": "User Id",
"email": "Email"
}
]
```
**Output Schema:** Array of items with the following structure:
```json
{
"properties": {
"user_id": {
"type": "string",
"title": "User Id"
},
"name": {
"title": "Name"
},
"avatar_url": {
"title": "Avatar Url"
},
"email": {
"type": "string",
"title": "Email"
}
},
"type": "object",
"required": [
"user_id",
"name",
"avatar_url",
"email"
],
"title": "AssignableMemberOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| list_workflow_states List Workflow States
PROJECT-02: List workflow states for a project.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
[
{
"id": "Id",
"name": "Name",
"color": "Color",
"position": 1,
"is_initial": true,
"is_terminal": true,
"is_work_start": true,
"is_work_end": true
}
]
```
**Output Schema:** Array of items with the following structure:
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"color": {
"type": "string",
"title": "Color"
},
"position": {
"type": "integer",
"title": "Position"
},
"is_initial": {
"type": "boolean",
"title": "Is Initial"
},
"is_terminal": {
"type": "boolean",
"title": "Is Terminal"
},
"wip_limit": {
"title": "Wip Limit"
},
"is_work_start": {
"type": "boolean",
"title": "Is Work Start"
},
"is_work_end": {
"type": "boolean",
"title": "Is Work End"
}
},
"type": "object",
"required": [
"id",
"name",
"color",
"position",
"is_initial",
"is_terminal",
"wip_limit",
"is_work_start",
"is_work_end"
],
"title": "WorkflowStateOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| get_pending_labels Get Pending Labels
Return AI-applied labels from Redis sentinel key if set (TTL 60s), else 204.
Redis key format: ai_labels:{org_id}:{task_id} — includes org_id to prevent cross-org probing.
Gate: get_tenant_context (not require_entitlement — user already created the task).
Security (T-6.5-pending-probe): verify task belongs to caller's org before reading Redis.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| bulk_assign Bulk Assign
Bulk AI assignment: one prompt per 10-task batch instead of 2 calls per task.
Assigns when skill_score >= 75. Cross-org guard: AI-returned user_ids filtered
through member_by_id — unknown IDs silently dropped.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| create_workflow_state Create Workflow State
PROJECT-02: Team Lead+ (or private-project creator) can add workflow states.
### Responses:
**201**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"name": "Name",
"color": "Color",
"position": 1,
"is_initial": true,
"is_terminal": true,
"is_work_start": true,
"is_work_end": true
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"color": {
"type": "string",
"title": "Color"
},
"position": {
"type": "integer",
"title": "Position"
},
"is_initial": {
"type": "boolean",
"title": "Is Initial"
},
"is_terminal": {
"type": "boolean",
"title": "Is Terminal"
},
"wip_limit": {
"title": "Wip Limit"
},
"is_work_start": {
"type": "boolean",
"title": "Is Work Start"
},
"is_work_end": {
"type": "boolean",
"title": "Is Work End"
}
},
"type": "object",
"required": [
"id",
"name",
"color",
"position",
"is_initial",
"is_terminal",
"wip_limit",
"is_work_start",
"is_work_end"
],
"title": "WorkflowStateOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| update_workflow_state Update Workflow State
PROJECT-02: Update workflow state name, color, WIP limit, position, terminal/initial flags.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"name": "Name",
"color": "Color",
"position": 1,
"is_initial": true,
"is_terminal": true,
"is_work_start": true,
"is_work_end": true
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"name": {
"type": "string",
"title": "Name"
},
"color": {
"type": "string",
"title": "Color"
},
"position": {
"type": "integer",
"title": "Position"
},
"is_initial": {
"type": "boolean",
"title": "Is Initial"
},
"is_terminal": {
"type": "boolean",
"title": "Is Terminal"
},
"wip_limit": {
"title": "Wip Limit"
},
"is_work_start": {
"type": "boolean",
"title": "Is Work Start"
},
"is_work_end": {
"type": "boolean",
"title": "Is Work End"
}
},
"type": "object",
"required": [
"id",
"name",
"color",
"position",
"is_initial",
"is_terminal",
"wip_limit",
"is_work_start",
"is_work_end"
],
"title": "WorkflowStateOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| delete_workflow_state Delete Workflow State
Delete workflow state — 409 if any tasks are in this state.
### Responses:
**204**: Successful Response (Success Response)
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | destructive | true | true |
| create_workflow_transition Create Transition
PROJECT-03: Define an allowed workflow transition.
### Responses:
**201**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| delete_workflow_transition Delete Transition
PROJECT-03: Remove an allowed workflow transition.
### Responses:
**204**: Successful Response (Success Response)
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | destructive | true | true |
| list_workflow_transitions List Workflow Transitions
PROJECT-08: List all workflow transitions for a project with state names and enforce_order flag.
Required by the Workflow settings page (Plan 10) to render transition matrix.
T-6.4-25: WHERE clause filters org + project to prevent cross-org leakage.
UAT-2 260714-264: this was the route that errored when a private-project
creator clicked Settings — require_permission('manage_workflow_states')
denied the member-creator. Now creator-scoped via _require_project_permission.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
[
{
"id": "Id",
"from_state_id": "From State Id",
"to_state_id": "To State Id",
"enforce_order": true
}
]
```
**Output Schema:** Array of items with the following structure:
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"from_state_id": {
"type": "string",
"title": "From State Id"
},
"to_state_id": {
"type": "string",
"title": "To State Id"
},
"from_state_name": {
"title": "From State Name"
},
"to_state_name": {
"title": "To State Name"
},
"enforce_order": {
"type": "boolean",
"title": "Enforce Order"
}
},
"type": "object",
"required": [
"id",
"from_state_id",
"to_state_id",
"from_state_name",
"to_state_name",
"enforce_order"
],
"title": "WorkflowTransitionOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| create_epic Create Epic
AGILE-02: Create an epic in a project. Any member can create.
### Responses:
**201**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"project_id": "Project Id",
"organization_id": "Organization Id",
"title": "Title",
"status": "Status",
"status_override": true,
"created_at": "Created At",
"updated_at": "Updated At",
"completion_pct": 1.0,
"task_count": 1,
"done_count": 1,
"tasks": [
{}
]
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"project_id": {
"type": "string",
"title": "Project Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"title": "Description"
},
"status": {
"type": "string",
"title": "Status"
},
"status_override": {
"type": "boolean",
"title": "Status Override"
},
"due_date": {
"title": "Due Date"
},
"created_by": {
"title": "Created By"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
},
"completion_pct": {
"type": "number",
"title": "Completion Pct"
},
"task_count": {
"type": "integer",
"title": "Task Count"
},
"done_count": {
"type": "integer",
"title": "Done Count"
},
"tasks": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array",
"title": "Tasks",
"default": []
}
},
"type": "object",
"required": [
"id",
"project_id",
"organization_id",
"title",
"description",
"status",
"status_override",
"due_date",
"created_by",
"created_at",
"updated_at",
"completion_pct",
"task_count",
"done_count"
],
"title": "EpicOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| list_epics List Epics
AGILE-02: List all epics in a project, ordered by creation date.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
[
{
"id": "Id",
"project_id": "Project Id",
"organization_id": "Organization Id",
"title": "Title",
"status": "Status",
"status_override": true,
"created_at": "Created At",
"updated_at": "Updated At",
"completion_pct": 1.0,
"task_count": 1,
"done_count": 1,
"tasks": [
{}
]
}
]
```
**Output Schema:** Array of items with the following structure:
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"project_id": {
"type": "string",
"title": "Project Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"title": "Description"
},
"status": {
"type": "string",
"title": "Status"
},
"status_override": {
"type": "boolean",
"title": "Status Override"
},
"due_date": {
"title": "Due Date"
},
"created_by": {
"title": "Created By"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
},
"completion_pct": {
"type": "number",
"title": "Completion Pct"
},
"task_count": {
"type": "integer",
"title": "Task Count"
},
"done_count": {
"type": "integer",
"title": "Done Count"
},
"tasks": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array",
"title": "Tasks",
"default": []
}
},
"type": "object",
"required": [
"id",
"project_id",
"organization_id",
"title",
"description",
"status",
"status_override",
"due_date",
"created_by",
"created_at",
"updated_at",
"completion_pct",
"task_count",
"done_count"
],
"title": "EpicOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| get_epic Get Epic
AGILE-02: Get a single epic with linked tasks and completion stats.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"project_id": "Project Id",
"organization_id": "Organization Id",
"title": "Title",
"status": "Status",
"status_override": true,
"created_at": "Created At",
"updated_at": "Updated At",
"completion_pct": 1.0,
"task_count": 1,
"done_count": 1,
"tasks": [
{}
]
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"project_id": {
"type": "string",
"title": "Project Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"title": "Description"
},
"status": {
"type": "string",
"title": "Status"
},
"status_override": {
"type": "boolean",
"title": "Status Override"
},
"due_date": {
"title": "Due Date"
},
"created_by": {
"title": "Created By"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
},
"completion_pct": {
"type": "number",
"title": "Completion Pct"
},
"task_count": {
"type": "integer",
"title": "Task Count"
},
"done_count": {
"type": "integer",
"title": "Done Count"
},
"tasks": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array",
"title": "Tasks",
"default": []
}
},
"type": "object",
"required": [
"id",
"project_id",
"organization_id",
"title",
"description",
"status",
"status_override",
"due_date",
"created_by",
"created_at",
"updated_at",
"completion_pct",
"task_count",
"done_count"
],
"title": "EpicOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| update_epic Update Epic
AGILE-02: Partially update an epic. Setting status triggers status_override=true (D-12).
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"project_id": "Project Id",
"organization_id": "Organization Id",
"title": "Title",
"status": "Status",
"status_override": true,
"created_at": "Created At",
"updated_at": "Updated At",
"completion_pct": 1.0,
"task_count": 1,
"done_count": 1,
"tasks": [
{}
]
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"project_id": {
"type": "string",
"title": "Project Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"title": "Description"
},
"status": {
"type": "string",
"title": "Status"
},
"status_override": {
"type": "boolean",
"title": "Status Override"
},
"due_date": {
"title": "Due Date"
},
"created_by": {
"title": "Created By"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
},
"completion_pct": {
"type": "number",
"title": "Completion Pct"
},
"task_count": {
"type": "integer",
"title": "Task Count"
},
"done_count": {
"type": "integer",
"title": "Done Count"
},
"tasks": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array",
"title": "Tasks",
"default": []
}
},
"type": "object",
"required": [
"id",
"project_id",
"organization_id",
"title",
"description",
"status",
"status_override",
"due_date",
"created_by",
"created_at",
"updated_at",
"completion_pct",
"task_count",
"done_count"
],
"title": "EpicOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| delete_epic Delete Epic
AGILE-02: Delete an epic. Any member can delete.
### Responses:
**204**: Successful Response (Success Response)
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | destructive | true | true |
| create_sprint Create Sprint
AGILE-03: Create a sprint in planning state. Any member can create.
### Responses:
**201**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"project_id": "Project Id",
"organization_id": "Organization Id",
"name": "Name",
"status": "Status",
"created_at": "Created At",
"updated_at": "Updated At"
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"project_id": {
"type": "string",
"title": "Project Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"name": {
"type": "string",
"title": "Name"
},
"goal": {
"title": "Goal"
},
"status": {
"type": "string",
"title": "Status"
},
"start_date": {
"title": "Start Date"
},
"end_date": {
"title": "End Date"
},
"completed_at": {
"title": "Completed At"
},
"velocity": {
"title": "Velocity"
},
"velocity_unit": {
"title": "Velocity Unit"
},
"carry_over_count": {
"title": "Carry Over Count"
},
"created_by": {
"title": "Created By"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
}
},
"type": "object",
"required": [
"id",
"project_id",
"organization_id",
"name",
"goal",
"status",
"start_date",
"end_date",
"completed_at",
"velocity",
"carry_over_count",
"created_by",
"created_at",
"updated_at"
],
"title": "SprintOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| list_sprints List Sprints
AGILE-03: List all sprints in a project, ordered by creation date.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
[
{
"id": "Id",
"project_id": "Project Id",
"organization_id": "Organization Id",
"name": "Name",
"status": "Status",
"created_at": "Created At",
"updated_at": "Updated At"
}
]
```
**Output Schema:** Array of items with the following structure:
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"project_id": {
"type": "string",
"title": "Project Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"name": {
"type": "string",
"title": "Name"
},
"goal": {
"title": "Goal"
},
"status": {
"type": "string",
"title": "Status"
},
"start_date": {
"title": "Start Date"
},
"end_date": {
"title": "End Date"
},
"completed_at": {
"title": "Completed At"
},
"velocity": {
"title": "Velocity"
},
"velocity_unit": {
"title": "Velocity Unit"
},
"carry_over_count": {
"title": "Carry Over Count"
},
"created_by": {
"title": "Created By"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
}
},
"type": "object",
"required": [
"id",
"project_id",
"organization_id",
"name",
"goal",
"status",
"start_date",
"end_date",
"completed_at",
"velocity",
"carry_over_count",
"created_by",
"created_at",
"updated_at"
],
"title": "SprintOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| get_sprint Get Sprint
AGILE-03: Get a single sprint.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"project_id": "Project Id",
"organization_id": "Organization Id",
"name": "Name",
"status": "Status",
"created_at": "Created At",
"updated_at": "Updated At"
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"project_id": {
"type": "string",
"title": "Project Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"name": {
"type": "string",
"title": "Name"
},
"goal": {
"title": "Goal"
},
"status": {
"type": "string",
"title": "Status"
},
"start_date": {
"title": "Start Date"
},
"end_date": {
"title": "End Date"
},
"completed_at": {
"title": "Completed At"
},
"velocity": {
"title": "Velocity"
},
"velocity_unit": {
"title": "Velocity Unit"
},
"carry_over_count": {
"title": "Carry Over Count"
},
"created_by": {
"title": "Created By"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
}
},
"type": "object",
"required": [
"id",
"project_id",
"organization_id",
"name",
"goal",
"status",
"start_date",
"end_date",
"completed_at",
"velocity",
"carry_over_count",
"created_by",
"created_at",
"updated_at"
],
"title": "SprintOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| update_sprint Update Sprint
AGILE-03: Partially update sprint metadata (name, goal, start_date, end_date). Any member.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"project_id": "Project Id",
"organization_id": "Organization Id",
"name": "Name",
"status": "Status",
"created_at": "Created At",
"updated_at": "Updated At"
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"project_id": {
"type": "string",
"title": "Project Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"name": {
"type": "string",
"title": "Name"
},
"goal": {
"title": "Goal"
},
"status": {
"type": "string",
"title": "Status"
},
"start_date": {
"title": "Start Date"
},
"end_date": {
"title": "End Date"
},
"completed_at": {
"title": "Completed At"
},
"velocity": {
"title": "Velocity"
},
"velocity_unit": {
"title": "Velocity Unit"
},
"carry_over_count": {
"title": "Carry Over Count"
},
"created_by": {
"title": "Created By"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
}
},
"type": "object",
"required": [
"id",
"project_id",
"organization_id",
"name",
"goal",
"status",
"start_date",
"end_date",
"completed_at",
"velocity",
"carry_over_count",
"created_by",
"created_at",
"updated_at"
],
"title": "SprintOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| update_workflow_transition Update Transition
PROJECT-08: Update enforce_order flag on a specific workflow transition.
T-6.4-15: WHERE clause includes project_id + organization_id to prevent
cross-project/cross-org transition updates; 404 returned if mismatch.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| list_field_schemas List Field Schemas
TASK-03: List custom field schemas for a project.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| delete_sprint Delete Sprint
AGILE-03: Delete a sprint. Team Lead+ only (D-15).
### Responses:
**204**: Successful Response (Success Response)
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | destructive | true | true |
| complete_sprint Complete Sprint
D-16, D-17, T-3.5-04: Atomic sprint completion.
SPR-04: incomplete (non-terminal) tasks are carried to a destination. Default
(no body / carry_to omitted) sends them to the backlog (sprint_id -> NULL,
backward compatible). A carry_to target is validated (T-0612-06: same org +
same project + not already completed) BEFORE any task move; when the target is
an ACTIVE sprint the moved tasks are logged as 'added' scope changes there.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"project_id": "Project Id",
"organization_id": "Organization Id",
"name": "Name",
"status": "Status",
"created_at": "Created At",
"updated_at": "Updated At"
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"project_id": {
"type": "string",
"title": "Project Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"name": {
"type": "string",
"title": "Name"
},
"goal": {
"title": "Goal"
},
"status": {
"type": "string",
"title": "Status"
},
"start_date": {
"title": "Start Date"
},
"end_date": {
"title": "End Date"
},
"completed_at": {
"title": "Completed At"
},
"velocity": {
"title": "Velocity"
},
"velocity_unit": {
"title": "Velocity Unit"
},
"carry_over_count": {
"title": "Carry Over Count"
},
"created_by": {
"title": "Created By"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
}
},
"type": "object",
"required": [
"id",
"project_id",
"organization_id",
"name",
"goal",
"status",
"start_date",
"end_date",
"completed_at",
"velocity",
"carry_over_count",
"created_by",
"created_at",
"updated_at"
],
"title": "SprintOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| get_sprint_burndown Get Burndown
D-18: Compute burndown from task completion timestamps at query time.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
[
{}
]
```
**Output Schema:** Array of items with the following structure:
```json
{
"type": "object",
"additionalProperties": true
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| get_sprint_report Get Sprint Report
SPR-03: committed-vs-completed-vs-added-vs-removed-vs-carried sprint report.
Aggregates three sources into a single org-scoped payload, each section carrying
BOTH a task_count and a points figure so the frontend picks its display unit via
the top-level `has_points` flag:
- committed: the baseline snapshot captured at start (sprints.committed_*).
- completed: current in-scope tasks in a TERMINAL workflow state.
- added / removed: sprint_scope_log rows for this sprint.
- carried: work that left the sprint incomplete (carry_over_count once completed,
else the live count of non-terminal in-scope tasks).
Any member may read (T-0612-07: counts/points only, never task bodies).
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{
"type": "object",
"additionalProperties": true,
"title": "Response Get Sprint Report"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| get_velocity_trend Get Velocity Trend
SPR-05: velocity trend for the project the given sprint belongs to (last N
completed sprints, chronological). Any member may read (T-0612-07).
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
[
{}
]
```
**Output Schema:** Array of items with the following structure:
```json
{
"type": "object",
"additionalProperties": true
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| get_project_velocity_trend Get Project Velocity Trend
SPR-05: velocity trend for a project (last N completed sprints, chronological).
Same payload as the sprint-scoped route; convenient for the project velocity chart.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
[
{}
]
```
**Output Schema:** Array of items with the following structure:
```json
{
"type": "object",
"additionalProperties": true
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| get_suggestions Get Suggestions
Return AI suggestions for a task (AI-10): missing dependencies, priority reorder, etc.
Content-hash cached: the LLM is only called when the task's title, description,
priority, due date, dependency counts, or retrieved context entries have changed.
RAG injection: top-k confirmed team knowledge entries are included as a delimited
data block (T-06.10-19: data, never instructions). Cited IDs returned for attribution.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| get_focus_mode Get Focus Mode
AI-06: ranked 'what to work on right now' list for the caller.
Content-hash cached: the LLM is only called when the user's task list
(priorities, risk scores, due dates) or retrieved org-wide context has changed.
RAG injection: top-3 org-wide confirmed knowledge entries injected as data block.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
``` | read | false | unknown |
| trigger_task_risk_score Trigger Single Task Risk Scoring
Enqueue risk scoring for a single task. Used by the task detail panel Score button.
SEC-02 (finding 20a): org filter prevents enqueuing score jobs on foreign tasks.
### Responses:
**202**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | unknown | unknown | unknown |
| trigger_board_risk_score Trigger Board Risk Scoring
CMD-03 /score handler: enqueue score_task_risk for every task on the given board.
SEC-02 (finding 20b): org filter ensures only caller-org tasks are enqueued;
early-return on empty list avoids an unnecessary Redis connection attempt.
### Responses:
**202**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| create_field_schema Create Field Schema
TASK-03: Create a custom field schema. Team Lead+ or private-project creator.
### Responses:
**201**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| list_project_members List Project Members
PRIV-03: List explicit access grants for a private project (plus the creator).
_assert_project_access gates visibility first — a non-member gets 404 before
any membership rows are exposed (T-264-01).
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
[
{
"user_id": "User Id",
"email": "Email",
"role": "Role"
}
]
```
**Output Schema:** Array of items with the following structure:
```json
{
"properties": {
"user_id": {
"type": "string",
"title": "User Id"
},
"name": {
"title": "Name"
},
"email": {
"type": "string",
"title": "Email"
},
"avatar_url": {
"title": "Avatar Url"
},
"role": {
"type": "string",
"title": "Role"
},
"added_by": {
"title": "Added By"
}
},
"type": "object",
"required": [
"user_id",
"name",
"email",
"avatar_url",
"role",
"added_by"
],
"title": "ProjectMemberOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| get_org_ai_config Get Org Ai Config
Pitfall 8: NEVER return plaintext api_key. Returns last4 of decrypted key for masking UI.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"model_name": "Model Name",
"key_configured": true
}
```
**Output Schema:**
```json
{
"properties": {
"model_name": {
"type": "string",
"title": "Model Name"
},
"key_configured": {
"type": "boolean",
"title": "Key Configured"
},
"key_last4": {
"title": "Key Last4"
}
},
"type": "object",
"required": [
"model_name",
"key_configured"
],
"title": "AIConfigOut"
}
``` | read | false | unknown |
| put_org_ai_config Put Org Ai Config
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"model_name": "Model Name",
"key_configured": true
}
```
**Output Schema:**
```json
{
"properties": {
"model_name": {
"type": "string",
"title": "Model Name"
},
"key_configured": {
"type": "boolean",
"title": "Key Configured"
},
"key_last4": {
"title": "Key Last4"
}
},
"type": "object",
"required": [
"model_name",
"key_configured"
],
"title": "AIConfigOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| add_project_member Add Project Member
PRIV-03: Grant an org user access to a private project.
Authorization: only the project's creator or admin/owner (T-264-02). Access
management is creator-scoped, not RBAC-gated — no new permission slug needed.
### Responses:
**201**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"user_id": "User Id",
"email": "Email",
"role": "Role"
}
```
**Output Schema:**
```json
{
"properties": {
"user_id": {
"type": "string",
"title": "User Id"
},
"name": {
"title": "Name"
},
"email": {
"type": "string",
"title": "Email"
},
"avatar_url": {
"title": "Avatar Url"
},
"role": {
"type": "string",
"title": "Role"
},
"added_by": {
"title": "Added By"
}
},
"type": "object",
"required": [
"user_id",
"name",
"email",
"avatar_url",
"role",
"added_by"
],
"title": "ProjectMemberOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| delete_org_ai_config Delete Org Ai Config
### Responses:
**204**: Successful Response (Success Response) | destructive | true | true |
| test_ai_connection Test Ai Connection Route
Fire a minimal ping call against the org's configured provider.
Delegates to ai_service.test_ai_connection() — NEVER calls acompletion directly here.
Returns 200 with success flag (does not raise on provider failure — surfaces error in body).
T-03-06-05: error string is sanitized in ai_service layer before reaching this handler.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
``` | read | false | unknown |
| get_ai_usage_summary Get Usage Summary
Aggregate ai_usage_log for last 30 days. Admin-only.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"calls": 1,
"prompt_tokens": 1,
"completion_tokens": 1,
"cost_usd": 1.0
}
```
**Output Schema:**
```json
{
"properties": {
"calls": {
"type": "integer",
"title": "Calls"
},
"prompt_tokens": {
"type": "integer",
"title": "Prompt Tokens"
},
"completion_tokens": {
"type": "integer",
"title": "Completion Tokens"
},
"cost_usd": {
"type": "number",
"title": "Cost Usd"
}
},
"type": "object",
"required": [
"calls",
"prompt_tokens",
"completion_tokens",
"cost_usd"
],
"title": "UsageSummaryOut"
}
``` | read | false | unknown |
| generate_dashboard Generate Dashboard
Generate an AI dashboard spec from a natural-language prompt.
Requires dynamic_dashboard entitlement (403 for free-tier orgs — T-6.3-02).
Validates DashboardSpec before INSERT — corrupt LLM output returns 422 (T-6.3-03).
Uses CAST(:spec AS jsonb) parameterized binding — no raw SQL interpolation (T-6.3-05).
System prompt is the module-level constant — user input strictly in role=user (T-6.3-06).
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"title": "Title",
"spec": {},
"created_at": "Created At"
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"title": {
"type": "string",
"title": "Title"
},
"spec": {
"additionalProperties": true,
"type": "object",
"title": "Spec"
},
"created_at": {
"type": "string",
"title": "Created At"
}
},
"type": "object",
"required": [
"id",
"title",
"spec",
"created_at"
],
"title": "DashboardGenerateOut",
"description": "Response from POST /ai/dashboard/generate and PATCH /ai/dashboard/{id}/refine."
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| start_sprint Start Sprint
AGILE-03: Transition sprint from planning → active. Team Lead+ only (D-15).
D-14: Multiple concurrent active sprints are allowed — no enforcement of one-at-a-time.
SPR-02: snapshots the committed scope into sprint_scope_log + committed_* columns,
atomically with the status transition.
SPR-06: emits sprint.started through the webhook + Slack + email pipeline post-commit.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"project_id": "Project Id",
"organization_id": "Organization Id",
"name": "Name",
"status": "Status",
"created_at": "Created At",
"updated_at": "Updated At"
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"project_id": {
"type": "string",
"title": "Project Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"name": {
"type": "string",
"title": "Name"
},
"goal": {
"title": "Goal"
},
"status": {
"type": "string",
"title": "Status"
},
"start_date": {
"title": "Start Date"
},
"end_date": {
"title": "End Date"
},
"completed_at": {
"title": "Completed At"
},
"velocity": {
"title": "Velocity"
},
"velocity_unit": {
"title": "Velocity Unit"
},
"carry_over_count": {
"title": "Carry Over Count"
},
"created_by": {
"title": "Created By"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
}
},
"type": "object",
"required": [
"id",
"project_id",
"organization_id",
"name",
"goal",
"status",
"start_date",
"end_date",
"completed_at",
"velocity",
"carry_over_count",
"created_by",
"created_at",
"updated_at"
],
"title": "SprintOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| reorder_backlog_task Reorder Backlog Task
P0-2: Place a backlog task immediately after another (null = move to top).
Fractional-rank strategy: midpoint of the two surrounding neighbors.
Any member can reorder the backlog (mirrors create_sprint/create_epic permission level).
Only operates on tasks with sprint_id IS NULL in an agile-mode project; org+project scoped.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{
"type": "object",
"additionalProperties": true,
"title": "Response Reorder Backlog Task"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | unknown | unknown | unknown |
| search_context Search the team knowledge base
Full-text search across tasks, comments, and agent_context entries.
Returns a ranked list of matching items from all three sources, filtered by what the
authenticated user can access (org scope + visibility).
Note: private agent_context entries are excluded from search results. Private entries
have encrypted bodies that are not searchable via FTS. Use list_context_entries to
browse your own private entries, or get_context_entry to retrieve a specific one by ID.
Parameters:
- q: search query (minimum 2 characters)
- project_id: optional UUID to scope search to a single project
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| get_project_memory Get a structured project memory bundle for AI context
Returns a structured JSON bundle with the project's current state:
decisions (last 30 days), blockers (high-risk tasks + unresolved blocking dependencies
scoped to this project), active work (current sprint or in-progress tasks), team context
entries, and a layer-by-layer knowledge count.
Pass ?synthesize=true to request an AI-generated prose narrative on top of the structured
data. This consumes AI tokens and requires AI to be configured for the org.
layers[tier].latest holds up to 3 most-recent entries for that tier (id, title, type,
created_at). The individual tier reflects only the caller's own private entries — no
cross-user leakage. Private entry bodies are not included in latest previews.
Note: only team/org visibility context entries are included in non-individual tiers;
private entries are excluded from org/team/project tiers.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| get_project_briefs Get pinned project briefs for MCP context injection
Returns all confirmed project_brief entries for a project.
MCP clients use this as a resource equivalent — call this before starting
project-scoped work to get pinned background context.
Only confirmed (status='confirmed') entries are returned.
Private entries are excluded (team/org visibility only).
Org-scoped: only entries belonging to the caller's organization are returned (T-06.10-24).
Note: this route acts as a resource equivalent in fastapi-mcp which exposes GET tools only.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| get_start_task_context Get prompt bundle for starting work on a task
Returns a structured bundle for beginning work on a task:
- task: metadata (title, description, priority, due_date, state, project)
- linked_context: top-3 confirmed knowledge entries from the project knowledge store
- active_blockers: tasks currently blocking this task that are not in a terminal state
MCP clients use this as a prompt equivalent for 'start work on task N' — one call
provides everything an AI agent needs to understand context before beginning work.
Tenant-scoped: only tasks in the caller's organization are accessible (T-06.10-24).
linked_context is empty when embeddings are unavailable — callers should handle this gracefully.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| update_context_entry Update a context entry
Update an existing context entry. Only the author can modify an entry.
Visibility changes are handled safely:
- private → team/org: body is decrypted before storing as plaintext
- team/org → private: body is encrypted before storing as ciphertext
- private → private with new body: body is re-encrypted
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"org_id": "Org Id",
"user_id": "User Id",
"visibility": "Visibility",
"type": "Type",
"title": "Title",
"body": "Body",
"metadata": {},
"created_at": "Created At",
"updated_at": "Updated At"
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"org_id": {
"type": "string",
"title": "Org Id"
},
"project_id": {
"title": "Project Id"
},
"user_id": {
"type": "string",
"title": "User Id"
},
"visibility": {
"type": "string",
"title": "Visibility"
},
"type": {
"type": "string",
"title": "Type"
},
"title": {
"type": "string",
"title": "Title"
},
"body": {
"type": "string",
"title": "Body"
},
"metadata": {
"additionalProperties": true,
"type": "object",
"title": "Metadata",
"default": {}
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
}
},
"type": "object",
"required": [
"id",
"org_id",
"project_id",
"user_id",
"visibility",
"type",
"title",
"body",
"created_at",
"updated_at"
],
"title": "ContextEntryOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| delete_context_entry Delete a context entry
Delete a context entry. Only the author can delete their entry.
Returns 204 No Content on success.
Returns 403 if the caller is not the entry owner.
Returns 404 if the entry does not exist in the caller's org.
### Responses:
**204**: Successful Response (Success Response)
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | destructive | true | true |
| remove_project_member Remove Project Member
PRIV-03: Revoke an org user's access to a private project.
Authorization: only the project's creator or admin/owner (T-264-02). Refuses
to remove the creator (409) — the creator always retains access.
### Responses:
**204**: Successful Response (Success Response)
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | destructive | true | true |
| delete_field_schema Delete Field Schema
TASK-03: Delete a custom field schema and all its values. Team Lead+ or private-project creator.
### Responses:
**204**: Successful Response (Success Response)
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | destructive | true | true |
| create_task Create Task
TASK-01: Create a task. Sets initial workflow state from project's initial state.
### Responses:
**201**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"organization_id": "Organization Id",
"title": "Title",
"priority": "Priority",
"labels": [
"string"
],
"created_at": "Created At",
"task_type": "Task Type",
"actual_hours_overridden": true
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"project_id": {
"title": "Project Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"title": "Description"
},
"assignee_id": {
"title": "Assignee Id"
},
"due_date": {
"title": "Due Date"
},
"priority": {
"type": "string",
"title": "Priority"
},
"current_state_id": {
"title": "Current State Id"
},
"labels": {
"items": {
"type": "string"
},
"type": "array",
"title": "Labels"
},
"parent_task_id": {
"title": "Parent Task Id"
},
"recurrence_rule": {
"title": "Recurrence Rule"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"risk_score": {
"title": "Risk Score"
},
"risk_level": {
"title": "Risk Level"
},
"risk_factors": {
"title": "Risk Factors"
},
"task_type": {
"type": "string",
"title": "Task Type",
"default": "task"
},
"task_number": {
"title": "Task Number"
},
"project_key": {
"title": "Project Key"
},
"start_date": {
"title": "Start Date"
},
"estimated_hours": {
"title": "Estimated Hours"
},
"actual_hours": {
"title": "Actual Hours"
},
"actual_hours_overridden": {
"type": "boolean",
"title": "Actual Hours Overridden",
"default": false
},
"bug_environment": {
"title": "Bug Environment"
},
"bug_app_version": {
"title": "Bug App Version"
},
"bug_steps_to_reproduce": {
"title": "Bug Steps To Reproduce"
},
"story_points": {
"title": "Story Points"
}
},
"type": "object",
"required": [
"id",
"organization_id",
"project_id",
"title",
"description",
"assignee_id",
"due_date",
"priority",
"current_state_id",
"labels",
"parent_task_id",
"recurrence_rule",
"created_at"
],
"title": "TaskOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| refine_dashboard Refine Dashboard
Refine an existing AI dashboard spec via iterative natural-language instructions.
Requires dynamic_dashboard entitlement (T-6.3-02 — same gate as generate).
Ownership enforced: creator can refine; non-creator requires manage_dashboards (T-6.3-04).
DASHBOARD_SYSTEM_PROMPT is module constant — user instructions strictly in role=user (T-6.3-06).
Uses CAST(:spec AS jsonb) parameterized binding (T-6.3-05).
Pydantic enforces refinement_instructions max_length=5 — 422 for >5 (AI-SPEC 4b.4).
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"title": "Title",
"spec": {},
"created_at": "Created At"
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"title": {
"type": "string",
"title": "Title"
},
"spec": {
"additionalProperties": true,
"type": "object",
"title": "Spec"
},
"created_at": {
"type": "string",
"title": "Created At"
}
},
"type": "object",
"required": [
"id",
"title",
"spec",
"created_at"
],
"title": "DashboardGenerateOut",
"description": "Response from POST /ai/dashboard/generate and PATCH /ai/dashboard/{id}/refine."
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | unknown | unknown | unknown |
| list_tasks List Tasks
TASK-01 + BOARD-02: List tasks for a project with sort and filter. Used by all board views.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
[
{
"id": "Id",
"organization_id": "Organization Id",
"title": "Title",
"priority": "Priority",
"labels": [
"string"
],
"created_at": "Created At",
"task_type": "Task Type",
"actual_hours_overridden": true
}
]
```
**Output Schema:** Array of items with the following structure:
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"project_id": {
"title": "Project Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"title": "Description"
},
"assignee_id": {
"title": "Assignee Id"
},
"due_date": {
"title": "Due Date"
},
"priority": {
"type": "string",
"title": "Priority"
},
"current_state_id": {
"title": "Current State Id"
},
"labels": {
"items": {
"type": "string"
},
"type": "array",
"title": "Labels"
},
"parent_task_id": {
"title": "Parent Task Id"
},
"recurrence_rule": {
"title": "Recurrence Rule"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"risk_score": {
"title": "Risk Score"
},
"risk_level": {
"title": "Risk Level"
},
"risk_factors": {
"title": "Risk Factors"
},
"task_type": {
"type": "string",
"title": "Task Type",
"default": "task"
},
"task_number": {
"title": "Task Number"
},
"project_key": {
"title": "Project Key"
},
"start_date": {
"title": "Start Date"
},
"estimated_hours": {
"title": "Estimated Hours"
},
"actual_hours": {
"title": "Actual Hours"
},
"actual_hours_overridden": {
"type": "boolean",
"title": "Actual Hours Overridden",
"default": false
},
"bug_environment": {
"title": "Bug Environment"
},
"bug_app_version": {
"title": "Bug App Version"
},
"bug_steps_to_reproduce": {
"title": "Bug Steps To Reproduce"
},
"story_points": {
"title": "Story Points"
}
},
"type": "object",
"required": [
"id",
"organization_id",
"project_id",
"title",
"description",
"assignee_id",
"due_date",
"priority",
"current_state_id",
"labels",
"parent_task_id",
"recurrence_rule",
"created_at"
],
"title": "TaskOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| suggest_assignment Suggest Assignment
Two-step AI assignment suggestion.
Step 1 (confirmed_skills=None): infers required skills from task title + description.
Returns {"inferred_skills": [...]}
Step 2 (confirmed_skills=[...]): ranks top-3 assignable members by skill match + workload signals.
Returns {"suggestions": [{user_id, name, avatar_url, match_reason, open_tasks, burnout_level}]}
Both steps require ai_features entitlement (402 for free-tier orgs).
T-6.5-cross-org: member list scoped to project's assignable set; AI-returned user_ids
filtered through member_by_id — unknown IDs silently dropped.
T-6.5-skill-inject: user input always placed in role=user; system prompts are module constants.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| list_my_tasks List My Tasks
MCP-first: list all tasks assigned to the authenticated token owner across all projects.
Calling 'list my tasks' via MCP automatically resolves to the token owner — no user_id needed.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
[
{
"id": "Id",
"organization_id": "Organization Id",
"title": "Title",
"priority": "Priority",
"labels": [
"string"
],
"created_at": "Created At",
"task_type": "Task Type",
"actual_hours_overridden": true
}
]
```
**Output Schema:** Array of items with the following structure:
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"project_id": {
"title": "Project Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"title": "Description"
},
"assignee_id": {
"title": "Assignee Id"
},
"due_date": {
"title": "Due Date"
},
"priority": {
"type": "string",
"title": "Priority"
},
"current_state_id": {
"title": "Current State Id"
},
"labels": {
"items": {
"type": "string"
},
"type": "array",
"title": "Labels"
},
"parent_task_id": {
"title": "Parent Task Id"
},
"recurrence_rule": {
"title": "Recurrence Rule"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"risk_score": {
"title": "Risk Score"
},
"risk_level": {
"title": "Risk Level"
},
"risk_factors": {
"title": "Risk Factors"
},
"task_type": {
"type": "string",
"title": "Task Type",
"default": "task"
},
"task_number": {
"title": "Task Number"
},
"project_key": {
"title": "Project Key"
},
"start_date": {
"title": "Start Date"
},
"estimated_hours": {
"title": "Estimated Hours"
},
"actual_hours": {
"title": "Actual Hours"
},
"actual_hours_overridden": {
"type": "boolean",
"title": "Actual Hours Overridden",
"default": false
},
"bug_environment": {
"title": "Bug Environment"
},
"bug_app_version": {
"title": "Bug App Version"
},
"bug_steps_to_reproduce": {
"title": "Bug Steps To Reproduce"
},
"story_points": {
"title": "Story Points"
}
},
"type": "object",
"required": [
"id",
"organization_id",
"project_id",
"title",
"description",
"assignee_id",
"due_date",
"priority",
"current_state_id",
"labels",
"parent_task_id",
"recurrence_rule",
"created_at"
],
"title": "TaskOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| get_task Get Task
TASK-01: Get a single task by ID.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"organization_id": "Organization Id",
"title": "Title",
"priority": "Priority",
"labels": [
"string"
],
"created_at": "Created At",
"task_type": "Task Type",
"actual_hours_overridden": true
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"project_id": {
"title": "Project Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"title": "Description"
},
"assignee_id": {
"title": "Assignee Id"
},
"due_date": {
"title": "Due Date"
},
"priority": {
"type": "string",
"title": "Priority"
},
"current_state_id": {
"title": "Current State Id"
},
"labels": {
"items": {
"type": "string"
},
"type": "array",
"title": "Labels"
},
"parent_task_id": {
"title": "Parent Task Id"
},
"recurrence_rule": {
"title": "Recurrence Rule"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"risk_score": {
"title": "Risk Score"
},
"risk_level": {
"title": "Risk Level"
},
"risk_factors": {
"title": "Risk Factors"
},
"task_type": {
"type": "string",
"title": "Task Type",
"default": "task"
},
"task_number": {
"title": "Task Number"
},
"project_key": {
"title": "Project Key"
},
"start_date": {
"title": "Start Date"
},
"estimated_hours": {
"title": "Estimated Hours"
},
"actual_hours": {
"title": "Actual Hours"
},
"actual_hours_overridden": {
"type": "boolean",
"title": "Actual Hours Overridden",
"default": false
},
"bug_environment": {
"title": "Bug Environment"
},
"bug_app_version": {
"title": "Bug App Version"
},
"bug_steps_to_reproduce": {
"title": "Bug Steps To Reproduce"
},
"story_points": {
"title": "Story Points"
}
},
"type": "object",
"required": [
"id",
"organization_id",
"project_id",
"title",
"description",
"assignee_id",
"due_date",
"priority",
"current_state_id",
"labels",
"parent_task_id",
"recurrence_rule",
"created_at"
],
"title": "TaskOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| update_task Update Task
TASK-01: Partial update. Fields: title, description, assignee_id, due_date, priority, labels, recurrence_rule, sprint_id, epic_id, task_type, start_date, estimated_hours, actual_hours, actual_hours_overridden, bug_environment, bug_app_version, bug_steps_to_reproduce, story_points.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"organization_id": "Organization Id",
"title": "Title",
"priority": "Priority",
"labels": [
"string"
],
"created_at": "Created At",
"task_type": "Task Type",
"actual_hours_overridden": true
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"project_id": {
"title": "Project Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"title": "Description"
},
"assignee_id": {
"title": "Assignee Id"
},
"due_date": {
"title": "Due Date"
},
"priority": {
"type": "string",
"title": "Priority"
},
"current_state_id": {
"title": "Current State Id"
},
"labels": {
"items": {
"type": "string"
},
"type": "array",
"title": "Labels"
},
"parent_task_id": {
"title": "Parent Task Id"
},
"recurrence_rule": {
"title": "Recurrence Rule"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"risk_score": {
"title": "Risk Score"
},
"risk_level": {
"title": "Risk Level"
},
"risk_factors": {
"title": "Risk Factors"
},
"task_type": {
"type": "string",
"title": "Task Type",
"default": "task"
},
"task_number": {
"title": "Task Number"
},
"project_key": {
"title": "Project Key"
},
"start_date": {
"title": "Start Date"
},
"estimated_hours": {
"title": "Estimated Hours"
},
"actual_hours": {
"title": "Actual Hours"
},
"actual_hours_overridden": {
"type": "boolean",
"title": "Actual Hours Overridden",
"default": false
},
"bug_environment": {
"title": "Bug Environment"
},
"bug_app_version": {
"title": "Bug App Version"
},
"bug_steps_to_reproduce": {
"title": "Bug Steps To Reproduce"
},
"story_points": {
"title": "Story Points"
}
},
"type": "object",
"required": [
"id",
"organization_id",
"project_id",
"title",
"description",
"assignee_id",
"due_date",
"priority",
"current_state_id",
"labels",
"parent_task_id",
"recurrence_rule",
"created_at"
],
"title": "TaskOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| delete_task Delete Task
TASK-01, D-13: Members can only delete tasks they created; Team Lead+ can delete any team task.
### Responses:
**204**: Successful Response (Success Response)
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | destructive | true | true |
| update_task_state Update Task State
PROJECT-03: Validate FSM transition, update current_state_id, log activity.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| duplicate_task Duplicate Task
TASK-DUPLICATE: Create a copy of an existing task.
Copies: title (with ' (copy)' suffix), description, priority, labels,
assignee_id, due_date, task_type, and task_field_values (custom fields).
The copy starts in the project's initial workflow state with a fresh
task_number. Comments, activity history, and attachments are NOT copied.
T-06.8-38: Source task must belong to caller's org — 404 if not found.
T-06.8-39: Custom fields copied via parameterized INSERT/SELECT — no f-string SQL.
### Responses:
**201**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"organization_id": "Organization Id",
"title": "Title",
"priority": "Priority",
"labels": [
"string"
],
"created_at": "Created At",
"task_type": "Task Type",
"actual_hours_overridden": true
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"project_id": {
"title": "Project Id"
},
"title": {
"type": "string",
"title": "Title"
},
"description": {
"title": "Description"
},
"assignee_id": {
"title": "Assignee Id"
},
"due_date": {
"title": "Due Date"
},
"priority": {
"type": "string",
"title": "Priority"
},
"current_state_id": {
"title": "Current State Id"
},
"labels": {
"items": {
"type": "string"
},
"type": "array",
"title": "Labels"
},
"parent_task_id": {
"title": "Parent Task Id"
},
"recurrence_rule": {
"title": "Recurrence Rule"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"risk_score": {
"title": "Risk Score"
},
"risk_level": {
"title": "Risk Level"
},
"risk_factors": {
"title": "Risk Factors"
},
"task_type": {
"type": "string",
"title": "Task Type",
"default": "task"
},
"task_number": {
"title": "Task Number"
},
"project_key": {
"title": "Project Key"
},
"start_date": {
"title": "Start Date"
},
"estimated_hours": {
"title": "Estimated Hours"
},
"actual_hours": {
"title": "Actual Hours"
},
"actual_hours_overridden": {
"type": "boolean",
"title": "Actual Hours Overridden",
"default": false
},
"bug_environment": {
"title": "Bug Environment"
},
"bug_app_version": {
"title": "Bug App Version"
},
"bug_steps_to_reproduce": {
"title": "Bug Steps To Reproduce"
},
"story_points": {
"title": "Story Points"
}
},
"type": "object",
"required": [
"id",
"organization_id",
"project_id",
"title",
"description",
"assignee_id",
"due_date",
"priority",
"current_state_id",
"labels",
"parent_task_id",
"recurrence_rule",
"created_at"
],
"title": "TaskOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | unknown | unknown | unknown |
| add_task_blocker Add Blocker
TASK-06: Mark task_id as blocking another task (blocker → blocked).
T-04 mitigation: self-blocking rejected (blocker_task_id == blocked_task_id → 422).
SEC-MCP-01: both anchor (task_id) and target (blocked_task_id) must belong to the
caller's org before the INSERT — otherwise a caller could link a foreign org's task.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| list_task_blockers List Blockers
TASK-06: Return tasks that this task is blocking (tasks blocked by task_id).
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| remove_task_blocker Remove Blocker
TASK-06: Remove a blocking dependency between two tasks.
### Responses:
**204**: Successful Response (Success Response)
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | destructive | true | true |
| list_task_blocked_by List Blocked By
Return tasks that are blocking this task (its dependencies).
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| add_task_dependency Add Dependency
Add a blocker to this task (from blocked perspective): blocker_task_id must complete first.
SEC-MCP-01: both anchor (task_id) and target (blocker_task_id) must belong to the
caller's org before the INSERT — otherwise a caller could link a foreign org's task.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| remove_task_dependency Remove Dependency
Remove a dependency (blocker) from this task.
SEC-MCP-01: verify the anchor task (blocked, i.e. task_id) belongs to the caller's
org before deleting — mirrors remove_blocker's rigor.
### Responses:
**204**: Successful Response (Success Response)
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | destructive | true | true |
| list_task_field_values Get Field Values
TASK-03: Get custom field values for a task.
SEC-MCP-01: filter by tfv.organization_id so a foreign-org task_id yields an
empty list rather than leaking another org's field values.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| set_task_field_value Upsert Field Value
TASK-03: Upsert a custom field value for a task (D-26: value stored as text).
SEC-MCP-01: validate the anchor task belongs to the caller's org BEFORE the
INSERT ... ON CONFLICT DO UPDATE — otherwise ON CONFLICT could mutate a foreign
org's existing row for a matching (task_id, field_schema_id) pair.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| get_board Get Board
BOARD-01: Return board data: workflow states with their tasks, WIP counts, and limits.
Frontend uses this to render Kanban, List, Gantt, Calendar views.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| move_task Move Task
BOARD-01: Move task to new column (state). Validates WIP limit.
T-01: WIP limit enforced server-side — cannot be bypassed via direct API call.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| create_comment Create Comment
COLLAB-01: Create a comment with @mention parsing.
### Responses:
**201**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"task_id": "Task Id",
"user_id": "User Id",
"body": "Body",
"created_at": "Created At",
"updated_at": "Updated At"
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"task_id": {
"type": "string",
"title": "Task Id"
},
"user_id": {
"type": "string",
"title": "User Id"
},
"user_name": {
"title": "User Name"
},
"body": {
"type": "string",
"title": "Body"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
}
},
"type": "object",
"required": [
"id",
"task_id",
"user_id",
"user_name",
"body",
"created_at",
"updated_at"
],
"title": "CommentOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| list_comments List Comments
COLLAB-03: List all comments for a task in chronological order (ASC).
organization_id filter added to prevent cross-tenant comment leakage (Rule 1 - Bug):
task_comments table does not have RLS so the API layer must enforce org isolation.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
[
{
"id": "Id",
"task_id": "Task Id",
"user_id": "User Id",
"body": "Body",
"created_at": "Created At",
"updated_at": "Updated At"
}
]
```
**Output Schema:** Array of items with the following structure:
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"task_id": {
"type": "string",
"title": "Task Id"
},
"user_id": {
"type": "string",
"title": "User Id"
},
"user_name": {
"title": "User Name"
},
"body": {
"type": "string",
"title": "Body"
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
}
},
"type": "object",
"required": [
"id",
"task_id",
"user_id",
"user_name",
"body",
"created_at",
"updated_at"
],
"title": "CommentOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| delete_comment Delete Comment
Delete own comment only. Team Lead+ can delete any comment.
### Responses:
**204**: Successful Response (Success Response)
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | destructive | true | true |
| list_task_activity Get Activity Feed
COLLAB-03: Combined chronological feed of activities + comments.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| full_text_search Full Text Search
CMD-04: Full-text search across tasks, projects, and comments.
Matching (UAT-260703 BUG-01):
- prefix tsquery built by _prefix_tsquery ('Mem' -> 'Mem:*' matches 'memory')
- title/body ILIKE substring fallback so mid-word fragments still match
Results ranked by ts_rank_cd (weighted: title:A, description:B, comment:C);
ILIKE-only hits get a small floor rank so they sort below tsquery hits.
T-01 (HIGH): user input never reaches to_tsquery raw — _prefix_tsquery
strips everything but alphanumeric tokens, and all values are bound params.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| list_teams_mcp List or search teams
Returns all teams for the authenticated user's organization. Pass ?name=<search_term> for a case-insensitive partial-match filter — useful for resolving a team name to its ID.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
[
{
"id": "Id",
"organization_id": "Organization Id",
"name": "Name"
}
]
```
**Output Schema:** Array of items with the following structure:
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"name": {
"type": "string",
"title": "Name"
},
"lead_user_id": {
"title": "Lead User Id"
}
},
"type": "object",
"required": [
"id",
"organization_id",
"name"
],
"title": "TeamOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| get_my_identity Get caller identity and permissions
Returns the authenticated caller's identity, organization context, and a summary of what actions they are permitted to perform. Call this first in any MCP session to orient yourself — it tells you who you are acting as (user_id, name, email), which org you are scoped to (organization_id, organization_name), your role, and which operations you are allowed to perform. All subsequent MCP tool calls are automatically scoped to the organization identified here — you do not need to pass organization_id to other tools.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"user_id": "User Id",
"email": "Email",
"organization_id": "Organization Id",
"organization_name": "Organization Name",
"role": "Role",
"tier": "Tier",
"can_create_projects": true,
"can_create_teams": true,
"can_manage_team_members": true,
"can_rename_delete_teams": true,
"can_view_team_workload": true,
"can_manage_project_settings": true
}
```
**Output Schema:**
```json
{
"properties": {
"user_id": {
"type": "string",
"title": "User Id"
},
"name": {
"title": "Name"
},
"email": {
"type": "string",
"title": "Email"
},
"organization_id": {
"type": "string",
"title": "Organization Id"
},
"organization_name": {
"type": "string",
"title": "Organization Name"
},
"role": {
"type": "string",
"title": "Role"
},
"tier": {
"type": "string",
"title": "Tier"
},
"can_create_projects": {
"type": "boolean",
"title": "Can Create Projects"
},
"can_create_teams": {
"type": "boolean",
"title": "Can Create Teams"
},
"can_manage_team_members": {
"type": "boolean",
"title": "Can Manage Team Members"
},
"can_rename_delete_teams": {
"type": "boolean",
"title": "Can Rename Delete Teams"
},
"can_view_team_workload": {
"type": "boolean",
"title": "Can View Team Workload"
},
"can_manage_project_settings": {
"type": "boolean",
"title": "Can Manage Project Settings"
}
},
"type": "object",
"required": [
"user_id",
"name",
"email",
"organization_id",
"organization_name",
"role",
"tier",
"can_create_projects",
"can_create_teams",
"can_manage_team_members",
"can_rename_delete_teams",
"can_view_team_workload",
"can_manage_project_settings"
],
"title": "MeIdentityOut"
}
``` | read | false | unknown |
| ai_health Ai Health
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Output Schema:**
```json
{}
``` | read | false | unknown |
| list_context_entries List context entries visible to the caller
List agent_context entries accessible to the caller.
Returns team, org, and the caller's own private entries (in that order, newest first).
Private entries are returned with body=[private entry — open to view] — use
get_context_entry to read the decrypted body.
Filters:
- project_id: scope to a specific project
- type: filter by entry type (decision, session_summary, project_brief, note)
- visibility: filter by visibility level
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
[
{
"id": "Id",
"org_id": "Org Id",
"user_id": "User Id",
"visibility": "Visibility",
"type": "Type",
"title": "Title",
"body": "Body",
"metadata": {},
"created_at": "Created At",
"updated_at": "Updated At"
}
]
```
**Output Schema:** Array of items with the following structure:
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"org_id": {
"type": "string",
"title": "Org Id"
},
"project_id": {
"title": "Project Id"
},
"user_id": {
"type": "string",
"title": "User Id"
},
"visibility": {
"type": "string",
"title": "Visibility"
},
"type": {
"type": "string",
"title": "Type"
},
"title": {
"type": "string",
"title": "Title"
},
"body": {
"type": "string",
"title": "Body"
},
"metadata": {
"additionalProperties": true,
"type": "object",
"title": "Metadata",
"default": {}
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
}
},
"type": "object",
"required": [
"id",
"org_id",
"project_id",
"user_id",
"visibility",
"type",
"title",
"body",
"created_at",
"updated_at"
],
"title": "ContextEntryOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
| write_context Write a context entry to the team knowledge store
Store a context entry for retrieval by Claude or team members.
Entry schema:
- type: "decision" | "session_summary" | "project_brief" | "note" | "status_update"
- title: short descriptive title
- body: markdown body content
- project_id: optional — associate with a specific project
- visibility: "private" (only you), "team" (project members), "org" (entire org)
- tags: optional list of topic tags for filtering
### Responses:
**201**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"org_id": "Org Id",
"user_id": "User Id",
"visibility": "Visibility",
"type": "Type",
"title": "Title",
"body": "Body",
"metadata": {},
"created_at": "Created At",
"updated_at": "Updated At"
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"org_id": {
"type": "string",
"title": "Org Id"
},
"project_id": {
"title": "Project Id"
},
"user_id": {
"type": "string",
"title": "User Id"
},
"visibility": {
"type": "string",
"title": "Visibility"
},
"type": {
"type": "string",
"title": "Type"
},
"title": {
"type": "string",
"title": "Title"
},
"body": {
"type": "string",
"title": "Body"
},
"metadata": {
"additionalProperties": true,
"type": "object",
"title": "Metadata",
"default": {}
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
}
},
"type": "object",
"required": [
"id",
"org_id",
"project_id",
"user_id",
"visibility",
"type",
"title",
"body",
"created_at",
"updated_at"
],
"title": "ContextEntryOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | write | true | unknown |
| log_decision Log an architectural or project decision to the team knowledge store
Log a structured decision entry with Context / Rationale / Outcome template.
Note: use visibility='team' or 'org' for decisions you want Claude to surface via
get_project_memory. Private decisions are personal notes only and are not returned by
get_project_memory. Default visibility is 'team'.
Body is automatically formatted as:
## Context
{context}
## Rationale
{rationale}
## Outcome
{outcome}
### Responses:
**201**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"org_id": "Org Id",
"user_id": "User Id",
"visibility": "Visibility",
"type": "Type",
"title": "Title",
"body": "Body",
"metadata": {},
"created_at": "Created At",
"updated_at": "Updated At"
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"org_id": {
"type": "string",
"title": "Org Id"
},
"project_id": {
"title": "Project Id"
},
"user_id": {
"type": "string",
"title": "User Id"
},
"visibility": {
"type": "string",
"title": "Visibility"
},
"type": {
"type": "string",
"title": "Type"
},
"title": {
"type": "string",
"title": "Title"
},
"body": {
"type": "string",
"title": "Body"
},
"metadata": {
"additionalProperties": true,
"type": "object",
"title": "Metadata",
"default": {}
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
}
},
"type": "object",
"required": [
"id",
"org_id",
"project_id",
"user_id",
"visibility",
"type",
"title",
"body",
"created_at",
"updated_at"
],
"title": "ContextEntryOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | unknown | unknown | unknown |
| save_session_summary Save a session summary to the private knowledge store
Save a summary of the current session to your private context store.
Session summaries are always stored as private (D-08) — they are personal notes
and are never visible to other team members or returned by get_project_memory.
The title is auto-generated with a UTC datetime stamp. No title field is needed.
### Responses:
**201**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"org_id": "Org Id",
"user_id": "User Id",
"visibility": "Visibility",
"type": "Type",
"title": "Title",
"body": "Body",
"metadata": {},
"created_at": "Created At",
"updated_at": "Updated At"
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"org_id": {
"type": "string",
"title": "Org Id"
},
"project_id": {
"title": "Project Id"
},
"user_id": {
"type": "string",
"title": "User Id"
},
"visibility": {
"type": "string",
"title": "Visibility"
},
"type": {
"type": "string",
"title": "Type"
},
"title": {
"type": "string",
"title": "Title"
},
"body": {
"type": "string",
"title": "Body"
},
"metadata": {
"additionalProperties": true,
"type": "object",
"title": "Metadata",
"default": {}
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
}
},
"type": "object",
"required": [
"id",
"org_id",
"project_id",
"user_id",
"visibility",
"type",
"title",
"body",
"created_at",
"updated_at"
],
"title": "ContextEntryOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | unknown | unknown | unknown |
| get_context_entry Retrieve a specific context entry by ID
Get a context entry by ID. Decrypts private entries for the owner.
Returns 404 if the entry does not exist in the caller's org.
Returns 403 if the entry is private and the caller is not the owner.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"id": "Id",
"org_id": "Org Id",
"user_id": "User Id",
"visibility": "Visibility",
"type": "Type",
"title": "Title",
"body": "Body",
"metadata": {},
"created_at": "Created At",
"updated_at": "Updated At"
}
```
**Output Schema:**
```json
{
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"org_id": {
"type": "string",
"title": "Org Id"
},
"project_id": {
"title": "Project Id"
},
"user_id": {
"type": "string",
"title": "User Id"
},
"visibility": {
"type": "string",
"title": "Visibility"
},
"type": {
"type": "string",
"title": "Type"
},
"title": {
"type": "string",
"title": "Title"
},
"body": {
"type": "string",
"title": "Body"
},
"metadata": {
"additionalProperties": true,
"type": "object",
"title": "Metadata",
"default": {}
},
"created_at": {
"type": "string",
"title": "Created At"
},
"updated_at": {
"type": "string",
"title": "Updated At"
}
},
"type": "object",
"required": [
"id",
"org_id",
"project_id",
"user_id",
"visibility",
"type",
"title",
"body",
"created_at",
"updated_at"
],
"title": "ContextEntryOut"
}
```
**422**: Validation Error
Content-Type: application/json
**Example Response:**
```json
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}
```
**Output Schema:**
```json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
},
"input": {
"title": "Input"
},
"ctx": {
"type": "object",
"title": "Context"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}
``` | read | false | unknown |
02Install & source
https://mcp.taskive.ai/mcp
remote_url- homepagehttps://mcp.taskive.ai/mcp
03Access granted
Manage tasks & tickets · destructive
The access this server can exercise, inferred from its verified tools — not a declared OAuth scope.
05Provenance & freshness
sourcesOfficial MCP Registry [p1]
last_checked2026-07-19 10:34Z
next_check2026-07-21 10:34Z
cadenceevery 48h
verifiedtools_list:passed handshake:passed metadata:failed
index_statusindex — 5 unique facts >= 5
06Badge
Add the “as seen on MCPExplorer” badge to your README.
[](https://mcpexplorer.com/servers/ai-taskive-mcp)
Next step
This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.
Explore loadouts →