{"serverId":"mcp-registry/app.ganty/mcp-server","tools":[{"name":"add_dependency","fixed":{"name":"add_dependency","description":"Add a finish-to-start dependency between two tasks in the same project.","inputSchema":{"type":"object","required":["predecessorId","successorId"],"properties":{"lagDays":{"type":"number","description":"Optional lag in days after predecessor finishes"},"successorId":{"type":"string","description":"Task that can start after predecessor finishes"},"predecessorId":{"type":"string","description":"Task that must finish first"}},"additionalProperties":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":139,"tokensAfter":139},{"name":"create_milestone","fixed":{"name":"create_milestone","description":"Add a milestone (key date) to a project.","inputSchema":{"type":"object","required":["projectId","name","date"],"properties":{"date":{"type":"string","description":"YYYY-MM-DD"},"name":{"type":"string"},"color":{"type":"string","description":"Hex color (defaults to #f59e0b)"},"projectId":{"type":"string"}},"additionalProperties":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":106,"tokensAfter":106},{"name":"create_project","fixed":{"name":"create_project","description":"Create a new project in a workspace. Returns the created project. Subject to plan-based project count limits.","inputSchema":{"type":"object","required":["workspaceId","name"],"properties":{"name":{"type":"string","description":"Project name"},"color":{"type":"string","description":"Hex color (e.g. #3b82f6). Defaults to blue."},"endDate":{"type":"string","description":"YYYY-MM-DD. Optional."},"startDate":{"type":"string","description":"YYYY-MM-DD. Defaults to today."},"description":{"type":"string"},"workspaceId":{"type":"string","description":"Workspace ID (UUID)"}},"additionalProperties":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":179,"tokensAfter":179},{"name":"create_task","fixed":{"name":"create_task","description":"Create a new task in a project. Dates must be in YYYY-MM-DD format. End date is exclusive (a 1-day task has end = start + 1 day).","inputSchema":{"type":"object","required":["projectId","name","startDate","endDate"],"properties":{"name":{"type":"string"},"color":{"type":"string","description":"Hex color (e.g. #3b82f6)"},"status":{"enum":["not_started","in_progress","done","on_hold"],"type":"string"},"endDate":{"type":"string","description":"YYYY-MM-DD (exclusive end)"},"parentId":{"type":"string","description":"Parent task ID for hierarchy"},"progress":{"type":"number","maximum":100,"minimum":0},"projectId":{"type":"string"},"startDate":{"type":"string","description":"YYYY-MM-DD"},"assigneeId":{"type":"string","description":"Profile ID of the assignee"},"description":{"type":"string"}},"additionalProperties":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":240,"tokensAfter":240},{"name":"delete_project","fixed":{"name":"delete_project","description":"Permanently delete a project. All tasks, milestones, and dependencies inside the project are also removed. This cannot be undone.","inputSchema":{"type":"object","required":["projectId"],"properties":{"projectId":{"type":"string"}},"additionalProperties":false},"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":84,"tokensAfter":84},{"name":"delete_task","fixed":{"name":"delete_task","description":"Delete a task. Child tasks and dependencies are removed as well.","inputSchema":{"type":"object","required":["taskId"],"properties":{"taskId":{"type":"string"}},"additionalProperties":false},"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":64,"tokensAfter":64},{"name":"get_critical_path","fixed":{"name":"get_critical_path","description":"Calculate the critical path of a project on the Ganty side and return it as data (don't ask the model to reason over raw task lists). Uses forward/backward CPM with progress-aware remaining duration. Returns critical_path tasks in order, per-task earliest/latest start/finish + slack, project_end_date, and total_duration_days. v1 limitations: Finish-to-Start dependencies only (Ganty has no other types), calendar days by default (business_days=true skips Sat/Sun but no holiday table), ignores mult","inputSchema":{"type":"object","required":["project_id"],"properties":{"as_of_date":{"type":"string","description":"YYYY-MM-DD. Start point for projecting remaining work. Defaults to today."},"project_id":{"type":"string","description":"Project ID (UUID)"},"business_days":{"type":"boolean","description":"If true, skip Saturday and Sunday in duration calculations. National holidays are still treated as working days (v1 has no holiday table). Defaults to false."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":290,"tokensAfter":290},{"name":"get_task","fixed":{"name":"get_task","description":"Get detailed information about a single task, including assignees and dependencies.","inputSchema":{"type":"object","required":["taskId"],"properties":{"taskId":{"type":"string","description":"Task ID (UUID)"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":77,"tokensAfter":77},{"name":"list_milestones","fixed":{"name":"list_milestones","description":"List milestones in a project (key dates such as launch or review gates).","inputSchema":{"type":"object","required":["projectId"],"properties":{"projectId":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":69,"tokensAfter":69},{"name":"list_projects","fixed":{"name":"list_projects","description":"List all projects in a workspace (excluding archived).","inputSchema":{"type":"object","required":["workspaceId"],"properties":{"workspaceId":{"type":"string","description":"Workspace ID (UUID)"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":74,"tokensAfter":74},{"name":"list_tasks","fixed":{"name":"list_tasks","description":"List tasks in a project. Supports optional filtering by name (search), status, and assignee.","inputSchema":{"type":"object","required":["projectId"],"properties":{"search":{"type":"string","description":"Filter task name by case-insensitive substring"},"status":{"enum":["not_started","in_progress","done","on_hold"],"type":"string"},"projectId":{"type":"string","description":"Project ID (UUID)"},"assigneeId":{"type":"string","description":"Filter by assignee profile ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":151,"tokensAfter":151},{"name":"list_workspaces","fixed":{"name":"list_workspaces","description":"Get all workspaces the authenticated user is a member of.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":50,"tokensAfter":50},{"name":"set_task_progress","fixed":{"name":"set_task_progress","description":"Update the progress percentage of a task (0-100). Status is auto-derived: 0=not_started, 1-99=in_progress, 100=done.","inputSchema":{"type":"object","required":["taskId","progress"],"properties":{"taskId":{"type":"string"},"progress":{"type":"number","maximum":100,"minimum":0}},"additionalProperties":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":98,"tokensAfter":98},{"name":"update_task","fixed":{"name":"update_task","description":"Update fields of an existing task. Only provided fields will be modified.","inputSchema":{"type":"object","required":["taskId"],"properties":{"name":{"type":"string"},"color":{"type":"string"},"status":{"enum":["not_started","in_progress","done","on_hold"],"type":"string"},"taskId":{"type":"string"},"endDate":{"type":"string","description":"YYYY-MM-DD"},"progress":{"type":"number","maximum":100,"minimum":0},"startDate":{"type":"string","description":"YYYY-MM-DD"},"assigneeId":{"type":["string","null"],"description":"null to unassign"},"description":{"type":"string"}},"additionalProperties":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":179,"tokensAfter":179}],"toolsChanged":14,"tokensSaved":0,"todo":[{"tool":"create_milestone","params":["name","projectId"]},{"tool":"create_project","params":["description"]},{"tool":"create_task","params":["name","status","progress","projectId","description"]},{"tool":"delete_project","params":["projectId"]},{"tool":"delete_task","params":["taskId"]},{"tool":"list_milestones","params":["projectId"]},{"tool":"list_tasks","params":["status"]},{"tool":"set_task_progress","params":["taskId","progress"]},{"tool":"update_task","params":["name","color","status","taskId","progress","description"]}],"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."}