{"serverId":"mcp-registry/ai.taskive/mcp","tools":[{"name":"add_project_member","fixed":{"name":"add_project_member","description":"Add Project Member\n\nPRIV-03: Grant an org user access to a private project.\n\nAuthorization: only the project's creator or admin/owner (T-264-02). Access\nmanagement is creator-scoped, not RBAC-gated — no new permission slug needed.\n\n### Responses:\n\n**201**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"user_id\": \"User Id\",\n  \"email\": \"Email\",\n  \"role\": \"Role\"\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"user_id\": {\n      \"t","inputSchema":{"type":"object","title":"add_project_memberArguments","required":["project_id","user_id"],"properties":{"user_id":{"type":"string","title":"user_id"},"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":229,"tokensAfter":229},{"name":"add_task_blocker","fixed":{"name":"add_task_blocker","description":"Add Blocker\n\nTASK-06: Mark task_id as blocking another task (blocker → blocked).\nT-04 mitigation: self-blocking rejected (blocker_task_id == blocked_task_id → 422).\nSEC-MCP-01: both anchor (task_id) and target (blocked_task_id) must belong to the\ncaller's org before the INSERT — otherwise a caller could link a foreign org's task.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Typ","inputSchema":{"type":"object","title":"add_task_blockerArguments","required":["task_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":203,"tokensAfter":203},{"name":"add_task_dependency","fixed":{"name":"add_task_dependency","description":"Add Dependency\n\nAdd a blocker to this task (from blocked perspective): blocker_task_id must complete first.\n\nSEC-MCP-01: both anchor (task_id) and target (blocker_task_id) must belong to the\ncaller's org before the INSERT — otherwise a caller could link a foreign org's task.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"","inputSchema":{"type":"object","title":"add_task_dependencyArguments","required":["task_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":206,"tokensAfter":206},{"name":"ai_health","fixed":{"name":"ai_health","description":"Ai Health\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```","inputSchema":{"type":"object","title":"ai_healthArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":74,"tokensAfter":74},{"name":"archive_project","fixed":{"name":"archive_project","description":"Archive Project\n\nPROJECT-07: Soft-delete — sets archived_at to now(). Data preserved, hidden from sidebar.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n   ","inputSchema":{"type":"object","title":"archive_projectArguments","required":["project_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":214,"tokensAfter":214},{"name":"bulk_assign","fixed":{"name":"bulk_assign","description":"Bulk Assign\n\nBulk AI assignment: one prompt per 10-task batch instead of 2 calls per task.\n\nAssigns when skill_score >= 75. Cross-org guard: AI-returned user_ids filtered\nthrough member_by_id — unknown IDs silently dropped.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Mess","inputSchema":{"type":"object","title":"bulk_assignArguments","required":["project_id"],"properties":{"project_id":{"type":"string","title":"project_id"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":202,"tokensAfter":202},{"name":"create_comment","fixed":{"name":"create_comment","description":"Create Comment\n\nCOLLAB-01: Create a comment with @mention parsing.\n\n### Responses:\n\n**201**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"task_id\": \"Task Id\",\n  \"user_id\": \"User Id\",\n  \"body\": \"Body\",\n  \"created_at\": \"Created At\",\n  \"updated_at\": \"Updated At\"\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"title\": \"Id\"\n    },\n    \"task_id\": {\n      \"type\": \"string\",\n      \"","inputSchema":{"type":"object","title":"create_commentArguments","required":["task_id","body"],"properties":{"body":{"type":"string","title":"body","maxLength":10000,"minLength":1},"task_id":{"type":"string","title":"task_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":240,"tokensAfter":240},{"name":"create_epic","fixed":{"name":"create_epic","description":"Create Epic\n\nAGILE-02: Create an epic in a project. Any member can create.\n\n### Responses:\n\n**201**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"project_id\": \"Project Id\",\n  \"organization_id\": \"Organization Id\",\n  \"title\": \"Title\",\n  \"status\": \"Status\",\n  \"status_override\": true,\n  \"created_at\": \"Created At\",\n  \"updated_at\": \"Updated At\",\n  \"completion_pct\": 1.0,\n  \"task_count\": 1,\n  \"done_count\": 1,\n  \"tasks\": [\n    {}\n","inputSchema":{"type":"object","title":"create_epicArguments","required":["project_id","title"],"properties":{"title":{"type":"string","title":"title","maxLength":200,"minLength":1},"due_date":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"due_date"},"project_id":{"type":"string","title":"project_id","format":"uuid"},"description":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"description"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":290,"tokensAfter":290},{"name":"create_field_schema","fixed":{"name":"create_field_schema","description":"Create Field Schema\n\nTASK-03: Create a custom field schema. Team Lead+ or private-project creator.\n\n### Responses:\n\n**201**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"detail","inputSchema":{"type":"object","title":"create_field_schemaArguments","required":["project_id","name","field_type"],"properties":{"name":{"type":"string","title":"name","maxLength":100,"minLength":1},"config":{"type":"object","title":"config","default":{},"additionalProperties":true},"position":{"type":"integer","title":"position","default":0},"field_type":{"type":"string","title":"field_type"},"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":297,"tokensAfter":297},{"name":"create_project","fixed":{"name":"create_project","description":"Create Project Route\n\nPROJECT-01 / PRIV-01: Team Lead+ can create open/closed projects. Any org\nmember can create a project. Members lacking create_project:\n- no team_id → forced visibility='private' (personal project, T-264-04)\n- team_id supplied → normal team-scoped project (visibility='closed'),\n  validated against team_memberships (member must belong to the team)\nHolders of create_project may choose open/closed/private explicitly;\nopen/closed still require a team_id (422 without one).\n\n### R","inputSchema":{"type":"object","title":"create_projectArguments","required":["name"],"properties":{"name":{"type":"string","title":"name","maxLength":200,"minLength":1},"team_id":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"team_id"},"visibility":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"visibility"},"template_id":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"template_id"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":280,"tokensAfter":280},{"name":"create_sprint","fixed":{"name":"create_sprint","description":"Create Sprint\n\nAGILE-03: Create a sprint in planning state. Any member can create.\n\n### Responses:\n\n**201**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"project_id\": \"Project Id\",\n  \"organization_id\": \"Organization Id\",\n  \"name\": \"Name\",\n  \"status\": \"Status\",\n  \"created_at\": \"Created At\",\n  \"updated_at\": \"Updated At\"\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"title\": ","inputSchema":{"type":"object","title":"create_sprintArguments","required":["project_id","name"],"properties":{"goal":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"goal"},"name":{"type":"string","title":"name","maxLength":200,"minLength":1},"end_date":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"end_date"},"project_id":{"type":"string","title":"project_id","format":"uuid"},"start_date":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"start_date"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":314,"tokensAfter":314},{"name":"create_task","fixed":{"name":"create_task","description":"Create Task\n\nTASK-01: Create a task. Sets initial workflow state from project's initial state.\n\n### Responses:\n\n**201**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"organization_id\": \"Organization Id\",\n  \"title\": \"Title\",\n  \"priority\": \"Priority\",\n  \"labels\": [\n    \"string\"\n  ],\n  \"created_at\": \"Created At\",\n  \"task_type\": \"Task Type\",\n  \"actual_hours_overridden\": true\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": ","inputSchema":{"type":"object","title":"create_taskArguments","required":["title","project_id"],"properties":{"title":{"type":"string","title":"title","maxLength":500,"minLength":1},"labels":{"type":"array","items":{"type":"string"},"title":"labels","default":[]},"due_date":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"due_date"},"priority":{"enum":["urgent","high","medium","low"],"type":"string","title":"priority","default":"medium"},"task_type":{"type":"string","title":"task_type","default":"task"},"project_id":{"type":"string","title":"project_id"},"start_date":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"start_date"},"assignee_id":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"assignee_id"},"description":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"description"},"parent_task_id":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"parent_task_id"},"bug_app_version":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"bug_app_version"},"bug_environment":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"bug_environment"},"estimated_hours":{"type":"number","anyOf":[{"type":"number"},{"type":"null"}],"title":"estimated_hours"},"recurrence_rule":{"type":"object","anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"recurrence_rule"},"current_state_id":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"current_state_id"},"bug_steps_to_reproduce":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"bug_steps_to_reproduce"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":628,"tokensAfter":628},{"name":"create_workflow_state","fixed":{"name":"create_workflow_state","description":"Create Workflow State\n\nPROJECT-02: Team Lead+ (or private-project creator) can add workflow states.\n\n### Responses:\n\n**201**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"name\": \"Name\",\n  \"color\": \"Color\",\n  \"position\": 1,\n  \"is_initial\": true,\n  \"is_terminal\": true,\n  \"is_work_start\": true,\n  \"is_work_end\": true\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"title\": \"Id\"\n","inputSchema":{"type":"object","title":"create_workflow_stateArguments","required":["project_id","name"],"properties":{"name":{"type":"string","title":"name","maxLength":100,"minLength":1},"color":{"type":"string","title":"color","default":"#71717A"},"position":{"type":"integer","title":"position","default":0},"wip_limit":{"type":"integer","anyOf":[{"type":"integer"},{"type":"null"}],"title":"wip_limit"},"is_initial":{"type":"boolean","title":"is_initial","default":false},"project_id":{"type":"string","title":"project_id","format":"uuid"},"is_terminal":{"type":"boolean","title":"is_terminal","default":false},"is_work_end":{"type":"boolean","title":"is_work_end","default":false},"is_work_start":{"type":"boolean","title":"is_work_start","default":false}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":383,"tokensAfter":383},{"name":"create_workflow_transition","fixed":{"name":"create_workflow_transition","description":"Create Transition\n\nPROJECT-03: Define an allowed workflow transition.\n\n### Responses:\n\n**201**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"detail\": {\n      \"items\": {\n       ","inputSchema":{"type":"object","title":"create_workflow_transitionArguments","required":["project_id","from_state_id","to_state_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"},"to_state_id":{"type":"string","title":"to_state_id"},"from_state_id":{"type":"string","title":"from_state_id"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":261,"tokensAfter":261},{"name":"delete_comment","fixed":{"name":"delete_comment","description":"Delete Comment\n\nDelete own comment only. Team Lead+ can delete any comment.\n\n### Responses:\n\n**204**: Successful Response (Success Response)\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"detail\": {\n      \"items\": {\n        \"properties\": {\n          \"loc\": {\n            \"items\": {},","inputSchema":{"type":"object","title":"delete_commentArguments","required":["task_id","comment_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"},"comment_id":{"type":"string","title":"comment_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":236,"tokensAfter":236},{"name":"delete_context_entry","fixed":{"name":"delete_context_entry","description":"Delete a context entry\n\nDelete a context entry. Only the author can delete their entry.\n\nReturns 204 No Content on success.\nReturns 403 if the caller is not the entry owner.\nReturns 404 if the entry does not exist in the caller's org.\n\n### Responses:\n\n**204**: Successful Response (Success Response)\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }","inputSchema":{"type":"object","title":"delete_context_entryArguments","required":["entry_id"],"properties":{"entry_id":{"type":"string","title":"entry_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":212,"tokensAfter":212},{"name":"delete_epic","fixed":{"name":"delete_epic","description":"Delete Epic\n\nAGILE-02: Delete an epic. Any member can delete.\n\n### Responses:\n\n**204**: Successful Response (Success Response)\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"detail\": {\n      \"items\": {\n        \"properties\": {\n          \"loc\": {\n            \"items\": {},\n            \"","inputSchema":{"type":"object","title":"delete_epicArguments","required":["epic_id"],"properties":{"epic_id":{"type":"string","title":"epic_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":212,"tokensAfter":212},{"name":"delete_field_schema","fixed":{"name":"delete_field_schema","description":"Delete Field Schema\n\nTASK-03: Delete a custom field schema and all its values. Team Lead+ or private-project creator.\n\n### Responses:\n\n**204**: Successful Response (Success Response)\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"detail\": {\n      \"items\": {\n        \"properties\": {\n ","inputSchema":{"type":"object","title":"delete_field_schemaArguments","required":["project_id","schema_id"],"properties":{"schema_id":{"type":"string","title":"schema_id","format":"uuid"},"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":239,"tokensAfter":239},{"name":"delete_org_ai_config","fixed":{"name":"delete_org_ai_config","description":"Delete Org Ai Config\n\n### Responses:\n\n**204**: Successful Response (Success Response)","inputSchema":{"type":"object","title":"delete_org_ai_configArguments","properties":{}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":63,"tokensAfter":63},{"name":"delete_project","fixed":{"name":"delete_project","description":"Delete Project\n\nPROJECT-07: Permanent delete. Tasks and all child data cascade via FK constraints.\n\nMulti-step confirmation is handled in the frontend (user must type project name).\nThe backend does not re-verify the name — trust the guard + org_id scope.\nR2 attachment objects are orphaned (acceptable v1 behavior per CLAUDE.md constraints).\nCreator of a private project may delete their own project (260714-264 UAT-2).\n\n### Responses:\n\n**204**: Successful Response (Success Response)\n**422**: Valid","inputSchema":{"type":"object","title":"delete_projectArguments","required":["project_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":203,"tokensAfter":203},{"name":"delete_sprint","fixed":{"name":"delete_sprint","description":"Delete Sprint\n\nAGILE-03: Delete a sprint. Team Lead+ only (D-15).\n\n### Responses:\n\n**204**: Successful Response (Success Response)\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"detail\": {\n      \"items\": {\n        \"properties\": {\n          \"loc\": {\n            \"items\": {},\n         ","inputSchema":{"type":"object","title":"delete_sprintArguments","required":["sprint_id"],"properties":{"sprint_id":{"type":"string","title":"sprint_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":215,"tokensAfter":215},{"name":"delete_task","fixed":{"name":"delete_task","description":"Delete Task\n\nTASK-01, D-13: Members can only delete tasks they created; Team Lead+ can delete any team task.\n\n### Responses:\n\n**204**: Successful Response (Success Response)\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"detail\": {\n      \"items\": {\n        \"properties\": {\n          ","inputSchema":{"type":"object","title":"delete_taskArguments","required":["task_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":210,"tokensAfter":210},{"name":"delete_workflow_state","fixed":{"name":"delete_workflow_state","description":"Delete Workflow State\n\nDelete workflow state — 409 if any tasks are in this state.\n\n### Responses:\n\n**204**: Successful Response (Success Response)\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"detail\": {\n      \"items\": {\n        \"properties\": {\n          \"loc\": {\n            \"item","inputSchema":{"type":"object","title":"delete_workflow_stateArguments","required":["project_id","state_id"],"properties":{"state_id":{"type":"string","title":"state_id","format":"uuid"},"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":240,"tokensAfter":240},{"name":"delete_workflow_transition","fixed":{"name":"delete_workflow_transition","description":"Delete Transition\n\nPROJECT-03: Remove an allowed workflow transition.\n\n### Responses:\n\n**204**: Successful Response (Success Response)\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"detail\": {\n      \"items\": {\n        \"properties\": {\n          \"loc\": {\n            \"items\": {},\n     ","inputSchema":{"type":"object","title":"delete_workflow_transitionArguments","required":["project_id","from_state_id","to_state_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"},"to_state_id":{"type":"string","title":"to_state_id"},"from_state_id":{"type":"string","title":"from_state_id"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":262,"tokensAfter":262},{"name":"extract_tasks_upload","fixed":{"name":"extract_tasks_upload","description":"Extract Tasks Upload\n\nExtract tasks from a file upload (multipart/form-data). NOT MCP-exposed (tags=[\"ai\"]).\n\nD-07: returns extracted tasks for user review; DOES NOT persist anything.\nCaller bulk-creates via POST /api/v1/tasks once user confirms.\n\nFile field name: 'file'. Optional form field: 'project_id' (string UUID).\nAccepted types: PDF, DOCX, TXT, MD — 10 MB max.\n\nWhen project_id is provided, each extracted task is enriched with\nsuggested_assignee_id / suggested_assignee via a single batch a","inputSchema":{"type":"object","title":"extract_tasks_uploadArguments","required":["file"],"properties":{"file":{"type":"string","title":"file","contentMediaType":"application/octet-stream"},"project_id":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"project_id"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":237,"tokensAfter":237},{"name":"full_text_search","fixed":{"name":"full_text_search","description":"Full Text Search\n\nCMD-04: Full-text search across tasks, projects, and comments.\nMatching (UAT-260703 BUG-01):\n  - prefix tsquery built by _prefix_tsquery ('Mem' -> 'Mem:*' matches 'memory')\n  - title/body ILIKE substring fallback so mid-word fragments still match\nResults ranked by ts_rank_cd (weighted: title:A, description:B, comment:C);\nILIKE-only hits get a small floor rank so they sort below tsquery hits.\n\nT-01 (HIGH): user input never reaches to_tsquery raw — _prefix_tsquery\nstrips everythi","inputSchema":{"type":"object","title":"full_text_searchArguments","required":["q"],"properties":{"q":{"type":"string","title":"q","maxLength":200,"minLength":2,"description":"Search query (minimum 2 characters)"},"project_id":{"type":"string","anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"project_id"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":245,"tokensAfter":245},{"name":"get_ai_usage_summary","fixed":{"name":"get_ai_usage_summary","description":"Get Usage Summary\n\nAggregate ai_usage_log for last 30 days. Admin-only.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"calls\": 1,\n  \"prompt_tokens\": 1,\n  \"completion_tokens\": 1,\n  \"cost_usd\": 1.0\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"calls\": {\n      \"type\": \"integer\",\n      \"title\": \"Calls\"\n    },\n    \"prompt_tokens\": {\n      \"type\": \"integer\",\n      \"title\": \"Prompt Tokens\"\n    },\n    \"comp","inputSchema":{"type":"object","title":"get_ai_usage_summaryArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":194,"tokensAfter":194},{"name":"get_board","fixed":{"name":"get_board","description":"Get Board\n\nBOARD-01: Return board data: workflow states with their tasks, WIP counts, and limits.\nFrontend uses this to render Kanban, List, Gantt, Calendar views.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n","inputSchema":{"type":"object","title":"get_boardArguments","required":["project_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":209,"tokensAfter":209},{"name":"get_board_summary","fixed":{"name":"get_board_summary","description":"Get Board Summary\n\nReturn top-5 risky tasks for an AI sidebar 'board' context panel.\nNO AI call — pure DB query against cached risk_score. Fast (<50ms).\nSEC-01 (finding 8): org filter ensures only caller-org tasks are returned;\nalso neutralises the unvalidated project_id (foreign project → empty result).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Exa","inputSchema":{"type":"object","title":"get_board_summaryArguments","required":["project_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":207,"tokensAfter":207},{"name":"get_context_entry","fixed":{"name":"get_context_entry","description":"Retrieve a specific context entry by ID\n\nGet a context entry by ID. Decrypts private entries for the owner.\n\nReturns 404 if the entry does not exist in the caller's org.\nReturns 403 if the entry is private and the caller is not the owner.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"org_id\": \"Org Id\",\n  \"user_id\": \"User Id\",\n  \"visibility\": \"Visibility\",\n  \"type\": \"Type\",\n  \"title\": \"Title\",\n  \"b","inputSchema":{"type":"object","title":"get_context_entryArguments","required":["entry_id"],"properties":{"entry_id":{"type":"string","title":"entry_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":212,"tokensAfter":212},{"name":"get_epic","fixed":{"name":"get_epic","description":"Get Epic\n\nAGILE-02: Get a single epic with linked tasks and completion stats.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"project_id\": \"Project Id\",\n  \"organization_id\": \"Organization Id\",\n  \"title\": \"Title\",\n  \"status\": \"Status\",\n  \"status_override\": true,\n  \"created_at\": \"Created At\",\n  \"updated_at\": \"Updated At\",\n  \"completion_pct\": 1.0,\n  \"task_count\": 1,\n  \"done_count\": 1,\n  \"tasks\": [\n    ","inputSchema":{"type":"object","title":"get_epicArguments","required":["epic_id"],"properties":{"epic_id":{"type":"string","title":"epic_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":211,"tokensAfter":211},{"name":"get_focus_mode","fixed":{"name":"get_focus_mode","description":"Get Focus Mode\n\nAI-06: ranked 'what to work on right now' list for the caller.\n\nContent-hash cached: the LLM is only called when the user's task list\n(priorities, risk scores, due dates) or retrieved org-wide context has changed.\nRAG injection: top-3 org-wide confirmed knowledge entries injected as data block.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```","inputSchema":{"type":"object","title":"get_focus_modeArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":162,"tokensAfter":162},{"name":"get_my_burnout","fixed":{"name":"get_my_burnout","description":"Get My Burnout\n\nReturn the caller's cached burnout signal. Allowed for any authenticated user.\n\nDefaults to risk_level='none' when no row exists (e.g. brand-new user before first cron).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```","inputSchema":{"type":"object","title":"get_my_burnoutArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":127,"tokensAfter":127},{"name":"get_my_identity","fixed":{"name":"get_my_identity","description":"Get caller identity and permissions\n\nReturns 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 — y","inputSchema":{"type":"object","title":"get_my_identityArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":175,"tokensAfter":175},{"name":"get_org_ai_config","fixed":{"name":"get_org_ai_config","description":"Get Org Ai Config\n\nPitfall 8: NEVER return plaintext api_key. Returns last4 of decrypted key for masking UI.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"model_name\": \"Model Name\",\n  \"key_configured\": true\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"model_name\": {\n      \"type\": \"string\",\n      \"title\": \"Model Name\"\n    },\n    \"key_configured\": {\n      \"type\": \"boolean\",\n      \"title\": \"Key Confi","inputSchema":{"type":"object","title":"get_org_ai_configArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":190,"tokensAfter":190},{"name":"get_pending_labels","fixed":{"name":"get_pending_labels","description":"Get Pending Labels\n\nReturn AI-applied labels from Redis sentinel key if set (TTL 60s), else 204.\n\nRedis key format: ai_labels:{org_id}:{task_id} — includes org_id to prevent cross-org probing.\nGate: get_tenant_context (not require_entitlement — user already created the task).\nSecurity (T-6.5-pending-probe): verify task belongs to caller's org before reading Redis.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**","inputSchema":{"type":"object","title":"get_pending_labelsArguments","required":["task_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":204,"tokensAfter":204},{"name":"get_project","fixed":{"name":"get_project","description":"Get Project\n\nGet a single project by ID. Required by board page (BOARD-01 through BOARD-04).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"name\": \"Name\",\n  \"organization_id\": \"Organization Id\",\n  \"visibility\": \"Visibility\",\n  \"created_at\": \"Created At\",\n  \"agile_mode\": true\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"title\": \"Id\"\n    },\n    \"nam","inputSchema":{"type":"object","title":"get_projectArguments","required":["project_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":216,"tokensAfter":216},{"name":"get_project_briefs","fixed":{"name":"get_project_briefs","description":"Get pinned project briefs for MCP context injection\n\nReturns all confirmed project_brief entries for a project.\n\nMCP clients use this as a resource equivalent — call this before starting\nproject-scoped work to get pinned background context.\n\nOnly confirmed (status='confirmed') entries are returned.\nPrivate entries are excluded (team/org visibility only).\nOrg-scoped: only entries belonging to the caller's organization are returned (T-06.10-24).\n\nNote: this route acts as a resource equivalent in f","inputSchema":{"type":"object","title":"get_project_briefsArguments","required":["project_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":205,"tokensAfter":205},{"name":"get_project_memory","fixed":{"name":"get_project_memory","description":"Get a structured project memory bundle for AI context\n\nReturns a structured JSON bundle with the project's current state:\ndecisions (last 30 days), blockers (high-risk tasks + unresolved blocking dependencies\nscoped to this project), active work (current sprint or in-progress tasks), team context\nentries, and a layer-by-layer knowledge count.\n\nPass ?synthesize=true to request an AI-generated prose narrative on top of the structured\ndata. This consumes AI tokens and requires AI to be configured f","inputSchema":{"type":"object","title":"get_project_memoryArguments","required":["project_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"},"synthesize":{"type":"boolean","title":"synthesize","default":false}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":223,"tokensAfter":223},{"name":"get_project_velocity_trend","fixed":{"name":"get_project_velocity_trend","description":"Get Project Velocity Trend\n\nSPR-05: velocity trend for a project (last N completed sprints, chronological).\nSame payload as the sprint-scoped route; convenient for the project velocity chart.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n[\n  {}\n]\n```\n\n**Output Schema:** Array of items with the following structure:\n```json\n{\n  \"type\": \"object\",\n  \"additionalProperties\": true\n}\n```\n**422**: Validation Error\nContent-Ty","inputSchema":{"type":"object","title":"get_project_velocity_trendArguments","required":["project_id"],"properties":{"limit":{"type":"integer","title":"limit","default":10},"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":230,"tokensAfter":230},{"name":"get_sprint","fixed":{"name":"get_sprint","description":"Get Sprint\n\nAGILE-03: Get a single sprint.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"project_id\": \"Project Id\",\n  \"organization_id\": \"Organization Id\",\n  \"name\": \"Name\",\n  \"status\": \"Status\",\n  \"created_at\": \"Created At\",\n  \"updated_at\": \"Updated At\"\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"title\": \"Id\"\n    },\n    \"project_id\": {\n      \"t","inputSchema":{"type":"object","title":"get_sprintArguments","required":["sprint_id"],"properties":{"sprint_id":{"type":"string","title":"sprint_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":217,"tokensAfter":217},{"name":"get_sprint_burndown","fixed":{"name":"get_sprint_burndown","description":"Get Burndown\n\nD-18: Compute burndown from task completion timestamps at query time.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n[\n  {}\n]\n```\n\n**Output Schema:** Array of items with the following structure:\n```json\n{\n  \"type\": \"object\",\n  \"additionalProperties\": true\n}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Mes","inputSchema":{"type":"object","title":"get_sprint_burndownArguments","required":["sprint_id"],"properties":{"sprint_id":{"type":"string","title":"sprint_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":214,"tokensAfter":214},{"name":"get_sprint_report","fixed":{"name":"get_sprint_report","description":"Get Sprint Report\n\nSPR-03: committed-vs-completed-vs-added-vs-removed-vs-carried sprint report.\n\nAggregates three sources into a single org-scoped payload, each section carrying\nBOTH a task_count and a points figure so the frontend picks its display unit via\nthe top-level `has_points` flag:\n  - committed: the baseline snapshot captured at start (sprints.committed_*).\n  - completed: current in-scope tasks in a TERMINAL workflow state.\n  - added / removed: sprint_scope_log rows for this sprint.\n  ","inputSchema":{"type":"object","title":"get_sprint_reportArguments","required":["sprint_id"],"properties":{"sprint_id":{"type":"string","title":"sprint_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":203,"tokensAfter":203},{"name":"get_start_task_context","fixed":{"name":"get_start_task_context","description":"Get prompt bundle for starting work on a task\n\nReturns a structured bundle for beginning work on a task:\n- task: metadata (title, description, priority, due_date, state, project)\n- linked_context: top-3 confirmed knowledge entries from the project knowledge store\n- active_blockers: tasks currently blocking this task that are not in a terminal state\n\nMCP clients use this as a prompt equivalent for 'start work on task N' — one call\nprovides everything an AI agent needs to understand context before","inputSchema":{"type":"object","title":"get_start_task_contextArguments","required":["task_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":204,"tokensAfter":204},{"name":"get_suggestions","fixed":{"name":"get_suggestions","description":"Get Suggestions\n\nReturn AI suggestions for a task (AI-10): missing dependencies, priority reorder, etc.\n\nContent-hash cached: the LLM is only called when the task's title, description,\npriority, due date, dependency counts, or retrieved context entries have changed.\nRAG injection: top-k confirmed team knowledge entries are included as a delimited\ndata block (T-06.10-19: data, never instructions). Cited IDs returned for attribution.\n\n### Responses:\n\n**200**: Successful Response (Success Response)","inputSchema":{"type":"object","title":"get_suggestionsArguments","required":["task_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":201,"tokensAfter":201},{"name":"get_task","fixed":{"name":"get_task","description":"Get Task\n\nTASK-01: Get a single task by ID.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"organization_id\": \"Organization Id\",\n  \"title\": \"Title\",\n  \"priority\": \"Priority\",\n  \"labels\": [\n    \"string\"\n  ],\n  \"created_at\": \"Created At\",\n  \"task_type\": \"Task Type\",\n  \"actual_hours_overridden\": true\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"title\"","inputSchema":{"type":"object","title":"get_taskArguments","required":["task_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":214,"tokensAfter":214},{"name":"get_task_risk","fixed":{"name":"get_task_risk","description":"Get Task Risk\n\nReturn cached risk score for a task.\n\nReturns 200 with {risk_score, risk_level, risk_factors, summary, scored_at}\nwhen risk has been computed.\nReturns 202 with {status: \"pending\"} when risk_scored_at is NULL (ARQ job not yet run).\nReturns 404 when task does not exist or does not belong to the caller's org.\nSEC-01 (finding 7): org filter is the only tenant boundary (RLS is bypassed at runtime).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: applicati","inputSchema":{"type":"object","title":"get_task_riskArguments","required":["task_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":201,"tokensAfter":201},{"name":"get_team_burnout","fixed":{"name":"get_team_burnout","description":"Get Team Burnout\n\nReturn burnout signals for all members of a team. PRIVACY GATE: role=team_lead+ only (Pitfall 7).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"propertie","inputSchema":{"type":"object","title":"get_team_burnoutArguments","required":["team_id"],"properties":{"team_id":{"type":"string","title":"team_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":212,"tokensAfter":212},{"name":"get_velocity_trend","fixed":{"name":"get_velocity_trend","description":"Get Velocity Trend\n\nSPR-05: velocity trend for the project the given sprint belongs to (last N\ncompleted sprints, chronological). Any member may read (T-0612-07).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n[\n  {}\n]\n```\n\n**Output Schema:** Array of items with the following structure:\n```json\n{\n  \"type\": \"object\",\n  \"additionalProperties\": true\n}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Examp","inputSchema":{"type":"object","title":"get_velocity_trendArguments","required":["sprint_id"],"properties":{"limit":{"type":"integer","title":"limit","default":10},"sprint_id":{"type":"string","title":"sprint_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":226,"tokensAfter":226},{"name":"list_assignable_members","fixed":{"name":"list_assignable_members","description":"Get Assignable Members\n\nPROJECT-06: Return the correct assignee candidates for this project.\n\nLogic:\n- If project has a team_id set (open OR closed): return team members only\n- Private project (no team_id): return only the creator + explicit\n  project_members rows + org owner/admin — NOT the whole org (quick\n  260715-5lt Bug B; a private project's whole point is restricted visibility,\n  so the assignee picker must not leak every org member into it)\n- Otherwise (open, no team): return all org mem","inputSchema":{"type":"object","title":"list_assignable_membersArguments","required":["project_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":207,"tokensAfter":207},{"name":"list_comments","fixed":{"name":"list_comments","description":"List Comments\n\nCOLLAB-03: List all comments for a task in chronological order (ASC).\n\norganization_id filter added to prevent cross-tenant comment leakage (Rule 1 - Bug):\ntask_comments table does not have RLS so the API layer must enforce org isolation.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n[\n  {\n    \"id\": \"Id\",\n    \"task_id\": \"Task Id\",\n    \"user_id\": \"User Id\",\n    \"body\": \"Body\",\n    \"created_at\": \"Create","inputSchema":{"type":"object","title":"list_commentsArguments","required":["task_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":207,"tokensAfter":207},{"name":"list_context_entries","fixed":{"name":"list_context_entries","description":"List context entries visible to the caller\n\nList agent_context entries accessible to the caller.\n\nReturns team, org, and the caller's own private entries (in that order, newest first).\nPrivate entries are returned with body=[private entry — open to view] — use\nget_context_entry to read the decrypted body.\n\nFilters:\n- project_id: scope to a specific project\n- type: filter by entry type (decision, session_summary, project_brief, note)\n- visibility: filter by visibility level\n\n### Responses:\n\n**200","inputSchema":{"type":"object","title":"list_context_entriesArguments","properties":{"type":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"type"},"status":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"status"},"project_id":{"type":"string","anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"project_id"},"visibility":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"visibility"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":287,"tokensAfter":287},{"name":"list_epics","fixed":{"name":"list_epics","description":"List Epics\n\nAGILE-02: List all epics in a project, ordered by creation date.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n[\n  {\n    \"id\": \"Id\",\n    \"project_id\": \"Project Id\",\n    \"organization_id\": \"Organization Id\",\n    \"title\": \"Title\",\n    \"status\": \"Status\",\n    \"status_override\": true,\n    \"created_at\": \"Created At\",\n    \"updated_at\": \"Updated At\",\n    \"completion_pct\": 1.0,\n    \"task_count\": 1,\n    \"done_cou","inputSchema":{"type":"object","title":"list_epicsArguments","required":["project_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":214,"tokensAfter":214},{"name":"list_field_schemas","fixed":{"name":"list_field_schemas","description":"List Field Schemas\n\nTASK-03: List custom field schemas for a project.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"detail\": {\n      \"items\": {\n       ","inputSchema":{"type":"object","title":"list_field_schemasArguments","required":["project_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":217,"tokensAfter":217},{"name":"list_my_tasks","fixed":{"name":"list_my_tasks","description":"List My Tasks\n\nMCP-first: list all tasks assigned to the authenticated token owner across all projects.\nCalling 'list my tasks' via MCP automatically resolves to the token owner — no user_id needed.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n[\n  {\n    \"id\": \"Id\",\n    \"organization_id\": \"Organization Id\",\n    \"title\": \"Title\",\n    \"priority\": \"Priority\",\n    \"labels\": [\n      \"string\"\n    ],\n    \"created_at\": \"Cre","inputSchema":{"type":"object","title":"list_my_tasksArguments","properties":{"sort":{"type":"string","title":"sort","default":"due_date"},"order":{"type":"string","title":"order","default":"asc"},"priority":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"priority"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":244,"tokensAfter":244},{"name":"list_project_members","fixed":{"name":"list_project_members","description":"List Project Members\n\nPRIV-03: List explicit access grants for a private project (plus the creator).\n\n_assert_project_access gates visibility first — a non-member gets 404 before\nany membership rows are exposed (T-264-01).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n[\n  {\n    \"user_id\": \"User Id\",\n    \"email\": \"Email\",\n    \"role\": \"Role\"\n  }\n]\n```\n\n**Output Schema:** Array of items with the following structure:\n``","inputSchema":{"type":"object","title":"list_project_membersArguments","required":["project_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":213,"tokensAfter":213},{"name":"list_projects","fixed":{"name":"list_projects","description":"List Projects\n\nPROJECT-05: List projects visible to the calling user.\n\nAdmin/owner: see all projects (including closed).\nOthers: see open projects + closed projects where they are in the team.\nDefault: exclude archived projects. Pass include_archived=true to include them.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n[\n  {\n    \"id\": \"Id\",\n    \"name\": \"Name\",\n    \"organization_id\": \"Organization Id\",\n    \"visibility\"","inputSchema":{"type":"object","title":"list_projectsArguments","properties":{"include_archived":{"type":"boolean","title":"include_archived","default":false}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":205,"tokensAfter":205},{"name":"list_sprints","fixed":{"name":"list_sprints","description":"List Sprints\n\nAGILE-03: List all sprints in a project, ordered by creation date.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n[\n  {\n    \"id\": \"Id\",\n    \"project_id\": \"Project Id\",\n    \"organization_id\": \"Organization Id\",\n    \"name\": \"Name\",\n    \"status\": \"Status\",\n    \"created_at\": \"Created At\",\n    \"updated_at\": \"Updated At\"\n  }\n]\n```\n\n**Output Schema:** Array of items with the following structure:\n```json\n{\n  \"p","inputSchema":{"type":"object","title":"list_sprintsArguments","required":["project_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":214,"tokensAfter":214},{"name":"list_task_activity","fixed":{"name":"list_task_activity","description":"Get Activity Feed\n\nCOLLAB-03: Combined chronological feed of activities + comments.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"detail\": {\n      \"ite","inputSchema":{"type":"object","title":"list_task_activityArguments","required":["task_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":214,"tokensAfter":214},{"name":"list_task_blocked_by","fixed":{"name":"list_task_blocked_by","description":"List Blocked By\n\nReturn tasks that are blocking this task (its dependencies).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"detail\": {\n      \"items\": {","inputSchema":{"type":"object","title":"list_task_blocked_byArguments","required":["task_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":216,"tokensAfter":216},{"name":"list_task_blockers","fixed":{"name":"list_task_blockers","description":"List Blockers\n\nTASK-06: Return tasks that this task is blocking (tasks blocked by task_id).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"detail\": {\n  ","inputSchema":{"type":"object","title":"list_task_blockersArguments","required":["task_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":214,"tokensAfter":214},{"name":"list_task_field_values","fixed":{"name":"list_task_field_values","description":"Get Field Values\n\nTASK-03: Get custom field values for a task.\n\nSEC-MCP-01: filter by tfv.organization_id so a foreign-org task_id yields an\nempty list rather than leaking another org's field values.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Err","inputSchema":{"type":"object","title":"list_task_field_valuesArguments","required":["task_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":212,"tokensAfter":212},{"name":"list_tasks","fixed":{"name":"list_tasks","description":"List Tasks\n\nTASK-01 + BOARD-02: List tasks for a project with sort and filter. Used by all board views.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n[\n  {\n    \"id\": \"Id\",\n    \"organization_id\": \"Organization Id\",\n    \"title\": \"Title\",\n    \"priority\": \"Priority\",\n    \"labels\": [\n      \"string\"\n    ],\n    \"created_at\": \"Created At\",\n    \"task_type\": \"Task Type\",\n    \"actual_hours_overridden\": true\n  }\n]\n```\n\n**Output","inputSchema":{"type":"object","title":"list_tasksArguments","required":["project_id"],"properties":{"sort":{"type":"string","title":"sort","default":"created_at"},"limit":{"type":"integer","anyOf":[{"type":"integer"},{"type":"null"}],"title":"limit"},"order":{"type":"string","title":"order","default":"desc"},"search":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"search"},"priority":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"priority"},"state_id":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"state_id"},"project_id":{"type":"string","title":"project_id"},"assignee_id":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"assignee_id"},"parent_task_id":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"parent_task_id"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":399,"tokensAfter":399},{"name":"list_teams_mcp","fixed":{"name":"list_teams_mcp","description":"List or search teams\n\nReturns all teams for the authenticated user's organization. Pass ?name=<search_term> for a case-insensitive partial-match filter — useful for resolving a team name to its ID.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n[\n  {\n    \"id\": \"Id\",\n    \"organization_id\": \"Organization Id\",\n    \"name\": \"Name\"\n  }\n]\n```\n\n**Output Schema:** Array of items with the following structure:\n```json\n{\n  \"prop","inputSchema":{"type":"object","title":"list_teams_mcpArguments","properties":{"name":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"name","description":"Filter by team name (case-insensitive partial match)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":226,"tokensAfter":226},{"name":"list_workflow_states","fixed":{"name":"list_workflow_states","description":"List Workflow States\n\nPROJECT-02: List workflow states for a project.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n[\n  {\n    \"id\": \"Id\",\n    \"name\": \"Name\",\n    \"color\": \"Color\",\n    \"position\": 1,\n    \"is_initial\": true,\n    \"is_terminal\": true,\n    \"is_work_start\": true,\n    \"is_work_end\": true\n  }\n]\n```\n\n**Output Schema:** Array of items with the following structure:\n```json\n{\n  \"properties\": {\n    \"id\": {\n     ","inputSchema":{"type":"object","title":"list_workflow_statesArguments","required":["project_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":219,"tokensAfter":219},{"name":"list_workflow_transitions","fixed":{"name":"list_workflow_transitions","description":"List Workflow Transitions\n\nPROJECT-08: List all workflow transitions for a project with state names and enforce_order flag.\n\nRequired by the Workflow settings page (Plan 10) to render transition matrix.\nT-6.4-25: WHERE clause filters org + project to prevent cross-org leakage.\nUAT-2 260714-264: this was the route that errored when a private-project\ncreator clicked Settings — require_permission('manage_workflow_states')\ndenied the member-creator. Now creator-scoped via _require_project_permission","inputSchema":{"type":"object","title":"list_workflow_transitionsArguments","required":["project_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":208,"tokensAfter":208},{"name":"move_task","fixed":{"name":"move_task","description":"Move Task\n\nBOARD-01: Move task to new column (state). Validates WIP limit.\nT-01: WIP limit enforced server-side — cannot be bypassed via direct API call.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**O","inputSchema":{"type":"object","title":"move_taskArguments","required":["project_id","task_id","target_state_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"},"project_id":{"type":"string","title":"project_id","format":"uuid"},"target_state_id":{"type":"string","title":"target_state_id"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":252,"tokensAfter":252},{"name":"put_org_ai_config","fixed":{"name":"put_org_ai_config","description":"Put Org Ai Config\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"model_name\": \"Model Name\",\n  \"key_configured\": true\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"model_name\": {\n      \"type\": \"string\",\n      \"title\": \"Model Name\"\n    },\n    \"key_configured\": {\n      \"type\": \"boolean\",\n      \"title\": \"Key Configured\"\n    },\n    \"key_last4\": {\n      \"title\": \"Key Last4\"\n    }\n  },\n  \"type\": \"object\",\n","inputSchema":{"type":"object","title":"put_org_ai_configArguments","required":["model_name","api_key"],"properties":{"api_key":{"type":"string","title":"api_key"},"model_name":{"type":"string","title":"model_name"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":232,"tokensAfter":232},{"name":"remove_project_member","fixed":{"name":"remove_project_member","description":"Remove Project Member\n\nPRIV-03: Revoke an org user's access to a private project.\n\nAuthorization: only the project's creator or admin/owner (T-264-02). Refuses\nto remove the creator (409) — the creator always retains access.\n\n### Responses:\n\n**204**: Successful Response (Success Response)\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```","inputSchema":{"type":"object","title":"remove_project_memberArguments","required":["project_id","user_id"],"properties":{"user_id":{"type":"string","title":"user_id","format":"uuid"},"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":234,"tokensAfter":234},{"name":"remove_task_blocker","fixed":{"name":"remove_task_blocker","description":"Remove Blocker\n\nTASK-06: Remove a blocking dependency between two tasks.\n\n### Responses:\n\n**204**: Successful Response (Success Response)\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"detail\": {\n      \"items\": {\n        \"properties\": {\n          \"loc\": {\n            \"items\": {},\n  ","inputSchema":{"type":"object","title":"remove_task_blockerArguments","required":["task_id","blocked_task_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"},"blocked_task_id":{"type":"string","title":"blocked_task_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":243,"tokensAfter":243},{"name":"remove_task_dependency","fixed":{"name":"remove_task_dependency","description":"Remove Dependency\n\nRemove a dependency (blocker) from this task.\n\nSEC-MCP-01: verify the anchor task (blocked, i.e. task_id) belongs to the caller's\norg before deleting — mirrors remove_blocker's rigor.\n\n### Responses:\n\n**204**: Successful Response (Success Response)\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n`","inputSchema":{"type":"object","title":"remove_task_dependencyArguments","required":["task_id","blocker_task_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"},"blocker_task_id":{"type":"string","title":"blocker_task_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":240,"tokensAfter":240},{"name":"search_context","fixed":{"name":"search_context","description":"Search the team knowledge base\n\nFull-text search across tasks, comments, and agent_context entries.\n\nReturns a ranked list of matching items from all three sources, filtered by what the\nauthenticated user can access (org scope + visibility).\n\nNote: private agent_context entries are excluded from search results. Private entries\nhave encrypted bodies that are not searchable via FTS. Use list_context_entries to\nbrowse your own private entries, or get_context_entry to retrieve a specific one by ID.\n","inputSchema":{"type":"object","title":"search_contextArguments","required":["q"],"properties":{"q":{"type":"string","title":"q","maxLength":200,"minLength":2,"description":"Search query"},"project_id":{"type":"string","anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"project_id"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":238,"tokensAfter":238},{"name":"set_task_field_value","fixed":{"name":"set_task_field_value","description":"Upsert Field Value\n\nTASK-03: Upsert a custom field value for a task (D-26: value stored as text).\n\nSEC-MCP-01: validate the anchor task belongs to the caller's org BEFORE the\nINSERT ... ON CONFLICT DO UPDATE — otherwise ON CONFLICT could mutate a foreign\norg's existing row for a matching (task_id, field_schema_id) pair.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: applica","inputSchema":{"type":"object","title":"set_task_field_valueArguments","required":["task_id","field_schema_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"},"field_schema_id":{"type":"string","title":"field_schema_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":232,"tokensAfter":232},{"name":"start_sprint","fixed":{"name":"start_sprint","description":"Start Sprint\n\nAGILE-03: Transition sprint from planning → active. Team Lead+ only (D-15).\n\nD-14: Multiple concurrent active sprints are allowed — no enforcement of one-at-a-time.\nSPR-02: snapshots the committed scope into sprint_scope_log + committed_* columns,\natomically with the status transition.\nSPR-06: emits sprint.started through the webhook + Slack + email pipeline post-commit.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Respo","inputSchema":{"type":"object","title":"start_sprintArguments","required":["sprint_id"],"properties":{"sprint_id":{"type":"string","title":"sprint_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":202,"tokensAfter":202},{"name":"suggest_assignment","fixed":{"name":"suggest_assignment","description":"Suggest Assignment\n\nTwo-step AI assignment suggestion.\n\nStep 1 (confirmed_skills=None): infers required skills from task title + description.\n  Returns {\"inferred_skills\": [...]}\nStep 2 (confirmed_skills=[...]): ranks top-3 assignable members by skill match + workload signals.\n  Returns {\"suggestions\": [{user_id, name, avatar_url, match_reason, open_tasks, burnout_level}]}\n\nBoth steps require ai_features entitlement (402 for free-tier orgs).\nT-6.5-cross-org: member list scoped to project's assig","inputSchema":{"type":"object","title":"suggest_assignmentArguments","required":["title","project_id"],"properties":{"title":{"type":"string","title":"title"},"project_id":{"type":"string","title":"project_id"},"description":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"description"},"confirmed_skills":{"type":"array","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"confirmed_skills"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":279,"tokensAfter":279},{"name":"update_agile_settings","fixed":{"name":"update_agile_settings","description":"Update Agile Settings\n\nD-02: Toggle agile mode on/off. Team Lead+ or private-project creator. T-3.5-05.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"name\": \"Name\",\n  \"organization_id\": \"Organization Id\",\n  \"visibility\": \"Visibility\",\n  \"created_at\": \"Created At\",\n  \"agile_mode\": true\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n      \"title\": \"Id\"\n    ","inputSchema":{"type":"object","title":"update_agile_settingsArguments","required":["project_id","agile_mode"],"properties":{"agile_mode":{"type":"boolean","title":"agile_mode"},"project_id":{"type":"string","title":"project_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":239,"tokensAfter":239},{"name":"update_context_entry","fixed":{"name":"update_context_entry","description":"Update a context entry\n\nUpdate an existing context entry. Only the author can modify an entry.\n\nVisibility changes are handled safely:\n- private → team/org: body is decrypted before storing as plaintext\n- team/org → private: body is encrypted before storing as ciphertext\n- private → private with new body: body is re-encrypted\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"org_id\": \"Org Id\",\n  \"user","inputSchema":{"type":"object","title":"update_context_entryArguments","required":["entry_id"],"properties":{"body":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"body"},"tags":{"type":"array","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"tags"},"title":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"title"},"status":{"type":"string","anyOf":[{"enum":["pending","confirmed","dismissed"],"type":"string"},{"type":"null"}],"title":"status"},"entry_id":{"type":"string","title":"entry_id","format":"uuid"},"visibility":{"type":"string","anyOf":[{"enum":["private","team","org"],"type":"string"},{"type":"null"}],"title":"visibility"},"supersedes_id":{"type":"string","anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"supersedes_id"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":391,"tokensAfter":391},{"name":"update_epic","fixed":{"name":"update_epic","description":"Update Epic\n\nAGILE-02: Partially update an epic. Setting status triggers status_override=true (D-12).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"project_id\": \"Project Id\",\n  \"organization_id\": \"Organization Id\",\n  \"title\": \"Title\",\n  \"status\": \"Status\",\n  \"status_override\": true,\n  \"created_at\": \"Created At\",\n  \"updated_at\": \"Updated At\",\n  \"completion_pct\": 1.0,\n  \"task_count\": 1,\n  \"done_coun","inputSchema":{"type":"object","title":"update_epicArguments","required":["epic_id"],"properties":{"title":{"type":"string","anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"title"},"status":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"status"},"epic_id":{"type":"string","title":"epic_id","format":"uuid"},"due_date":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"due_date"},"description":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"description"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":321,"tokensAfter":321},{"name":"update_project_settings","fixed":{"name":"update_project_settings","description":"Update Project Settings\n\nPROJECT-05: Update project name/visibility/team. Team Lead+ (org permission)\nor the creator of a private project (creator-scoped bypass, 260714-264 UAT-2).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"name\": \"Name\",\n  \"organization_id\": \"Organization Id\",\n  \"visibility\": \"Visibility\",\n  \"created_at\": \"Created At\",\n  \"agile_mode\": true\n}\n```\n\n**Output Schema:**\n```json\n{\n ","inputSchema":{"type":"object","title":"update_project_settingsArguments","required":["project_id"],"properties":{"name":{"type":"string","anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"name"},"team_id":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"team_id"},"project_id":{"type":"string","title":"project_id","format":"uuid"},"visibility":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"visibility"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":301,"tokensAfter":301},{"name":"update_sprint","fixed":{"name":"update_sprint","description":"Update Sprint\n\nAGILE-03: Partially update sprint metadata (name, goal, start_date, end_date). Any member.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"project_id\": \"Project Id\",\n  \"organization_id\": \"Organization Id\",\n  \"name\": \"Name\",\n  \"status\": \"Status\",\n  \"created_at\": \"Created At\",\n  \"updated_at\": \"Updated At\"\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"id\": {\n      \"type\": \"s","inputSchema":{"type":"object","title":"update_sprintArguments","required":["sprint_id"],"properties":{"goal":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"goal"},"name":{"type":"string","anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"name"},"end_date":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"end_date"},"sprint_id":{"type":"string","title":"sprint_id","format":"uuid"},"start_date":{"type":"string","anyOf":[{"type":"string"},{"type":"null"}],"title":"start_date"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":323,"tokensAfter":323},{"name":"update_task","fixed":{"name":"update_task","description":"Update Task\n\nTASK-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.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"organization_id\": \"Organization Id\",\n  \"title\": \"Title\",\n  ","inputSchema":{"type":"object","title":"update_taskArguments","required":["task_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":203,"tokensAfter":203},{"name":"update_task_state","fixed":{"name":"update_task_state","description":"Update Task State\n\nPROJECT-03: Validate FSM transition, update current_state_id, log activity.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"msg\": \"Message\",\n      \"type\": \"Error Type\",\n      \"ctx\": {}\n    }\n  ]\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"detail\": {","inputSchema":{"type":"object","title":"update_task_stateArguments","required":["task_id","current_state_id"],"properties":{"task_id":{"type":"string","title":"task_id","format":"uuid"},"current_state_id":{"type":"string","title":"current_state_id"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":236,"tokensAfter":236},{"name":"update_workflow_state","fixed":{"name":"update_workflow_state","description":"Update Workflow State\n\nPROJECT-02: Update workflow state name, color, WIP limit, position, terminal/initial flags.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"id\": \"Id\",\n  \"name\": \"Name\",\n  \"color\": \"Color\",\n  \"position\": 1,\n  \"is_initial\": true,\n  \"is_terminal\": true,\n  \"is_work_start\": true,\n  \"is_work_end\": true\n}\n```\n\n**Output Schema:**\n```json\n{\n  \"properties\": {\n    \"id\": {\n      \"type\": \"string\",\n     ","inputSchema":{"type":"object","title":"update_workflow_stateArguments","required":["project_id","state_id","name"],"properties":{"name":{"type":"string","title":"name","maxLength":100,"minLength":1},"color":{"type":"string","title":"color","default":"#71717A"},"position":{"type":"integer","title":"position","default":0},"state_id":{"type":"string","title":"state_id","format":"uuid"},"wip_limit":{"type":"integer","anyOf":[{"type":"integer"},{"type":"null"}],"title":"wip_limit"},"is_initial":{"type":"boolean","title":"is_initial","default":false},"project_id":{"type":"string","title":"project_id","format":"uuid"},"is_terminal":{"type":"boolean","title":"is_terminal","default":false},"is_work_end":{"type":"boolean","title":"is_work_end","default":false},"is_work_start":{"type":"boolean","title":"is_work_start","default":false}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":402,"tokensAfter":402},{"name":"update_workflow_transition","fixed":{"name":"update_workflow_transition","description":"Update Transition\n\nPROJECT-08: Update enforce_order flag on a specific workflow transition.\n\nT-6.4-15: WHERE clause includes project_id + organization_id to prevent\ncross-project/cross-org transition updates; 404 returned if mismatch.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Output Schema:**\n```json\n{}\n```\n**422**: Validation Error\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"detail\": [\n    {\n      \"loc\": [],\n      \"","inputSchema":{"type":"object","title":"update_workflow_transitionArguments","required":["project_id","transition_id"],"properties":{"project_id":{"type":"string","title":"project_id","format":"uuid"},"enforce_order":{"type":"boolean","title":"enforce_order","default":false},"transition_id":{"type":"string","title":"transition_id","format":"uuid"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":260,"tokensAfter":260},{"name":"write_context","fixed":{"name":"write_context","description":"Write a context entry to the team knowledge store\n\nStore a context entry for retrieval by Claude or team members.\n\nEntry schema:\n- type: \"decision\" | \"session_summary\" | \"project_brief\" | \"note\" | \"status_update\"\n- title: short descriptive title\n- body: markdown body content\n- project_id: optional — associate with a specific project\n- visibility: \"private\" (only you), \"team\" (project members), \"org\" (entire org)\n- tags: optional list of topic tags for filtering\n\n### Responses:\n\n**201**: Successf","inputSchema":{"type":"object","title":"write_contextArguments","required":["type","title","body"],"properties":{"body":{"type":"string","title":"body","minLength":1},"tags":{"type":"array","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"tags"},"type":{"enum":["decision","session_summary","project_brief","note","status_update"],"type":"string","title":"type"},"agent":{"type":"object","anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"agent"},"title":{"type":"string","title":"title","maxLength":500,"minLength":1},"project_id":{"type":"string","anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"project_id"},"visibility":{"enum":["private","team","org"],"type":"string","title":"visibility","default":"team"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":379,"tokensAfter":379}],"toolsChanged":85,"tokensSaved":0,"todo":[{"tool":"add_project_member","params":["user_id","project_id"]},{"tool":"add_task_blocker","params":["task_id"]},{"tool":"add_task_dependency","params":["task_id"]},{"tool":"archive_project","params":["project_id"]},{"tool":"bulk_assign","params":["project_id"]},{"tool":"complete_sprint","params":["sprint_id"]},{"tool":"create_comment","params":["body","task_id"]},{"tool":"create_epic","params":["title","due_date","project_id","description"]},{"tool":"create_field_schema","params":["name","config","position","field_type","project_id"]},{"tool":"create_project","params":["name","team_id","visibility","template_id"]},{"tool":"create_sprint","params":["goal","name","end_date","project_id","start_date"]},{"tool":"create_task","params":["title","labels","due_date","priority","task_type","project_id","start_date","assignee_id","description","parent_task_id","bug_app_version","bug_environment","estimated_hours","recurrence_rule","current_state_id","bug_steps_to_reproduce"]},{"tool":"create_workflow_state","params":["name","color","position","wip_limit","is_initial","project_id","is_terminal","is_work_end","is_work_start"]},{"tool":"create_workflow_transition","params":["project_id","to_state_id","from_state_id"]},{"tool":"delete_comment","params":["task_id","comment_id"]},{"tool":"delete_context_entry","params":["entry_id"]},{"tool":"delete_epic","params":["epic_id"]},{"tool":"delete_field_schema","params":["schema_id","project_id"]},{"tool":"delete_project","params":["project_id"]},{"tool":"delete_sprint","params":["sprint_id"]},{"tool":"delete_task","params":["task_id"]},{"tool":"delete_workflow_state","params":["state_id","project_id"]},{"tool":"delete_workflow_transition","params":["project_id","to_state_id","from_state_id"]},{"tool":"duplicate_task","params":["task_id"]},{"tool":"extract_tasks","params":["text","project_id"]},{"tool":"extract_tasks_upload","params":["file","project_id"]},{"tool":"full_text_search","params":["project_id"]},{"tool":"generate_dashboard","params":["prompt"]},{"tool":"get_board","params":["project_id"]},{"tool":"get_board_summary","params":["project_id"]},{"tool":"get_context_entry","params":["entry_id"]},{"tool":"get_epic","params":["epic_id"]},{"tool":"get_pending_labels","params":["task_id"]},{"tool":"get_project","params":["project_id"]},{"tool":"get_project_briefs","params":["project_id"]},{"tool":"get_project_memory","params":["project_id","synthesize"]},{"tool":"get_project_velocity_trend","params":["limit","project_id"]},{"tool":"get_sprint","params":["sprint_id"]},{"tool":"get_sprint_burndown","params":["sprint_id"]},{"tool":"get_sprint_report","params":["sprint_id"]},{"tool":"get_start_task_context","params":["task_id"]},{"tool":"get_suggestions","params":["task_id"]},{"tool":"get_task","params":["task_id"]},{"tool":"get_task_risk","params":["task_id"]},{"tool":"get_team_burnout","params":["team_id"]},{"tool":"get_velocity_trend","params":["limit","sprint_id"]},{"tool":"list_assignable_members","params":["project_id"]},{"tool":"list_comments","params":["task_id"]},{"tool":"list_context_entries","params":["type","status","project_id","visibility"]},{"tool":"list_epics","params":["project_id"]},{"tool":"list_field_schemas","params":["project_id"]},{"tool":"list_my_tasks","params":["sort","order","priority"]},{"tool":"list_project_members","params":["project_id"]},{"tool":"list_projects","params":["include_archived"]},{"tool":"list_sprints","params":["project_id"]},{"tool":"list_task_activity","params":["task_id"]},{"tool":"list_task_blocked_by","params":["task_id"]},{"tool":"list_task_blockers","params":["task_id"]},{"tool":"list_task_field_values","params":["task_id"]},{"tool":"list_tasks","params":["sort","limit","order","search","priority","state_id","project_id","assignee_id","parent_task_id"]},{"tool":"list_workflow_states","params":["project_id"]},{"tool":"list_workflow_transitions","params":["project_id"]},{"tool":"log_decision","params":["agent","project_id"]},{"tool":"move_task","params":["task_id","project_id","target_state_id"]},{"tool":"put_org_ai_config","params":["api_key","model_name"]},{"tool":"refine_dashboard","params":["current_spec","dashboard_id","original_prompt","refinement_instructions"]},{"tool":"remove_project_member","params":["user_id","project_id"]},{"tool":"remove_task_blocker","params":["task_id","blocked_task_id"]},{"tool":"remove_task_dependency","params":["task_id","blocker_task_id"]},{"tool":"reorder_backlog_task","params":["task_id","project_id","after_task_id"]},{"tool":"restore_project","params":["project_id"]},{"tool":"save_session_summary","params":["tags","summary","project_id"]},{"tool":"search_context","params":["project_id"]},{"tool":"set_task_field_value","params":["task_id","field_schema_id"]},{"tool":"start_sprint","params":["sprint_id"]},{"tool":"suggest_assignment","params":["title","project_id","description","confirmed_skills"]},{"tool":"trigger_board_risk_score","params":["project_id"]},{"tool":"trigger_task_risk_score","params":["task_id"]},{"tool":"update_agile_settings","params":["agile_mode","project_id"]},{"tool":"update_context_entry","params":["body","tags","title","status","entry_id","visibility","supersedes_id"]},{"tool":"update_epic","params":["title","status","epic_id","due_date","description"]},{"tool":"update_project_settings","params":["name","team_id","project_id","visibility"]},{"tool":"update_sprint","params":["goal","name","end_date","sprint_id","start_date"]},{"tool":"update_task","params":["task_id"]},{"tool":"update_task_state","params":["task_id","current_state_id"]},{"tool":"update_workflow_state","params":["name","color","position","state_id","wip_limit","is_initial","project_id","is_terminal","is_work_end","is_work_start"]},{"tool":"update_workflow_transition","params":["project_id","enforce_order","transition_id"]},{"tool":"write_context","params":["body","tags","type","agent","title","project_id","visibility"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}