Skip to main content
Glama

Server Details

AI-native project management plus a persistent memory & knowledge layer for agents: live tasks, sprints, AI risk scores, burnout signals, project memory, decision logs, and semantic knowledge search — 100+ tools via OAuth 2.1, free plan.

Status
Unhealthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.

Tool Definition Quality

Score is being calculated. Check back soon.

Available Tools

98 tools
add_project_memberInspect

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:

{
  "user_id": "User Id",
  "email": "Email",
  "role": "Role"
}

Output Schema:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
project_idYes
add_task_blockerInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
add_task_dependencyInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
ai_healthInspect

Ai Health

Responses:

200: Successful Response (Success Response) Content-Type: application/json

Output Schema:

{}
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

archive_projectInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
bulk_assignInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
complete_sprintInspect

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:

{
  "id": "Id",
  "project_id": "Project Id",
  "organization_id": "Organization Id",
  "name": "Name",
  "status": "Status",
  "created_at": "Created At",
  "updated_at": "Updated At"
}

Output Schema:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
sprint_idYes
create_commentInspect

Create Comment

COLLAB-01: Create a comment with @mention parsing.

Responses:

201: Successful Response (Success Response) Content-Type: application/json

Example Response:

{
  "id": "Id",
  "task_id": "Task Id",
  "user_id": "User Id",
  "body": "Body",
  "created_at": "Created At",
  "updated_at": "Updated At"
}

Output Schema:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
task_idYes
create_epicInspect

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:

{
  "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
due_dateNo
project_idYes
descriptionNo
create_field_schemaInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
configNo
positionNo
field_typeYes
project_idYes
create_projectInspect

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:

{
  "id": "Id",
  "name": "Name",
  "organization_id": "Organization Id",
  "visibility": "Visibility",
  "created_at": "Created At",
  "agile_mode": true
}

Output Schema:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
team_idNo
visibilityNo
template_idNo
create_sprintInspect

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:

{
  "id": "Id",
  "project_id": "Project Id",
  "organization_id": "Organization Id",
  "name": "Name",
  "status": "Status",
  "created_at": "Created At",
  "updated_at": "Updated At"
}

Output Schema:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
goalNo
nameYes
end_dateNo
project_idYes
start_dateNo
create_taskInspect

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:

{
  "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
labelsNo
due_dateNo
priorityNomedium
task_typeNotask
project_idYes
start_dateNo
assignee_idNo
descriptionNo
parent_task_idNo
bug_app_versionNo
bug_environmentNo
estimated_hoursNo
recurrence_ruleNo
current_state_idNo
bug_steps_to_reproduceNo
create_workflow_stateInspect

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:

{
  "id": "Id",
  "name": "Name",
  "color": "Color",
  "position": 1,
  "is_initial": true,
  "is_terminal": true,
  "is_work_start": true,
  "is_work_end": true
}

Output Schema:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
colorNo#71717A
positionNo
wip_limitNo
is_initialNo
project_idYes
is_terminalNo
is_work_endNo
is_work_startNo
create_workflow_transitionInspect

Create Transition

PROJECT-03: Define an allowed workflow transition.

Responses:

201: Successful Response (Success Response) Content-Type: application/json

Output Schema:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
to_state_idYes
from_state_idYes
delete_commentInspect

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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
comment_idYes
delete_context_entryInspect

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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYes
delete_epicInspect

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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
epic_idYes
delete_field_schemaInspect

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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
schema_idYes
project_idYes
delete_org_ai_configInspect

Delete Org Ai Config

Responses:

204: Successful Response (Success Response)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

delete_projectInspect

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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
delete_sprintInspect

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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
sprint_idYes
delete_taskInspect

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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
delete_workflow_stateInspect

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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
state_idYes
project_idYes
delete_workflow_transitionInspect

Delete Transition

PROJECT-03: Remove an allowed workflow transition.

Responses:

204: Successful Response (Success Response) 422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
to_state_idYes
from_state_idYes
duplicate_taskInspect

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:

{
  "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
extract_tasksInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
project_idNo
extract_tasks_uploadInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
fileYes
project_idNo
generate_dashboardInspect

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:

{
  "id": "Id",
  "title": "Title",
  "spec": {},
  "created_at": "Created At"
}

Output Schema:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
promptYes
get_ai_usage_summaryInspect

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:

{
  "calls": 1,
  "prompt_tokens": 1,
  "completion_tokens": 1,
  "cost_usd": 1.0
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

get_boardInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
get_board_summaryInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
get_context_entryInspect

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:

{
  "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYes
get_epicInspect

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:

{
  "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
epic_idYes
get_focus_modeInspect

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:

{}
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

get_my_burnoutInspect

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:

{}
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

get_my_identityInspect

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:

{
  "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:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

get_org_ai_configInspect

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:

{
  "model_name": "Model Name",
  "key_configured": true
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

get_pending_labelsInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
get_projectInspect

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:

{
  "id": "Id",
  "name": "Name",
  "organization_id": "Organization Id",
  "visibility": "Visibility",
  "created_at": "Created At",
  "agile_mode": true
}

Output Schema:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
get_project_briefsInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
get_project_memoryInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
synthesizeNo
get_project_velocity_trendInspect

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:

[
  {}
]

Output Schema: Array of items with the following structure:

{
  "type": "object",
  "additionalProperties": true
}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
project_idYes
get_sprintInspect

Get Sprint

AGILE-03: Get a single sprint.

Responses:

200: Successful Response (Success Response) Content-Type: application/json

Example Response:

{
  "id": "Id",
  "project_id": "Project Id",
  "organization_id": "Organization Id",
  "name": "Name",
  "status": "Status",
  "created_at": "Created At",
  "updated_at": "Updated At"
}

Output Schema:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
sprint_idYes
get_sprint_burndownInspect

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:

[
  {}
]

Output Schema: Array of items with the following structure:

{
  "type": "object",
  "additionalProperties": true
}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
sprint_idYes
get_sprint_reportInspect

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:

{
  "type": "object",
  "additionalProperties": true,
  "title": "Response Get Sprint Report"
}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
sprint_idYes
get_start_task_contextInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
get_suggestionsInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
get_taskInspect

Get Task

TASK-01: Get a single task by ID.

Responses:

200: Successful Response (Success Response) Content-Type: application/json

Example Response:

{
  "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
get_task_riskInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
get_team_burnoutInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYes
get_velocity_trendInspect

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:

[
  {}
]

Output Schema: Array of items with the following structure:

{
  "type": "object",
  "additionalProperties": true
}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sprint_idYes
list_assignable_membersInspect

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:

[
  {
    "user_id": "User Id",
    "email": "Email"
  }
]

Output Schema: Array of items with the following structure:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
list_commentsInspect

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:

[
  {
    "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
list_context_entriesInspect

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:

[
  {
    "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
statusNo
project_idNo
visibilityNo
list_epicsInspect

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:

[
  {
    "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
list_field_schemasInspect

List Field Schemas

TASK-03: List custom field schemas for a project.

Responses:

200: Successful Response (Success Response) Content-Type: application/json

Output Schema:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
list_my_tasksInspect

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:

[
  {
    "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
sortNodue_date
orderNoasc
priorityNo
list_project_membersInspect

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:

[
  {
    "user_id": "User Id",
    "email": "Email",
    "role": "Role"
  }
]

Output Schema: Array of items with the following structure:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
list_projectsInspect

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:

[
  {
    "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
include_archivedNo
list_sprintsInspect

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:

[
  {
    "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
list_task_activityInspect

Get Activity Feed

COLLAB-03: Combined chronological feed of activities + comments.

Responses:

200: Successful Response (Success Response) Content-Type: application/json

Output Schema:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
list_task_blocked_byInspect

List Blocked By

Return tasks that are blocking this task (its dependencies).

Responses:

200: Successful Response (Success Response) Content-Type: application/json

Output Schema:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
list_task_blockersInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
list_task_field_valuesInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
list_tasksInspect

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:

[
  {
    "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
sortNocreated_at
limitNo
orderNodesc
searchNo
priorityNo
state_idNo
project_idYes
assignee_idNo
parent_task_idNo
list_teams_mcpInspect

List or search teams

Returns all teams for the authenticated user's organization. Pass ?name= 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:

[
  {
    "id": "Id",
    "organization_id": "Organization Id",
    "name": "Name"
  }
]

Output Schema: Array of items with the following structure:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter by team name (case-insensitive partial match)
list_workflow_statesInspect

List Workflow States

PROJECT-02: List workflow states for a project.

Responses:

200: Successful Response (Success Response) Content-Type: application/json

Example Response:

[
  {
    "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
list_workflow_transitionsInspect

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:

[
  {
    "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
log_decisionInspect

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:

{
  "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
agentNo
titleYesNote: 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.
contextYesThe problem or situation requiring this decision
outcomeYesThe decision made and expected result
rationaleYesWhy this approach was chosen
project_idNo
visibilityNoVisibility of this decision. Default is 'team' so the decision is visible via get_project_memory. Use 'private' only for personal notes — private decisions are NOT returned by get_project_memory or search_context.team
move_taskInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
project_idYes
target_state_idYes
put_org_ai_configInspect

Put Org Ai Config

Responses:

200: Successful Response (Success Response) Content-Type: application/json

Example Response:

{
  "model_name": "Model Name",
  "key_configured": true
}

Output Schema:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyYes
model_nameYes
recompute_burnoutInspect

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:

{}
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

refine_dashboardInspect

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:

{
  "id": "Id",
  "title": "Title",
  "spec": {},
  "created_at": "Created At"
}

Output Schema:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
current_specYes
dashboard_idYes
original_promptYes
refinement_instructionsYes
remove_project_memberInspect

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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
project_idYes
remove_task_blockerInspect

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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
blocked_task_idYes
remove_task_dependencyInspect

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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
blocker_task_idYes
reorder_backlog_taskInspect

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:

{
  "type": "object",
  "additionalProperties": true,
  "title": "Response Reorder Backlog Task"
}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
project_idYes
after_task_idNo
restore_projectInspect

Restore Project

PROJECT-07: Restore an archived project — clears archived_at.

Responses:

200: Successful Response (Success Response) Content-Type: application/json

Output Schema:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
save_session_summaryInspect

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:

{
  "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
summaryYes
project_idNo
search_contextInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch query
project_idNo
set_task_field_valueInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
field_schema_idYes
start_sprintInspect

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:

{
  "id": "Id",
  "project_id": "Project Id",
  "organization_id": "Organization Id",
  "name": "Name",
  "status": "Status",
  "created_at": "Created At",
  "updated_at": "Updated At"
}

Output Schema:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
sprint_idYes
suggest_assignmentInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
project_idYes
descriptionNo
confirmed_skillsNo
test_ai_connectionInspect

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:

{}
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

trigger_board_risk_scoreInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
trigger_task_risk_scoreInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
update_agile_settingsInspect

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:

{
  "id": "Id",
  "name": "Name",
  "organization_id": "Organization Id",
  "visibility": "Visibility",
  "created_at": "Created At",
  "agile_mode": true
}

Output Schema:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
agile_modeYes
project_idYes
update_context_entryInspect

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:

{
  "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
tagsNo
titleNo
statusNo
entry_idYes
visibilityNo
supersedes_idNo
update_epicInspect

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:

{
  "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
statusNo
epic_idYes
due_dateNo
descriptionNo
update_project_settingsInspect

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:

{
  "id": "Id",
  "name": "Name",
  "organization_id": "Organization Id",
  "visibility": "Visibility",
  "created_at": "Created At",
  "agile_mode": true
}

Output Schema:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
team_idNo
project_idYes
visibilityNo
update_sprintInspect

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:

{
  "id": "Id",
  "project_id": "Project Id",
  "organization_id": "Organization Id",
  "name": "Name",
  "status": "Status",
  "created_at": "Created At",
  "updated_at": "Updated At"
}

Output Schema:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
goalNo
nameNo
end_dateNo
sprint_idYes
start_dateNo
update_taskInspect

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:

{
  "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
update_task_stateInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
current_state_idYes
update_workflow_stateInspect

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:

{
  "id": "Id",
  "name": "Name",
  "color": "Color",
  "position": 1,
  "is_initial": true,
  "is_terminal": true,
  "is_work_start": true,
  "is_work_end": true
}

Output Schema:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
colorNo#71717A
positionNo
state_idYes
wip_limitNo
is_initialNo
project_idYes
is_terminalNo
is_work_endNo
is_work_startNo
update_workflow_transitionInspect

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:

{}

422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
enforce_orderNo
transition_idYes
write_contextInspect

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:

{
  "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:

{
  "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:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Output Schema:

{
  "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"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
tagsNo
typeYes
agentNo
titleYes
project_idNo
visibilityNoteam

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources