Skip to main content
Glama

Transcribe a link

transcribe_link

Import a supplied public recording or video link as a new score, the whole piece: 10 credits when it first opens (30 seconds or less: free). For a video, inspect its frames first: readable sheet music is written from notation unless the performance is wanted; no sheet music means transcribe it here.

Input Schema

NameRequiredDescriptionDefault
bpmNoQuarter notes per minute, only if user-supplied or source-established (dotted quarters times 1.5); otherwise detected.
urlYesA public https link: a video or song page (YouTube, Bilibili, Instagram and similar), a file, Dropbox or Drive. At most 95 MiB; a long video gives its opening minutes.
viewNostaff, jianpu (1 = the key, movable do), jianpu_fixed (1 = C, fixed do) or jianpu_melody (top line only).
previewNotrue: a free 30-second preview instead of the whole piece, only when the user asks to try one first.
providerNolocal (one instrument or voice), piano (solo piano) or mirelo (a band: uses credits, priced first).local
pro_optionsNoBand (Pro) rhythm and paper choices, each optional: only user-supplied or source-established ones. Pass a source-established time_signature: omission uses N/4 and never detects 6/8, 9/8 or 12/8. Otherwise timing performance (quantized snaps to a reliable beat), subdivision found by Pro, tempo follow (fixed: one tempo, at bpm), page_size a4.
replay_onlyNoTest accounts only: reuse an exact saved band result, never new processing.
review_instrumentsNoBand only: true (default) holds it for the instrument list before the price.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed20 schema fields changed
    • removedInput schema / $defs
      Removed value: -{
      -  "ProOptions": {
      -    "additionalProperties": false,
      -    "description": "Pro (Mirelo) rhythm and paper choices; each one left out keeps its default.",
      -    "properties": {
      -      "bpm": {
      -        "anyOf": [
      -          {
      -            "maximum": 300,
      -            "minimum": 30,
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "The constant tempo for tempo fixed, sent to Pro as given; the result states the tempo written (time_grid.tempo_bpm)."
      -      },
      -      "page_size": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "a4",
      -              "letter"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Paper of the supplier PDFs and MusicXML; a4 (default) or letter."
      -      },
      -      "subdivision": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "automatic",
      -              "straight_sixteenths",
      -              "eighth_triplets",
      -              "sixteenth_triplets",
      -              "swing_eighths"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Rhythmic grid. Omit it to let Pro choose; it keeps straight sixteenths unless triplets are clear."
      -      },
      -      "tempo": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "follow",
      -              "fixed"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "follow (default) keeps the tempo changes of the playing; fixed writes one constant tempo, at bpm or else at the tempo Pro detects. A bpm given with the upload means fixed."
      -      },
      -      "time_signature": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "2/4",
      -              "3/4",
      -              "4/4",
      -              "5/4",
      -              "6/4",
      -              "7/4",
      -              "9/4",
      -              "12/4",
      -              "6/8",
      -              "9/8",
      -              "12/8"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Omit it to let Pro find the meter (written as N/4); choose 6/8, 9/8 or 12/8 explicitly for a compound meter."
      -      },
      -      "timing": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "performance",
      -              "quantized"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "performance (default) keeps the played timing; quantized aligns notes to the beat when Pro finds a reliable beat grid, otherwise the result reports a fallback."
      -      }
      -    },
      -    "type": "object"
      -  }
      -}
    • removedInput schema / properties / bpm / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / bpm / default
      Removed value: -null
    • addedInput schema / properties / bpm / description
      Added value: +"Quarter notes per minute, only if user-supplied or source-established (dotted quarters times 1.5); otherwise detected."
    • addedInput schema / properties / bpm / type
      Added value: +"number"
    • addedInput schema / properties / preview / description
      Added value: +"true: a free 30-second preview instead of the whole piece, only when the user asks to try one first."
    • addedInput schema / properties / pro_options / additionalProperties
      Added value: +false
    • removedInput schema / properties / pro_options / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/ProOptions"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / pro_options / default
      Removed value: -null
    • addedInput schema / properties / pro_options / description
      Added value: +"Band (Pro) rhythm and paper choices, each optional: only user-supplied or source-established ones. Pass a source-established time_signature: omission uses N/4 and never detects 6/8, 9/8 or 12/8. Otherwise timing performance (quantized snaps to a reliable beat), subdivision found by Pro, tempo follow (fixed: one tempo, at bpm), page_size a4."
    • addedInput schema / properties / pro_options / properties
      Added value: +{
      +  "bpm": {
      +    "maximum": 300,
      +    "minimum": 30,
      +    "type": "number"
      +  },
      +  "page_size": {
      +    "enum": [
      +      "a4",
      +      "letter"
      +    ],
      +    "type": "string"
      +  },
      +  "subdivision": {
      +    "enum": [
      +      "automatic",
      +      "straight_sixteenths",
      +      "eighth_triplets",
      +      "sixteenth_triplets",
      +      "swing_eighths"
      +    ],
      +    "type": "string"
      +  },
      +  "tempo": {
      +    "enum": [
      +      "follow",
      +      "fixed"
      +    ],
      +    "type": "string"
      +  },
      +  "time_signature": {
      +    "enum": [
      +      "2/4",
      +      "3/4",
      +      "4/4",
      +      "5/4",
      +      "6/4",
      +      "7/4",
      +      "9/4",
      +      "12/4",
      +      "6/8",
      +      "9/8",
      +      "12/8"
      +    ],
      +    "type": "string"
      +  },
      +  "timing": {
      +    "enum": [
      +      "performance",
      +      "quantized"
      +    ],
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / pro_options / type
      Added value: +"object"
    • addedInput schema / properties / provider / description
      Added value: +"local (one instrument or voice), piano (solo piano) or mirelo (a band: uses credits, priced first)."
    • addedInput schema / properties / replay_only / description
      Added value: +"Test accounts only: reuse an exact saved band result, never new processing."
    • addedInput schema / properties / review_instruments / description
      Added value: +"Band only: true (default) holds it for the instrument list before the price."
    • addedInput schema / properties / url / description
      Added value: +"A public https link: a video or song page (YouTube, Bilibili, Instagram and similar), a file, Dropbox or Drive. At most 95 MiB; a long video gives its opening minutes."
    • removedInput schema / properties / view / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / view / default
      Removed value: -null
    • addedInput schema / properties / view / description
      Added value: +"staff, jianpu (1 = the key, movable do), jianpu_fixed (1 = C, fixed do) or jianpu_melody (top line only)."
    • addedInput schema / properties / view / type
      Added value: +"string"
  2. Changed1 schema field changed
    • addedInput schema / properties / preview
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
  3. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only declare it as a non-read-only, open-world, non-idempotent, non-destructive call; the description adds the credit economics (10 credits, free at 30 seconds or under) and that the provider choice affects pricing. That is meaningful context beyond the annotations. Gaps remain: it never says the job is asynchronous/cancellable (cancel_transcription exists as a sibling) or what the account state looks like mid-run.

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?

It is short and front-loads the action, but several clauses are telegraphic to the point of ambiguity – "the whole piece", "written from notation", and especially "10 credits when it first opens" require re-reading to parse. Sentences earn their place but the phrasing costs clarity that a cleaner sentence would not.

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 an 8-parameter, nested-schema, credit-consuming job with no output schema, the description covers cost and the transcription choice but omits what is returned (a score object/id?), whether processing is synchronous, and how to follow up (get_score, list_scores, cancel_transcription). An agent knows why to call it but not what to expect back or what to do while it runs.

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?

Schema coverage is 100%, including detailed per-property text for url, bpm, view, preview, provider and the nested pro_options, so the schema carries parameter meaning. The description only reinforces preview (free trial on request) and the notation-vs-performance decision; it says nothing about view, provider, replay_only or review_instruments that the schema does not already cover. Baseline 3 is appropriate.

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?

"Import a supplied public recording or video link as a new score" gives a specific verb (import) plus resource (a public link → a new score), which separates it from siblings like transcribe_attachment (audio upload) or check_link/watch_link (inspection only). The trailing clause about inspecting a video's frames muddies the core statement but the primary purpose is unmistakable.

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?

"For a video, inspect its frames first: readable sheet music is written from notation unless the performance is wanted; no sheet music means transcribe it here" gives an explicit routing rule to another path and the condition under which this tool is the right one. The preview condition ("only when the user asks to try one first") and the 30-second-free carve-out add further use-case boundaries, though no sibling is named directly.

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