Taskive
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.
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.
Tool Definition Quality
Score is being calculated. Check back soon.
Available Tools
98 toolsadd_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"
}| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | ||
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
ai_healthInspect
Ai Health
Responses:
200: Successful Response (Success Response) Content-Type: application/json
Output Schema:
{}| Name | Required | Description | Default |
|---|---|---|---|
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| sprint_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| due_date | No | ||
| project_id | Yes | ||
| description | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| config | No | ||
| position | No | ||
| field_type | Yes | ||
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| team_id | No | ||
| visibility | No | ||
| template_id | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | ||
| name | Yes | ||
| end_date | No | ||
| project_id | Yes | ||
| start_date | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| labels | No | ||
| due_date | No | ||
| priority | No | medium | |
| task_type | No | task | |
| project_id | Yes | ||
| start_date | No | ||
| assignee_id | No | ||
| description | No | ||
| parent_task_id | No | ||
| bug_app_version | No | ||
| bug_environment | No | ||
| estimated_hours | No | ||
| recurrence_rule | No | ||
| current_state_id | No | ||
| bug_steps_to_reproduce | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| color | No | #71717A | |
| position | No | ||
| wip_limit | No | ||
| is_initial | No | ||
| project_id | Yes | ||
| is_terminal | No | ||
| is_work_end | No | ||
| is_work_start | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| to_state_id | Yes | ||
| from_state_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| comment_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| epic_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| schema_id | Yes | ||
| project_id | Yes |
delete_org_ai_configInspect
Delete Org Ai Config
Responses:
204: Successful Response (Success Response)
| Name | Required | Description | Default |
|---|---|---|---|
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| sprint_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| state_id | Yes | ||
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| to_state_id | Yes | ||
| from_state_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| project_id | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | ||
| project_id | No |
full_text_searchInspect
Full Text Search
CMD-04: Full-text search across tasks, projects, and comments. Matching (UAT-260703 BUG-01):
prefix tsquery built by _prefix_tsquery ('Mem' -> 'Mem:*' matches 'memory')
title/body ILIKE substring fallback so mid-word fragments still match Results ranked by ts_rank_cd (weighted: title:A, description:B, comment:C); ILIKE-only hits get a small floor rank so they sort below tsquery hits.
T-01 (HIGH): user input never reaches to_tsquery raw — _prefix_tsquery strips everything but alphanumeric tokens, and all values are bound params.
Responses:
200: Successful Response (Success Response) Content-Type: application/json
Output Schema:
{}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"
}| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search query (minimum 2 characters) | |
| project_id | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| epic_id | Yes |
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:
{}| Name | Required | Description | Default |
|---|---|---|---|
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:
{}| Name | Required | Description | Default |
|---|---|---|---|
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"
}| Name | Required | Description | Default |
|---|---|---|---|
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"
}| Name | Required | Description | Default |
|---|---|---|---|
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| synthesize | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| sprint_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| sprint_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| sprint_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| sprint_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| status | No | ||
| project_id | No | ||
| visibility | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | due_date | |
| order | No | asc | |
| priority | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| include_archived | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | created_at | |
| limit | No | ||
| order | No | desc | |
| search | No | ||
| priority | No | ||
| state_id | No | ||
| project_id | Yes | ||
| assignee_id | No | ||
| parent_task_id | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter 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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | ||
| title | Yes | 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. | |
| context | Yes | The problem or situation requiring this decision | |
| outcome | Yes | The decision made and expected result | |
| rationale | Yes | Why this approach was chosen | |
| project_id | No | ||
| visibility | No | Visibility 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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| project_id | Yes | ||
| target_state_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | ||
| model_name | Yes |
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:
{}| Name | Required | Description | Default |
|---|---|---|---|
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| current_spec | Yes | ||
| dashboard_id | Yes | ||
| original_prompt | Yes | ||
| refinement_instructions | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | ||
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| blocked_task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| blocker_task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| project_id | Yes | ||
| after_task_id | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| summary | Yes | ||
| project_id | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search query | |
| project_id | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| field_schema_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| sprint_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| project_id | Yes | ||
| description | No | ||
| confirmed_skills | No |
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:
{}| Name | Required | Description | Default |
|---|---|---|---|
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| agile_mode | Yes | ||
| project_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| tags | No | ||
| title | No | ||
| status | No | ||
| entry_id | Yes | ||
| visibility | No | ||
| supersedes_id | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| status | No | ||
| epic_id | Yes | ||
| due_date | No | ||
| description | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| team_id | No | ||
| project_id | Yes | ||
| visibility | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | ||
| name | No | ||
| end_date | No | ||
| sprint_id | Yes | ||
| start_date | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| current_state_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| color | No | #71717A | |
| position | No | ||
| state_id | Yes | ||
| wip_limit | No | ||
| is_initial | No | ||
| project_id | Yes | ||
| is_terminal | No | ||
| is_work_end | No | ||
| is_work_start | No |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| enforce_order | No | ||
| transition_id | Yes |
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| tags | No | ||
| type | Yes | ||
| agent | No | ||
| title | Yes | ||
| project_id | No | ||
| visibility | No | team |
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!