Skip to main content
Glama

fl_probe

Idempotent

Checks the live link to FL Studio by returning its scripting API version, Python version, PID, and pipe handle, or an error. Starts FL if closed to test the connection.

Instructions

Check the live link to FL: returns FL's scripting API version, its embedded Python version, FL's pid and the pipe handle it holds, or an error saying what is missing. Call it first when a live tool (fl_exec, fl_call, fl_transport, project_write with open) fails, and after fl_install. When FL is closed it starts it (and loopMIDI) to test the link and closes it again: launched_fl_seconds says how long FL took, closed_fl that it was closed. Reads nothing from the project.

Input Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations say readOnlyHint=false but not why; the description fills that gap by disclosing the actual side effect — when FL is closed it launches FL (and loopMIDI) to test the link, then closes it again. It also clarifies scope ("Reads nothing from the project") and names the response fields launched_fl_seconds and closed_fl, so the agent knows a slow call is expected behavior rather than a hang.

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?

Front-loaded with the check-and-return contract, then the call conditions, then the side effect — a sensible order with no filler. The clause "launched_fl_seconds says how long FL took, closed_fl that it was closed" is elliptically compressed and takes a re-read, which keeps it just below a 5.

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

Completeness5/5

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

No output schema exists, so the description carries the full burden of describing return values — and it does, listing the version fields, pid, pipe handle, error shape, and the two launch/close indicators. Combined with the failure-recovery guidance, an agent has everything needed to call it and interpret the result.

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 takes no parameters and the schema is empty at 100% coverage, so there is nothing for the description to clarify. Baseline 4 applies; no parameter guidance is needed or missing.

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?

States a specific verb and resource ("Check the live link to FL") and enumerates exactly what it returns: scripting API version, embedded Python version, pid, pipe handle, or a descriptive error. It also names the sibling live tools (fl_exec, fl_call, fl_transport, project_write) so an agent can place it in the tool set without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit triggering conditions: call it first when a live tool fails, and after fl_install. This is a precise when-to-use rule tied to named siblings, not an implied one.

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