Skip to main content
Glama

Prepare audio upload

prepare_audio_upload

Get a one-use HTTPS URL, valid ten minutes, to POST a file's raw bytes yourself (application/octet-stream, no credentials, at most 95 MiB): audio, video, sheet music or a score file. HTTP 202 means received, not finished. A recording is transcribed whole: 10 credits when it first opens.

Input Schema

NameRequiredDescriptionDefault
bpmNoQuarter notes per minute, only if user-supplied or source-established (dotted quarters times 1.5); otherwise detected.
sizeNoThe exact byte count, binding the URL to it.
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.
filenameYesThe file's name, with its extension.
providerNolocal (one instrument or voice), piano (solo piano) or mirelo (a band: uses credits, priced first).local
instrumentNoWhat the user said is playing: piano, guitar, voice, band or other. Without it the recording is heard when it arrives, and a band or an unclear mix holds the task for the user's answer.
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.
audio_secondsNoThe recording's length, when known.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed31 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 / audio_seconds / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / audio_seconds / default
      Removed value: -null
    • addedInput schema / properties / audio_seconds / description
      Added value: +"The recording's length, when known."
    • addedInput schema / properties / audio_seconds / type
      Added value: +"number"
    • 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 / filename / description
      Added value: +"The file's name, with its extension."
    • removedInput schema / properties / instrument / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / instrument / default
      Removed value: -null
    • addedInput schema / properties / instrument / description
      Added value: +"What the user said is playing: piano, guitar, voice, band or other. Without it the recording is heard when it arrives, and a band or an unclear mix holds the task for the user's answer."
    • addedInput schema / properties / instrument / type
      Added value: +"string"
    • 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."
    • removedInput schema / properties / size / anyOf
      Removed value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / size / default
      Removed value: -null
    • addedInput schema / properties / size / description
      Added value: +"The exact byte count, binding the URL to it."
    • addedInput schema / properties / size / type
      Added value: +"integer"
    • 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. Changed2 schema fields changed
    • addedInput schema / properties / instrument
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedInput schema / properties / preview
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
  3. First observed

TDQS

A3.9/5.0
Behavior5/5

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

Beyond the annotations, the description discloses the URL's one-use nature, ten-minute expiry, 95 MiB cap, required content type, that no credentials go on the POST, and that HTTP 202 means received, not finished. It also states the credit consequence (10 credits when a recording first opens), which the agent needs in order to set expectations.

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?

Three sentences, front-loaded with the core action and its constraints, and no filler. The first sentence is heavily parenthetical and dense, which slightly slows parsing of the most important sentence.

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 ten-parameter tool with a nested options object and no output schema, the description covers the upload contract, size and format limits, response semantics and billing. What's missing is how the returned URL relates to the follow-up status/transcription tools, and whether the 202 path needs polling.

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%, so the schema already documents all ten parameters, including the nested pro_options set. The description only indirectly touches semantics (the 95 MiB cap mapping to size, media types mapping to filename); it adds little that the schema doesn't already say.

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 first sentence gives a specific verb and resource: get a one-use HTTPS URL for the caller to POST raw bytes to, with accepted media types named. It's clear what the tool does, but it never distinguishes itself from close siblings such as begin_audio_upload, attach_recording or get_upload_status, so an agent must infer which upload path applies.

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?

Usage is only implied by the mechanics: 'to POST a file's raw bytes yourself' suggests this is the direct-upload path, and the credit note hints at cost. There is no explicit when-to-use/when-not guidance and no naming of the alternative upload or transcription tools, which is a real gap given the crowded sibling list.

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