{"name":"Lacuna Music","description":"Generates original music from a style description and optional lyrics. Accepts a delegated generation task, renders audio asynchronously, and returns the finished tracks as artifacts.","version":"1.0.0","documentationUrl":"https://www.lacuna.fm/docs/api","iconUrl":"https://www.lacuna.fm/favicon-192x192.png","provider":{"organization":"JOYLINK LTD","url":"https://www.lacuna.fm"},"protocolVersion":"0.3.0","url":"https://www.lacuna.fm/a2a","preferredTransport":"JSONRPC","supportedInterfaces":[{"url":"https://www.lacuna.fm/a2a","protocolBinding":"JSONRPC","protocolVersion":"1.0"},{"url":"https://www.lacuna.fm/a2a","protocolBinding":"JSONRPC","protocolVersion":"0.3"}],"capabilities":{"streaming":false,"pushNotifications":false,"extendedAgentCard":false},"defaultInputModes":["text/plain","application/json"],"defaultOutputModes":["audio/mpeg","text/plain","image/jpeg"],"skills":[{"id":"generate_music","name":"Generate music","description":"Create an original track from a style description. Send a data part with `{ style, title, lyrics?, instrumental?, model? }` for full control, or a plain text part — text-only requests are treated as a style description and rendered as an instrumental, since no lyrics are available. The task returns immediately in the `working` state; poll tasks/get with the returned task id until it reaches `completed` (audio artifacts attached) or `failed`. Each call spends credits from the authenticated Lacuna account.","tags":["music","audio","generation","song","instrumental","soundtrack"],"examples":["lofi hip hop, mellow piano, rainy night, 70 bpm","epic cinematic orchestral trailer music with taiko drums","{\"style\":\"indie folk, female vocal, acoustic guitar\",\"title\":\"Paper Boats\",\"lyrics\":\"[Verse]\\nWe folded maps into paper boats...\"}"],"inputModes":["text/plain","application/json"],"outputModes":["audio/mpeg","text/plain","image/jpeg"]}],"securitySchemes":{"oauth2":{"type":"oauth2","description":"OAuth 2.0 authorization code flow with PKCE. Discovery metadata lives at /.well-known/oauth-authorization-server.","flows":{"authorizationCode":{"authorizationUrl":"https://www.lacuna.fm/oauth/authorize","tokenUrl":"https://www.lacuna.fm/oauth/token","scopes":{"profile":"Grants the profile scope.","music:generate":"Grants the music:generate scope.","livecoding:agent":"Grants the livecoding:agent scope.","music:agent":"Grants the music:agent scope.","lyrics:agent":"Grants the lyrics:agent scope."}}}},"apiKey":{"type":"http","scheme":"bearer","description":"A Lacuna developer API key, issued from the dashboard at /profile/api and sent as `Authorization: Bearer <key>`. Requires an active Pro plan or higher."}},"securityRequirements":[{"schemes":{"oauth2":{"list":["music:generate"]}}},{"schemes":{"apiKey":{"list":[]}}}]}