AI agent music production over MCP — DonutStudio

Hello, agent.

DonutStudio is agent-controllable by design. Its full editing surface is exposed through a JSON-RPC command server on port 9900, fronted by a Model Context Protocol (MCP) server. Any MCP-compatible client (Claude Code, Cursor, Codex, or your own host) can drive DonutStudio: lay down notes, link them with exact ratios, run transforms, save checkpoints, export MIDI and video, and read back the result. This page is the canonical entry point: what you can do, how to start, and the rules of engagement.

How to start

Three steps from zero to a working agent loop.

1. Register the MCP server

In your MCP client config, point a server entry at the local DonutStudio MCP server (the JSON-RPC surface on http://localhost:9900). The MCP server exposes a tool per `arbit` method.

2. Confirm you can read state

Call `get_state` and `get_notes` first. Confirm the project's note count, track list, and tuning state match what you expect before mutating.

3. Save a checkpoint before any destructive op

`save_checkpoint` writes the entire project to disk in one undo step. Call it before batch_transform, clear_notes, or any operation that might be hard to reverse.

What you can do

Grouped by intent. Every entry maps to a public API method.

Compose

create_notes (batched), create_link (with a slaveHarmonic/masterHarmonic ratio), get_notes, get_links, get_note_frequency, set_cents_offset, batch_transform (quantize, humanize, retrograde, legato, staccato, transpose, scale_velocity, root_path_tune, and more).

Audition

preview_note (plays with the correct tuning), set_playhead, play, stop, set_bpm. Use get_audio_meters and reset_audio_meters to confirm you're hearing sound and not silence or clipping.

Shape the sound

set_track_instrument (soundfont / dx7 / diffsinger / va / external MIDI), set_track_volume / pan / adsr / reverb, get_soundfonts, get_presets.

Save and export

save_checkpoint, export_midi, export_arbit, export_audio (offline render, standalone only), export_dawproject.

Inspect

get_state, get_notes, get_links, get_tracks, get_tuning_state, get_transport, get_spectrum, get_loudness, get_debug_log.

Example agent tasks

Concrete things an agent can do end-to-end.

Build a JI-tuned chord progression

Pick a root, apply chord templates via the chord-aware tooling, link each chord tone with the correct ratio, save a checkpoint, and export to .mid and .arbit.

Auto-link from a chord

Lay down a chord with create_notes, then call the auto-link transform to derive every slave note's ratio from the chord root in one undo step.

Quantize + humanize

Run a 16th-note quantize, then a humanize pass with a small timing variance. Save a checkpoint between the two so you can revert the humanize if it lands wrong.

Detect beats and snap-arrange

For an imported audio clip, run beat detection and re-cut the arranger timeline to the detected grid.

Render a score-reactive video (Pro)

Build a Media Machine preset that reads notes, microtonal tuning, and harmonic content; render and export to MP4.

Agent skills

Drop-in skills for the major coding agents.

Skills README

Start here. Lists every skill, what it teaches the agent, and how to install it for Claude Code, Cursor, or Codex. — https://github.com/DonutsDelivery/donutstudio/blob/main/skills/README.md

DonutStudio Video Editing skill

Walk-the-video-editor skill: timeline, effects, transitions, text, export. — https://github.com/DonutsDelivery/donutstudio/tree/main/skills/donutstudio-video-editing

Do

Patterns that work.

Read before you write

Call get_state / get_notes / get_links before any mutation. Confirm the actual project state before changing it.

Checkpoint before destructive ops

save_checkpoint before clear_notes, before large batch_transforms, and before exporting over an existing file.

Prefer batched entry points

create_notes is one undo step for the whole batch; the per-note create_note is one undo step per call. Use the batched form.

Use the tuning-aware tools

preview_note plays with the correct tuning; get_note_frequency returns the actual frequency following the harmonic chain. Prefer them over fixed-pitch MIDI previews.

Pin the version

Read softwareVersion from the /donutstudio page's structured data. Don't assume a minimum version — read it at runtime.

Do NOT

Out of scope. Out of bounds.

Don't look for the source

DonutStudio is closed-source proprietary software. There is no public source tree. The github.com/DonutsDelivery/donutstudio repo holds only documentation, example scripts, and installer release artifacts.

Don't link to private paths

Don't expose, link to, or imply any private file path, internal endpoint, license-server URL, or build artifact that isn't on donutsdelivery.online or github.com/DonutsDelivery/donutstudio.

Don't bypass the public API

Drive the app through the MCP server (port 9900) or the `arbit` Lua API. Don't reach for undocumented internal protocols or memory-layout tricks.

Don't treat the repo as the source

The repository has `docs/`, `examples/`, `skills/`, and `flatpak/`. It does NOT have the application, build system, license server, or DSP engines.

Take it for a spin

Download DonutStudio Free, register the MCP server in your client of choice, and start composing.

Related pages

Inline links to every page an AI agent or non-JS client might need. The page top nav (Features … Download) is JS-rendered from data/projects.json:donutstudio.subnav.

  • Features: /donutstudio/features — every major feature in one place.
  • API & scripting: /donutstudio/api — the public arbit scripting surface, MCP server reference, and links to docs/, examples/, skills/.
  • For AI agents: /donutstudio/agents — how to start, what you can do, example tasks, do/don't.
  • About: /donutstudio/about — one-person project in Denmark.
  • Download: /donutstudio/download — installers for Windows, macOS, Linux.
  • DonutStudio overview: /donutstudio — the home page.
  • MCP server port: localhost:9900 (JSON-RPC; the same surface the arbit Lua API exposes).
  • Public docs on GitHub: https://github.com/DonutsDelivery/donutstudio/tree/main/docs
  • Agent skills on GitHub: https://github.com/DonutsDelivery/donutstudio/tree/main/skills