{"ok":true,"site":{"host":"forge-787205308580.us-west1.run.app","url":"https://forge-787205308580.us-west1.run.app/","type":"live","desc":"A collaborative workspace built for two users: humans and AI agents. Humans set intent; agents use WebMCP to plan, create, modify, and organize real workspace data under human control.","tools":[{"name":"get_project_state","kind":"answer","impl":"imperative","description":"Inspect the current project state including tasks, milestones, canvas cards, documents, and team metrics.","inputSchema":{"type":"object","properties":{"projectId":{"type":"string","description":"Optional project ID to inspect"},"includeDocuments":{"type":"boolean","description":"Whether to include full document contents"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"analyze_project","kind":"act","impl":"imperative","description":"Perform cognitive capacity analysis on project balance, capacity constraints, risk factors, and feasibility for team size.","inputSchema":{"type":"object","properties":{"teamSize":{"type":"number","description":"Number of team members (default: 2)"},"timeframeDays":{"type":"number","description":"Duration in days (e.g. 14)"},"projectId":{"type":"string","description":"Optional target project ID"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"export_workspace_state","kind":"act","impl":"imperative","description":"Serialize and export the current workspace state (project, tasks, milestones, documents, canvas cards) to JSON.","inputSchema":{"type":"object","properties":{"pretty":{"type":"boolean","description":"Whether to format the serialized JSON with indentation (default: true)"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"import_workspace_state","kind":"act","impl":"imperative","description":"Restore the workspace state from a serialized JSON string or structured state object with automatic rollback snapshot.","inputSchema":{"type":"object","properties":{"stateJson":{"type":"string","description":"Serialized JSON string containing project, tasks, milestones, etc."},"state":{"type":"object","description":"Parsed state object containing project, tasks, milestones, etc."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"search_workspace","kind":"answer","impl":"imperative","description":"Perform full-text search across all tasks, milestones, and documents with relevance ranking and field highlights.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search term or keywords to query"},"filterType":{"type":"string","enum":["all","task","milestone","document"],"description":"Optional filter to restrict search to a specific resource type (default: all)"},"limit":{"type":"number","description":"Maximum number of results to return (default: 20)"}},"required":["query"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_task","kind":"act","impl":"imperative","description":"Create a new task in the workspace with title, priority, assignee, estimate, and milestone link.","inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Clear action-oriented task title"},"description":{"type":"string","description":"Detailed specification and context"},"priority":{"type":"string","enum":["low","medium","high","urgent"],"description":"Task priority level"},"assignee":{"type":"string","description":"Person or role assigned to the task"},"milestoneId":{"type":"string","description":"Optional ID of parent milestone"},"estimateDays":{"type":"number","description":"Estimated days to complete"},"dueDate":{"type":"string","description":"Target completion date (YYYY-MM-DD)"},"subtasks":{"type":"array","description":"List of checklist subtasks with title and completion state"},"tags":{"type":"array","items":{"type":"string"},"description":"Categorization tags"},"projectId":{"type":"string","description":"Optional project ID"}},"required":["title"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"bulk_apply_tasks","kind":"act","impl":"imperative","description":"Create multiple tasks in one atomic transaction, minimizing UI re-renders and guaranteeing consistent rollback.","inputSchema":{"type":"object","properties":{"tasks":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","description":"Action-oriented task title"},"description":{"type":"string","description":"Task specification"},"priority":{"type":"string","enum":["low","medium","high","urgent"],"description":"Priority level"},"assignee":{"type":"string","description":"Assigned teammate"},"milestoneId":{"type":"string","description":"Optional milestone ID"},"estimateDays":{"type":"number","description":"Days needed"},"dueDate":{"type":"string","description":"Target date (YYYY-MM-DD)"},"tags":{"type":"array","items":{"type":"string"},"description":"Task tags"}},"required":["title"]},"description":"List of task objects to create in a single atomic commit"},"projectId":{"type":"string","description":"Optional target project ID"}},"required":["tasks"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"update_task","kind":"act","impl":"imperative","description":"Update fields of an existing task including status, priority, estimate, or description.","inputSchema":{"type":"object","properties":{"taskId":{"type":"string","description":"ID of the task to update"},"title":{"type":"string","description":"Updated title"},"description":{"type":"string","description":"Updated description"},"status":{"type":"string","enum":["todo","in_progress","review","done"],"description":"Updated status"},"priority":{"type":"string","enum":["low","medium","high","urgent"],"description":"Updated priority"},"assignee":{"type":"string","description":"Updated assignee"},"milestoneId":{"type":"string","description":"Updated milestone ID"},"timeSpentSeconds":{"type":"number","description":"Total time spent in seconds"},"estimateDays":{"type":"number","description":"Updated estimate in days"},"dueDate":{"type":"string","description":"Updated due date"},"subtasks":{"type":"array","description":"Updated subtasks checklist array"},"comments":{"type":"array","description":"Updated task comments list"},"tags":{"type":"array","items":{"type":"string"},"description":"Updated tags"},"archived":{"type":"boolean","description":"Whether the task is archived from active boards"},"archivedAt":{"type":"string","description":"Timestamp when the task was archived"}},"required":["taskId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"log_task_time","kind":"act","impl":"imperative","description":"Log time spent on a specific task in seconds or adjust total time logged.","inputSchema":{"type":"object","properties":{"taskId":{"type":"string","description":"ID of the task"},"secondsToAdd":{"type":"number","description":"Seconds to add to logged time"},"totalSeconds":{"type":"number","description":"Explicit total seconds spent"}},"required":["taskId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"move_task","kind":"act","impl":"imperative","description":"Move a task to a new Kanban column status (todo, in_progress, review, done).","inputSchema":{"type":"object","properties":{"taskId":{"type":"string","description":"ID of task to move"},"newStatus":{"type":"string","enum":["todo","in_progress","review","done"],"description":"Target Kanban status"}},"required":["taskId","newStatus"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"reorder_tasks","kind":"act","impl":"imperative","description":"Reorder a task within its current column or across Kanban columns at a specific target index.","inputSchema":{"type":"object","properties":{"taskId":{"type":"string","description":"ID of the task to reorder"},"targetStatus":{"type":"string","enum":["todo","in_progress","review","done"],"description":"Target column status"},"targetIndex":{"type":"number","description":"Zero-based target index within the target column"}},"required":["taskId","targetStatus","targetIndex"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"delete_task","kind":"transact","impl":"imperative","description":"Delete a task from the project workspace.","inputSchema":{"type":"object","properties":{"taskId":{"type":"string","description":"ID of the task to delete"}},"required":["taskId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"archive_task","kind":"act","impl":"imperative","description":"Archive or restore a completed task from the active board view into an archive state to keep the workspace tidy.","inputSchema":{"type":"object","properties":{"taskId":{"type":"string","description":"ID of the task to archive or restore"},"unarchive":{"type":"boolean","description":"Set to true to unarchive/restore the task back to the active board"}},"required":["taskId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_task_comment","kind":"act","impl":"imperative","description":"Add a note, feedback, or status update comment to a specific task in the workspace.","inputSchema":{"type":"object","properties":{"taskId":{"type":"string","description":"ID of the target task"},"content":{"type":"string","description":"Comment or note content"},"author":{"type":"string","description":"Author of the comment (e.g. Founder A (Tech), Founder B (Product), Forge Agent)"},"type":{"type":"string","enum":["note","feedback","status_update"],"description":"Comment category type"}},"required":["taskId","content"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"generate_plan","kind":"act","impl":"imperative","description":"Synthesize a cohesive launch or feature delivery plan tailored to specific team size and deadline.","inputSchema":{"type":"object","properties":{"goal":{"type":"string","description":"Core user objective or product launch scope"},"teamSize":{"type":"number","description":"Number of active team members (default: 2)"},"durationDays":{"type":"number","description":"Duration in days (e.g. 14)"}},"required":["goal"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_milestone","kind":"act","impl":"imperative","description":"Create a milestone delivery gate on the project timeline.","inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Milestone name"},"targetDate":{"type":"string","description":"Target delivery date (YYYY-MM-DD)"},"description":{"type":"string","description":"Milestone scope and success criteria"},"order":{"type":"number","description":"Sequential phase order"},"color":{"type":"string","description":"Hex or CSS color identifier"}},"required":["title","targetDate"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"update_milestone","kind":"act","impl":"imperative","description":"Update a milestone title, target date, or execution status.","inputSchema":{"type":"object","properties":{"milestoneId":{"type":"string","description":"Milestone ID to update"},"title":{"type":"string","description":"Updated milestone title"},"targetDate":{"type":"string","description":"Updated target date"},"status":{"type":"string","enum":["planned","active","completed"],"description":"Updated status"},"description":{"type":"string","description":"Updated description"}},"required":["milestoneId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"delete_milestone","kind":"transact","impl":"imperative","description":"Delete a milestone by ID.","inputSchema":{"type":"object","properties":{"milestoneId":{"type":"string","description":"ID of milestone to delete"}},"required":["milestoneId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_canvas_card","kind":"act","impl":"imperative","description":"Add a card, sticky note, architecture block, decision, or risk flag to the 2D project canvas.","inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Card title"},"content":{"type":"string","description":"Card markdown or text body"},"type":{"type":"string","enum":["note","architecture","decision","risk","metric"],"description":"Semantic type of canvas card"},"x":{"type":"number","description":"Horizontal canvas coordinate"},"y":{"type":"number","description":"Vertical canvas coordinate"},"width":{"type":"number","description":"Card width in pixels"},"height":{"type":"number","description":"Card height in pixels"}},"required":["title","content","type"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"update_canvas_card","kind":"act","impl":"imperative","description":"Update canvas card position, title, or content.","inputSchema":{"type":"object","properties":{"cardId":{"type":"string","description":"ID of canvas card to update"},"title":{"type":"string","description":"Updated card title"},"content":{"type":"string","description":"Updated card content"},"x":{"type":"number","description":"Updated horizontal position"},"y":{"type":"number","description":"Updated vertical position"}},"required":["cardId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"delete_canvas_card","kind":"transact","impl":"imperative","description":"Delete a card from the 2D canvas board.","inputSchema":{"type":"object","properties":{"cardId":{"type":"string","description":"ID of card to delete"}},"required":["cardId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_document","kind":"act","impl":"imperative","description":"Create a new project specification or documentation file in markdown format.","inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Document title"},"content":{"type":"string","description":"Markdown content of the document"}},"required":["title","content"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"update_document","kind":"act","impl":"imperative","description":"Update content of an existing project specification, incrementing version.","inputSchema":{"type":"object","properties":{"documentId":{"type":"string","description":"ID of the document to update"},"content":{"type":"string","description":"New markdown content"}},"required":["documentId","content"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"propose_changes","kind":"act","impl":"imperative","description":"Stage a set of batch changes (create/update/delete tasks, milestones, docs) as a reviewable proposal requiring human approval before mutation.","inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Concise summary of the proposed scope change"},"summary":{"type":"string","description":"Rationale explaining why these changes improve delivery confidence"},"changes":{"type":"array","description":"Array of diff changes to apply if human approves","items":{"type":"object","properties":{"id":{"type":"string"},"actionType":{"type":"string","enum":["create","update","delete","move"]},"entityType":{"type":"string","enum":["task","milestone","document","card","project"]},"entityId":{"type":"string"},"entityTitle":{"type":"string"},"reason":{"type":"string"}},"required":["actionType","entityType","entityId","entityTitle","reason"]}}},"required":["title","summary","changes"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"apply_approved_changes","kind":"act","impl":"imperative","description":"Execute staged proposal changes into live project state. Fails with APPROVAL_REQUIRED if proposal is pending human review.","inputSchema":{"type":"object","properties":{"proposalId":{"type":"string","description":"ID of the staged proposal to apply"},"humanConfirmed":{"type":"boolean","description":"Human confirmation flag. Must be true to apply proposals in pending state."}},"required":["proposalId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"reject_changes","kind":"act","impl":"imperative","description":"Reject and discard a staged change proposal without modifying project state.","inputSchema":{"type":"object","properties":{"proposalId":{"type":"string","description":"ID of proposal to reject"}},"required":["proposalId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"undo_changes","kind":"act","impl":"imperative","description":"Restore project state to the most recent workspace snapshot taken before a mutation or applied proposal.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Productivity & Business","apiSurface":"spec","toolCount":27}}