Skip to main content
Glama

Playlist Save

playlist_save

Save one checklist's playlist after the server checks it. lines is the ordered list of the playlist's lines. The server checks that line_ids are unique and order runs 1, 2, 3 without gaps; that the credits of every line except option_list and note add up to the published credits (within the range, where a range is published); that every slot's fills_from names an option_list and every option_list is named by a slot; that every course code is one of the school's learning units; that every area designation is in the school policy; that choose has n no greater than its courses; that every quote appears verbatim in the requirements section or a linked section; and that every course code in the requirements text appears in a line or in a note line that names it. It never alters the lines. It returns playlist_id, status, and every error in plain words, each naming its line: lines with errors are saved as rejected, so correct them and save again.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "checklist_id": "<checklist_id>",
      "built_by": "<built_by>",
      "lines": "<lines>"
    },
    "name": "playlist_save"
  }
}

Input Schema

NameRequiredDescriptionDefault
linesYes
built_byYesWho built this playlist: a short string naming the agent and model. Stored with the saved playlist. A save without it is rejected.
checklist_idYesThe checklist, by its checklist_id

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / built_by
      Added value: +{
      +  "description": "Who built this playlist: a short string naming the agent and model. Stored with the saved playlist. A save without it is rejected.",
      +  "examples": [
      +    "claude-opus chat",
      +    "openai gpt build-agent"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "checklist_id",
      -  "lines"
      -]New value: +[
      +  "checklist_id",
      +  "built_by",
      +  "lines"
      +]
  2. Added

TDQS

A3.7/5.0
Behavior4/5

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

The description adds substantial behavior beyond the annotations: it enumerates the seven validation checks, states 'It never alters the lines' (consistent with destructiveHint=false), and discloses the return contract (playlist_id, status, plain-word errors keyed to line numbers). It also reveals the important side effect that invalid lines are persisted as 'rejected' rather than discarded. It does not say whether repeated saves create duplicate playlists, which matters given idempotentHint=false.

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?

The purpose is front-loaded and there is little wasted wording, but the seven validation checks are packed into a single semicolon-chained sentence that is hard to parse and would read far better as a list. The density is justified by the content; the sentence structure is not.

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 non-idempotent write tool with no output schema, the definition covers what is validated, what is written, and what is returned, including error reporting keyed to lines. The remaining gap is lifecycle behavior: whether a second save supersedes or duplicates an existing playlist is not stated, and no output schema exists to clarify it.

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 67%, and the description compensates well by expressing cross-field constraints the schema cannot: line_ids unique with order 1,2,3 without gaps, credits summing to the published total excluding option_list and note, fills_from naming an option_list, designation drawn from school policy, choose n bounded by its courses, and quote appearing verbatim in the source section. These rules materially change how an agent must construct the lines array. Only the checklist_id and built_by semantics are left entirely to the schema.

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 description opens with a specific verb and resource ('Save one checklist's playlist') and states that the server validates before persisting, so an agent knows exactly what the call does. It does not name any sibling tool or contrast itself with playlist_read, playlist_run, or playlist_policy_save, so differentiation is inferred from the name rather than stated.

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 context is implied: the tool is for persisting a built playlist, and the closing clause ('lines with errors are saved as rejected, so correct them and save again') gives clear retry guidance after a failed validation. There is no explicit when-not-to-use guidance and no named alternative for reading or running an already-saved playlist, which the sibling list suggests exist.

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.