Skip to main content
Glama

Save customer-authored song understanding

studio_song_understanding_write

Saves finished song understanding against the current analysisId, assetId and understandingRevision. Accepts lyrics/description, language, themes and required words/lines arrays in the timed-transcription shape; empty arrays represent unavailable genuine timing. Source text alone supplies no lip-sync timing or voice ownership. voiceAnswer represents the customer's all_me, other_voices or skipped decision. Preserves measured audio facts and returns canonical understanding with a new revision. Stale input is refused. No transcription/planning model or credit charge.

Input Schema

NameRequiredDescriptionDefault
linesYesTimedLine text/startMs/endMs, requiring supplied timed words. An empty array leaves section line-sync empty; prose alone supplies no timing.
wordsYesExisting TimedWord shape: text/startMs/endMs. Genuine customer-supplied master timing only; [] when unknown. IDs are assigned by the canonical app normalizer.
lyricsNoCustomer-supplied source lyrics with original line breaks. Absence retains existing lyrics; an empty string clears them.
themesNoOptional song themes. Absence retains existing themes; [] clears them.
languageNoCustomer-supplied language, null when unknown. Absence retains the existing language.
projectIdYesProject whose currently uploaded master song is being described.
descriptionNoCustomer-approved song meaning/description. Absence retains the existing value; an empty string clears it.
voiceAnswerNoThe customer’s voice-answer decision. Absence leaves ownership unconfirmed. Shape: {answer: "all_me"} | {answer: "skipped"} | {answer: "other_voices", spans: list of {startMs: integer, endMs: integer, label?: string, role?: "feature"|"dj"|"adlib"|"unknown", overlapsArtist?: boolean}}
expectedAssetIdYesCurrent assetId from studio_song_status analysis: the existing uploaded master, not a new or remote audio source.
expectedAnalysisIdYesCurrent analysisId from studio_song_status.
expectedUnderstandingRevisionYesOpaque current understandingRevision from studio_song_status.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Adds real behavior beyond the annotations: optimistic-concurrency rejection of stale input, preservation of measured audio facts, revision bump on return, and the notable cost/scope facts ('No transcription/planning model or credit charge'). Annotations only supply readOnly=false, idempotent=false, destructive=false, so the description is doing genuine work, though it omits failure/partial-write semantics.

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 action and scoping tokens, then proceeds to payload semantics and cost/behavior facts; every sentence carries content. It is dense and packs several distinct claims (timing rules, voice ownership, staleness, billing) into one block, which slightly reduces scannability.

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?

For an 11-parameter, nested-object mutation with an output schema present, the description covers the load-bearing unknowns: concurrency tokens, timing-vs-prose distinction, empty-array/absence semantics, and the no-charge/no-model guarantee. Return values need not be explained because the output schema exists.

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?

Schema coverage is 100%, so baseline is 3; the description rises above it by explaining the empty-array convention ('empty arrays represent unavailable genuine timing'), that source text alone conveys no lip-sync timing or voice ownership, and the meaning of voiceAnswer as the customer's all_me/other_voices/skipped decision. It adds semantics rather than repeating field docs.

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 precise verb+resource ('Saves finished song understanding') and names the exact scoping keys (analysisId, assetId, understandingRevision) it writes against, plus what it returns (canonical understanding with a new revision). An agent can distinguish this write path from the read sibling studio_song_status without opening the schema.

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?

Clearly frames the context of use: it operates on the current analysis/asset/revision triple sourced from studio_song_status, and 'Stale input is refused' tells the agent it must re-read before writing. It stops short of naming explicit alternatives or when-not-to-use cases (e.g., section line-sync tools), so it is clear context without exclusions.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources