Skip to main content
Glama

sonic-pi-mcp

sonic-pi-mcp is a Python MCP server that lets an MCP client control a local Sonic Pi runtime over the standard stdio transport.

It starts Sonic Pi's Ruby daemon, sends OSC messages to the Spider runtime, runs Sonic Pi code, stops jobs, reads runtime events/logs, and searches the local Sonic Pi docs/samples/synthdefs.

Requirements

  • Python 3.11+

  • A local Sonic Pi installation or checkout.

  • The Sonic Pi root directory must contain:

    • app/server/ruby/bin/daemon.rb

    • app/server/ruby/bin/spider-server.rb

    • usually etc/doc, etc/samples, and etc/synthdefs

No machine-specific path is baked into this package. Set SONIC_PI_ROOT in the MCP client environment unless you pass root_path to sonic_start.

Related MCP server: SuperCollider OSC MCP

Install

From PyPI:

pip install sonic-pi-mcp

From a local checkout:

pip install .

Build a wheel/sdist:

python -m build

Then install the wheel on another machine:

pip install dist/sonic_pi_mcp-*.whl

The wheel only contains the Python package under src/sonic_pi_mcp. Generated runtime files, exported audio, examples, tests, and local scripts are excluded from distribution.

Configuration

Required in most deployments:

SONIC_PI_ROOT=<path to the Sonic Pi root directory>

Useful optional variables:

SONIC_PI_MCP_RUNTIME_DIR=<writable directory for temporary run_file buffers>
SONIC_PI_MCP_STARTUP_TIMEOUT=60
SONIC_PI_MCP_KEEPALIVE_INTERVAL=4
SONIC_PI_MCP_EVENT_BUFFER_SIZE=5000
SONIC_PI_MCP_DEFAULT_COLLECT_MS=1500
SONIC_PI_HOME=<custom Sonic Pi user-home root for logs, if needed>

SONIC_PI_MCP_RUNTIME_DIR is used when code is too large for Sonic Pi's OSC packet size and must be submitted with run_file. If it is not set, the server uses a per-user cache directory such as %LOCALAPPDATA%\sonic-pi-mcp on Windows, ~/Library/Caches/sonic-pi-mcp on macOS, or ${XDG_CACHE_HOME:-~/.cache}/sonic-pi-mcp on Linux.

PowerShell example without hard-coding a drive:

$env:SONIC_PI_ROOT = Join-Path $env:ProgramFiles 'Sonic Pi'
$env:SONIC_PI_MCP_RUNTIME_DIR = Join-Path $env:LOCALAPPDATA 'sonic-pi-mcp'
sonic-pi-mcp

POSIX shell example:

export SONIC_PI_ROOT="$HOME/apps/sonic-pi"
export SONIC_PI_MCP_RUNTIME_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/sonic-pi-mcp"
sonic-pi-mcp

MCP Client Setup

This package is a stdio MCP server. Configure clients to run the installed console command sonic-pi-mcp.

Generic MCP JSON shape:

{
  "mcpServers": {
    "sonic-pi": {
      "command": "sonic-pi-mcp",
      "args": [],
      "env": {
        "SONIC_PI_ROOT": "<path to Sonic Pi root>",
        "SONIC_PI_MCP_RUNTIME_DIR": "<writable runtime directory>"
      }
    }
  }
}

If your client does not inherit shell environment variables, put the variables in the client config. Avoid relying on the terminal profile of the user who installed the package.

If startup fails, the error includes preflight results, recent daemon output, Sonic Pi log tails, and likely fixes for common path, permission, and audio backend issues.

Run Manually

python -m sonic_pi_mcp

or:

sonic-pi-mcp

Both commands run the same stdio MCP server. They do not open an HTTP port.

MCP Tools

  • sonic_start(root_path?, no_inputs?)

  • sonic_status()

  • sonic_preflight(root_path?)

  • sonic_run_code(code, buffer_name?, collect_ms?)

  • sonic_play_file(path, buffer_name?, collect_ms?)

  • sonic_start_recording(collect_ms?)

  • sonic_stop_recording(collect_ms?)

  • sonic_save_recording(output_path, collect_ms?, wait_timeout?)

  • sonic_delete_recording(collect_ms?)

  • sonic_record_file(path, output_path, duration_seconds, bit_depth?, buffer_name?, root_path?, no_inputs?, overwrite?, shutdown_after?, save_timeout?)

  • sonic_stop(collect_ms?)

  • sonic_shutdown()

  • sonic_read_events(since?, limit?)

  • sonic_get_logs(source?, tail?)

  • sonic_send_cue(path, args?)

  • sonic_search_docs(query, limit?, root_path?)

  • sonic_list_samples(limit?, root_path?)

  • sonic_list_synths(limit?, root_path?)

  • sonic_list_fx(limit?, root_path?)

Suggested Agent Workflow

  1. Call sonic_preflight() when setting up a new machine or after a boot failure.

  2. Call sonic_start(no_inputs=true) unless the user needs audio input.

  3. Call sonic_status() and confirm state is ready.

  4. Use sonic_search_docs, sonic_list_samples, sonic_list_synths, and sonic_list_fx to stay within the user's installed Sonic Pi version.

  5. Send music with sonic_run_code(code, buffer_name, collect_ms) or run a local .rb file with sonic_play_file(path, buffer_name, collect_ms).

  6. Export a fixed-duration WAV with sonic_record_file(path, output_path, duration_seconds, bit_depth=24) when the user asks for a rendered file.

  7. Inspect returned events for syntax_error, runtime_error, or missing Defining fn :live_loop_... messages.

  8. Call sonic_stop() before replacing a long-running composition.

  9. Call sonic_shutdown() when the session is no longer needed.

Security

sonic_run_code executes local Sonic Pi code through the same token-protected Spider API used by the Sonic Pi GUI. Treat access to this MCP server as local code execution and local audio-device control.

License

MIT License. You may use, copy, modify, publish, distribute, sublicense, and sell copies of this package, provided the license text is included.

Packaging Notes

The package is intentionally path-neutral:

  • No repository-local absolute path is embedded.

  • SONIC_PI_ROOT or the root_path tool argument identifies Sonic Pi.

  • SONIC_PI_MCP_RUNTIME_DIR controls where temporary large-buffer files are written.

  • Build configuration excludes generated files such as .runtime/, exports/, examples, tests, and local playback/export scripts.

Available Tools

19 tools
sonic_delete_recordingC

Delete Sonic Pi's temporary recording.

ParametersJSON Schema
NameRequiredDescriptionDefault
collect_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.2/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description only states the action without disclosing side effects, irreversibility, prerequisites, or error conditions. Since no annotations are present, the description carries the full burden of behavioral transparency, and it fails to provide any beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-formed sentence with no fluff, making it efficient and easy to parse. It is appropriately front-loaded, but its brevity contributes to a lack of critical information. Overall, it is concise but not informationally robust.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple deletion operation, but the absence of annotations and parameter explanation makes the description incomplete. It does not explain what 'temporary recording' refers to, when deletion is appropriate, or what the collect_ms parameter controls. While an output schema exists, that does not cover these usage questions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema defines a single optional parameter collect_ms, but the description does not mention it at all. With 0% schema description coverage, the description must compensate, and it does not. The meaning of collect_ms remains unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and the resource ('Sonic Pi's temporary recording'), providing a specific verb+resource pair. It does not explicitly distinguish from sibling tools like save_recording or record_file, but the qualifier 'temporary' adds some differentiation. Overall, it is clear and concise for the core purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The description does not indicate when to use this tool, what conditions warrant deleting the recording, or any alternatives. This leaves the agent without context for selecting it among the many recording-related sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_get_logsB

Read Sonic Pi log tails. Source can be gui, spider, daemon, supersonic, or scsynth.

ParametersJSON Schema
NameRequiredDescriptionDefault
tailNo
sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It uses the verb 'Read' to indicate a safe, non-destructive operation and enumerates valid sources. However, it does not describe the output format, pagination, or behavior with invalid sources, leaving gaps beyond the basic read action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that delivers key purpose and source options without wasted words. It is appropriately concise for a simple log-reading tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, so return values are covered there. The description provides a clear purpose and source enumeration, but it omits details about the 'tail' parameter and does not address typical usage scenarios. For a tool with no annotations and 0% schema coverage, this is only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description does not explain the 'tail' parameter at all. It mentions 'Source can be...' which indirectly references the 'source' parameter and lists valid values, but it fails to clarify that 'tail' controls the number of lines returned. This leaves an important parameter semantically under-specified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Read') and resource ('Sonic Pi log tails'). It also lists the valid sources, which differentiates it from sibling tools that start, stop, or manage Sonic Pi sessions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of exclusions, prerequisites, or context for using logs instead of status checks or other sibling tools. The source list offers some implicit context but no explicit usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_list_fxB

List bundled Sonic Pi FX names.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
root_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. It simply says 'List bundled Sonic Pi FX names' without explaining whether this operation is read-only, whether it depends on a running Sonic Pi instance, or how the `limit` and `root_path` parameters affect behavior. This is insufficient for full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately conveys the tool's primary function. It is front-loaded and avoids unnecessary details, though it may be too brief for the parameters involved. Still, it is properly concise for the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of two optional parameters and a lack of annotations, the description is not complete. It does not explain the role of `root_path` or `limit`, nor does it mention any prerequisites or side effects. The output schema exists, so return values are covered, but additional context is still needed for a complete tool definition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain either parameter (`limit` or `root_path`). The description adds no meaning beyond the schema, which itself is empty of descriptions. The tool cannot be used correctly without further parameter information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states exactly what the tool does: it lists bundled Sonic Pi FX names. This is specific and distinct from sibling tools like sonic_list_samples and sonic_list_synths, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives. However, the tool name and sibling context make it obvious that this is for FX listing. The usage is implied but not explicitly stated, so it earns a 3.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_list_samplesC

List bundled Sonic Pi sample names.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
root_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description is only one sentence stating the action. It does not disclose any behavioral traits such as whether the tool is read-only, whether it requires filesystem access, or how it handles the optional root_path parameter. The term 'list' implies non-mutating, but this is not explicitly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that gets directly to the point without unnecessary words. It is appropriately concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is too minimal to fully cover the tool's behavior, particularly the optional parameters that modify results. It also does not differentiate from sibling list tools, leaving the agent without enough context for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has two optional parameters (limit, root_path) with 0% schema description coverage, and the description gives no explanation of their meaning or effects. The agent must infer from the parameter names, which is insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' and names the resource 'bundled Sonic Pi sample names', clearly distinguishing it from sibling tools like sonic_list_synths and sonic_list_fx. The purpose is immediately obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to choose this tool over alternatives such as sonic_list_synths or sonic_list_fx. There is no mention of prerequisites, use cases, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_list_synthsB

List bundled Sonic Pi synth names.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
root_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only states the action and the source ('bundled'), but does not clarify read-only status, effect of the 'limit' or 'root_path' parameters, or any potential side effects. The single sentence lacks behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise sentence with no redundant words, earning a perfect score for brevity and focus.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While an output schema exists, the description fails to explain the purpose of the parameters or provide context on how this tool fits with sibling listing tools. The tool may be simple, but the lack of parameter explanation makes it incomplete for effective invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the two optional parameters ('limit' and 'root_path'), and the description does not reference them at all, leaving their semantics completely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('bundled Sonic Pi synth names'), which clearly distinguishes it from sibling tools like sonic_list_samples and sonic_list_fx that list different entity types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when the agent needs synth names, but it does not explicitly state when to choose this over sonic_list_samples or sonic_list_fx, nor does it mention any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_play_fileB

Run a local Sonic Pi .rb file in the managed runtime.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
collect_msNo
buffer_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full burden of behavioral disclosure, but it only says 'Run'. It does not explain whether the call blocks, how it handles output, what collect_ms does, or what side effects occur in the runtime.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no filler. It is front-loaded with the essential action and object, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With three parameters, no annotations, and a large sibling set, the description is too minimal. It omits parameter semantics, usage comparisons, and behavioral details, leaving the agent with insufficient context to invoke the tool reliably.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides no explanation for collect_ms or buffer_name, and even path is only implicitly referenced through 'a local Sonic Pi .rb file'. With 0% schema description coverage, the description fails to compensate, leaving the agent to guess parameter meanings.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Run') and the target ('a local Sonic Pi .rb file'), specifying the resource and context ('managed runtime'). It distinguishes from sibling tools like sonic_run_code by emphasizing a local file path rather than inline code.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for executing local .rb files, but it does not explicitly state when to use it versus alternatives such as sonic_run_code or sonic_record_file. There is no mention of exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_preflightB

Check whether the local environment looks ready to start Sonic Pi.

ParametersJSON Schema
NameRequiredDescriptionDefault
root_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations supplied, the description must disclose behavioral traits on its own. It only states 'check whether ... looks ready' and never clarifies that this is a non-mutating diagnostic, what checks are performed, or how failures are reported; this omission leaves a significant transparency gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is one economical sentence with no filler or repetition; it front-loads the core verb and object. Given the tool's simplicity, this is appropriately sized, even if other dimensions lack detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with an output schema, the description states the core purpose, but it leaves root_path semantics and the nondestructive nature of the check unresolved. It is minimally viable but has clear gaps around invocation options and behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description does not mention the root_path parameter at all. The phrase adds no semantic detail beyond the schema's bare 'Root Path' title, so the description fails to compensate for missing parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific action ('check') and a well-defined object ('local environment ... ready to start Sonic Pi'). This clearly differentiates from sibling tools like sonic_start and sonic_status, which concern starting or checking a running session.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'ready to start Sonic Pi' establishes the intended context: run this before starting Sonic Pi. It does not explicitly exclude alternatives or name sibling tools, but the context is unmistakable and sufficient for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_read_eventsC

Read buffered Sonic Pi events after an optional sequence number.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sinceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, but it only mentions 'buffered' and 'after an optional sequence number'. It does not disclose whether reading consumes events, whether events are ordered, or any rate-limits. This leaves key behavioral traits ambiguous for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant words. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While an output schema exists, the description lacks behavioral context such as whether events are removed after reading, how to use 'since' effectively, or any caveats. For a tool with no annotations and only 2 parameters, more explanation is needed for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description clarifies that 'since' is a sequence number, which adds meaning beyond the schema. However, 'limit' is not mentioned, and with schema description coverage at 0%, the description does not fully compensate for both parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads buffered Sonic Pi events after an optional sequence number, giving a specific verb, resource, and scoping condition. It is distinct enough from siblings like sonic_get_logs or sonic_send_cue, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus others, or when not to use it. The phrase 'after an optional sequence number' implies incremental reading, but there is no explicit context for pollers or event consumers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_record_fileC

Start Sonic Pi if needed, record a .rb file for a fixed duration, and save WAV output.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
bit_depthNo
no_inputsNo
overwriteNo
root_pathNo
buffer_nameNo
output_pathYes
save_timeoutNo
shutdown_afterNo
duration_secondsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the full burden of disclosing side effects. It mentions it may start Sonic Pi, but it does not disclose potential shutdown behavior (e.g., via shutdown_after), overwrite rules, blocking until duration expires, or what happens if the output file already exists. This lack of detail makes the tool's effects unpredictable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler words. It efficiently communicates the core operation in one line. While it omits important behavioral details, this is a conciseness issue rather than a structure problem—the sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is complex (10 parameters, no annotations, zero schema coverage), yet the description is minimal. It lacks usage guidance, side effects, and optional parameter semantics, and while an output schema exists, the description alone is not enough for an agent to understand when to use this tool or how to set non-required parameters. The high-level overview is insufficient for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description maps the three required parameters: 'record a .rb file' implies path, 'for a fixed duration' maps to duration_seconds, and 'save WAV output' maps to output_path. However, it gives no explanation for the seven optional parameters (bit_depth, no_inputs, overwrite, root_path, buffer_name, save_timeout, shutdown_after), and since the schema has zero property descriptions, this is a critical gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear sequence: start Sonic Pi if needed, record a .rb file for a fixed duration, and save WAV output. It identifies the resource (.rb file), action (record), and output (WAV), and distinguishes itself from siblings like sonic_start and sonic_play_file which handle individual steps. However, 'record a .rb file' is slightly ambiguous—whether it records the audio playback or the file itself—so it's not perfectly explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no explicit comparison to alternative tools such as sonic_start_recording, sonic_stop_recording, sonic_save_recording, or sonic_play_file, nor does it mention when a user would prefer those separate controls. The only usage hint is 'Start Sonic Pi if needed,' which implies a prerequisite, but there is no guidance on when to choose this combined tool over the individual steps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_run_codeC

Run Sonic Pi code in the managed runtime and return newly collected events.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
collect_msNo
buffer_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It mentions returning 'newly collected events' but does not explain side effects (e.g., stopping current playback), error handling, asynchronous behavior, or the lifecycle of the runtime. This leaves significant behavioral ambiguity for a code execution tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no redundant words, making it highly concise. However, it is perhaps too terse given the tool's complexity, but this dimension rewards efficient wording, not completeness. The structure is acceptable for a short description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (3 parameters, output schema, and no annotations), the description is insufficient. It does not explain what 'newly collected events' are, how the code is executed, or the purpose of the optional parameters. The description would be more complete if it clarified the runtime behavior and parameter usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the input schema provides only parameter names. The description does not mention any of the three parameters. While 'code' is self-explanatory, 'collect_ms' and 'buffer_name' are completely unexplained, and the description adds no value to parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'Run Sonic Pi code in the managed runtime'. It also mentions the return of 'newly collected events', which distinguishes it from sibling tools like sonic_play_file or sonic_send_cue. This gives a precise sense of what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, exclusions, or situations where another tool would be more appropriate. The presence of sibling tools like sonic_read_events and sonic_send_cue makes this lack of differentiation problematic.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_save_recordingC

Save the current Sonic Pi recording to a WAV file.

ParametersJSON Schema
NameRequiredDescriptionDefault
collect_msNo
output_pathYes
wait_timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must disclose behavioral traits. The description only states the action without explaining side effects like file overwriting, blocking behavior, or error handling if no recording exists. This is a significant transparency gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no redundant words, making it concise. However, it is under-specified, omitting essential usage and behavior details, so while efficient, it is not appropriately informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has three parameters and no annotations, yet the description is only one sentence. It fails to mention requirements (e.g., active recording), the role of the timeout parameters, and whether the operation is blocking or may overwrite files. The output schema exists, but the description still leaves critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions none of the three parameters. With 0% schema description coverage, the description fails to clarify the meaning of output_path, collect_ms, or wait_timeout. The output_path parameter's purpose is somewhat inferable from 'WAV file', but no direct explanation is given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action (save) on a specific resource (current Sonic Pi recording) with a clear output format (WAV file). This makes the tool's purpose clear. However, it does not explicitly contrast with sibling tools like sonic_record_file or sonic_start_recording, so it's not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool, such as requiring an active recording or after calling stop_recording. It also doesn't mention alternatives or exclusions. The use of 'current' creates only a weak implication, but no explicit guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_search_docsC

Search local Sonic Pi markdown documentation and snippets.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
root_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden but only says 'search local', implying read-only behavior without stating it. It also fails to disclose whether there are side effects, how limits apply, or what happens with root_path modifications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. It efficiently captures the essence, though it sacrifices necessary detail for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema (which reduces need to explain returns), the tool has three parameters at 0% schema description coverage, no behavioral detail, and no usage context. The description is inadequate for an agent to invoke the tool confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention any of the parameters (query, limit, root_path). The agent is left with only the schema types and defaults, with no guidance on their meaning or usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Search' and resource 'local Sonic Pi markdown documentation and snippets', clearly differentiating from sibling tools like sonic_run_code or sonic_list_synths. It is unambiguous about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor any mention of prerequisites or exclusions. The description merely states the action without contextual direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_send_cueC

Send an external OSC cue into Sonic Pi's cue server.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNo
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the burden of disclosing side effects and behavior. It only states the action without mentioning that sending a cue may trigger code execution in Sonic Pi, whether it is fire-and-forget, or how errors are handled. This is a significant transparency gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. It is front-loaded with the action verb, but it is under-specified, slightly lowering the score from 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of annotations, sparse schema, and no parameter descriptions, the description is far too brief to enable correct tool invocation. It lacks operational details like required context, parameter formatting, and behavioral expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description must explain 'path' and 'args'. It does not define the expected OSC path format, what arguments should look like, or how they are used. The description adds no real semantic value beyond the schema's field names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Send an external OSC cue into Sonic Pi's cue server' uses a specific verb and resource, clearly distinguishing it from sibling tools like sonic_run_code (executes code) or sonic_read_events (reads events). The purpose is immediately understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool, prerequisites (e.g., Sonic Pi must be running), or alternatives. It does not mention any exclusions or compare with other tools, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_shutdownA

Shut down the managed Sonic Pi runtime.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states the action without disclosing side effects such as termination of running code, loss of unsaved state, or whether the operation is reversible. For a shutdown tool, this lack of consequence disclosure is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is immediately clear and front-loaded. Every word earns its place with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with an output schema, the description sufficiently states the tool's purpose. While it lacks usage context and behavioral detail, those are addressed in other dimensions, and the simplicity of the tool means the description is largely complete for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the schema coverage is 100% and no parameter explanation is needed. The description adds no ambiguity around inputs, and the baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Shut down') and a specific resource ('the managed Sonic Pi runtime'). It distinguishes from sibling 'sonic_stop' by referencing the managed runtime, implying a full shutdown rather than stopping a program.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'sonic_stop' or 'sonic_start'. It does not mention any prerequisites, sequencing, or conditions under which shutdown is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_startC

Start a managed local Sonic Pi runtime.

ParametersJSON Schema
NameRequiredDescriptionDefault
no_inputsNo
root_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility for behavioral disclosure. It mentions 'managed' but never explains what that means (e.g., background process, persistent state, potential failure if already running, or side effects). For a state-changing startup tool, this is a significant transparency gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence with no filler or redundancy. It is front-loaded with the essential verb and resource. Every word earns its place in this minimal description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool starts a state-changing process and has no annotations, the description is under-specified. It does not explain how the result is communicated (despite an output schema), how to check completion via sonic_status, or any error conditions. The presence of an output schema helps but does not compensate for the missing usage workflow and behavioral details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention either parameter (no_inputs, root_path) or their meaning. 'no_inputs' is ambiguous without explanation, and root_path, while somewhat self-explanatory, still lacks context. The description adds no value to the parameter schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Start a managed local Sonic Pi runtime' uses a specific verb ('start') and resource ('local Sonic Pi runtime'), clearly distinguishing this tool from siblings like sonic_shutdown, sonic_status, and sonic_run_code. It accurately conveys the tool's core function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, typical workflow order, or exclusions such as 'use sonic_preflight first' or 'do not use if already running.' The description merely states the action without contextual usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_start_recordingC

Start Sonic Pi's built-in WAV recorder.

ParametersJSON Schema
NameRequiredDescriptionDefault
collect_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of explaining side effects, but it only states that the recorder starts. There's no mention of whether existing recordings are cleared, whether the operation is asynchronous, or what happens with the collect_ms parameter. The word 'built-in' suggests a native feature, but that's insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with every word earning its place. It contains no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, so return values are covered elsewhere, but the description still lacks essential context like parameter semantics and usage prerequisites. The completeness is insufficient for a tool with a non-trivial parameter and many siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one parameter, collect_ms, with no description, and the description does not mention it at all. With 0% schema description coverage, this leaves the parameter completely unexplained, and the agent cannot determine its purpose from the name alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the verb 'Start' and specifies the resource as 'Sonic Pi's built-in WAV recorder', making the primary action clear. However, it doesn't distinguish from the sibling tool 'sonic_record_file', which may also start a recording, so there's no explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like sonic_stop_recording or sonic_save_recording, nor any prerequisites (e.g., Sonic Pi must be running). This leaves the agent to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_statusB

Return current Sonic Pi session status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavior. It only states that it returns status, without explaining what status information is included, whether it requires a running session, or if it has side effects. This is a significant transparency gap for a tool operating on an external system.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the verb, and contains no extraneous information. It is as concise as possible while communicating the core function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with no parameters and has an output schema, so the description does not need to document return values in detail. However, it lacks context about the session lifecycle, such as what 'current' means relative to starting/shutting down, and does not differentiate from sibling status-like tools. This is adequate but leaves room for improvement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description adds no parameter-specific semantics, but none are necessary given the empty input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Return') and resource ('current Sonic Pi session status'). It is distinct from siblings by focusing on status, though it does not explicitly contrast with similar tools like sonic_preflight.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives such as sonic_preflight, sonic_read_events, or sonic_get_logs. The description is purely functional and omits context like prerequisites or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_stopC

Stop all running Sonic Pi jobs.

ParametersJSON Schema
NameRequiredDescriptionDefault
collect_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action without explaining side effects, whether jobs are killed or paused, or any impact on the Sonic Pi server. The parameter collect_ms is not addressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and front-loaded with the action. It avoids unnecessary words, though the extreme brevity compromises depth.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one optional parameter) and the presence of an output schema, the description is too thin. It omits parameter semantics, behavioral details, and usage guidance, making it incomplete for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter collect_ms is absent from the description, and the schema offers only a type and default with no semantic explanation. Since schema description coverage is 0%, the description adds zero parameter semantics, leaving the agent guessing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Stop' and names the resource 'all running Sonic Pi jobs', making the action clear. It implicitly differentiates from sibling tools like sonic_stop_recording and sonic_shutdown, though the term 'jobs' could be more precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like sonic_shutdown or sonic_stop_recording. It does not mention prerequisites, scenarios, or exclusions, leaving the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sonic_stop_recordingC

Stop Sonic Pi's built-in WAV recorder.

ParametersJSON Schema
NameRequiredDescriptionDefault
collect_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing side effects. It only says 'Stop' without explaining what happens to the recorded audio, whether the recording is saved, or if stopping when not recording causes an error. This is minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler or redundant content. It is front-loaded and appropriately sized for a simple stop operation, although it lacks detail elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the tool's simplicity, the description is incomplete: it omits any explanation of the `collect_ms` parameter, the effects of stopping, and the expected behavior when the recorder is not running. The presence of an output schema reduces the need to describe return values, but the parameter gap remains significant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter `collect_ms` has 0% schema description coverage, and the description does not add any meaning. The name hints at a time-based behavior, but it is not explained, leaving the agent to guess what value to supply.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Stop') and the specific resource ('Sonic Pi's built-in WAV recorder'), distinguishing it from the sibling tool `sonic_stop` which would be a generic stop. It is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is provided about when to use this tool versus alternatives. It is implied that it pairs with `sonic_start_recording`, but there is no mention of prerequisites, sequencing, or cases where another stop tool might be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 19 tool updatesv0.1.3
    • First observedsonic_delete_recording
    • First observedsonic_get_logs
    • First observedsonic_list_fx
    • First observedsonic_list_samples
    • First observedsonic_list_synths
    • First observedsonic_play_file
    • First observedsonic_preflight
    • First observedsonic_read_events
    • First observedsonic_record_file
    • First observedsonic_run_code
    • First observedsonic_save_recording
    • First observedsonic_search_docs
    • First observedsonic_send_cue
    • First observedsonic_shutdown
    • First observedsonic_start
    • First observedsonic_start_recording
    • First observedsonic_status
    • First observedsonic_stop
    • First observedsonic_stop_recording

TDQS

B3.1/5.0
Disambiguation4/5

Most tools have a clear, distinct purpose, such as runtime lifecycle versus recording versus code execution. The only mild overlap is between sonic_shutdown and sonic_stop, which could confuse an agent about whether to stop jobs or shut down the entire runtime.

Naming Consistency5/5

All tools follow the same sonic_ prefix with snake_case verb_noun or verb naming. The pattern is highly predictable and consistent across lifecycle, recording, and inspection tools.

Tool Count4/5

With 19 tools, the set is on the heavier side but well-scoped for the domain. The number reflects the broad functionality (runtime, recording, code execution, and resource listing) without being excessive or redundant.

Completeness4/5

The tool surface covers the main workflows: starting and stopping the runtime, executing code, recording audio, and inspecting bundled resources. Minor gaps exist, such as no per-job management or a dedicated tool to list running jobs, but these are not critical for typical usage.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/WEEZZ-admin/sonic-pi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server