Status: AGENT-0 scaffold (contracts only)
Vision: world-studio-vision.md §18
RFC: specs/studio-cursor-sdk-rfc.md
Li World Studio agents call these tools via MCP (lis mcp li-engine) once PH-AGENT-1+ lands. This document and packages/li-studio define stable tool IDs and names only — no HTTP MCP server or @cursor/sdk wiring in AGENT-0.
Proof gate
Any tool that mutates project state or ships artifacts must run lic build (and typically lic check --format=json first). Agent chrome surfaces studio_mcp_lic_build as the proof gate tool; failed proof maps to studio_mcp_tool_result_err_proof.
| ID constant | MCP name | Conceptual args | Action |
studio_mcp_world_scaffold | world_scaffold | template_id: str, target_dir: str | Create world.li + assets/ + studio.toml from spin-up template |
studio_mcp_sim_set_profile | sim_set_profile | profile: str (e.g. sim_additive) | Set [engine] profile in studio.toml |
studio_mcp_lic_check | lic_check | paths: str[] (optional) | Run lic check --format=json; return diagnostics |
studio_mcp_lic_build | lic_build | target: str (optional triple) | Run lic build; required before publish/export |
studio_mcp_publish_bundle | publish_bundle | out_path: str | Write repro bundle (SVG/HDF5/manifest) after proof pass |
studio_mcp_am_export_print | am_export_print | job_path: str, printer_id: str (optional) | Export slice/mesh to printer pipeline (stub) |
studio_mcp_chem_dft_run | chem_dft_run | input_path: str, method: str (optional) | Queue QM/DFT job via li-chem (stub) |
studio_mcp_studio_adaptive_layout | studio_adaptive_layout | role: str, stage: str | Drug/role adaptive shell layout (layout_studio_shell_adaptive) |
studio_mcp_set_viewport_background | studio_set_viewport_background | bg: int (0 solid, 1 grid, 2 gradient) | Sets runtime viewport background preset (CPU paint_blit) |
studio_mcp_set_particle_display | studio_set_particle_display | tier_id: int (-1 off, 0–2 = 1k/10k/100k) | MD particle tier label + placeholder dots in viewport |
studio_mcp_set_biomol_style | studio_set_biomol_style | style: int (0 cartoon, 1 surface, 2 sticks) | Biomolecule representation chip color (stub, not mesh) |
Runtime API (import studio)
| Symbol | Role |
studio_mcp_tool_count() | Returns 11 |
studio_mcp_tool_dispatch_arg(tool_id, arg) | Viewport MCP tools apply arg via li_rt_studio_viewport_display_* |
studio_mcp_tool_dispatch(tool_id) | Stub: valid ID → status_ok, invalid → status_failed + result_err_io |
studio_mcp_tool_name(id) | Round-trip name via li_rt const table |
studio_mcp_tool_from_name(name) | Parse MCP tool name → ID |
studio_mcp_tool_id_valid(id) | Non-zero IDs only |
StudioAgentToolRequest | tool_id, status, result_code on agent chrome |
studio_compose_agent_chrome_with_tool | Optional tool request on compose |
Status / result codes (stub)
| Status | Constant |
| idle | studio_mcp_tool_status_idle |
| pending | studio_mcp_tool_status_pending |
| ok | studio_mcp_tool_status_ok |
| failed | studio_mcp_tool_status_failed |
| Result | Constant |
| ok | studio_mcp_tool_result_ok |
| proof failure | studio_mcp_tool_result_err_proof |
| I/O | studio_mcp_tool_result_err_io |
Smoke
packages/li-studio/li-tests/smoke/studio_mcp_tools.li — wave-1 ID/name round-trip and agent chrome optional field. packages/li-studio/li-tests/smoke/studio_mcp_extended.li — gap #6/#7 tool IDs, studio_mcp_tool_dispatch, adaptive layout hook. packages/li-studio/li-tests/smoke/studio_viewport_display.li — viewport background / particle tier / biomol style MCP + compose/paint. li-tests/composable/import_lig_chem_backend.li — chem_dft_run_smoke() stub energy (-76.0 Hartree); chem_lig_backend_auto unchanged.
Not in this slice
lis HTTP MCP server implementation @cursor/sdk agent session wiring - Real
am_export_print / chem_dft_run / adaptive layout execution (contracts + dispatch stub only)