Endpoints: 28,729MCP servers: 18,414Payout addresses: 2,071Paid calls: 1,562Letters: 14Defects: 1,336counted 3 min ago
teppi

Server definition

Hash
sha256:fbf61cd17beabaa7434e7fa640acc902f011dc62d82dab208d6c9e749c56b1cc
What it is
What a remote MCP server returned when asked what it offers: 17 tools

The blob, as servednamed by its sha256

{ "instructions": "Musicboxmelodies arranges songs for music boxes. Use these tools to browse public music box tunes, check that a melody can be played on a given music box, fit it to one, save it and export it as a printable strip or MIDI. Read the resource mbm://guides/composing-for-music-boxes before composing. Workflow: validate_melody or fit_melody_to_box until there are no errors, then create_song. Saving works without an account (the person gets a link to claim the song); with save_to_my_account the person signs in and the song goes straight to their account. Songs are always saved private; only make one public when the person asks for it. To order a custom arrangement, use get_product_options and prepare_order: the person pays on the website.", "tools": [ { "description": "Saves a melody as the version of an existing song for one box (a song can have one version per box: 15, 20, 30 notes or freestyle). Replaces that box's version if it exists. Works on the signed-in person's songs, or on a song saved without an account if you pass its claim_token. The melody must have no errors.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "box": { "description": "Music box type: \"15\", \"20\", \"30\" (notes) or \"freestyle\" (digital only). See list_music_boxes.", "enum": [ "15", "20", "30", "freestyle" ], "type": "string" }, "bpm": { "description": "Tempo in beats per minute (30-300).", "maximum": 300, "minimum": 30, "type": "number" }, "claim_token": { "description": "Only for songs saved without an account.", "maxLength": 100, "type": "string" }, "illegal_threshold_ticks": { "description": "Minimum gap between two identical notes, in ticks (default 384 = 2 beats).", "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "notes": { "description": "Notes in any order, at most 2000. Only onsets matter: music boxes have no note durations.", "items": { "properties": { "beat": { "description": "When the note sounds, in quarter notes from 0 (e.g. 0, 1, 1.5).", "minimum": 0, "type": "number" }, "pitch": { "anyOf": [ { "maxLength": 8, "type": "string" }, { "maximum": 127, "minimum": 0, "type": "integer" } ], "description": "Note name like \"C5\", \"F#4\", \"Bb3\", or a MIDI number (60 = C4)." }, "ticks": { "description": "Alternative to beat: 192 ticks per quarter note.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" } }, "required": [ "pitch" ], "type": "object" }, "maxItems": 2000, "minItems": 1, "type": "array" }, "song_id": { "maxLength": 40, "type": "string" } }, "required": [ "song_id", "box", "bpm", "notes" ], "type": "object" }, "name": "add_version", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "box": { "type": "string" }, "composer_url": { "type": "string" }, "replaced": { "type": "boolean" }, "song_id": { "type": "string" }, "validation": { "additionalProperties": false, "properties": { "issues": { "items": { "additionalProperties": false, "properties": { "code": { "type": "string" }, "index": { "description": "Index of the note in the input, when the issue is about one note.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "message": { "type": "string" }, "severity": { "enum": [ "error", "warning" ], "type": "string" }, "suggestions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "code", "severity", "message" ], "type": "object" }, "type": "array" }, "ok": { "type": "boolean" }, "stats": { "additionalProperties": false, "properties": { "duration_seconds": { "type": "number" }, "illegal_count": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "note_count": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "strip_length_cm": { "type": "number" } }, "required": [ "note_count", "illegal_count", "duration_seconds" ], "type": "object" } }, "required": [ "ok", "issues", "stats" ], "type": "object" } }, "required": [ "song_id", "box", "replaced", "validation" ], "type": "object" } }, { "description": "Saves a melody as a new private song. The melody must have no errors (run validate_melody or fit_melody_to_box first); warnings such as notes repeated too quickly are saved and marked, as in the composer. If the person is signed in, the song goes to their account and you get a link to open it in the composer. Without an account the song is saved anonymously and you get a claim link: give it to the person so they can keep it (valid 30 days). Set save_to_my_account to true to ask the person to sign in first (apps that cannot sign in mid-conversation should save without an account and give the claim link instead). Limits: 5 songs a day without an account, 15 a day with one.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "artist": { "description": "Original artist or composer (\"Traditional\" if unknown).", "maxLength": 100, "minLength": 1, "type": "string" }, "box": { "description": "Music box type: \"15\", \"20\", \"30\" (notes) or \"freestyle\" (digital only). See list_music_boxes.", "enum": [ "15", "20", "30", "freestyle" ], "type": "string" }, "bpm": { "description": "Tempo in beats per minute (30-300).", "maximum": 300, "minimum": 30, "type": "number" }, "description": { "description": "Optional notes about the arrangement.", "maxLength": 1000, "type": "string" }, "illegal_threshold_ticks": { "description": "Minimum gap between two identical notes, in ticks (default 384 = 2 beats).", "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "name": { "description": "Song title.", "maxLength": 100, "minLength": 1, "type": "string" }, "notes": { "description": "Notes in any order, at most 2000. Only onsets matter: music boxes have no note durations.", "items": { "properties": { "beat": { "description": "When the note sounds, in quarter notes from 0 (e.g. 0, 1, 1.5).", "minimum": 0, "type": "number" }, "pitch": { "anyOf": [ { "maxLength": 8, "type": "string" }, { "maximum": 127, "minimum": 0, "type": "integer" } ], "description": "Note name like \"C5\", \"F#4\", \"Bb3\", or a MIDI number (60 = C4)." }, "ticks": { "description": "Alternative to beat: 192 ticks per quarter note.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" } }, "required": [ "pitch" ], "type": "object" }, "maxItems": 2000, "minItems": 1, "type": "array" }, "save_to_my_account": { "description": "True to save it in the person's account; they will be asked to sign in if they are not.", "type": "boolean" }, "tags": { "items": { "maxLength": 30, "minLength": 1, "type": "string" }, "maxItems": 10, "type": "array" } }, "required": [ "name", "artist", "box", "bpm", "notes" ], "type": "object" }, "name": "create_song", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "box": { "type": "string" }, "claim_expires_at": { "type": "string" }, "claim_token": { "type": "string" }, "claim_url": { "type": "string" }, "composer_url": { "type": "string" }, "private": { "type": "boolean" }, "quota": { "additionalProperties": false, "properties": { "limit": { "description": "null means no daily limit", "type": [ "number", "null" ] }, "resets_at": { "type": "string" }, "used": { "type": "number" } }, "required": [ "used", "limit", "resets_at" ], "type": "object" }, "saved_to_account": { "type": "boolean" }, "song_id": { "type": "string" }, "validation": { "additionalProperties": false, "properties": { "issues": { "items": { "additionalProperties": false, "properties": { "code": { "type": "string" }, "index": { "description": "Index of the note in the input, when the issue is about one note.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "message": { "type": "string" }, "severity": { "enum": [ "error", "warning" ], "type": "string" }, "suggestions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "code", "severity", "message" ], "type": "object" }, "type": "array" }, "ok": { "type": "boolean" }, "stats": { "additionalProperties": false, "properties": { "duration_seconds": { "type": "number" }, "illegal_count": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "note_count": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "strip_length_cm": { "type": "number" } }, "required": [ "note_count", "illegal_count", "duration_seconds" ], "type": "object" } }, "required": [ "ok", "issues", "stats" ], "type": "object" } }, "required": [ "song_id", "box", "private", "saved_to_account", "quota", "validation" ], "type": "object" } }, { "description": "Permanently deletes one of the signed-in person's songs (all its box versions), or a song you saved without an account (pass its claim_token). This cannot be undone: tell the person which song will be deleted, ask them to confirm, then call again with confirmed: true.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "claim_token": { "description": "Only for songs saved without an account.", "maxLength": 100, "type": "string" }, "confirmed": { "description": "true only after the person confirmed the deletion.", "type": "boolean" }, "song_id": { "maxLength": 40, "type": "string" } }, "required": [ "song_id" ], "type": "object" }, "name": "delete_song", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "name": { "type": "string" }, "song_id": { "type": "string" }, "status": { "enum": [ "deleted", "needs_confirmation" ], "type": "string" } }, "required": [ "song_id", "name", "status" ], "type": "object" } }, { "description": "Creates a download link for one box version of a song: an MP3, a MIDI file or a printable strip PDF to cut and punch for a hand-crank music box (\"pdf_long\" is one continuous strip, \"pdf_a4\"/\"pdf_letter\" are sliced to fit the page). Works on the person's songs and on public tunes. Requires signing in, like exporting in the composer.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "box": { "description": "Which version. Defaults to the preferred one.", "enum": [ "15", "20", "30", "freestyle" ], "type": "string" }, "format": { "enum": [ "mp3", "midi", "pdf_long", "pdf_a4", "pdf_letter" ], "type": "string" }, "grid": { "description": "Grid printed on the strip (PDF only). Default standard.", "enum": [ "standard", "note_lines", "tempo_lines", "empty" ], "type": "string" }, "show_title": { "description": "Print the song title on the strip (PDF only). Default true.", "type": "boolean" }, "song_id": { "maxLength": 40, "type": "string" }, "strip_shape": { "description": "Shape of the strip ends (PDF only). Default capped.", "enum": [ "capped", "straight", "pointy", "round" ], "type": "string" } }, "required": [ "song_id", "format" ], "type": "object" }, "name": "export_song", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "box": { "type": "string" }, "download_url": { "type": "string" }, "format": { "type": "string" }, "song_id": { "type": "string" } }, "required": [ "song_id", "box", "format", "download_url" ], "type": "object" } }, { "description": "Adjusts a melody so it can be played on a music box and lists every change. Strategies: \"transpose\" (shift the whole melody to the key that fits best), \"nearest_note\" (move each unplayable note to the closest playable one), \"transpose_then_nearest\" (default: both). Optionally snaps notes to a grid. Returns the new melody and its validation.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "box": { "description": "Music box type: \"15\", \"20\", \"30\" (notes) or \"freestyle\" (digital only). See list_music_boxes.", "enum": [ "15", "20", "30", "freestyle" ], "type": "string" }, "bpm": { "description": "Tempo in beats per minute (30-300).", "maximum": 300, "minimum": 30, "type": "number" }, "illegal_threshold_ticks": { "description": "Minimum gap between two identical notes, in ticks (default 384 = 2 beats).", "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "notes": { "description": "Notes in any order, at most 2000. Only onsets matter: music boxes have no note durations.", "items": { "properties": { "beat": { "description": "When the note sounds, in quarter notes from 0 (e.g. 0, 1, 1.5).", "minimum": 0, "type": "number" }, "pitch": { "anyOf": [ { "maxLength": 8, "type": "string" }, { "maximum": 127, "minimum": 0, "type": "integer" } ], "description": "Note name like \"C5\", \"F#4\", \"Bb3\", or a MIDI number (60 = C4)." }, "ticks": { "description": "Alternative to beat: 192 ticks per quarter note.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" } }, "required": [ "pitch" ], "type": "object" }, "maxItems": 2000, "minItems": 1, "type": "array" }, "quantize_beats": { "description": "Snap every note to this grid in beats (e.g. 0.5 = eighth notes).", "exclusiveMinimum": 0, "type": "number" }, "strategy": { "enum": [ "transpose", "nearest_note", "transpose_then_nearest" ], "type": "string" }, "target_box": { "description": "Box to fit into. Defaults to the melody's box.", "enum": [ "15", "20", "30", "freestyle" ], "type": "string" } }, "required": [ "box", "bpm", "notes" ], "type": "object" }, "name": "fit_melody_to_box", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "changes": { "items": { "additionalProperties": false, "properties": { "from": { "type": "string" }, "index": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "kind": { "type": "string" }, "to": { "type": "string" } }, "required": [ "index", "kind", "from", "to" ], "type": "object" }, "type": "array" }, "composer_link": { "description": "Opens the composer with the fitted melody loaded, without saving.", "type": "string" }, "melody": { "additionalProperties": false, "properties": { "box": { "type": "string" }, "bpm": { "type": "number" }, "notes": { "items": { "additionalProperties": false, "properties": { "beat": { "type": "number" }, "pitch": { "type": [ "string", "number" ] }, "ticks": { "type": "number" } }, "required": [ "pitch" ], "type": "object" }, "type": "array" } }, "required": [ "box", "bpm", "notes" ], "type": "object" }, "semitones": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "summary": { "type": "string" }, "validation": { "additionalProperties": false, "properties": { "issues": { "items": { "additionalProperties": false, "properties": { "code": { "type": "string" }, "index": { "description": "Index of the note in the input, when the issue is about one note.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "message": { "type": "string" }, "severity": { "enum": [ "error", "warning" ], "type": "string" }, "suggestions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "code", "severity", "message" ], "type": "object" }, "type": "array" }, "ok": { "type": "boolean" }, "stats": { "additionalProperties": false, "properties": { "duration_seconds": { "type": "number" }, "illegal_count": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "note_count": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "strip_length_cm": { "type": "number" } }, "required": [ "note_count", "illegal_count", "duration_seconds" ], "type": "object" } }, "required": [ "ok", "issues", "stats" ], "type": "object" } }, "required": [ "summary", "semitones", "changes", "melody", "validation" ], "type": "object" } }, { "description": "Shows the signed-in person's orders (newest first) or one order: its status, items, price and, once delivered, the links to the finished files. Requires signing in.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "order_id": { "description": "Omit to list recent orders.", "maxLength": 40, "type": "string" } }, "type": "object" }, "name": "get_order_status", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "orders": { "items": { "additionalProperties": false, "properties": { "finished": { "type": "string" }, "items": { "items": { "additionalProperties": false, "properties": { "deliverable": { "type": "string" }, "price_usd": { "type": "number" }, "product": { "type": "string" }, "song_artist": { "type": "string" }, "song_name": { "type": "string" } }, "required": [ "product", "song_name", "song_artist", "price_usd" ], "type": "object" }, "type": "array" }, "order_id": { "type": "string" }, "placed": { "type": "string" }, "status": { "type": "string" }, "status_description": { "type": "string" }, "total_usd": { "type": "number" } }, "required": [ "order_id", "status", "status_description", "placed", "total_usd", "items" ], "type": "object" }, "type": "array" } }, "required": [ "orders" ], "type": "object" } }, { "description": "Lists the variations (with prices in US dollars) and the details needed to order a custom music box melody or a custom strip design. Call it before prepare_order.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "product": { "description": "\"custom_melody\" (a song arranged in music box style, delivered as audio) or \"custom_strip_design\" (printable strips for a 15 or 30-note hand-crank box).", "enum": [ "custom_melody", "custom_strip_design" ], "type": "string" } }, "required": [ "product" ], "type": "object" }, "name": "get_product_options", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "fields": { "items": { "additionalProperties": false, "properties": { "allowed_values": { "items": { "type": [ "string", "number", "boolean" ] }, "type": "array" }, "description": { "type": "string" }, "name": { "type": "string" }, "required": { "type": "boolean" } }, "required": [ "name", "required", "description" ], "type": "object" }, "type": "array" }, "name": { "type": "string" }, "product": { "type": "string" }, "variations": { "items": { "additionalProperties": false, "properties": { "description": { "type": "string" }, "name": { "type": "string" }, "price_usd": { "type": "number" }, "variation_id": { "type": "string" } }, "required": [ "variation_id", "name", "price_usd" ], "type": "object" }, "type": "array" } }, "required": [ "product", "name", "variations", "fields" ], "type": "object" } }, { "description": "Gets a music box tune with its notes in the melody format (the same one validate_melody accepts), for one box version. Works for public tunes, for the signed-in person's own songs, and for a song this agent saved anonymously (pass its claim_token). Use search_songs or list_my_songs to find song ids.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "box": { "description": "Which version to return. Defaults to the version the arranger marked as preferred.", "enum": [ "15", "20", "30", "freestyle" ], "type": "string" }, "claim_token": { "description": "Only for songs saved without an account: the claim_token create_song returned.", "maxLength": 100, "type": "string" }, "song_id": { "description": "Song id from search_songs, list_my_songs or create_song.", "maxLength": 40, "type": "string" } }, "required": [ "song_id" ], "type": "object" }, "name": "get_song", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "arranged_by": { "type": "string" }, "artist": { "type": "string" }, "available_boxes": { "items": { "type": "string" }, "type": "array" }, "composer_url": { "type": "string" }, "description": { "type": "string" }, "melody": { "additionalProperties": false, "properties": { "box": { "type": "string" }, "bpm": { "type": "number" }, "notes": { "items": { "additionalProperties": false, "properties": { "beat": { "type": "number" }, "pitch": { "type": [ "string", "number" ] }, "ticks": { "type": "number" } }, "required": [ "pitch" ], "type": "object" }, "type": "array" } }, "required": [ "box", "bpm", "notes" ], "type": "object" }, "name": { "type": "string" }, "private": { "type": "boolean" }, "song_id": { "type": "string" }, "stats": { "additionalProperties": false, "properties": { "duration_seconds": { "type": "number" }, "illegal_count": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "note_count": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "strip_length_cm": { "type": "number" } }, "required": [ "note_count", "illegal_count", "duration_seconds" ], "type": "object" }, "tags": { "items": { "type": "string" }, "type": "array" }, "url": { "type": "string" } }, "required": [ "song_id", "name", "artist", "arranged_by", "private", "tags", "url", "available_boxes", "melody", "stats" ], "type": "object" } }, { "description": "Converts a MIDI file (base64, up to 512 KB) into the melody format and validates it for a box, so you can fit, edit and save it. Drums are ignored. Saves nothing.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "box": { "description": "Box to validate against. Default \"30\".", "enum": [ "15", "20", "30", "freestyle" ], "type": "string" }, "midi_base64": { "description": "The .mid file, base64-encoded.", "maxLength": 699056, "minLength": 8, "type": "string" } }, "required": [ "midi_base64" ], "type": "object" }, "name": "import_midi", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "melody": { "additionalProperties": false, "properties": { "box": { "type": "string" }, "bpm": { "type": "number" }, "notes": { "items": { "additionalProperties": false, "properties": { "beat": { "type": "number" }, "pitch": { "type": [ "string", "number" ] }, "ticks": { "type": "number" } }, "required": [ "pitch" ], "type": "object" }, "type": "array" } }, "required": [ "box", "bpm", "notes" ], "type": "object" }, "name": { "type": "string" }, "notes_in_file": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "skipped_percussion_tracks": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "validation": { "additionalProperties": false, "properties": { "issues": { "items": { "additionalProperties": false, "properties": { "code": { "type": "string" }, "index": { "description": "Index of the note in the input, when the issue is about one note.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "message": { "type": "string" }, "severity": { "enum": [ "error", "warning" ], "type": "string" }, "suggestions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "code", "severity", "message" ], "type": "object" }, "type": "array" }, "ok": { "type": "boolean" }, "stats": { "additionalProperties": false, "properties": { "duration_seconds": { "type": "number" }, "illegal_count": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "note_count": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "strip_length_cm": { "type": "number" } }, "required": [ "note_count", "illegal_count", "duration_seconds" ], "type": "object" } }, "required": [ "ok", "issues", "stats" ], "type": "object" } }, "required": [ "name", "notes_in_file", "skipped_percussion_tracks", "melody", "validation" ], "type": "object" } }, { "description": "Lists the music box types a melody can be written for, with their exact playable notes and rules. Call this before composing or validating a melody.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object" }, "name": "list_music_boxes", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "boxes": { "items": { "additionalProperties": false, "properties": { "box": { "type": "string" }, "description": { "type": "string" }, "has_sharps": { "type": "boolean" }, "highest": { "type": "string" }, "lowest": { "type": "string" }, "name": { "type": "string" }, "playable_notes": { "items": { "type": "string" }, "type": "array" }, "printable_strip": { "type": "boolean" }, "repeated_note_rule": { "type": "boolean" } }, "required": [ "box", "name", "description", "playable_notes", "lowest", "highest", "has_sharps", "repeated_note_rule", "printable_strip" ], "type": "object" }, "type": "array" }, "default_min_repeat_beats": { "type": "number" }, "ticks_per_beat": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "required": [ "ticks_per_beat", "default_min_repeat_beats", "boxes" ], "type": "object" } }, { "description": "Lists the signed-in person's songs on Musicboxmelodies, newest first, including private ones. Requires signing in.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "page": { "maximum": 500, "minimum": 1, "type": "integer" }, "page_size": { "description": "Default 20.", "maximum": 50, "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "list_my_songs", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "page": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "pages": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "songs": { "items": { "additionalProperties": false, "properties": { "artist": { "type": "string" }, "boxes": { "items": { "type": "string" }, "type": "array" }, "composer_url": { "type": "string" }, "created": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean" }, "song_id": { "type": "string" }, "url": { "type": "string" } }, "required": [ "song_id", "name", "artist", "private", "boxes", "created", "url", "composer_url" ], "type": "object" }, "type": "array" }, "total": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "required": [ "page", "pages", "total", "songs" ], "type": "object" } }, { "description": "Lists what Musicboxmelodies sells, with current prices in US dollars and delivery times: custom music box melodies, custom printable strip designs and PRO composer accounts. Orders are placed and paid by the person on the website.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object" }, "name": "list_products", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "currency": { "type": "string" }, "products": { "items": { "additionalProperties": false, "properties": { "delivery": { "type": "string" }, "name": { "type": "string" }, "notes": { "type": "string" }, "product": { "type": "string" }, "url": { "type": "string" }, "variations": { "items": { "additionalProperties": false, "properties": { "name": { "type": "string" }, "price_usd": { "type": "number" } }, "required": [ "name", "price_usd" ], "type": "object" }, "type": "array" }, "what_you_get": { "type": "string" } }, "required": [ "product", "name", "url", "what_you_get", "delivery", "notes", "variations" ], "type": "object" }, "type": "array" } }, "required": [ "currency", "products" ], "type": "object" } }, { "description": "Prepares a custom melody or strip design order with all its details and returns a link to the Musicboxmelodies cart, where the person reviews it, adds photos if needed, applies discount codes and pays with PayPal. Nothing is charged here. The link works for 7 days. Confirm the song, the variation and the price with the person before calling it. The price is calculated by the site.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "existing_tune": { "description": "Strip designs only: the song is already on our YouTube channel (25% off).", "type": "boolean" }, "note_count": { "anyOf": [ { "const": 15, "type": "number" }, { "const": 30, "type": "number" } ], "description": "Strip designs only: notes of the person's music box." }, "product": { "description": "\"custom_melody\" (a song arranged in music box style, delivered as audio) or \"custom_strip_design\" (printable strips for a 15 or 30-note hand-crank box).", "enum": [ "custom_melody", "custom_strip_design" ], "type": "string" }, "reference_link": { "description": "YouTube or other link to the version the person wants.", "maxLength": 500, "type": "string" }, "song_artist": { "maxLength": 150, "minLength": 1, "type": "string" }, "song_name": { "maxLength": 150, "minLength": 1, "type": "string" }, "theme": { "description": "Strip designs only.", "enum": [ "artist_pictures", "own_pictures" ], "type": "string" }, "time": { "description": "Part of the song to convert, e.g. \"0:00 - 1:30\" or \"whole song\".", "maxLength": 200, "minLength": 1, "type": "string" }, "variation_id": { "description": "From get_product_options.", "maxLength": 20, "type": "string" } }, "required": [ "product", "variation_id", "song_name", "song_artist", "time" ], "type": "object" }, "name": "prepare_order", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "cart_url": { "type": "string" }, "expires_at": { "type": "string" }, "price_usd": { "type": "number" }, "summary": { "type": "string" } }, "required": [ "cart_url", "summary", "price_usd", "expires_at" ], "type": "object" } }, { "description": "Creates an MP3 of a melody (before or without saving it) or of a saved song, so you and the person can hear it. Pass either song_id or a melody (box, bpm, notes). Sounds: \"synth\" (free, the site's default sound) or \"music_box\" (real music box recordings for the box; PRO accounts only). Saved songs use the sound their author chose unless you pass one. Up to 5 minutes; 20 new audios a day without an account and 60 with one (the same melody again is free).", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "box": { "description": "With song_id: which version. Otherwise the melody's box.", "enum": [ "15", "20", "30", "freestyle" ], "type": "string" }, "bpm": { "description": "Melody tempo (required without song_id).", "maximum": 300, "minimum": 30, "type": "number" }, "claim_token": { "maxLength": 100, "type": "string" }, "illegal_threshold_ticks": { "description": "Minimum gap between two identical notes, in ticks (default 384 = 2 beats).", "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "notes": { "description": "Melody notes (required without song_id).", "items": { "properties": { "beat": { "description": "When the note sounds, in quarter notes from 0 (e.g. 0, 1, 1.5).", "minimum": 0, "type": "number" }, "pitch": { "anyOf": [ { "maxLength": 8, "type": "string" }, { "maximum": 127, "minimum": 0, "type": "integer" } ], "description": "Note name like \"C5\", \"F#4\", \"Bb3\", or a MIDI number (60 = C4)." }, "ticks": { "description": "Alternative to beat: 192 ticks per quarter note.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" } }, "required": [ "pitch" ], "type": "object" }, "maxItems": 2000, "minItems": 1, "type": "array" }, "song_id": { "description": "A saved song (public, the person's own, or one you saved without an account with its claim_token).", "maxLength": 40, "type": "string" }, "sound": { "enum": [ "synth", "music_box" ], "type": "string" } }, "type": "object" }, "name": "render_audio", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "audio_url": { "type": "string" }, "duration_seconds": { "type": "number" }, "note": { "type": "string" }, "sound": { "type": "string" } }, "required": [ "audio_url", "duration_seconds", "sound" ], "type": "object" } }, { "description": "Searches the public catalog of music box tunes made by the Musicboxmelodies community. Search by song name, artist or arranger; optionally only tunes that have a version for one box type. Returns at most 20 per page.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "box": { "description": "Only tunes with a version for this box.", "enum": [ "15", "20", "30", "freestyle" ], "type": "string" }, "page": { "description": "Page number, starting at 1.", "maximum": 500, "minimum": 1, "type": "integer" }, "page_size": { "description": "Results per page, 1-20 (default 10).", "maximum": 20, "minimum": 1, "type": "integer" }, "query": { "description": "Words to search in the song name, artist or arranger. Omit to list tunes.", "maxLength": 100, "type": "string" } }, "type": "object" }, "name": "search_songs", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "page": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "pages": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "songs": { "items": { "additionalProperties": false, "properties": { "arranged_by": { "type": "string" }, "artist": { "type": "string" }, "boxes": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "song_id": { "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" }, "url": { "type": "string" } }, "required": [ "song_id", "name", "artist", "arranged_by", "boxes", "tags", "url" ], "type": "object" }, "type": "array" }, "total": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "required": [ "page", "pages", "total", "songs" ], "type": "object" } }, { "description": "Makes one of the signed-in person's songs public (anyone can find and play it on musicboxmelodies.com) or private. Only make a song public when the person asked for it: ask them to confirm, then call again with confirmed: true.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "confirmed": { "description": "Required to make a song public: true only after the person confirmed.", "type": "boolean" }, "song_id": { "maxLength": 40, "type": "string" }, "visibility": { "enum": [ "public", "private" ], "type": "string" } }, "required": [ "song_id", "visibility" ], "type": "object" }, "name": "set_song_visibility", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "song_id": { "type": "string" }, "status": { "enum": [ "updated", "needs_confirmation" ], "type": "string" }, "url": { "type": "string" }, "visibility": { "type": "string" } }, "required": [ "song_id", "visibility", "status", "url" ], "type": "object" } }, { "description": "Checks whether a melody can be played on a music box: notes outside the box, same note repeated too fast, off-grid notes, tempo and length. Every issue names the note and how to fix it. Saves nothing. Call it before offering a melody to the person.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "box": { "description": "Music box type: \"15\", \"20\", \"30\" (notes) or \"freestyle\" (digital only). See list_music_boxes.", "enum": [ "15", "20", "30", "freestyle" ], "type": "string" }, "bpm": { "description": "Tempo in beats per minute (30-300).", "maximum": 300, "minimum": 30, "type": "number" }, "illegal_threshold_ticks": { "description": "Minimum gap between two identical notes, in ticks (default 384 = 2 beats).", "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "notes": { "description": "Notes in any order, at most 2000. Only onsets matter: music boxes have no note durations.", "items": { "properties": { "beat": { "description": "When the note sounds, in quarter notes from 0 (e.g. 0, 1, 1.5).", "minimum": 0, "type": "number" }, "pitch": { "anyOf": [ { "maxLength": 8, "type": "string" }, { "maximum": 127, "minimum": 0, "type": "integer" } ], "description": "Note name like \"C5\", \"F#4\", \"Bb3\", or a MIDI number (60 = C4)." }, "ticks": { "description": "Alternative to beat: 192 ticks per quarter note.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" } }, "required": [ "pitch" ], "type": "object" }, "maxItems": 2000, "minItems": 1, "type": "array" }, "snap_beats": { "description": "Optional grid in beats (e.g. 0.5) to warn about notes off that grid.", "exclusiveMinimum": 0, "type": "number" } }, "required": [ "box", "bpm", "notes" ], "type": "object" }, "name": "validate_melody", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "composer_link": { "description": "Opens the composer with the playable notes loaded, without saving. Give it to the person to listen and edit.", "type": "string" }, "issues": { "items": { "additionalProperties": false, "properties": { "code": { "type": "string" }, "index": { "description": "Index of the note in the input, when the issue is about one note.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "message": { "type": "string" }, "severity": { "enum": [ "error", "warning" ], "type": "string" }, "suggestions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "code", "severity", "message" ], "type": "object" }, "type": "array" }, "ok": { "type": "boolean" }, "stats": { "additionalProperties": false, "properties": { "duration_seconds": { "type": "number" }, "illegal_count": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "note_count": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "strip_length_cm": { "type": "number" } }, "required": [ "note_count", "illegal_count", "duration_seconds" ], "type": "object" } }, "required": [ "ok", "issues", "stats" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:fbf61cd17beabaa7434e7fa640acc902f011dc62d82dab208d6c9e749c56b1cc | sha256sum