not analyzable — source repository is gone (deleted or private)
Forkit is the only MCP you need for your team of agents. It is a persistent coordination infrastructure for multi-agent AI systems, exposed as a single MCP endpoint.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
tools
-
claim_task
Atomically claim a pending task for an agent. Race-condition-safe — only one agent wins when two claim the same task simultaneously.
in ▸ task_id agent_id enforce_assignee
-
execute_code
Execute an async JavaScript function in a real V8 isolate with your workspace API. Returns { result, logs, duration_ms }. TypeScript SDK: ```typescript type TaskStatus = 'pending' | 'in_progress' | 'done' | 'cancelled'; type Priority = 'urgent' | 'high' | 'medium' | 'low'; type DependencyType = 'blocks' | 'parent' | 'related'; type ProjectStatus = 'active' | 'archived'; type SprintStatus = 'planned' | 'active' | 'completed'; interface Task { id: string; workspace_id: string; title: string; description: string | null; status: TaskStatus; claimed_by: string | null; created_at: string; updated_at: string; metadata: Record<string, unknown> | null; project_id: string | null; sprint_id: string | null; priority: Priority; assignee: string | null; estimate: number | null; } interface Project { id: string; workspace_id: string; name: string; description: string | null; status: ProjectStatus; icon: string | null; created_at: string; updated_at: string; } interface Sprint { id: string; workspace_id: string; project_id: string | null; name: string; goal: string | null; start_date: string | null; end_date: string | null; status: SprintStatus; created_at: string; } interface Label { id: string; workspace_id: string; name: string; color: string; created_at: string; } interface Comment { id: string; task_id: string; author: string; author_type: 'agent' | 'human'; body: string; created_at: string; } type SettlementStatus = 'pending' | 'settled' | 'failed' | 'expired'; interface Payment { id: string; workspace_id: string; /** MCP tool that triggered the payment (e.g. 'create_task', 'summarize_session') */ tool: string; /** USDC wei string (6 decimals): '10000' = $0.01, '50000' = $0.05 */ amount: string; tx_hash: string | null; created_at: string; settlement_status: SettlementStatus; on_chain_tx_hash: string | null; settlement_attempts: number; failure_reason: string | null; } declare const codemode: { // Tasks list_tasks(filters?: { status?: TaskStatus; claimed_by?: string; parent_id?: string; overdue?: boolean }): Promise<Task[]>; get_task(task_id: string): Promise<Task | null>; ready_tasks(): Promise<Task[]>; create_task(args: { title: string; description?: string; metadata?: Record<string, unknown>; project_id?: string; sprint_id?: string; priority?: Priority; assignee?: string; estimate?: number; }): Promise<Task>; claim_task(args: { task_id: string; agent_id: string }): Promise<Task | null>; update_task(args: { task_id: string; status?: TaskStatus; description?: string; metadata?: Record<string, unknown>; project_id?: string; sprint_id?: string; priority?: Priority; assignee?: string; estimate?: number; }): Promise<Task | null>; add_dependency(args: { blocker_id: string; blocked_id: string; dependency_type?: DependencyType }): Promise<void>; delete_task(task_id: string): Promise<Task | null>; // Projects create_project(args: { name: string; description?: string; icon?: string }): Promise<Project>; list_projects(filters?: { status?: ProjectStatus }): Promise<Project[]>; get_project(project_id: string): Promise<Project | null>; update_project(args: { project_id: string; name?: string; description?: string; status?: ProjectStatus }): Promise<Project | null>; // Sprints create_sprint(args: { project_id?: string; name: string; goal?: string; start_date?: string; end_date?: string }): Promise<Sprint>; list_sprints(filters?: { project_id?: string; status?: SprintStatus }): Promise<Sprint[]>; get_active_sprint(project_id: string): Promise<Sprint | null>; update_sprint(args: { sprint_id: string; name?: string; goal?: string; status?: SprintStatus; start_date?: string; end_date?: string }): Promise<Sprint | null>; // Comments add_comment(args: { task_id: string; body: string; author?: string; author_type?: 'agent' | 'human' }): Promise<Comment>; list_comments(task_id: string): Promise<Comment[]>; // Labels create_label(args: { name: string; color?: string }): Promise<Label>; list_labels(): Promise<Label[]>; add_label_to_task(args: { task_id: string; label_id: string }): Promise<void>; remove_label_from_task(args: { task_id: string; label_id: string }): Promise<void>; list_labels_for_task(task_id: string): Promise<Label[]>; // Trajectories fork_trajectory(args: { name: string; from_execution_id?: string }): Promise<Trajectory | { error: string }>; switch_trajectory(args: { id: string }): Promise<Trajectory | { error: string }>; list_trajectories(): Promise<Trajectory[]>; get_current_trajectory(): Promise<Trajectory & { recent_executions: Execution[] }>; // Payments /** * Returns payments charged to this workspace, newest first. * @param opts.since Unix-ms cutoff — only payments created after this timestamp * @param opts.limit Max rows to return (default 100, max 500) * amount is a USDC wei string (6 decimals): '10000' = $0.01, '50000' = $0.05 */ list_payments(opts?: { since?: number; limit?: number }): Promise<Payment[]>; }; interface Trajectory { id: string; workspace_id: string; name: string; parent_id: string | null; branched_from_execution_id: string | null; status: 'active' | 'archived'; created_at: string; } interface Execution { id: string; workspace_id: string; trajectory_id: string | null; code: string; result: string | null; error: string | null; logs: string | null; duration_ms: number | null; status: 'success' | 'error' | 'timeout'; created_at: string; } interface AgentSession { id: string; workspace_id: string; task_id: string; agent_id: string; trajectory_id: string | null; status: 'active'|'completed'|'failed'|'paused'; created_at: string; updated_at: string; } type ActivityType = 'thought' | 'action' | 'result' | 'error'; // start_session({ task_id: string, agent_id: string }): Promise<AgentSession> // log_activity({ session_id: string, type: ActivityType, body: string, execution_id?: string }): Promise<void> // complete_session({ session_id: string, status: 'completed'|'failed'|'paused' }): Promise<void> // list_sessions(filter?: { task_id?: string, agent_id?: string, status?: string }): Promise<AgentSession[]> interface Webhook { id: string; workspace_id: string; url: string; events: string[]; enabled: boolean; created_at: string; last_fired_at: string | null; } // register_webhook({ url: string, events: string[], secret: string }): Promise<Webhook> // Registers a new outbound webhook. Events are fired for: task.created, task.updated, // task.claimed, task.deleted, session.started, session.completed, trajectory.forked, trajectory.switched // secret is used for HMAC-SHA256 signature in X-MCP-Signature header. // list_webhooks(): Promise<Webhook[]> -- secret NOT included in response // delete_webhook(id: string): Promise<void> ``` Example: ```javascript async () => { const ready = await codemode.ready_tasks(); const claimed = await codemode.claim_task({ task_id: ready[0].id, agent_id: "claude" }); return { claimed: claimed?.id }; } ```
in ▸ code
-
list_executions
Return recent execute_code audit records for this workspace. Each record includes status, duration_ms, and any error.
in ▸ limit status
-
ready_tasks
Return all pending tasks with no unresolved blockers — the topological ready set. Use as your starting point to find the next task to work on.
in ▸ limit assignee
-
search_api
Return TypeScript type definitions for the execute_code codemode SDK. Call once per session and cache the result.
in ▸ filter
-
summarize_session
Generate an AI digest of the current session and persist it to R2 memory as a Markdown file. Call at the end of every work session.
in ▸ notes session_id
-
wait_for_task
Block until a ready task is available for the given assignee. Wakes within ~250ms when a task becomes claimable. Use instead of polling ready_tasks.
in ▸ assignee timeout_ms
last analysis: gone
No code evidence — the analyzed source reached for no tracked permissions, tools, or hooks.