Skip to main content
Glama

get_live_scale_reference

Read-onlyIdempotent

Resolve an Ableton Live 12 scale name and root note into semitone intervals, pitch classes, note names, degrees, and scale family for music theory and MIDI work. Read-only.

Instructions

Resolve one exact Ableton Live 12 scale and root to semitone intervals, pitch classes, note names, degrees, and scale family. Read-only.

Input Schema

NameRequiredDescriptionDefault
rootNoteYesC=0 through B=11.
scaleNameYesExact Live scale name.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv0.3.1
    • removedOutput schema / additionalProperties
      Removed value: -true
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "properties": {
      +      "scale": {
      +        "properties": {
      +          "degrees": {
      +            "items": {
      +              "type": "integer"
      +            },
      +            "type": "array"
      +          },
      +          "family": {
      +            "type": "string"
      +          },
      +          "intervals": {
      +            "items": {
      +              "maximum": 11,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "noteNames": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "pitchClasses": {
      +            "items": {
      +              "type": "integer"
      +            },
      +            "type": "array"
      +          },
      +          "rootName": {
      +            "type": "string"
      +          },
      +          "rootNote": {
      +            "maximum": 11,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "family",
      +          "intervals",
      +          "rootNote",
      +          "rootName",
      +          "pitchClasses",
      +          "noteNames",
      +          "degrees"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "scale"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "error": {
      +        "properties": {
      +          "message": {
      +            "type": "string"
      +          },
      +          "outcome": {
      +            "enum": [
      +              "unknown",
      +              "not_executed"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "message",
      +          "outcome"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "error"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedOutput schema / properties
      Removed value: -{
      -  "scale": {
      -    "additionalProperties": true,
      -    "properties": {
      -      "degrees": {
      -        "items": {
      -          "type": "integer"
      -        },
      -        "type": "array"
      -      },
      -      "family": {
      -        "type": "string"
      -      },
      -      "intervals": {
      -        "items": {
      -          "maximum": 11,
      -          "minimum": 0,
      -          "type": "integer"
      -        },
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "noteNames": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "pitchClasses": {
      -        "items": {
      -          "type": "integer"
      -        },
      -        "type": "array"
      -      },
      -      "rootName": {
      -        "type": "string"
      -      },
      -      "rootNote": {
      -        "maximum": 11,
      -        "minimum": 0,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "name",
      -      "family",
      -      "intervals",
      -      "rootNote",
      -      "rootName",
      -      "pitchClasses",
      -      "noteNames",
      -      "degrees"
      -    ],
      -    "type": "object"
      -  }
      -}
    • removedOutput schema / required
      Removed value: -[
      -  "scale"
      -]
  2. Changed2 schema fields changedv0.3.0
    • addedInput schema / properties / scaleName / enum
      Added value: +[
      +  "Major",
      +  "Minor",
      +  "Dorian",
      +  "Mixolydian",
      +  "Lydian",
      +  "Phrygian",
      +  "Locrian",
      +  "Whole Tone",
      +  "Half-whole Dim.",
      +  "Whole-half Dim.",
      +  "Minor Blues",
      +  "Minor Pentatonic",
      +  "Major Pentatonic",
      +  "Harmonic Minor",
      +  "Harmonic Major",
      +  "Dorian #4",
      +  "Phrygian Dominant",
      +  "Melodic Minor",
      +  "Lydian Augmented",
      +  "Lydian Dominant",
      +  "Super Locrian",
      +  "8-Tone Spanish",
      +  "Bhairav",
      +  "Hungarian Minor",
      +  "Hirajoshi",
      +  "In-Sen",
      +  "Iwato",
      +  "Kumoi",
      +  "Pelog Selisir",
      +  "Pelog Tembung",
      +  "Messiaen 3",
      +  "Messiaen 4",
      +  "Messiaen 5",
      +  "Messiaen 6",
      +  "Messiaen 7"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "scale": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "degrees": {
      +          "items": {
      +            "type": "integer"
      +          },
      +          "type": "array"
      +        },
      +        "family": {
      +          "type": "string"
      +        },
      +        "intervals": {
      +          "items": {
      +            "maximum": 11,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "minItems": 1,
      +          "type": "array"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "noteNames": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "pitchClasses": {
      +          "items": {
      +            "type": "integer"
      +          },
      +          "type": "array"
      +        },
      +        "rootName": {
      +          "type": "string"
      +        },
      +        "rootNote": {
      +          "maximum": 11,
      +          "minimum": 0,
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "family",
      +        "intervals",
      +        "rootNote",
      +        "rootName",
      +        "pitchClasses",
      +        "noteNames",
      +        "degrees"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "scale"
      +  ],
      +  "type": "object"
      +}
  3. First observedv0.1.0

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so 'Read-only' merely restates structured data. The remaining content is a list of return fields, which the output schema already covers; no extra behavioral context (e.g. that this is a pure computation with no Live state dependency) is added.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the verb and resource, with the output list compressed into one clause. No filler.

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?

With a rich output schema and full annotations, the definition only needs to establish identity and scope, which it does. It falls short only in not relating itself to the sibling enumeration tool or stating any prerequisite, but nothing critical to correct invocation is missing.

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% and the scaleName enum plus rootNote 0-11 mapping are fully documented in the schema. The description adds nothing beyond echoing 'scale and root', so 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?

States a specific verb (resolve) and a precise resource (one exact Ableton Live 12 scale + root), plus the shape of the result (intervals, pitch classes, note names, degrees, family). It does not name or contrast with the obvious sibling list_live_scales, so an agent must infer the singular-vs-enumeration split.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance and no alternatives are named. An agent can infer that this is the lookup for a single designated scale, but the description never says so, nor does it point to list_live_scales for enumeration.

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

Deploy Server

Other Tools