spotify_create_playlist
Create a new Spotify playlist with custom name, description, and privacy settings to organize your music collection.
Instructions
Cria uma nova playlist no Spotify
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| description | No | Descrição da playlist (opcional) | |
| name | Yes | Nome da playlist | |
| public | No | Se a playlist deve ser pública (padrão: false) |
Implementation Reference
- src/tools/spotify-tools.ts:496-559 (handler)The core handler function `createPlaylist` in the SpotifyTools class that implements the tool logic: ensures valid token, fetches user ID, creates the playlist via Spotify API using fetch, and returns success/error details./** * Cria uma nova playlist usando fetch direto */ async createPlaylist(name: string, description?: string, isPublic: boolean = false) { try { await this.spotifyAuth.ensureValidToken(); const spotifyApi = this.spotifyAuth.getSpotifyApi(); const accessToken = await this.spotifyAuth.ensureValidToken(); // Primeiro, obter o ID do usuário atual const userResponse = await fetch('https://api.spotify.com/v1/me', { headers: { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'application/json' } }); if (!userResponse.ok) { throw new Error(`Erro ao obter dados do usuário: ${userResponse.status}`); } const userData = await userResponse.json(); const userId = userData.id; // Criar a playlist const playlistResponse = await fetch(`https://api.spotify.com/v1/users/${userId}/playlists`, { method: 'POST', headers: { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ name: name, description: description || '', public: isPublic }) }); if (!playlistResponse.ok) { const errorData = await playlistResponse.json(); throw new Error(`Erro ao criar playlist: ${playlistResponse.status} - ${errorData.error?.message || 'Erro desconhecido'}`); } const playlist = await playlistResponse.json(); return { content: [ { type: 'text', text: `✅ Playlist "${name}" criada com sucesso!\n\n**Detalhes:**\n- Nome: ${playlist.name}\n- ID: ${playlist.id}\n- Descrição: ${playlist.description || 'Sem descrição'}\n- Pública: ${playlist.public ? 'Sim' : 'Não'}\n- Link: ${playlist.external_urls.spotify}`, }, ], }; } catch (error) { return { content: [ { type: 'text', text: `❌ Erro ao criar playlist: ${error instanceof Error ? error.message : String(error)}`, }, ], }; } }
- src/index.ts:208-229 (schema)Tool schema definition in the ListTools response, including name, description, and inputSchema with properties name (required string), description (optional string), public (boolean).{ name: 'spotify_create_playlist', description: 'Cria uma nova playlist no Spotify', inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Nome da playlist', }, description: { type: 'string', description: 'Descrição da playlist (opcional)', }, public: { type: 'boolean', description: 'Se a playlist deve ser pública (padrão: false)', }, }, required: ['name'], }, },
- src/index.ts:298-299 (registration)Registration in the CallToolRequest handler switch statement that dispatches to the SpotifyTools.createPlaylist method with parsed arguments.case 'spotify_create_playlist': return await spotifyTools.createPlaylist(args.name, args.description, args.public);