{"id":303381,"recorded_at":"2026-10-26T22:55:14.821819Z","observed_at":"2026-10-26T22:55:14.821705Z","subject_kind":"endpoint","subject":"3ff5eb53-9507-43b2-aa18-f40492a28459","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":51,"tools":[{"description":"Add a post to a campaign on one lane and day, as Promo's + does, with its words, the angle they take and a picture or video from the Library if you have them. It is a post on its own, not part of a moment, and a draft until it is scheduled.","inputSchema":{"additionalProperties":false,"properties":{"angle":{"description":"Which of Audora's post angles the words take (the key names it: listener_pov is the listener's side of the song, tail_section a part of the track no other post used, hook_object an object the song names, and so on). Audora counts how each angle does for the artist, and promo_results' what_works shows the result. get_campaign shows each post's angle.","enum":["pin_angle.hook_object","pin_angle.listener_pov","pin_angle.lyric_line_on_beat","pin_angle.occasion_day","pin_angle.one_answerable_question","pin_angle.ordinary_scene_contrast","pin_angle.place_light_and_weather","pin_angle.place_named_in_words","pin_angle.release_fact_card","pin_angle.repeat_what_worked","pin_angle.scene_vocabulary","pin_angle.show_coming_up","pin_angle.story_line_that_nearly_went","pin_angle.story_place","pin_angle.tail_section","pin_angle.uploaded_asset_hero"],"type":"string"},"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"campaign_id":{"description":"From list_campaigns.","type":"string"},"caption":{"description":"The words of the post, as they will be published. The lane's limit and Audora's text rules apply (no placeholders, nothing that points back at another post).","type":"string"},"date":{"description":"The day it goes out, YYYY-MM-DD, inside the campaign's window. A draft may be saved with a day gone by; Schedule asks for one still ahead (schedule_check says so).","type":"string"},"dry_run":{"description":"True to check the call and see what it would do, without writing anything.","type":"boolean"},"hashtags":{"description":"Up to 12 hashtags, with or without #. Replaces the list.","items":{"type":"string"},"type":"array"},"idempotency_key":{"description":"Send the same key if you retry, and the change happens once.","type":"string"},"lane":{"description":"Where it goes.","enum":["instagram","story","facebook","tiktok","youtube"],"type":"string"},"link_url":{"description":"A web address the post links to, or null to remove it.","type":["string","null"]},"media_asset_id":{"description":"A picture (for a picture post) or a video (for a video post) already in the artist's Library, by its media asset id. Audora does not make pictures or videos through this connection.","type":"string"},"time":{"description":"The time it goes out, HH:MM 24-hour, in the artist's own time zone.","type":"string"}},"required":["campaign_id","lane","date"],"type":"object"},"name":"add_post"},{"description":"Send the ARTIST'S answer to a question Audora asked about their release (see get_release_questions). Ask the artist and relay what they say. Never answer for them and never guess: an answer can be a statement about rights or ownership that Audora relies on. Audora is told it came through their assistant. The release status does not change; Audora reads the answer and moves the release on.","inputSchema":{"additionalProperties":false,"properties":{"answer":{"description":"The artist's answer, in their words. Up to 4000 characters.","type":"string"},"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"dry_run":{"description":"True to check the question is open, without sending anything.","type":"boolean"},"idempotency_key":{"description":"Send the same key if you retry, and the answer is sent once.","type":"string"},"release_id":{"type":"string"}},"required":["release_id","answer"],"type":"object"},"name":"answer_release_question"},{"description":"Cancel one of the artist's events. Everyone invited or coming is told. Artist connections only.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"event_id":{"type":"string"},"idempotency_key":{"description":"Send the same key if you retry, and the change happens once.","type":"string"}},"required":["event_id"],"type":"object"},"name":"cancel_event"},{"description":"The latest import (or the one named): how many records are in, and each record's outcome.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"job_id":{"type":"string"}},"required":[],"type":"object"},"name":"catalog_import_status"},{"description":"For one track or one album: everything Audora still needs before that release could be submitted, and anything worth a second look that does not block it. That includes the stores' intake rules, checked against the uploaded master and cover themselves (a stereo WAV, FLAC or Apple Lossless master at a rate the stores take; square RGB JPG 3000–6000 px). Call this after writing, and again before telling the artist something is ready.","inputSchema":{"additionalProperties":false,"properties":{"album_id":{"description":"Check an album or EP. Give this or track_id, not both.","type":"string"},"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"track_id":{"description":"Check a single. Give this or album_id, not both.","type":"string"}},"required":[],"type":"object"},"name":"check_readiness"},{"description":"Close one to-do the artist does not want to see, exactly as closing it in Audora does: it comes back by itself when what it is about changes. A track's or album's missing details are not closed: they are fixed.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"idempotency_key":{"description":"Send the same key if you retry, and the change happens once.","type":"string"},"key":{"description":"The to-do's key, from list_todos.","type":"string"}},"required":["key"],"type":"object"},"name":"close_todo"},{"description":"\"That's me\": record the candidates the ARTIST said are theirs (a catalog can be split across pages). Only ids find_my_music offered. Ask the artist. Never confirm on a guess.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"deezer_ids":{"description":"The candidates' ids the artist picked.","items":{"type":"string"},"type":"array"},"idempotency_key":{"description":"Send the same key if you retry, and it happens once.","type":"string"}},"required":["deezer_ids"],"type":"object"},"name":"confirm_my_music"},{"description":"Create an album or EP. Put tracks on it afterward with set_album_tracks.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"dry_run":{"description":"True to check the call and see what it would replace, without writing anything.","type":"boolean"},"fields":{"additionalProperties":true,"description":"The fields to set, by the `name` get_requirements gives each one.","type":"object"},"idempotency_key":{"description":"Send the same key if you retry, and the create happens once.","type":"string"}},"required":["fields"],"type":"object"},"name":"create_album"},{"description":"Create a track from its metadata. The audio and the cover art are uploaded separately. Pass idempotency_key if you might retry, so a timeout does not leave two tracks.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"dry_run":{"description":"True to check the call and see what it would replace, without writing anything.","type":"boolean"},"fields":{"additionalProperties":true,"description":"The fields to set, by the `name` get_requirements gives each one.","type":"object"},"idempotency_key":{"description":"Send the same key if you retry, and the create happens once.","type":"string"}},"required":["fields"],"type":"object"},"name":"create_track"},{"description":"Audora can design a logo, cover art, brand colors and typefaces, artist photos, and promotion posts and short videos for the artist. Those are made inside Audora, not through this connection: call this to get the exact page to send the artist to, with a sentence on what they will find there. Use it whenever the artist wants a logo, artwork, a cover, visuals, photos or promo video made.","inputSchema":{"additionalProperties":false,"properties":{"album_id":{"description":"For cover_art on an album or EP.","type":"string"},"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"track_id":{"description":"For cover_art on a single.","type":"string"},"what":{"enum":["logo","cover_art","palette","typography","artist_photos","promotion"],"type":"string"}},"required":["what"],"type":"object"},"name":"design_in_audora"},{"description":"Audora reads the file you uploaded (the file itself, not its name) and attaches it only if it meets the upload spec. A master that is secretly an MP3, or a cover that is not square or is under 3000 pixels, is refused here and the file is removed. Passing here is not the same as being releasable: a release also needs a stereo master and a square RGB JPG cover of 3000–6000 px, which check_readiness reports on.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"name":{"description":"A short name, for an artist image.","type":"string"},"upload_id":{"type":"string"}},"required":["upload_id"],"type":"object"},"name":"finalize_upload"},{"description":"Find which artist on Deezer (and Apple Music) is this artist, to bring their released records in: the confirmed one, or candidates to show the artist. A link to their music (Deezer, Spotify or Apple, artist or record) searches from that instead of the name.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"link":{"description":"Optional: a link to the artist's music.","type":"string"}},"required":[],"type":"object"},"name":"find_my_music"},{"description":"Runs Audora's own lookup of what the artist has already published (streaming profiles, releases, their site and social profiles), or reads where one is and what it found. Use it only when you cannot search the web yourself: otherwise look the artist up with your own search, check with them that you found the right artist, and fill their page with update_profile. With action \"start\" it begins one, which takes 1–2 minutes; the artist gets a few a day, shared with Soundcheck in Audora. The account's first lookup is free and each later one costs credits and needs the artist's spend permission: start with dry_run: true to read the price, tell the artist, then start with confirm_cost_credits. With action \"status\" (the default) it reads the newest lookup, or the one named by run_id. Every fact comes with the pages it was read on. It never changes the artist's profile: when it is done, call propose_profile so the artist keeps what is theirs in Audora.","inputSchema":{"additionalProperties":false,"properties":{"action":{"description":"\"start\" a new lookup, or read its \"status\". Default: status.","enum":["start","status"],"type":"string"},"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"confirm_cost_credits":{"description":"For start: the price a dry run quoted and you told the artist. Needed for a lookup that is not free.","type":"number"},"dry_run":{"description":"For start: true to read what the lookup costs without starting it.","type":"boolean"},"link":{"description":"For start: one page the artist is on (Apple Music, Deezer, SoundCloud, YouTube, Bandcamp, their site, Instagram), as a full https:// address. It is the best starting point. A Spotify link is kept as theirs but never opened, so another page starts the lookup better.","type":"string"},"not_me":{"description":"For start: names of earlier matches the artist said are not them.","items":{"type":"string"},"type":"array"},"run_id":{"description":"For status: a particular lookup. Default: the newest.","type":"string"}},"required":[],"type":"object"},"name":"find_online"},{"description":"One campaign as Promo's calendar: every post by day and lane, with its words, hashtags, picture or video, status, and schedule_check: exactly what Audora's Schedule would decide about it now, and in the artist's words what it still needs.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"campaign_id":{"description":"From list_campaigns.","type":"string"}},"required":["campaign_id"],"type":"object"},"name":"get_campaign"},{"description":"The plan, whether distribution is included, credits remaining, and the track, album and storage allowances. Check before uploading or preparing a submission.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"}},"required":[],"type":"object"},"name":"get_limits"},{"description":"The artist profile as Audora holds it.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"}},"required":[],"type":"object"},"name":"get_profile"},{"description":"Questions Audora's reviewers asked about the artist's releases (for example, whether the rights to a remix are cleared), with the whole conversation. A release with an unanswered question does not go out until the artist answers. Omit release_id for every open question.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"release_id":{"description":"One release, including a closed conversation. Omit for all open questions.","type":"string"}},"required":[],"type":"object"},"name":"get_release_questions"},{"description":"Every field Audora needs, with its exact limit in characters or words, the closed list to choose from where there is one, and the accepted file formats and sizes. Call this BEFORE filling anything in. The limits differ per field: some are refused when exceeded and some only flagged. What blocks a release is set by Audora, and it changes.","inputSchema":{"additionalProperties":false,"properties":{"entity":{"description":"Narrow to one kind of thing. Omit for everything.","enum":["artist","track","track_artist","contributor","album","release","split","files"],"type":"string"},"release_type":{"description":"Narrow to the fields this kind of release needs. An album needs more than a single.","enum":["single","ep","album","compilation"],"type":"string"}},"required":[],"type":"object"},"name":"get_requirements"},{"description":"Streams, saves and growth per track, which stores and playlists the listening comes from, TikTok use, the audience's age and gender, how the artist's promotion posts performed, and their followers. For the whole catalog, when the artist has connected their own Songstats account, it also gives their numbers across the web (listeners, followers, playlist reach, socials, Shazam, charts), the cities they are listened to in now, the playlists carrying them and dated events. The same numbers the artist sees in Audora. Use it to answer \"how is my release doing\", to write a pitch or bio from real numbers, or to suggest where to focus next. When a figure is missing, say \"not reported yet\", never zero.","inputSchema":{"additionalProperties":false,"properties":{"album_id":{"description":"Every track on one album or EP.","type":"string"},"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"track_id":{"description":"One track. Leave out both ids for the whole catalog, which also includes posts, followers and audience.","type":"string"}},"required":[],"type":"object"},"name":"get_stats"},{"description":"One track with its billed artists and its song credits.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"track_id":{"description":"The track's id, from list_tracks.","type":"string"}},"required":["track_id"],"type":"object"},"name":"get_track"},{"description":"Start bringing the chosen records into the catalog, within the plan's room. Covers come in only when the artist said they are theirs to use (rights_confirmed: true, their own words, recorded as their consent); otherwise every record comes in with its codes and the cover is left to upload.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"idempotency_key":{"description":"Send the same key if you retry, and it happens once.","type":"string"},"items":{"items":{"properties":{"deezer_album_id":{"type":"string"},"include":{"type":"boolean"}},"required":["deezer_album_id","include"],"type":"object"},"type":"array"},"rights_confirmed":{"description":"Only true when the artist said the covers are theirs to use.","type":"boolean"}},"required":["items"],"type":"object"},"name":"import_catalog"},{"description":"Bring a skipped post, or one that did not go out, back as a draft to schedule. A draft is already kept.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"idempotency_key":{"description":"Send the same key if you retry, and the change happens once.","type":"string"},"post_id":{"description":"The post's id (post_id from get_campaign or promo_this_week).","type":"string"}},"required":["post_id"],"type":"object"},"name":"keep_post"},{"description":"Every album in this account, newest first.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"}},"required":[],"type":"object"},"name":"list_albums"},{"description":"Every Promo campaign in this account, with its window, whether it is ahead, running or over, and how many posts are to look at, scheduled, posted or did not go out. A release's campaign is kind release; between releases a campaign is a month (kind between_releases), and none starts by itself: start_campaign with between_releases plans the next one. Also lists upcoming releases that have no campaign yet, and campaigns being planned right now.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"}},"required":[],"type":"object"},"name":"list_campaigns"},{"description":"The shows, release parties and listening parties the artist has posted, with who is invited and who is coming, and their drafts (saved, not posted, seen by nobody else). Artist connections only: Scene is between artists.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"}},"required":[],"type":"object"},"name":"list_events"},{"description":"The artist's pictures or videos in Audora's Library, newest first, searchable by name and filterable by category (Brand kit, Logo, Cover art, Promo, a platform, Made by Audora, Uploaded, Found online, Stock footage). Each has a media_asset_id (what update_post takes) and a preview link valid for an hour.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"categories":{"description":"Only items in every one of these.","items":{"enum":["branding","logo","cover-art","promo","tiktok","instagram","youtube","facebook","ai-generated","uploaded","found-online","stock"],"type":"string"},"type":"array"},"kind":{"description":"Pictures (default) or videos.","enum":["images","videos"],"type":"string"},"limit":{"maximum":50,"minimum":1,"type":"integer"},"offset":{"minimum":0,"type":"integer"},"search":{"description":"Words in the item's name, or the artist, track or album it belongs to.","type":"string"}},"required":[],"type":"object"},"name":"list_media"},{"description":"With release_id: the release's \"Around the release\" checklist (pitch, pre-save, Canvas, lyrics, release day and the weeks after), each with when it is due, why, where it is done and whether it is done. Without: the artist's \"Set up once\" list (Instagram ready to post, photos and clips for the posts, claiming the store profiles, the bio link).","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"release_id":{"description":"The release (list_releases). Leave out for \"Set up once\".","type":"string"}},"required":[],"type":"object"},"name":"list_release_todos"},{"description":"Every release in this account with where it has reached (status_label: Draft, Submitted, Changes asked, Going to the stores, Ready for release day, Live, Rejected, Takedown asked, Taken down, Released elsewhere), including anything Audora asked about.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"}},"required":[],"type":"object"},"name":"list_releases"},{"description":"Every open to-do the artist sees on their pages, most urgent first: what it is, how urgent, where it is fixed and the tool that fixes it from here. Each has a key; closable says whether close_todo can close it.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"}},"required":[],"type":"object"},"name":"list_todos"},{"description":"Every track in this account, newest first.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"}},"required":[],"type":"object"},"name":"list_tracks"},{"description":"The records of the confirmed artist, newest first and 50 a page, with their codes, date and type, matched against the catalog: new, already in the catalog, or in conflict with another account. total says how many there are in all. Also the plan's room for songs and albums.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"deezer_album_ids":{"description":"Optional: only these records.","items":{"type":"string"},"type":"array"},"page":{"description":"Optional: which page, 0 the newest (the default).","minimum":0,"type":"integer"}},"required":[],"type":"object"},"name":"preview_catalog_import"},{"description":"The posts that went out, best first, with their latest reach, likes, comments, shares, saves and views, the totals over the window, and the followers on each connected account. A missing number is not reported yet, never zero. what_works: per platform, the angles and posting hours that have beaten the artist's usual most often, from their own posts only, with how many posts each rests on.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"days":{"description":"How far back, 1–365 days. Default 90.","type":"number"},"limit":{"description":"How many posts to list, 1–50. Default 10.","type":"number"}},"required":[],"type":"object"},"name":"promo_results"},{"description":"What goes out in the next days across every campaign, what in that time is not scheduled yet (and so will not go out unless it is), and what did not go out lately and needs the artist. last_week: the week that ended, as the Last week sheet on Promo shows it: each post that went out with its numbers and where it stands against the artist's own usual on its platform, the one that did best, their music beside the week before, and what works best so far from their own results.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"days":{"description":"How many days ahead, 1–14. Default 7.","type":"number"}},"required":[],"type":"object"},"name":"promo_this_week"},{"description":"Puts a finished find_online lookup in front of the artist in Audora and returns the link to it. The artist confirms it is them and keeps what is right there. This call writes nothing to their profile, and you should not copy the findings into update_profile yourself. Their Home says their assistant found something to look at.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"run_id":{"description":"The lookup to propose. Default: the newest.","type":"string"}},"required":[],"type":"object"},"name":"propose_profile"},{"description":"Call this whenever the artist asks for something there is no tool for, or a tool refuses in a way you cannot work around. It files the ask in Audora's support inbox, where a person reads it, and it shows in the artist's Settings › Support. Call it before you tell the artist no. It changes nothing in their catalog, and it is the only way the ask reaches anyone.","inputSchema":{"additionalProperties":false,"properties":{"asked_for":{"description":"What the artist wanted, in their own words as far as you can keep them.","type":"string"},"note":{"description":"Anything that would help Audora understand the ask.","type":"string"},"tool_tried":{"description":"The tool you tried or looked for, if there was one.","type":"string"}},"required":["asked_for"],"type":"object"},"name":"report_gap"},{"description":"Ask for a one-time address to upload a master, cover art, a logo or an artist photo to. You need the file's NAME, nothing else. Never ask the artist how big a file is. PUT the file to the address you get back, then call finalize_upload, which reads the file itself and checks the size, the format and the account's storage against it.","inputSchema":{"additionalProperties":false,"properties":{"album_id":{"type":"string"},"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"bytes":{"description":"Optional. The size in bytes, IF you already know it: it saves a doomed upload. Never ask anyone for it. The server measures the file when it arrives.","type":"number"},"filename":{"description":"The file's own name, with its extension. Audio is .wav, .flac or .m4a (Apple Lossless); images are .png, .jpg or .webp. A release going out through Audora needs a stereo master and a .jpg cover (square, 3000–6000 px, RGB). Other images upload but cannot be a release cover.","type":"string"},"kind":{"enum":["audio","cover_art","logo","artist_image"],"type":"string"},"mime_type":{"type":"string"},"track_id":{"description":"Required for audio; for cover art, give this or album_id.","type":"string"}},"required":["kind","filename"],"type":"object"},"name":"request_upload"},{"description":"Save the artist's own show, release party or listening party, or change one (pass event_id). It is saved as a DRAFT that only the artist sees, with whatever is known (only kind is needed), unless you pass post: true. Posting puts it on Scene for artists on Audora (and on the public page when is_public) and needs a title, starts_at and a place: a city and a country, and/or an online link. Post only when the artist asked for it to go out. An event already posted stays posted, so its changes need the same. Inviting artists or Audora stays the artist's to do in Audora; an edit keeps what they chose. Artist connections only.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"event":{"properties":{"city":{"type":["string","null"]},"country":{"description":"The country's name as Audora's country list writes it (get_requirements has the list), e.g. Sweden.","type":["string","null"]},"ends_at":{"description":"ISO date and time, or null.","type":["string","null"]},"is_public":{"description":"Show it on the artist's public page once posted. Defaults: on for a show, off for a party.","type":"boolean"},"kind":{"enum":["show","release_party","listening_party"],"type":"string"},"line":{"description":"One line about it, in the artist's words.","type":["string","null"]},"online_url":{"description":"https link, for one online.","type":["string","null"]},"release_id":{"description":"A party for one of the artist's releases (once it is out).","type":["string","null"]},"starts_at":{"description":"ISO date and time.","type":"string"},"ticket_url":{"description":"https link to tickets or info.","type":["string","null"]},"time_zone":{"description":"IANA zone where it happens, e.g. Europe/Stockholm. Needed with starts_at.","type":"string"},"title":{"type":"string"},"venue_name":{"type":["string","null"]}},"required":["kind"],"type":"object"},"event_id":{"description":"To change one; leave out to save a new one.","type":"string"},"idempotency_key":{"description":"Send the same key if you retry, and the change happens once.","type":"string"},"post":{"description":"true puts it on Scene now (needs title, starts_at and a place). Leave out to save a draft.","type":"boolean"}},"required":["event"],"type":"object"},"name":"save_event"},{"description":"Write the release details for a track or album as a DRAFT. A draft costs nothing, can be changed and goes nowhere until the artist says so. Returns a draft_hash identifying exactly what you prepared, and release_rules: everything the track or album still needs to meet the stores' rules (master format, cover, sub-genre, languages, countries, performer roles) before it can be submitted. An older track or album usually needs some of it. A draft saves even when it is unfinished: a release date sooner than the stores take is saved and comes back in `warnings`, and submitting refuses it until it is changed.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"item_id":{"description":"The track's or album's id.","type":"string"},"release":{"additionalProperties":true,"description":"The release fields, by the names get_requirements(entity: \"release\") gives them, for example { \"release_type\": \"single\", \"scheduled_date\": \"2026-11-20\", \"description\": \"...\", \"pitching_directly\": \"...\", \"release_timeline\": \"...\", \"artist_quotes\": \"...\" }. Add \"splits\" for royalty splits. Send only what you are setting.","type":"object"},"type":{"enum":["track","album"],"type":"string"}},"required":["type","item_id"],"type":"object"},"name":"save_release_draft"},{"description":"Send Audora feedback it will read, as one of these kinds. missing_capability: a change you would need to do what the artist wants. connector_improvement: how this connector could work better for an assistant, such as a confusing tool, a missing field or a result that did not tell you enough. product_improvement: how Audora itself could serve artists better. bug: something that looks broken. other: anything else. It goes into Audora's support inbox and shows in the artist's Settings › Support, so write it for a person: what you were trying to do, what got in the way and what would have helped. Use it when you notice something worth fixing. You do not need the artist's permission, but set artist_asked to true when the artist asked for it. For a plain \"there is no tool for that\", report_gap is enough.","inputSchema":{"additionalProperties":false,"properties":{"artist_asked":{"description":"True when the artist asked for this or said it; false or omitted when it is your own observation.","type":"boolean"},"details":{"description":"What you or the artist were trying to do, what got in the way and the change that would have helped. Up to 5000 characters. No passwords, tokens or other secrets.","type":"string"},"kind":{"description":"What this is about.","enum":["missing_capability","connector_improvement","product_improvement","bug","other"],"type":"string"},"summary":{"description":"One line someone at Audora can triage from. Up to 120 characters.","type":"string"},"tool":{"description":"The tool this is about, if it is about one.","type":"string"}},"required":["kind","summary","details"],"type":"object"},"name":"send_feedback"},{"description":"Put these tracks on this album, in this order. Replaces whatever was on it. A track left out is taken off the album, not deleted.","inputSchema":{"additionalProperties":false,"properties":{"album_id":{"type":"string"},"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"dry_run":{"description":"True to check the call and see what it would replace, without writing anything.","type":"boolean"},"track_ids":{"description":"In running order.","items":{"type":"string"},"type":"array"}},"required":["album_id","track_ids"],"type":"object"},"name":"set_album_tracks"},{"description":"Switch a release on or off the list other artists on Audora see on release day, to give it a first listen. Refused for a release out more than four weeks ago or released elsewhere.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"idempotency_key":{"description":"Send the same key if you retry, and it happens once.","type":"string"},"on":{"type":"boolean"},"release_id":{"description":"From list_releases.","type":"string"}},"required":["release_id","on"],"type":"object"},"name":"set_first_listen"},{"description":"Mark one checklist item done, or not done again: the tick in Audora.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"done":{"type":"boolean"},"idempotency_key":{"description":"Send the same key if you retry, and the change happens once.","type":"string"},"todo_id":{"description":"From list_release_todos.","type":"string"}},"required":["todo_id","done"],"type":"object"},"name":"set_todo_done"},{"description":"Replace the OTHER artists a track is billed to: the \"Artist & Guest feat. Guest\" line on every store. The account's own artist is always billed first and cannot be removed. Do not send it (a name equal to it is dropped, never printed twice). Send the others in billing order. `primary` and `with` join the main credit after the account's artist; `featured` and `remixer` become the \"feat.\" part. Another `primary` artist is a collaboration: ask the artist whether they have all the rights needed for it, and send rights_confirmed: true only when they say yes. Without it the call is refused and nothing is written. `featured`, `with` and `remixer` need no confirmation. Optional: a track with none is billed to the artist profile's own name. The songwriter, performer and producer credits are a different list, set with set_track_credits.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"artists":{"description":"The artists besides the account's own, in billing order. An empty list clears the billing back to the artist's own name.","items":{"properties":{"name":{"description":"Exactly as it should read on the store.","type":"string"},"role":{"enum":["primary","featured","with","remixer"],"type":"string"}},"required":["name","role"],"type":"object"},"type":"array"},"dry_run":{"description":"True to check the call and see what it would replace, without writing anything.","type":"boolean"},"rights_confirmed":{"description":"Required as true when the list has a `primary` artist besides the account's own. Ask the artist first, in these words: \"I have all the rights needed for this collaboration\". Send true only when they confirm it. Never assume it: it is recorded as their legal confirmation.","type":"boolean"},"track_id":{"type":"string"}},"required":["track_id","artists"],"type":"object"},"name":"set_track_artists"},{"description":"Replace a track's song credits with this list. Every track needs at least one songwriter, one performer and one producer before its release can be submitted. These are real people: ask the artist, and never invent a name to satisfy the requirement.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"credits":{"description":"Each entry: name, role (songwriter | performer | producer). A performer also takes performer_type (primary | featured | non_featured, default primary) and instrument: what they played or sang, spelled exactly as in get_requirements' `performer_roles` list (e.g. \"Vocals - Lead Vocals\"). The release cannot be submitted until every performer has one; a performer sent without one is saved and named in `warnings`. Songwriters and producers take no instrument.","items":{"additionalProperties":true,"type":"object"},"type":"array"},"dry_run":{"description":"True to check the call and see what it would replace, without writing anything.","type":"boolean"},"track_id":{"type":"string"}},"required":["track_id","credits"],"type":"object"},"name":"set_track_credits"},{"description":"Skip a post so it does not go out. It stays on the campaign and keep_post brings it back. Skipping a post that is already scheduled takes it out of the queue and returns its posting credit, and needs the schedule permission.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"idempotency_key":{"description":"Send the same key if you retry, and the change happens once.","type":"string"},"post_id":{"description":"The post's id (post_id from get_campaign or promo_this_week).","type":"string"}},"required":["post_id"],"type":"object"},"name":"skip_post"},{"description":"Start a campaign for an upcoming release, or a month between releases (between_releases: true, from tomorrow; none starts by itself, so start the next month the same way when one ends). A release already out gets no campaign of its own: its start is made between releases with its song first (the answer says between_releases: true). Audora writes the campaign (every post's day, time, words and what picture or video it needs) at a price that grows with its size (2 a week is the least, Every day the most; the dry run's quote.plan says it), charged when it starts and returned if the plan fails; starting it needs the artist's spend permission. Nothing is made: fill each post from the artist's Library with update_post, or have Audora make one with make_posts (priced then). A campaign is planned in moments: one video or picture posted the same day on every connected account it fits, with words for each account. Each moment costs 1 credit to go out, all its accounts included, only when it is scheduled. The answers about the song (the_story, key_lyrics, key_moments, what_works, sonic_references, note) are the Start panel's: optional, filled from what Audora knows when left out, and they turn on posts that use them. A release (or the time between releases) can run several campaigns at once, each with its own language, lead market and accounts; one that would copy a live campaign in all three is refused (a dry run's quote.duplicate_of names it, quote.live_campaigns lists them). Planned posts fit around the posts other campaigns already have on the same accounts: one video and one picture a day per account. Use dry_run first to see the posts, the price and those answers (quote.answers), tell the artist, then start with confirm_cost_credits.","inputSchema":{"additionalProperties":false,"properties":{"about":{"description":"Between releases only: what the campaign is about. \"song\" (with about_track_id, one of the artist's songs) or \"artist\" (posts about who they are, their sound and their artist page; no line is kept). Left out: planned as before.","enum":["song","artist"],"type":"string"},"about_track_id":{"description":"With about: \"song\", the song the campaign is about (list_tracks).","type":"string"},"accounts":{"description":"Optional, for an artist with more than one account on a platform: which account each platform posts through, as the account's id, @handle or name (a dry run's quote.accounts lists them). Every post of the campaign is tied to its account and never goes out on another. Left out for a platform: the account the newest campaign in this language used there, else the artist's main account.","properties":{"facebook":{"type":"string"},"instagram":{"type":"string"},"tiktok":{"type":"string"},"youtube":{"type":"string"}},"type":"object"},"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"between_releases":{"description":"True for a month between releases instead of a release's campaign.","type":"boolean"},"confirm_cost_credits":{"description":"The price a dry run quoted (charged_at_start: the plan at its size) and you told the artist. Required to start.","type":"number"},"dry_run":{"description":"True to check the call and see what it would do, without writing anything.","type":"boolean"},"idempotency_key":{"description":"Send the same key if you retry, and the change happens once.","type":"string"},"key_lyrics":{"description":"Optional, up to 2: \"A line that matters\", word for word from the song's lyrics (get_track has them). A line not in the lyrics is refused; a song with no lyrics takes a line the artist types; an instrumental takes none.","items":{"type":"string"},"type":"array"},"key_lyrics_track_id":{"description":"The song the lines are from: one of the release's songs, or between releases any of the artist's. Left out: the release's songs are tried; between releases, the artist's newest songs with lyrics.","type":"string"},"key_moments":{"description":"Optional, up to 6: \"Something coming up\". A show, a video, a date that matters. Posts lead up to it. Left out: Scene's public shows and parties inside the campaign's days.","items":{"properties":{"date":{"description":"YYYY-MM-DD, still ahead.","type":"string"},"event_id":{"description":"A Scene event's id (list_events): its own date, place and link are used.","type":"string"},"kind":{"description":"show, a party, or other.","enum":["show","release_party","listening_party","other"],"type":"string"},"label":{"description":"What happens, in the artist's words.","type":"string"},"link_url":{"description":"Optional https link for tickets or info.","type":"string"}},"required":["date","label"],"type":"object"},"type":"array"},"lanes":{"description":"Where the posts go. Only lanes with a connected account are planned.","items":{"enum":["instagram","story","facebook","tiktok","youtube"],"type":"string"},"type":"array"},"lead_market":{"description":"Optional: where most of the listeners for this campaign are. Every post is timed for that market's clock. null: timed where the artist is. Left out: the last campaign's market, else the first market on the artist's page (a dry run's quote.markets says which).","enum":["us","uk","eu","nordics","dach","france","latam","japan","kpop","china","india","mena","africa","anz",null],"type":["string","null"]},"loop_opt_out":{"description":"Optional: what the artist does not want Audora to lean on in this campaign, from a dry run's quote.from_results (Start a campaign's \"From your results\": the angles, hours and picture sources the artist's own post results say have done best, each line with its count). Pass a line's opt_out entries for each line the artist unticks; that choice is then made as it is for everyone, for this campaign only. Left out: every line is planned with. Each post still gets one try at something new either way. quote.from_results is null when there is no line.","items":{"properties":{"dimension":{"enum":["angle","hour_band","picture_source"],"type":"string"},"platform":{"enum":["instagram","story","facebook","tiktok","youtube"],"type":"string"},"value":{"type":"string"}},"required":["dimension","platform","value"],"type":"object"},"type":"array"},"lyric_video":{"description":"Optional: the campaign's first made video shows the song's words in time with the song. Audora times the lyrics when the campaign starts (free), so that video comes about 10 minutes later. false: no video shows lyrics. Left out: on when the song's lyrics can be timed. A dry run's quote.lyric_video says the song and where its lyrics stand (to_time, timing, timed, or why not: no_lyrics, instrumental, language, no_master).","type":"boolean"},"note":{"description":"Optional, ≤ 200 characters: \"Anything we should know?\", anything else the planner should know, in the artist's words. Left out: the last campaign's for this release, if any.","type":"string"},"picture_fallback":{"description":"Optional: what fills a post the artist's own photos and cover do not cover, when Audora is asked to make it (make_posts, or in the app). stock: free Pixabay stock photos, always made into the artist's cards (people and brands left out; not offered for a song about drugs, sex or politics). new: Audora draws a new picture. ask: those posts wait for the artist to pick a photo in the app. Stock and new cost the same (the artist's own photos and cover are free). Left out: the artist's last answer, else stock. A dry run's quote.picture_fallback says the starting choice and whether stock may be used.","enum":["stock","new","ask"],"type":"string"},"post_language":{"description":"Optional: the language every post in this campaign is written in, with the text on its pictures and videos. Left out: the artist's Post language, else the language the artist's own post results have done best in (when their results are in 2 or more languages and one holds 4 or more and beats their usual most often), else the language the release's songs are sung in, else en-US. A dry run's quote.post_language says which and why; its results names the language their results favor, also when their Post language is another (offer it, never assume it). It is the campaign's, never written back to the artist.","enum":["en-US","en-GB","sv","nb","da","fi","is","de","nl","fr","es-ES","es-419","pt-BR","pt-PT","it","zh-CN","zh-TW","ja","ko"],"type":"string"},"release_id":{"description":"The release (from list_releases or list_campaigns' can_start). Or use between_releases.","type":"string"},"replace_plan_id":{"description":"Optional: start that campaign over (an id from list_campaigns, for the same release or between releases). Its posts not yet scheduled are removed once the new campaign is written; scheduled ones stay and go out.","type":"string"},"size":{"description":"How often: light is 2 moments a week, steady 4 a week, loud every day (a video moment and a picture moment each day, so every account posts every day). A release campaign runs 5 weeks before release day and 2 after (49 days: light 14 moments, steady 28, loud 98), its moments climbing toward release day; between releases a month (30 days: light 9, steady 17, loud 60). A release closer than 5 weeks has fewer days and so fewer moments. The dry run quotes the exact moments and posts.","enum":["light","steady","loud"],"type":"string"},"sonic_references":{"description":"Optional, up to 5 names: \"Artists you sound like\". Left out: the Artist page's reference artists.","items":{"type":"string"},"type":"array"},"the_story":{"description":"Optional, ≤ 5000 characters: \"The story behind it\", in the artist's own words. Where it was written, what happened, who it is for. Posts tell it in your words. Never write it for them.","type":"string"},"what_works":{"description":"Optional, ≤ 2000 characters: \"What worked before\", in the artist's words. A post, a format or a time that did well for you. Posts can take the same shape again.","type":"string"}},"required":["lanes","size"],"type":"object"},"name":"start_campaign"},{"description":"Amend an album's details. Refused once its release has been submitted.","inputSchema":{"additionalProperties":false,"properties":{"album_id":{"type":"string"},"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"dry_run":{"description":"True to see what would change, and what it would replace, without writing anything. Use it before overwriting words the artist wrote.","type":"boolean"},"fields":{"additionalProperties":true,"description":"The fields to set, by the `name` get_requirements gives each one.","type":"object"}},"required":["album_id","fields"],"type":"object"},"name":"update_album"},{"description":"Change a post's words, hashtags, link, day, time, its picture or video (from the Library), or the angle its words take. Send only what changes. Returns the post with schedule_check: what Schedule would decide now. A post already scheduled can be changed only with the schedule permission; one already handed to its platform's own schedule (Facebook, YouTube) or one that went out cannot be changed here.","inputSchema":{"additionalProperties":false,"properties":{"angle":{"description":"Which of Audora's post angles the words take (the key names it: listener_pov is the listener's side of the song, tail_section a part of the track no other post used, hook_object an object the song names, and so on). Audora counts how each angle does for the artist, and promo_results' what_works shows the result. get_campaign shows each post's angle.","enum":["pin_angle.hook_object","pin_angle.listener_pov","pin_angle.lyric_line_on_beat","pin_angle.occasion_day","pin_angle.one_answerable_question","pin_angle.ordinary_scene_contrast","pin_angle.place_light_and_weather","pin_angle.place_named_in_words","pin_angle.release_fact_card","pin_angle.repeat_what_worked","pin_angle.scene_vocabulary","pin_angle.show_coming_up","pin_angle.story_line_that_nearly_went","pin_angle.story_place","pin_angle.tail_section","pin_angle.uploaded_asset_hero"],"type":"string"},"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"caption":{"description":"The words of the post, as they will be published. The lane's limit and Audora's text rules apply (no placeholders, nothing that points back at another post).","type":"string"},"date":{"description":"The day it goes out, YYYY-MM-DD, inside the campaign's window. A draft may be saved with a day gone by; Schedule asks for one still ahead (schedule_check says so).","type":"string"},"dry_run":{"description":"True to check the call and see what it would do, without writing anything.","type":"boolean"},"hashtags":{"description":"Up to 12 hashtags, with or without #. Replaces the list.","items":{"type":"string"},"type":"array"},"idempotency_key":{"description":"Send the same key if you retry, and the change happens once.","type":"string"},"link_url":{"description":"A web address the post links to, or null to remove it.","type":["string","null"]},"media_asset_id":{"description":"A picture (for a picture post) or a video (for a video post) already in the artist's Library, by its media asset id. Audora does not make pictures or videos through this connection.","type":"string"},"post_id":{"description":"The post's id (post_id from get_campaign or promo_this_week).","type":"string"},"time":{"description":"The time it goes out, HH:MM 24-hour, in the artist's own time zone.","type":"string"}},"required":["post_id"],"type":"object"},"name":"update_post"},{"description":"Set artist details: name, country, genre, tone, description, main markets, Promo's post language, the three bios and links. Send only the fields you are changing. Call get_requirements first for the exact limits. An over-long value is refused with the number it got.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"dry_run":{"description":"True to see what would change, and what it would replace, without writing anything. Use it before overwriting words the artist wrote.","type":"boolean"},"fields":{"additionalProperties":true,"description":"The fields to set, by the `name` get_requirements gives each one.","type":"object"}},"required":["fields"],"type":"object"},"name":"update_profile"},{"description":"Amend a track's metadata. Refused once its release has been submitted: a submitted release carries a frozen copy, and changing the catalog underneath it is the artist's own decision, because it costs credits.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"},"dry_run":{"description":"True to see what would change, and what it would replace, without writing anything. Use it before overwriting words the artist wrote.","type":"boolean"},"fields":{"additionalProperties":true,"description":"The fields to set, by the `name` get_requirements gives each one.","type":"object"},"track_id":{"type":"string"}},"required":["track_id","fields"],"type":"object"},"name":"update_track"},{"description":"Returns the account this connection acts in (an artist's, or a label's with its roster), what this connection is allowed to do, where the result is reviewed, and next_steps: what to offer the artist next, worked out from the account. Call this first, and again whenever you are unsure whose catalog you are working in. On a label connection, pass `artist` to see one roster artist's account.","inputSchema":{"additionalProperties":false,"properties":{"artist":{"description":"Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.","type":"string"}},"required":[],"type":"object"},"name":"whoami"}]},"body_sha256":"28e646dc447e58b38012e345cde2e4ff5ff15859fafe982e4588bacb3a146979","prev_id":null,"leaf":"0x5efb29f96fc264546e779d32fae9edead9370c956562a4737d76d1d4fc18aa20","leaf_text":"{\"body\":\"28e646dc447e58b38012e345cde2e4ff5ff15859fafe982e4588bacb3a146979\",\"id\":303381,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793055314821705,\"prev\":null,\"subject\":\"3ff5eb53-9507-43b2-aa18-f40492a28459\",\"subject_kind\":\"endpoint\"}","day":{"day":"2026-10-26","leaves":296695,"root":"0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8","chained":"0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a","anchor_chain":"eip155:5042002","anchor_tx":"0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae","anchor_block":69251483},"proof":["0x5efafc60895be2061834a4bc90c429315751eeff91cbb025e1549de4fbb6a9f2","0x696b404025e23463a043f494b028d9854d487aa5c1f0ecd49f8af243f13f25b7","0x09dc2999cafe8b0377602c085a7124d5503f46ded2699a98da161515f0e7a3a0","0x261deed196ca44e23267dc207bfbf7aed2c6910b34ffd6c19d5371d582f42edb","0xca2b264ac6c846709597ac351793cae08945297749f07d4dd7cd0c1ee9ffb9f2","0xb0e65cc9fee6251e4c76ff648e0d5302b164afd07f07f39f72abe0a166634842","0x0ddaa3eadd4da0f831dcbffff90e3589ce7ebe42e6917b654e0fc176a29f2dcc","0x6495fcc5498e1846e1e2364adcd6e694cc353b253dce3c86bf3c2edc62fdadd9","0xbb72305a188b7107c832b364935b9598621d09edffc6216041044bfcad87910a","0x8a5cdded34bdb5e67f8d0ea283d9fd99467d39dd780b50b89398e9d04700430a","0x8088b42b1c11cbc36b44c4b08d0759628b035caa2738251cd28ed0e7242e65bc","0x5ab25c2fdf4695beeefb0726a5fc73e189b68f8d9fb2a3f6321ff7223b166fdd","0x66883b42f4167ade51c4909f050c5478524e23786fb0b5c48bd1a53580960a68","0x216cebb9ae5414599109a02297c4817d7d1c6b1394afeb97efe38e32f0053974","0x7726154b91b2ad65b13849ef6cb6443b1f0ff113a3089c9bd5f2bcfc16be099d","0x47b89901b0f07938a6b9a66ddf35683903f79d756a7c7763665fd632758b08d0","0x9a83be955a206deb65b995adfd92c58fa31c95fbbf926bd199d300e70b08b26d","0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d","0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a"]}