Skip to main content
Glama
Spotify MCP Server

Spotify MCP Server

by jamiew

Create Playlist

create_playlist

Create a Spotify playlist by setting its name, optional description, and public/private status to group songs for personal listening or sharing.

Instructions

Create a new Spotify playlist.

Args:
    name: Playlist name
    description: Playlist description (default: empty)
    public: Whether playlist is public (default: False)

Returns:
    The created Playlist

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": {
      "name": "<name>"
    },
    "name": "create_playlist"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameYes
publicNo
descriptionNo

Output Schema

NameRequiredDescriptionDefault
idYes
nameYes
ownerNo
publicNo
tracksNo
descriptionNo
total_tracksNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.8.1
    • addedOutput schema / $defs / Track / properties / show
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Show"
      +}
    • addedOutput schema / $defs / Track / properties / show_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Show Id"
      +}
    • addedOutput schema / $defs / Track / properties / type
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Type"
      +}
  2. Changed1 schema field changedv0.7.0
    • changedInput schema / properties / public / default
      Previous value: -trueNew value: +false
  3. Changed6 schema fields changedv0.6.1
    • addedOutput schema / $defs / Track / properties / id / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / Track / properties / id / default
      Added value: +null
    • removedOutput schema / $defs / Track / properties / id / type
      Removed value: -"string"
    • addedOutput schema / $defs / Track / properties / is_local
      Added value: +{
      +  "default": false,
      +  "title": "Is Local",
      +  "type": "boolean"
      +}
    • addedOutput schema / $defs / Track / properties / played_at
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Played At"
      +}
    • changedOutput schema / $defs / Track / required
      Previous value: -[
      -  "name",
      -  "id",
      -  "artist"
      -]New value: +[
      +  "name",
      +  "artist"
      +]
  4. Changed5 schema fields changedv0.3.1
    • addedOutput schema / $defs
      Added value: +{
      +  "Track": {
      +    "description": "A Spotify track with metadata.",
      +    "properties": {
      +      "added_at": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Added At"
      +      },
      +      "album": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Album"
      +      },
      +      "album_id": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Album Id"
      +      },
      +      "artist": {
      +        "title": "Artist",
      +        "type": "string"
      +      },
      +      "artists": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Artists"
      +      },
      +      "duration_ms": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Duration Ms"
      +      },
      +      "external_urls": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {
      +              "type": "string"
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "External Urls"
      +      },
      +      "id": {
      +        "title": "Id",
      +        "type": "string"
      +      },
      +      "name": {
      +        "title": "Name",
      +        "type": "string"
      +      },
      +      "popularity": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Popularity"
      +      },
      +      "release_date": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Release Date"
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "id",
      +      "artist"
      +    ],
      +    "title": "Track",
      +    "type": "object"
      +  }
      +}
    • addedOutput schema / description
      Added value: +"A Spotify playlist."
    • addedOutput schema / properties
      Added value: +{
      +  "description": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Description"
      +  },
      +  "id": {
      +    "title": "Id",
      +    "type": "string"
      +  },
      +  "name": {
      +    "title": "Name",
      +    "type": "string"
      +  },
      +  "owner": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Owner"
      +  },
      +  "public": {
      +    "anyOf": [
      +      {
      +        "type": "boolean"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Public"
      +  },
      +  "total_tracks": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Total Tracks"
      +  },
      +  "tracks": {
      +    "anyOf": [
      +      {
      +        "items": {
      +          "$ref": "#/$defs/Track"
      +        },
      +        "type": "array"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "title": "Tracks"
      +  }
      +}
    • addedOutput schema / required
      Added value: +[
      +  "name",
      +  "id"
      +]
    • changedOutput schema / title
      Previous value: -"create_playlistDictOutput"New value: +"Playlist"
  5. Changed5 schema fields changedv1.0.0
    • removedOutput schema / $defs
      Removed value: -{
      -  "Track": {
      -    "description": "A Spotify track with metadata.",
      -    "properties": {
      -      "album": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "title": "Album"
      -      },
      -      "artist": {
      -        "title": "Artist",
      -        "type": "string"
      -      },
      -      "artists": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "title": "Artists"
      -      },
      -      "duration_ms": {
      -        "anyOf": [
      -          {
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "title": "Duration Ms"
      -      },
      -      "external_urls": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": {
      -              "type": "string"
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "title": "External Urls"
      -      },
      -      "id": {
      -        "title": "Id",
      -        "type": "string"
      -      },
      -      "name": {
      -        "title": "Name",
      -        "type": "string"
      -      },
      -      "popularity": {
      -        "anyOf": [
      -          {
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "title": "Popularity"
      -      }
      -    },
      -    "required": [
      -      "name",
      -      "id",
      -      "artist"
      -    ],
      -    "title": "Track",
      -    "type": "object"
      -  }
      -}
    • removedOutput schema / description
      Removed value: -"A Spotify playlist."
    • removedOutput schema / properties
      Removed value: -{
      -  "description": {
      -    "anyOf": [
      -      {
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "default": null,
      -    "title": "Description"
      -  },
      -  "id": {
      -    "title": "Id",
      -    "type": "string"
      -  },
      -  "name": {
      -    "title": "Name",
      -    "type": "string"
      -  },
      -  "owner": {
      -    "anyOf": [
      -      {
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "default": null,
      -    "title": "Owner"
      -  },
      -  "public": {
      -    "anyOf": [
      -      {
      -        "type": "boolean"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "default": null,
      -    "title": "Public"
      -  },
      -  "total_tracks": {
      -    "anyOf": [
      -      {
      -        "type": "integer"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "default": null,
      -    "title": "Total Tracks"
      -  },
      -  "tracks": {
      -    "anyOf": [
      -      {
      -        "items": {
      -          "$ref": "#/$defs/Track"
      -        },
      -        "type": "array"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "default": null,
      -    "title": "Tracks"
      -  }
      -}
    • removedOutput schema / required
      Removed value: -[
      -  "name",
      -  "id"
      -]
    • changedOutput schema / title
      Previous value: -"Playlist"New value: +"create_playlistDictOutput"
  6. First observed

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare the write semantics (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so the safety profile is covered. The description adds that the call returns the created Playlist, but says nothing about authentication requirements, whether duplicate names are allowed, or what happens on quota/rate limits.

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?

The purpose sentence is front-loaded and the Args/Returns block is easy to scan. The Args block does restate schema defaults, so it is slightly redundant for a three-parameter tool, but nothing is bloated.

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?

An output schema exists, so the Returns line is a bonus rather than a necessity, and all three inputs are mentioned. What is missing for a mutating, open-world tool is the surrounding context: auth/scope needs and the follow-up step of adding tracks to the newly created (empty) playlist.

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 description coverage is 0%, so the description carries the burden, and it does name all three parameters and their roles plus defaults. However, the defaults (false, "") are already in the schema and the one-line glosses ("Playlist name", "Whether playlist is public") barely add meaning beyond the property titles — no note on whether public means search-visible or collaborator-visible.

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?

"Create a new Spotify playlist" gives a specific verb plus resource, which cleanly separates it from read siblings like get_playlist, list_playlists and mutators like update_playlist_details or add_tracks_to_playlist. It stops short of naming an alternative, but the create verb alone is unambiguous.

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 when-to-use guidance and no prerequisites: nothing says the new playlist starts empty and needs add_tracks_to_playlist to populate it, nor that a user-authenticated account is required. The agent must infer the whole workflow from sibling names.

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