← ScoreStarlingCONTENT HISTORY

Update to ScoreStarling

Snapshot Oct 24, 2026 · 13:44 UTC · version 1.0.0

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save ScoreStarling and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Turn audio into an editable score with ScoreStarling, review and refine the transcription and its engraving, preview musical changes, and export notation or MIDI. Use when someone wants sheet music, a score or MIDI from a recording, a voice memo or a song they play or sing, with a connected ScoreStarling MCP server.",
  "included_files": [
    {
      "relative_path": "references/arranging.md",
      "size_in_bytes": 18206
    },
    {
      "relative_path": "references/good-score.md",
      "size_in_bytes": 14723
    },
    {
      "relative_path": "scripts/upload_audio.py",
      "size_in_bytes": 6186
    }
  ],
  "name": "scorestarling-score",
  "skill_md_contents": "---\nname: scorestarling-score\ndescription: Turn audio into an editable score with ScoreStarling, review and refine the transcription and its engraving, preview musical changes, and export notation or MIDI. Use when someone wants sheet music, a score or MIDI from a recording, a voice memo or a song they play or sing, with a connected ScoreStarling MCP server.\n---\n\n# Audio to a reviewed score\n\nUse the connected ScoreStarling tools. This skill supplies the workflow; it does not\ngrant account access or consent to upload, spend credits, or apply a new musical proposal.\nSheet music (a photo, scan or PDF of printed music, jianpu), score files (MusicXML, MIDI, ABC)\nand music written in the chat follow the `scorestarling-notation` skill.\n\n## Reuse an existing score or saved result\n\nWhen the user says “reuse the existing result” or “do not start new processing”, first\nuse `list_scores` and `open_score`. Opening a finished score needs no upload, audio check\nor new transcription. Do not ask for information already recorded in that score.\n\nOnly if the user explicitly wants a **new score from a saved Pro result**, use the original\nrecording or `transcribe_again`, with `provider: mirelo`, instrument review enabled and\n`replay_only: true` **at creation**, before the first review. This is available only to enabled\nreplay accounts. Never require the user to say internal parameter names.\n\nRead `get_pro_instrument_review(start=false)` first. Match the complete historical\n`instruments` and flat `pro_options`, including tempo, meter, subdivision, timing and paper;\nthe candidates already verify this account, original bytes and decoded duration. Different\nchoices need a different saved result. If no candidate matches, stop and offer to open the\nexisting score. Do not start fresh detection, processing or another upload.\n\nConfirm matching choices with `confirm_pro_instruments(replay_only=true)`, then read back\nthe saved guard. If a quote is required, ask once for consent to its exact product credits;\npermission to reuse is not payment consent. Keep the same excerpt length; a shorter quote needs its\nown matching saved result. Follow the same job and verify the completed\nresult includes `replayed_from`. Explain this as reusing a saved result, in ordinary language.\n\n## Preserve and audit source corrections\n\nFor PDF/OCR drafts, prefer source-supported local edits over replacing correctly read music.\nKeep the original draft. If missing notes or ties require a `create_score` replacement, compare\n**all** pitch and rhythm changes between the new and old scores against enlarged original pages.\nCheck clef, key, staff position, accidentals, grace notes and ties, with the preceding and following\nbars. A structurally valid score or a model calling it “corrected” is not proof of source fidelity.\nUntil those changes have been checked, report the remaining uncertainty rather than complete accuracy.\n\n## First reply\n\nIf the user has not given a recording yet, answer in three short lines with the ways in:\nattach it in the chat (ChatGPT web or desktop) or paste a link to the file; open the ScoreStarling\npanel with `open_studio` to choose a file or record (best on phones and in Claude); or use the\nworkspace at scorestarling.com/app. Add that one instrument or voice works best, piano included, and that a\nknown tempo (BPM) helps; otherwise it is detected. Name the choices as the workspace does: one\ninstrument or voice and solo piano (free), or a band (uses credits, price shown first); never say\nStandard, Pro, engine or supplier names unless the user does.\n\n## Get the audio in\n\n- ChatGPT attachment: first call `check_recording` with the host-supplied `file` object (a few\n  seconds; nothing is saved or charged), passing `instrument` when the user has said what it is.\n  Then call `transcribe_attachment` with the same `file` and the recommended engine. When the\n  recommendation's engine is null (chords, instrument unknown), ask what the instrument is.\n  Follow the job in the same turn with `get_upload_status` and `wait_seconds: 20`, calling\n  again until it finishes; the panel shows the same progress. Every result's `next_step`\n  says what comes next. Never fabricate a URL/file ID or ask for a second upload when that\n  object is available.\n- Claude/code attachment with a readable file: obtain the filename and exact byte count,\n  call `prepare_audio_upload`, POST the actual raw bytes once with\n  `Content-Type: application/octet-stream`, then follow its `job_id` with `get_upload_status`\n  and `wait_seconds: 20`.\n  Do not encode audio into tool arguments or reveal the upload capability URL.\n- The user asks for a link to send the file themselves: call `prepare_audio_upload` without `size`\n  (never ask for the byte count or length) and give them the link with\n  `curl -X POST -H 'Content-Type: application/octet-stream' --data-binary @FILE LINK`. It works once,\n  for ten minutes. Then follow its `job_id` as above.\n- No readable file, code execution or network access: explain the missing capability and\n  offer `open_studio` so the user can select their file in the panel. Pass `engine` when the\n  instrument is known (`piano` for solo piano) so the panel preselects it. You are not told\n  when a panel job finishes: the panel offers the user a button that asks you to check the\n  new score, and `list_scores` finds the newest one.\n- A link to a video or song page (YouTube, Bilibili, TikTok, SoundCloud, Instagram, X and\n  similar sites; short share links work) or to the file itself (an MP3 or a video file; Dropbox\n  and Google Drive share links work): call `transcribe_link` with the link and the engine for the\n  instrument, asking what it is when you don't know. Only the audio of the first 5.5 minutes of a\n  video is fetched; files are public https addresses up to 50 MiB (120 MiB as WAV, AIFF or FLAC).\n  Spotify and Apple Music encrypt their music, and some sites (Douyin, Xiaohongshu) may refuse the\n  server: then ask for another link or the file. Follow the job with `get_upload_status` as above.\n- Local stdio server: use `list_audio` / `transcribe_audio` only for files already in its\n  `data/input`. A sandbox path is not a path on the remote server.\n\nEngines (`provider`): `local` is Standard, for one instrument or voice; `piano` reads solo piano\nwith both hands, chords and the sustain pedal (about a minute); `mirelo` is Pro, for bands and\ndrums, an external paid provider chosen with the user; its credit quote, where credits apply, is the\none cost question (never ask for a credit cap). Uploads are limited to 50 MiB, or 120 MiB as WAV, AIFF or FLAC (`get_account_usage.upload_limits`).\nA score covers the first five minutes of a recording with Standard or Piano. Pro covers\nfive minutes for invited accounts and accounts holding purchased credits, otherwise two;\n`check_recording`, `get_account_usage` (`max_seconds`) and upload results (`max_seconds`, `excerpt`) give\nthe account's current limit. Tell the user about a longer recording's excerpt before the task starts. If\nPro is unavailable,\nread `get_account_usage.engine_status.mirelo.reason` when provided; do not assume the account lacks\npermission or the supplier has a two-minute ceiling. A recording steadily off concert pitch is retuned to A440 automatically.\nPass `bpm` only when the user gave the tempo; when omitted, it is estimated: say so. `bpm` counts\nquarter notes: for a 6/8 or 12/8 song counted in dotted quarters, pass 1.5 times that tempo. For Pro,\n`bpm` writes one fixed tempo; user-stated or source-established rhythm choices go in `pro_options`\nwhen confirming. Explicitly pass known 6/8, 9/8 or 12/8: omitting meter uses N/4, not compound\nmeter detection. Never guess unknown meter/tempo or force fixed BPM; report uncertainty.\nReview all instrument suggestions against accessible musical evidence. Use a grounded complete list;\notherwise use `instruments: null` for automatic parts, included in the one quote/start consent.\nDo not require the user to inventory instruments. Saved replay choices always take precedence. Mention cost\nonly for Pro or when `get_account_usage` shows a limit; supplier credits and product credits are\nseparate, and estimates are not billing receipts. Standard and Piano are free; only Pro uses product\ncredits, shown in its quote. Never show prices, plans, packs, upgrade prompts or purchase links in chat;\nif asked how credits work, link https://scorestarling.com/credits. Each job counts toward the account's\ntwo-running limit.\n\nAn HTTP 202 means upload accepted, not transcription completed. Follow the original job;\nkeep following in this turn, giving brief plain progress instead of a task ID or asking\nthe user to tell you to keep waiting. A failed free `check_recording` used no transcription\ncredits; say so. For later failures, use the tool's actual used/refunded/held credit evidence;\ndo not infer a zero charge from a failed status or retry an uncertain paid submission.\non `completed`, continue with the default below. On `failed` or `needs_review`, report the\nstate and inspect usage/saved results. When `can_recover` is true, use `recover_pro_result`\nwith that original `job_id`, then follow it again; this resumes the accepted Pro task or\nits saved result without a new transcription or reservation. Unknown submissions need\nmanual review. After an ambiguous response, inspect that same job instead of creating\nanother upload or paid job. Pro's provisional note count can shrink; 96% is still processing.\nReview/export only after completion. Do not blindly retry mutations.\n\n### Local upload helper\n\nUse the connected host's authorized `prepare_audio_upload` tool, with the real filename,\nbyte count and chosen provider. Its one-use upload ticket is the only capability\nthe file-transfer script needs; do not read environment credentials or extract tokens\nfrom another application. Add `size` to the ticket JSON with the exact count passed to\nthe tool. Pass that JSON privately on stdin, keeping the URL out of command arguments:\n\n```sh\npython scripts/upload_audio.py /path/to/audio.wav < /path/to/private-upload-ticket.json\n```\n\nThe script path is relative to this skill directory. It needs Python 3.11 and `httpx`,\ninstalls nothing and uses no repository imports. `--site` selects a trusted deployment\n(default `https://scorestarling.com`) or HTTP loopback origin; the ticket's upload link\nmust be on it. The CLI sends raw bytes once and prints only the job ID and\nupload-acceptance flag. Then follow that job with the connected `get_upload_status` tool\n(`wait_seconds: 20`) and continue as its `next_step` says. A timeout or false acceptance flag means inspect the\nexisting job, not repeat the POST. Keep the ticket temporary and private; remove the\ntemporary ticket file after this invocation.\n\nFor a runtime that provides an already-authorized tool-call function, the script's\n`upload_audio` function also performs preparation and bounded polling through that\nfunction, with no credential discovery. If code, dependencies or network are unavailable,\nuse the panel. Claude API skill containers cannot make this network upload; an\napplication-side authorized tool or the panel must handle it.\n\n## Default after every transcription\n\nDo this every time a job completes, before asking what the user wants next. Review and\nscore edits use no provider credits. The provider output, including Mirelo's official\nnotation and detection, is initialization; work toward a faithful, clear, playable score\nwith the user. Preserve the original and reversible revisions.\n\n1. Show the score once: the panel that started an attachment or panel upload turns into the\n   score by itself; otherwise call `open_score`. Later edits update that panel in place.\n   The tool prepares the score for display. If the host reports that its panel failed to open,\n   say so plainly; tool success alone does not prove that the user can see the panel.\n2. Call `review_score` once (no `measures`). Read its summary, suggestions and page picture.\n3. Inspect each ready operation, rather than treating its suggestion code as approval.\n   Apply only source-supported, performance-preserving key, clef, voice or empty-staff\n   cleanup within the user's request. A key estimate or voice-count heuristic alone is\n   insufficient: retain genuine inner voices, crosses and the user's stated key.\n   The current `single_line` suggestion supplies `voices: 1`, not `line: \"single\"`;\n   inspect its actual operation. `line: \"single\"` deletes notes and can shorten held\n   notes in playback. Never add it automatically or infer permission to discard\n   polyphony from an instrument name. If a requested melody reduction warrants it,\n   explain the affected notes; otherwise preview it as a new proposal.\n   Merge supported `reengrave` options into one call, then apply clefs; inspect saved\n   layout choices as well, since omitted options reuse them. Re-read changed note IDs,\n   validate and compare the revision before continuing; `undo` restores the prior version.\n4. Report in a few plain lines: the engine, instrument, key, time signature, the tempo and\n   whether it was detected (an estimate) or supplied, any retuning or excerpt named in the\n   status summary, the cleanup, confidence availability, flagged bars and rhythm leads. If\n   the tempo was detected, compare it with the recording and any written source yourself. When the notes read at\n   half or double the felt speed, offer `scale_note_values` (free, keeps the playing);\n   a different explicit quarter-note tempo and meter uses `rewrite_rhythm` when the review says it is available.\n   do not start another transcription merely to change notation. For Pro,\n   report the time signature and tempo from `provider_output.rhythm` with its warnings.\n   Use the user's language and explain effects plainly. Keep tool names, field names,\n   revision numbers and editing bindings out of the reply. For example, say \"Some notes\n   cannot be edited individually yet\" when that is the limitation; say what was checked\n   and what still needs listening, rather than dumping diagnostic counts.\n   The Piano engine also takes the time\n   signature (4/4, 3/4, 6/8 or 12/8), a pickup and the bar lines from the playing. Compare\n   `source_rhythm_analysis` candidates with complete phrases, opening rests and the source;\n   their ranking is not calibrated and the correct meter may be missing. Correct a clear\n   source-supported reading within the request. Ask one precise question only if a consequential\n   tempo, meter or downbeat choice remains unclear. A 6/8 or 12/8 score marks and\n   reports its tempo in dotted quarters.\n5. If the status gives `advice`, or the user hears missing notes, offer another engine: Piano\n   for solo piano (free), a band for songs with several instruments (uses credits, price shown first).\n6. Apply evidence-based, reversible edits the user has already requested, including a\n   broad correction or arrangement goal; do not ask again for each ordinary edit.\n   Preview newly proposed musical changes outside that scope and apply after acceptance\n   of that preview. A request to review is not permission to delete plausible voices.\n   A new transcription and paid Pro use still need their own authorization: one exact\n   credit quote, or one question about starting when the account has no quote. Never ask for a cap.\n\n## Listen and check\n\nOpen the score panel, read `get_score`, compare original audio and MIDI playback with the\nuser, and call `validate_score`. A clean structural result does not prove transcription\naccuracy. Compare complete phrases and repeated sections, not isolated note density.\nSeparate performance events, musical structure, notation and an authorized learner\narrangement. Record the target bars/IDs, supporting and conflicting evidence, proposed\nchange, playback effect and verification; preserve plausible alternatives when uncertain.\nIf the host cannot play audio, say so and ask the user to audition the panel.\n\n- Octave/pitch: use real selected note IDs and `transpose` / `set_pitch`; distinguish\n  written pitch from sounding pitch for transposing instruments.\n- Meter/pickup: inspect the current settings; preview `set_meter` or `rebar_pickup` with\n  a confirmed pickup length in quarter-note beats. `set_pickup` only marks an already\n  partial first bar. Never infer pickup length from an underfull bar alone. A Piano score's\n  pickup was estimated from the playing; change it with clear source evidence, asking only\n  when the downbeat remains unclear. Notes that look halved or doubled may mean the beat level is off: a slow ballad\n  whose sixteenths came out as eighths under a doubled tempo mark needs `factor` 0.5 (halve\n  every value), a quick waltz written in sixteenths at half its tempo needs 2 (double).\n  Preview `scale_note_values` with that factor. The\n  tempo mark changes with the values, the playing stays, and a Piano score finds its time\n  signature and bar lines again; then check the meter and first downbeat against the source.\n  A 6/8 song written as 3/4 (same bar length) only needs `set_meter`.\n- A different pulse: `rewrite_rhythm` changes a steady recording's note values and bars together\n  at an explicit quarter-note `bpm`, `beats` and `beat_type`, without inference or credits.\n  It preserves played notes, controls, pitch bends and comparison playback, with MIDI rounding\n  below 0.1 ms. Check its availability and source evidence; tracked/changing tempo, pickups,\n  imported sheet music and marks or tuplets it cannot preserve are refused. Do not apply an\n  uncalibrated candidate merely because it ranks first. Preview new interpretations; re-read IDs.\n- Quantized rhythm: compare onsets/durations and the supplied BPM. `set_duration` corrects\n  supported note lengths; `rebeam` changes grouping only; `reengrave` with `grid: \"8th\"`\n  writes the whole performance on a coarser grid. Explain an unsupported timing repair\n  instead of inventing an operation or starting another credit-consuming transcription\n  without authorization.\n- Unbound notes: inspect validation and mapping before performance edits. Do not guess\n  MIDI bindings or align audio precisely from `notation_estimate` times. MusicXML/PDF may\n  still export; MIDI/audio require complete bindings. Report any unresolved limitation.\n\n## Review and refine\n\nAfter the first listen, call `review_score`; add `measures: \"5-8\"`, in the score's bar\nnumbers, to zoom in. `review_score` is not a full automatic comparison with the recording.\nIts `source_note_evidence` supplies at most six cached, independent pitch/voicing leads for\ndetected single lines, linked to unchanged current note IDs and source listening spans.\nInspect those original passages yourself before correcting anything. Quiet, short or ornamental\nreal notes can be flagged too; empty or unavailable evidence says nothing about accuracy.\nIts `doubtful_notes` are Basic Pitch confidence leads only; unavailable for Piano,\nMirelo or imports, or an empty list, does not mean the score is accurate. It also returns\n`suggestions` with ready operations for key, clef, voices, staff layout and register, the\n`validate_score` findings, and a picture of the page. Judge the picture as an engraver\nwould, with your own knowledge and [references/good-score.md](references/good-score.md).\nEverything it reports is a lead to check, not a verdict. Before an arrangement, a simplification,\na level, another texture or a playable version (弹唱, two-hand jianpu), read [references/arranging.md](references/arranging.md).\n\n- Low-confidence or short notes may be real ornaments, quiet attacks or musical ghost\n  notes. Compare the original and synthesized passage before deleting or repitching;\n  neither a cleaner page nor fewer notes proves accuracy. Preserve uncertain notes.\n- `reengrave` without `line` or `program` changes preserves the performance and replaces\n  the notation: earlier clef, beam and spelling edits are redone and some note IDs change, so re-read the score afterwards.\n  `review_score` says whether it is available (not with chord symbols, for example, nor\n  after a pickup unless the Piano engine found it). Settle the instrument and layout (`program`, `staff_split`, `voices`,\n  authorized melody reduction), then key (`key`, at sounding pitch) and rhythm (`grid`), before fixing single notes.\n- `summary.rhythm` says where bar 1 starts and how the rhythm reads. A `rhythm` suggestion\n  means the bar lines may not follow the playing: tell the user what it found, ask where they\n  feel the first downbeat, and for solo piano from the Standard engine offer the Piano engine,\n  which places bar lines from the playing. Treat rhythm ratios as candidate evidence:\n  opening rests, offbeat bass/chord changes, syncopation and dense sixteenths can be real.\n  Move bar lines only within an authorized correction and with a supported pickup length.\n- Beyond the default cleanup, preview each change you propose, call `review_score` on the\n  preview revision, and explain what improved and what got worse. Apply only what the user\n  accepts.\n\nInspect every final exported page, not only the first review image: alignment, collisions,\nclefs, continuation ties, accidentals, part labels and page turns. Audition the changed\npassages against the source and recheck the exported revision. Report accuracy,\nreadability, playability and learner suitability separately; do not invent a publication\nquality score. Stop when the remaining questions need the user's ear or taste.\n\nCurrent tools do not provide precise local voice/staff/hand reassignment, arbitrary\nonset/offset editing, local tempo-map editing, or dedicated tuplet, swing, grace-note,\narpeggio, tie/slur and pedal entry. `set_duration` changes playback note-offs;\n`rebeam` changes grouping; a global grid cannot repair all timing or ornaments.\nRead `get_workflow_guide(topic=\"operations\")` and the live tool schema for supported\nfields and restrictions. Report a missing capability rather than inventing an action,\nrepitching/deleting to imitate a staff move, or flattening genuine tuplets.\n\n## Preview, accept, export\n\nWhen the user asks for a change, broad or exact, apply it with `edit_score`; it takes effect\nat once and `undo` reverts it. A message from the panel can list several numbered requests,\neach with its own note IDs: apply them in order, each to the current revision. For a change you propose on your own initiative, call\n`preview_score_edit` with the current revision and explain the scope; the open score panel\nshows it with Apply and Discard. A preview is not applied. Only call `apply_score_preview`\nafter the user accepts that specific preview, using its ID and base revision. The panel\nfollows edits and previews by itself, so call `open_score` only when no panel is open.\n\nPrinted marks are their own objects, as in Sibelius: tempo and expression words (rit., a tempo),\nrehearsal marks (A, A6), metronome marks, dynamics, hairpins and fermatas, each with an ID in\n`get_score` `marks`. Use `add_mark`, `update_mark`, `move_mark` and `delete_mark` when the user asks\nfor a mark, or when one text is doing two jobs. Example: a section \"A6\" where the music returns to\ntempo is two marks on the same note, printed stacked, never one text \"A6 · a tempo\":\n`{\"action\":\"add_mark\",\"kind\":\"rehearsal\",\"note_id\":\"n…\",\"text\":\"A6\"}` and\n`{\"action\":\"add_mark\",\"kind\":\"words\",\"note_id\":\"n…\",\"text\":\"a tempo\"}`. ABC's `\"^A6\"` arrives as words;\n`update_mark` with `kind: \"rehearsal\"` makes it the boxed section label. Only dynamics change playback\n(as `set_dynamic`); a metronome mark is printed only, so say that playback keeps the recording's tempo.\nJianpu exports carry the same marks. Fields and limits: `get_workflow_guide(topic=\"operations\")`.\n\nTo read the score in numbered notation (jianpu, 简谱: \"我要简谱\", \"show it as numbers\"), call\n`set_notation_view` with `view=jianpu`; the open panel switches within a few seconds, and\n`view=staff` switches back. With no panel open, call `open_score` with `notation=jianpu`. The\nview is drawn read-only from the last saved revision: edits still happen in staff notation and\nthe numbered view follows them. The score keeps the choice, in the workspace too. When the user\nasks for numbered notation before the score exists, pass `view=jianpu` to the tool that makes it\n(`transcribe_attachment`, `transcribe_link`, `prepare_audio_upload`/`begin_audio_upload`,\n`create_score`). For a file to print or keep, use `export_score` as below.\n\nWhen the user explicitly requests one-note-at-a-time reduction, `reengrave` with\n`line: \"single\"` is available. Merely naming a voice, violin or flute does not authorize\nremoving real simultaneous notes. Apply an already requested reduction with `edit_score`;\npreview an Agent-proposed reduction with `preview_score_edit`: it keeps one note at a\ntime on one staff and removes the extra notes from playback too (undo brings them back), without\ntranscribing again. A part still named after the piano becomes Melody. The user can do the same in\nScore settings › Layout, which also offers one staff with chords, two piano staves and the shortest\nnote. A single-part recording only.\n\nWhen a recording was transcribed as the wrong instrument (\"it's a piano\"), call `transcribe_again`\nwith the score ID and the right `provider`: a new score is made from the same recording and the\nfirst one stays, so nothing needs uploading again. Follow its job like an upload. Sheet music and\nnotation have no recording to transcribe again.\n\nOn a stale revision, re-read `get_score` and reconsider the proposal against the new score;\ndo not silently repeat it. Reopen and validate the accepted revision. Use `export_score`\nfor `musicxml`, `pdf` or `midi`; use `part_id` for one part, or `format=parts` for a ZIP.\nA plain PDF request uses `format=pdf`: it follows the score's saved display view,\nlike the panel's PDF button. Do not silently give Mirelo's different original layout.\nUse `original_pdf` only when that original is requested, and name its source.\nFor numbered notation (jianpu, 简谱) use `jianpu` (every staff) or `jianpu_melody` (the top\nline only, usually the tune), both movable do in the key (`1=` key; minor keys from their relative\nmajor's do), or `jianpu_fixed` for 1=C fixed do (固定调): the same pitches with 1 always C and\nevery black key marked (in ♭G major, b5 and b7), for players who read keys rather than degrees. `abc`\nreturns ABC text you can read or rewrite as well as a file; `mei` is for music research.\nReturn the provided expiring download link. Native Sibelius/Dorico files and isolated\noriginal stems are not produced. Score edits do not call Mirelo or spend provider credits.\n\nFinish briefly with what completed, the useful corrections and the delivered score,\nand any listening or quality check still needed. Do not describe local/mocked checks as\nreal ChatGPT/Claude acceptance or provider billing verification.\n\n<!-- BEGIN MCP ESSENTIALS: scripts/sync_workflow_guidance.py -->\n## Shared MCP essentials\n\nUse the connected host's authorized tools and respect its file, network and approval boundaries. Guidance grants no account access, upload consent, supplier spending or acceptance of a proposal. Never invent file references, expose upload capabilities or discover credentials.\n\nWhen the user says reuse the existing result or do not start new processing, first list_scores and open_score; do not upload, check_recording or transcribe_again merely to reopen a score. Only for an explicitly requested new score from a saved Pro result, use the original upload or transcribe_again with provider=mirelo, review_instruments=true and replay_only=true from creation (enabled replay accounts only). Read get_pro_instrument_review(start=false) first. replay_candidates verify this owner, original bytes and decoded length; compare every historical instrument and flat pro_options with the requested choices. No matching candidate means stop and offer the existing score; never start detection, fresh processing or a replacement. Confirm matching complete choices with replay_only=true, then read back pro_review.replay_only=true. Keep the same excerpt length; a shorter quote needs its own matching saved result, otherwise stop. If a quote is required, ask once for its exact product credits; reuse permission is not payment consent. Follow the same job and verify completed.replayed_from. Explain saved-result reuse in plain words; the user does not need to name internal fields.\n\nAudio attachments: check_recording with the named instrument; use recommendation.engine. If it is null, ask what the instrument is. local is Standard for one instrument or voice; piano is Piano for solo piano with both hands, chords and pedal; mirelo is paid Pro for bands and drums, chosen with the user; its credit quote is the one cost question. Never ask for a credit cap or show supplier credits. Pro uploads need instrument review; follow next_step. To the user, name the choices as the workspace does: one instrument or voice, solo piano, or a band (uses credits); say price, not quote; never say Standard, Piano engine, Pro, model or supplier names unless the user does. When you ask the user to agree to a band's price, add the short credit \"Powered by Mirelo\" (its API terms ask for it where a generation starts); nowhere else.\n\nRead get_pro_instrument_review(start=false) first. For a new Pro upload, start=true gets free instrument suggestions. Review every suggestion against accessible recording evidence, supplied facts and any written source; preselected is not a complete inventory. Describe clearly and possibly heard instruments in plain words, never agreement figures. Use a grounded complete list with confirm_pro_instruments; a missing instrument cannot appear and a wrong one misallocates notes. Otherwise use instruments=null for automatic parts and include that plan in the one quote/start question, not a separate approval. Set user-stated or source-established rhythm choices in pro_options before quoting; explicitly pass known 6/8, 9/8 or 12/8. Omitted meter uses N/4, not automatic compound-meter detection. Never guess unknown meter/tempo or force fixed BPM; omit unknown choices and report uncertainty, asking only about consequential ambiguity the source cannot resolve. Until the quote is accepted the user may still change choices; quote again if changed. Do not poll or retranscribe a pending review; cancel_pro_review releases its reservation. For replay_only, even start=true stays cache-only: match all saved instruments/options exactly, stop on no match, and never change the cached request or start a replacement. Afterwards report provider_output.rhythm with its meter/tempo sources and warnings.\n\nWhen get_upload_status reports product_quote.phase=pending, call get_transcription_quote for its actual decoded duration, product credits and complete parameters; for Pro these include the instruments and rhythm pro_options fixed by confirm_pro_instruments, so pass pro_options there. Show that exact quote and obtain explicit user consent before confirm_transcription_quote with unchanged quote_id/credits and consent=true. Expired or changed input/parameters require a fresh quote. When the balance does not cover it, affordable is the longest excerpt from the start it does: offer that (two minutes on welcome credits, say) rather than stopping, and on agreement call get_transcription_quote again with seconds and show that quote. Upload estimates are not product-quote consent. Nothing is transcribed or reserved before acceptance; cancel_transcription_quote cancels only an unconfirmed task. Only Pro is quoted (40 product credits a minute); Standard, Piano, notation and explicitly exempt accounts have no quote. In chat never show prices, plans, packs, upgrade prompts or purchase links; for how credits work, link the credits_info page (scorestarling.com/credits).\n\nPass bpm only when the user supplied it; omission detects an estimate to confirm by listening. bpm counts quarter notes: multiply a dotted-quarter tempo for 6/8 or 12/8 by 1.5. Read source_rhythm_analysis candidates when available; scores and gaps are uncalibrated, and the correct meter may be absent. Compare full phrases, the recording and any written source before choosing tempo, meter, pickup or bar lines. When a transcription reads at half/double the felt speed, offer scale_note_values with factor 0.5/2 (free, preserves playing). For another explicit quarter-note tempo and meter, rewrite_rhythm re-writes a steady recording without new inference or charges; inspect its availability first. Apply clear source-supported corrections within the request; preview new interpretations. Ask one precise musical question only if source evidence leaves a consequential choice unresolved.\n\nPoll get_upload_status(job_id, wait_seconds=20) in this turn until terminal; never reupload or finish with an ID or request to keep waiting. Give brief plain progress. HTTP 202 is acceptance, not completion. Inspect the original job after ambiguous responses; never blindly retry a mutation or paid job. On failed/needs_review follow can_recover/next_step: pending instruments and quotes need explicit approvals; recover_pro_result resumes the same accepted Pro task; otherwise stop for review. Quota estimates are not billing receipts.\n\nrecover_pro_result queues only a saved Pro result or accepted official job ID, without a new transcription or quota reservation. Poll the same job afterward. Unknown submissions stay held for manual review; never create a replacement to recover them. Provider progress and provisional note counts can change; even 96% is processing. Use only the completed score for review/export. provider_output.musicxml_optimized is true only when the provider actually reports optimization; absent/false is not optimized. Original supplier exports are initialization artifacts.\n\nAfter transcription, call review_score; inspect its summary, operations and page. Apply source-supported, performance-preserving key/clef/voice/layout cleanup within the request. single_line suggests voices:1, not line:single. line:single deletes notes and shortens holds in playback: require explicit reduction intent. Inspect saved reengrave choices; merge supported options, then clefs; re-read IDs and validate. doubtful_notes gives Basic Pitch confidence only. source_note_evidence adds limited independent listening leads for single lines, with current IDs and source spans; inspect the original passage before any note correction. Neither is an accuracy verdict; unavailable/empty proves nothing. Report engine, instrument, key, meter, tempo/source, retuning/excerpt, changes, uncertain bars and rhythm leads; confirm estimated tempo/downbeat from source evidence; ask only when a consequential choice remains unclear. Apply requested corrections; preview new proposals. transcribe_again needs authorization; undo restores the prior revision. Answer briefly in the user's language. Explain effects in plain words; never relay tool/field names, revision numbers or editing bindings.\n\nA provider result is an editable starting score, not a publication-ready verdict. Reuse the provider's available detection, notation and original exports before inventing replacement processing. Keep the original and reversible revisions. Work toward accurate, clear, playable notation: check coverage, instrument assignment, pitches, rhythm, meter, voices, clefs, ties and spacing against the recording or written source. Inspect every exported page, including page turns and dense passages. Use get_score, review_score, previews, edit_score and validate_score for evidence-based corrections within the user's request; no guessed deletions or merges. Structural checks and MIDI hashes do not prove musical accuracy. Choose style/texture hypotheses from full phrases and source evidence: opening rests, offbeat harmony, three voices, crossing hands, ornaments, swing and rubato can be genuine; no fixed rhythm ratios or left-hand eighth-note template. Separate performance, structure, notation and authorized arrangements. Keep a faithful master for learner reductions. Say what was actually listened to and what remains uncertain; report accuracy, readability and playability separately. Pro is powered by Mirelo: its original PDFs (original_pdf is the full score unless one part or tab is selected, with tuning source; original_scores the ZIP) engrave the unedited result only, exclude later edits (then call them the original) and are not a claim of final quality.\n\nCurrent tools lack precise local voice/staff/hand reassignment, arbitrary onset/offset edits, local tempo-map edits and dedicated tuplet/swing/grace/arpeggio/tie/slur/pedal entry. set_duration changes playback note-offs; rebeam only changes grouping; global voice/grid options cannot replace local editing. Read live schemas and operation restrictions. Report unsupported corrections without inventing actions or destructive workarounds. ABC reconstruction needs source comparison and representation checks. Inspect all exported pages and audition changed passages when possible; structural validation, MIDI preservation and cleaner pages do not prove musical accuracy.\n\nRead get_score for current revision/IDs. Apply requested reversible changes with edit_score within the stated goal without repeated permission. Panel numbered requests have separate note_ids: apply them in order on the current revision. Preview new musical proposals with preview_score_edit, review_score that preview, and apply_score_preview only after acceptance of that specific preview. Re-read stale revisions. Structural validation does not prove transcription accuracy; doubtful_notes are leads to listen to, not a verdict. MIDI/audio exports require complete performance bindings; MusicXML/PDF may still export. Recheck the accepted revision and return export_score's expiring download link. A plain PDF request uses format=pdf and follows the saved view, like Download; do not silently substitute Mirelo's original PDF. Use original_pdf only when requested and label it as the original. Audio exports are synthesis, not original stems.\n\nShow a score as staff or jianpu (简谱: jianpu 1=key, jianpu_fixed 1=C 固定调, jianpu_melody) with set_notation_view: the score keeps it, the open panel and Download PDF follow; with no panel, open_score with notation; before it exists, pass view to the tool making it. export_score takes the same names; jianpu_voices only if asked for a hand's voices apart.\n\nCall send_feedback once only after the user explicitly expresses an opinion of a result, with their own words as a non-empty comment and the revision they judged. Never supply your own rating or solicit one. Feedback grants no consent to share the recording; the user's panel buttons handle sharing.\n<!-- END MCP ESSENTIALS -->\n"
}

SHA-256 of public snapshot: 3edd70547322136dc99dedd287981fe39ae9da48a262700b9ff0492572eb4d3d