Skip to main content
Glama

set_browser_item_metadata

Destructive

Set private MCP-managed tags and favorite state for an Ableton Live browser item or local Splice audio file, guarded by exact metadata revision and single-use confirmation.

Instructions

Plan or edit private MCP-managed tags and favorite state with observed Live browser identity or local audio-file version, exact revision, and single-use confirmation. A Live user-folder sample shares the local Splice record only when its URI unambiguously matches a configured local Splice file; reserved URI delimiters and existing separate Live metadata preserve exact Live identity. For a local sample, use root local_splice and path [absolute directory, relative audio path]. Does not modify native collections.

Input Schema

NameRequiredDescriptionDefault
pathYesNon-empty path to one item.
rootYesLive browser root or local_splice.
tagsNoComplete replacement tag set, up to 32 entries.
dryRunNoFalse executes with token and hash.
favoriteNoPrivate favorite state.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedMetadataRevisionYesExact preset metadata revision observed immediately before planning.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.3.1
    • removedOutput schema / additionalProperties
      Removed value: -true
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "confirmation": {
      +            "properties": {
      +              "expiresAt": {
      +                "type": "number"
      +              },
      +              "planHash": {
      +                "pattern": "^[a-f0-9]{64}$",
      +                "type": "string"
      +              },
      +              "token": {
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "token",
      +              "planHash",
      +              "expiresAt"
      +            ],
      +            "type": "object"
      +          },
      +          "dryRun": {
      +            "const": true
      +          },
      +          "plan": {
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "dryRun",
      +          "plan",
      +          "confirmation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "dryRun": {
      +            "const": false
      +          },
      +          "nativeLiveCollectionsModified": {
      +            "const": false
      +          },
      +          "observed": {
      +            "properties": {
      +              "favorite": {
      +                "type": "boolean"
      +              },
      +              "revision": {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "tags": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              }
      +            },
      +            "required": [
      +              "favorite",
      +              "tags",
      +              "revision"
      +            ],
      +            "type": "object"
      +          },
      +          "requested": {
      +            "type": "object"
      +          },
      +          "timestamp": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "dryRun",
      +          "requested",
      +          "observed",
      +          "nativeLiveCollectionsModified",
      +          "timestamp"
      +        ],
      +        "type": "object"
      +      }
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "error": {
      +        "properties": {
      +          "message": {
      +            "type": "string"
      +          },
      +          "outcome": {
      +            "enum": [
      +              "unknown",
      +              "not_executed"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "message",
      +          "outcome"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "error"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed4 schema fields changedv0.3.0
    • changedInput schema / properties / confirmationToken / description
      Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
    • changedInput schema / properties / dryRun / description
      Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
    • changedInput schema / properties / planHash / description
      Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "type": "object"
      +}
  3. Changed2 schema fields changedv0.2.0
    • changedInput schema / properties / path / items / description
      Previous value: -"Exact browser path segment."New value: +"Exact browser segment, or [absolute directory, relative audio path] for local_splice."
    • changedInput schema / properties / root / description
      Previous value: -"Live browser root."New value: +"Live browser root or local_splice."
  4. First observedv0.1.0

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructive/non-idempotent/non-read-only, and the description adds meaningful context beyond them: a plan-then-edit flow requiring 'exact revision' and 'single-use confirmation', and the guarantee that reserved URI delimiters and existing separate Live metadata preserve Live identity. It stops short of describing what a stale revision triggers or the auth/permission surface.

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?

Purpose is front-loaded, which is good, but the middle sentence ('reserved URI delimiters and existing separate Live metadata preserve exact Live identity') is dense jargon that resists parsing. The three sentences are information-rich but not cleanly structured for an agent.

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 an output schema present, return values need not be explained, and the annotations carry the safety profile. The description covers the dual plan/edit mode, the confirmation flow, the Live-vs-local branch, and the native-collection exclusion, leaving mostly edge-case failure behavior unaddressed.

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 the parameter set is already documented and baseline 3 applies. The description adds real meaning by explaining the root/path relationship ('use root local_splice and path [absolute directory, relative audio path]'), which goes beyond the schema's per-field descriptions.

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 ('Plan or edit') and resource ('private MCP-managed tags and favorite state'), and scopes it with 'Does not modify native collections'. It is distinguishable from the read-only siblings get_browser_item_metadata and search_browser_item_metadata, though it never names them explicitly.

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?

It gives a conditional usage rule ('A Live user-folder sample shares the local Splice record only when its URI unambiguously matches a configured local Splice file') and prescribes root=local_splice with a two-element path for local samples. However, it never states when to prefer this over get/set_preset_metadata or get_browser_item_metadata, so routing is left partly to inference.

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