Skip to Content
WorkspacesWorkspace MCP Server

Workspace MCP Server

Agents use the workspace MCP server to inspect workspace state, create tiles, publish artifacts, and manage boards.

studio.* tools

Workspace context & notes

ToolWhat it does
studio.get_workspace_contextRead the current workspace shape, including tiles and desktops.
studio.get_workspace_notesRead workspace-level free-text notes (full document — intended for read-then-rewrite-whole).
studio.update_workspace_notesWrite workspace notes (PUT, not patch — supply the full new content).
studio.git_logRead the workspace repo’s commit history, newest first.
studio.lane_retentionExplain why each lane in the workspace still exists — the lane cleanup’s last verdict per lane, such as unpushed commits, uncommitted work, or a tile or running card still using it. Read-only.

Yolo Keeper notes

Durable, searchable notes shown in the Yolo Keeper app — the place for knowledge worth keeping about the repository.

ToolWhat it does
studio.create_noteCreate a note (title, optional body, tags, pinned, color).
studio.list_notesList notes without their bodies; active notes by default, or archived: true.
studio.search_notesCase-insensitive search over titles, bodies and tags; returns short excerpts.
studio.read_noteRead one note in full by noteId.
studio.update_noteUpdate a note. expectedRevision is required; a stale revision returns VERSION_CONFLICT with the current note instead of overwriting it.
studio.archive_noteArchive a note, or pass archived: false to restore it. Notes can’t be permanently deleted through MCP.

Desktop management

ToolWhat it does
studio.create_desktopCreate a desktop in the workspace.
studio.list_desktopsEnumerate all desktops in the workspace.
studio.archive_desktopArchive a desktop (hides from the switcher; tiles freeze in place).
studio.delete_desktopPermanently delete a desktop. Its pins close and its tiles move to main; main itself cannot be deleted. Restricted to User and Live Coding Agent roles.
studio.pin_tilePin a tile across desktops as a live mirror — source and pin always show the same state.

Tile management

ToolWhat it does
studio.list_tilesList all tiles on the workspace (or a specific desktop). Each preview tile carries preview.url and preview.status; once status is ready, pass the URL to studio.browser_navigate.
studio.create_agent_tileCreate an agent tile with a specified agent binary, title, optional lane, and branch mode.
studio.create_app_tileCreate an App tile for an installed app (call studio.install_app first).
studio.create_previewCreate a preview tile for an approved port and optional saved-config source.
studio.create_kanban_tileCreate a Kanban board tile and seed its board (default To do / Doing / Done, or supply columns); backgroundDrain also makes it the Background Runner’s source. Drive it afterward with the studio.kanban_* tools.
studio.create_checklist_tileCreate a Checklist tile and bind its list — attach an existing listId or mint a fresh list (optionally name + seed items). Drive it afterward with the studio.checklist_* tools.
studio.create_tileCreate a config-light, non-agent tile: terminal, pr-status, github-actions, content-drop, file-activity, background, pomodoro, or loop-designer (only when loops are enabled). pr-status reads config (repo as owner/repo; omit to auto-detect from the git remote) and loop-designer reads config.loopId to open an existing loop.
studio.remove_tileRemove a tile from the workspace and prune it from the layout tree.
studio.read_tile_outputRead the latest output of an agent or terminal tile without typing into it. Read-only; never boots the agent.
studio.resize_tileResize a tile within its split — size is a percentage of the tile’s immediate parent, like dragging the divider.
studio.update_tile_statusUpdate constrained tile status fields (status, message, progress).
studio.send_to_tileDeliver a prompt into an agent or terminal tile, booting the agent if needed. Pass submit: false to leave the text unsent.
studio.pin_tilePin a tile across desktops as a live mirror.

Work Artifacts

ToolWhat it does
studio.publish_artifactPublish a typed (text/JSON) Work Artifact to the workspace artifact store, where other agents can read or wait for it.
studio.get_artifactFetch an artifact by key, with optional version pin.
studio.list_artifactsList Work Artifacts in the workspace.
studio.wait_for_artifactBlock until a named artifact appears (polling with timeout). Coordinates producer→consumer agent handoffs.

File access

ToolWhat it does
studio.list_filesList files under a path (relative to workspace root), BFS to a configurable depth.
studio.read_fileRead a single file, up to a configurable limit (default 256 KiB, hard cap 1 MiB).
studio.search_filesSearch file contents using ripgrep with a fixed-string query.
studio.open_fileOpen a file in a file-viewer tile, or create one, with optional lane and desktop targeting. Pass readerMode: true for a distraction-free open — the file tree is hidden (re-expandable) and markdown renders as a formatted preview.
studio.open_file_readerConvenience preset — same as studio.open_file with readerMode: true always on (tree hidden, markdown rendered). Takes no boolean, for callers that prefer not to pass one.

Preview tiles

ToolWhat it does
studio.finalize_previewAttach a command, cwd, env, readiness pattern, and framework to a preview tile’s saved config.
studio.trigger_previewExecute a preview tile’s finalized command (start or restart the dev server).
studio.notify_preview_readyNotify the platform that a preview server is ready on a port — finds and updates matching tiles.
studio.inspect_portRead-only: inspect what process holds a port. Returns a short-lived confirmToken.
studio.reclaim_portKill the process occupying a port (using the token from inspect_port). Only reclaimable if attributable to your own lane.

Stashes

The Stash is an operator-curated side surface. The agent-facing surface is intentionally narrow — three tools, all stash-scoped (studio.list_stashes / studio.read_stash / studio.save_to_stash):

ToolWhat it does
studio.list_stashesList Stash buckets in the workspace with clip counts and metadata (no clip bodies).
studio.read_stashRead clip contents from one bucket. Pages in display order with each body capped at 8,000 chars; pass clipId for one clip’s full body. Never creates a bucket.
studio.save_to_stashSave content into a Stash bucket (creates the bucket if it doesn’t exist).

Kanban

Agent surface for the Kanban board tile. Mutations carry an agent audit trail (cards show who created or last touched them), and a delegated token narrowed to specific tiles can only mutate boards owned by those tiles.

ToolWhat it does
studio.kanban_get_boardRead a tile’s board — columns and cards — by tileId or boardId.
studio.kanban_update_boardRename a board or update its column set (boardId, name, columns).
studio.kanban_create_cardCreate a card (boardId, columnId, title, and a required expectedOutput of code / workspace / report; optional description, key, dependencies, supersedes, requestId for idempotent retries).
studio.kanban_update_cardEdit a card’s title, description, expectedOutput, or supersedes link (null clears it) — at least one is required. Moves are deliberately a separate permission.
studio.kanban_move_cardMove a card to another column and/or position (cardId, columnId, order).
studio.kanban_delete_cardDelete a card; the server scrubs it from other cards’ dependency lists.
studio.kanban_add_dependencyMark a card as blocked by another (cardId, blockedByCardId). Cycles are rejected (409 CYCLE_DEPENDENCY).
studio.kanban_remove_dependencyRemove a blocked-by link between two cards.
studio.kanban_start_boardSet up a board in one confirmed step: create or reuse the board, make it the Background Runner’s source, set where cards land and the landing policy (off / review / auto), place the Runner tile and a preview that follows the landing branch, and optionally start the Runner. Call it without confirm to get the plan, then again with confirm: true.
studio.kanban_inspect_cardInspect a card: status, review phase and verdict, executor and reviewer models, acceptance, and by default the worker transcript. compact: true drops the report text; includeOutput: false drops the transcript. Read-only.
studio.kanban_wait_for_cardWait up to 25 seconds for a card to reach a terminal result or a finished review phase. Read-only; call again after a timeout.
studio.kanban_preview_revisionPreview a billed re-run of a completed card: its source, blockers, policy and cost implications. Read-only.
studio.kanban_queue_revisionQueue that re-run once the owner has confirmed it. It dispatches a fresh, billed worker and moves the card back to Ready.
studio.kanban_supersede_cardMark a card’s unlanded result as replaced by another card on the same board. Owner-confirmed (confirmSupersede: true); nothing is retired until the replacement’s result has landed.
studio.kanban_abandon_landingAbandon a card’s unlanded code result: stop its landing, release its lane and optionally close its PR. Owner-confirmed (confirmAbandon: true). Dependents stay blocked.
studio.kanban_release_cardRelease one card’s Background Runner execution: stop its worker, or free its slot at once when no live worker exists. Other cards keep running. A live supervisor is never forced.
studio.kanban_requeue_cardQueue a new attempt of a card that failed, was cancelled or was released, so the runner admits it again. Spends money like the original attempt. Refused for landed cards.

Checklist tools

Agent surface for the Checklist tile — Keep-style per-workspace checklists. Lists outlive their tile (closing a tile detaches; re-attach by id), and a delegated token narrowed to specific tiles can only touch lists those tiles point at. There is deliberately no delete-list tool — archive via studio.checklist_update_list (hard delete is operator-only).

ToolWhat it does
studio.checklist_list_listsList the workspace’s checklists (summaries with item/checked counts; pass includeArchived for archived ones).
studio.checklist_get_listRead a full list — metadata + items — by listId.
studio.checklist_create_listCreate a list (all optional: name, color, seed items, requestId for idempotent retries).
studio.checklist_update_listRename, recolor, pin, or archive a list.
studio.checklist_add_itemAppend an item (listId, text).
studio.checklist_update_itemEdit an item’s text only — checking and moving are separate permissions.
studio.checklist_check_itemTick or untick an item (listId, itemId, checked).
studio.checklist_move_itemReorder an item (order is a float — between neighbors is (a+b)/2).
studio.checklist_delete_itemRemove a single item from a list.

Apps

ToolWhat it does
studio.list_appsList curated and personal apps available to the caller (display names, descriptions, permission sets).
studio.install_appRecord a grant for a tile app in the workspace (consent is recorded server-side).
studio.create_app_tileAdd an installed app as a visible tile on the workspace grid.
studio.create_personal_appCreate or update one of the caller’s personal apps with server-side manifest validation.

YOLO Assistant-only tools

These two scopes are served to YOLO Assistant through its chat bridge only. They are not registered on the workspace MCP server, so coding agents cannot call them.

ToolWhat it does
studio.annotate_tileRecord why a tile exists — durable purpose and associations — and optionally append a history note.
studio.suggest_delegate_agentRecommend a tier-compatible coding agent from the registry for delegation — returns a recommended agent plus fallbacks and the caller’s userTier.

Goals and inbox tools

For goals linked to the agent’s workspace; see Goals.

ToolWhat it does
studio.goal_get_contextRead the goals this workspace works toward: success checks, constraints, and the plan steps homed here. Pass your Kanban cardId to get the step your card is working on.
studio.goal_record_evidenceRecord a result or observation for a goal. It waits for the owner’s review — it never marks a goal achieved. Pass your cardId to deliver your step’s result. When the owner sent an earlier attempt back with notes, also pass answers and one responses entry per note (kept, fixed, removed, answered or declined, with an explanation and where to look). The owner sees your replies as your account and resolves each note.
studio.goal_get_reviewFor a card answering the owner’s review: their guidance, every note with its id and full quote, the previous result, and the exact answers ids to reply with.
studio.goal_report_progressTell the owner where your card’s plan step stands: working, blocked (also sent to their Inbox) or done. It never changes the step’s state, which follows the card.
studio.goal_archiveArchive a goal linked to this workspace, only when the operator asked for it. Reversible by the owner.
inbox.sendSend a markdown message to the workspace owner’s inbox — completion reports, summaries and updates, with links. Only ever reaches this workspace’s owner.

yolo_background.* tools

Control the Background Runner.

ToolWhat it does
yolo_background.get_stateRead the Runner’s state: whether it is on, its source board and columns, landing policy and capacity.
yolo_background.configurePreview, then apply, the Kanban board mapping, where lane PRs land, and the landing policy (off / review / auto).
yolo_background.startStart admission using the saved settings; optionally choose standing or drain-once mode.
yolo_background.stopPause admission or request cancellation. Capacity stays held until workers stop.
yolo_background.concurrencySet how many cards run at once, from 1 to 4.
yolo_background.force_releaseLast resort for a Runner stuck in Cancelling after its sandbox died: releases capacity held by claims you already cancelled.
yolo_background.routing_getRead routing: whether it is on, Jev’s status and why it is unavailable, the model catalog, and the runner and board policies.
yolo_background.routing_setPreview, then apply, turning routing on or off.
yolo_background.routing_decisionsRead recorded routing decisions for one card, or the latest across cards.
yolo_background.routing_previewShow where routing would send one card now. Read-only.
yolo_background.routing_policy_setReplace the runner’s or one board’s routing policy.
yolo_background.routing_policy_deleteDelete a runner, board or card policy so it inherits again.

loops.* tools

Available only where the deployment enables loops. See Loops.

ToolWhat it does
loops.list_templatesList the curated loop starter configs (docs sweep, test coverage push, flaky test stabilizer, and others). Read-only.
loops.createQueue a loop: prompt, exit (mode all/any, 1–8 checks), maxIterations (1–25), carry (worktree/fresh); optional name, agent, onCapReached, retry, budget, noProgressWindow, baseBranch, requestId. Does not start the runner unless run: true; if that would also run Ready Kanban cards, it returns needs-kanban-confirmation — resend with confirmKanbanBacklog only after the operator agrees.
loops.runLaunch a queued loop: turns on the loop source and starts a stopped runner. Uses the loops.control scope.
loops.listList loops (optionally by states) with the runner’s loop status.
loops.getRead one loop: state, iteration of cap, spend, and per-attempt decisions and check results.
loops.controlpause, resume, cancel or raise-cap, fenced on generation / expectedConfigVersion from loops.get.

Browser tools

The browser tools expose a Puppeteer-driven Chromium session that runs inside the workspace container. All tools below operate on a session id returned by studio.browser_create.

Session lifecycle

ToolWhat it does
studio.browser_createOpen a headless or tile-rendering Chromium session. renderMode: "tile" requires initialUrl; renderMode: "headless" (default) starts blank.
studio.browser_closeClose a session and drop its artifact footprint from R2.
studio.browser_listList all open browser sessions in the workspace’s session pod.
studio.browser_attach_tileCreate or find an agent-browser-* tile and attach the session’s screencast to the workspace.
studio.browser_attach_to_previewAttach a browser session to a preview tile — polls for status === "ready" and resolves the URL automatically.
ToolWhat it does
studio.browser_navigateNavigate to a URL with optional waitUntil condition.
studio.browser_clickClick a selector with optional button, click count, delay, and visibility requirement.
studio.browser_typeType text into a selector with optional delay and clearFirst.
studio.browser_hoverHover over a selector to trigger hover interactions.
studio.browser_scrollScroll the page or a specific element.
studio.browser_selectSelect option values in a <select> element.
studio.browser_wait_forWait for a selector, a predicate function, or networkIdle.
studio.browser_uploadUpload an artifact file to a file input (up to 50 MiB).

Inspection

ToolWhat it does
studio.browser_stateSnapshot one session: current URL, title, viewport dimensions, busy state, last error.
studio.browser_queryQuery elements matching a selector and return matching nodes with optional attributes.
studio.browser_evaluateEvaluate a JavaScript expression in the page context (≤ 8 192 bytes).
studio.browser_screenshotCapture a full-page or viewport screenshot, upload to R2, return the artifact key.
studio.browser_get_consoleReturn recent console messages from the session’s ring buffer with optional level/time filtering.
studio.browser_get_networkReturn recent network events from the session’s ring buffer.
studio.browser_download_waitWait for the next download to complete and upload the bytes to R2.

Tracing

ToolWhat it does
studio.browser_trace_startStart a Chrome DevTools trace with optional categories.
studio.browser_trace_stopStop the active trace, upload the trace JSON to R2, return the artifact key.

Scenarios

ToolWhat it does
studio.browser_record_scenarioRun a scenario against a live session and capture network envelopes (200 interactions by default; maxInteractions sets 1–1000).
studio.browser_replay_scenarioRun a scenario in replay mode against a captured envelope with request interception.
studio.browser_run_scenarioRun a scenario, upload the resulting screenshots to R2, return artifact keys.
studio.browser_diff_scenarioCompare two URLs side-by-side via scenario execution with artifact storage.
studio.browser_save_stateSave browser auth state (cookies, localStorage) to an artifact, scoped to an origin.
studio.browser_restore_stateApply saved auth state to the live page, with origin enforcement.

See Agent Browser for the user-facing guide on watching a browser session in a tile.

Adding MCP servers to your workspace

Beyond the built-in studio server, YOLO Studio ships a small catalog of additional MCP servers you can install per-workspace. Open Settings → MCP Servers and choose Browse and manage servers… to browse the catalog with live status (enabled / installed) and, for servers your operator has cleared for self-service, a toggle to install them into your workspace.

Enabling a server shows a short consent dialog describing what it does and what data it touches, then records the choice on your workspace. The server is installed and wired into your coding agents the next time the workspace starts — restart the workspace to begin using it. Disabling removes it from your selection the same way.

The first catalog server is Codebase Memory — a local knowledge-graph index of your repo (tree-sitter → SQLite) that gives agents structural code intelligence without scanning file-by-file. It runs entirely inside your workspace pod with no egress, and ships a graph visualization you can open as a tile from the same panel.

Why it matters

The server turns the workspace from a passive shell host into an agent-operable surface:

  • Agents create UI objects the user can immediately inspect.
  • Agents share durable workspace artifacts.
  • Review Artifacts attach to the same workspace where the work happened, with provenance preserved.

Because tile creation changes the user-visible workspace, these calls should be used intentionally rather than speculatively.

See Concepts, Preview Tiles, and Agent Browser for more on workspace controls.

Last updated on