notation_validate
Pre-flight validate a notation_render input without rendering. Returns errors with concrete fix field that tells the agent exactly how to repair malformed input. Substantially cheaper than notation_render because it skips the Verovio engraving step entirely. WHEN TO USE: when iterating on input s...
This record as markdown: /tools/com-gradusmusic-notation/notation-validate.md
What notation_validate does on Gradus Notation
AI agents call notation_validate to retrieve information from Gradus Notation without modifying anything. It is typically the context-gathering step in research, monitoring, and reporting workflows, before the agent takes action elsewhere.
| Parameter | Type | Required | Description |
|---|---|---|---|
tempo | number | — | |
title | string | — | |
composer | string | — | |
instruments | array | Yes | Same shape as notation_render. See notation_schema for the full JSON Schema. |
keySignature | string | — | |
timeSignature | array | — |
Parameters from the server's own tool schema.
Why notation_validate is rated Low
This tool purely validates input and returns diagnostic information (errors and fixes). It has no side effects—it does not modify data, execute external operations, delete anything, or commit financial obligations. It is a read-like operation that queries the structure and validity of notation input, making it the safest category.
From the tool's definition Tool performs pre-flight validation without rendering or modifying data. Description states it 'Pre-flight validate a notation_render input without rendering' and 'Returns errors with concrete fix field'.
Attacks that exploit this kind of access
The rule that runs notation_validate safely
PolicyLayer is an MCP gateway: it sits between your AI agents and Gradus Notation, and checks every tool call against a rule you set before the call runs. Nothing changes on the server itself. For notation_validate, this is the rule to start with:
notation_validate is read-only, so it stays allowed. Everything else on the server is denied unless you say otherwise.
The button opens the PolicyLayer dashboard: create your workspace, connect Gradus Notation, apply this rule, and every notation_validate call is checked against it from then on.
Questions about notation_validate
Pre-flight validate a notation_render input without rendering. Returns errors with concrete fix field that tells the agent exactly how to repair malformed input. Substantially cheaper than notation_render because it skips the Verovio engraving step entirely. WHEN TO USE: when iterating on input shape and uncertain whether it is well-formed; when input came from user-supplied or LLM-generated data that may be malformed; when surfacing precise validation errors to your end user before committing to a full render; when learning the input format (combine with notation_examples to see canonical inputs). WHEN NOT TO USE: if input is known to be valid (just call notation_render directly — it validates internally too); if you have not learned the schema yet (call notation_schema or notation_examples first to see the format). INPUT: identical shape to notation_render. instruments array required (each with name and notes or voices). OUTPUT (JSON, valid): { ok: true, requestId, valid: true, warnings: ValidationIssue[], meta: { measureCount, instrumentCount, voiceCount, durationBeats }, attribution }. Warnings are non-blocking notices (e.g. unusual time signature handling). OUTPUT (JSON, invalid): { ok: false, requestId, valid: false, errors: ValidationIssue[], warnings, attribution }. Each ValidationIssue: { path: "instruments[0].voices[0].notes[3]", code: "BAD_PITCH"|"BAD_DURATION"|"MISSING_FIELD"|"BAD_KEY_SIG"|..., message, fix: "Use scientific notation: letter A-G + optional # or b + octave number, e.g. C4, F#5, Bb3.", severity: "error"|"warning" }. Surface the fix to your user or use it to auto-repair. EXAMPLE INPUT: { "instruments": [{ "name": "Violin", "notes": ["C5/q","D5/q","E5/q","F5/q"] }] } TYPICAL LATENCY: 30-100 ms (no Verovio render; pure JSON-to-Score conversion + bar-line arithmetic). It is categorised as a Read tool in the Gradus Notation MCP Server, which means it retrieves data without modifying state.
notation_validate accepts 6 parameters: tempo, title, composer, instruments, keySignature, timeSignature. Required: instruments. The full parameter table on this page comes from the server's own tool schema.
Register the Gradus Notation MCP server in PolicyLayer and add a rule for notation_validate: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches Gradus Notation. Nothing to install.
notation_validate is a Read tool with low risk. Read-only tools are generally safe to allow by default.
Yes. Add a rate_limit block to the notation_validate rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.
Set action: deny in the PolicyLayer policy for notation_validate. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.
notation_validate is provided by the Gradus Notation MCP server (@gradusmusic/notation-mcp). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.
More on Gradus Notation, and thousands of servers like it.
This server
Across the catalogue