此 MCP 可以做什么
Searches, validates, adapts, saves, and exports melodies for 15-, 20-, and 30-note music boxes.
工具
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['song_id', 'box', 'bpm', 'notes'], 'properties': {'box': {'enum': ['15', '20', '30', 'freestyle'], 'type': 'string', 'description': 'Music box type: "15", "20", "30" (notes) or "freestyle" (digital only). See list_music_boxes.'}, 'bpm': {'type': 'number', 'maximum': 300, 'minimum': 30, 'description': 'Tempo in beats per minute (30-300).'}, 'notes': {'type': 'array', 'items': {'type': 'object', 'required': ['pitch'], 'properties': {'beat': {'type': 'number', 'minimum': 0, 'description': 'When the note sounds, in quarter notes from 0 (e.g. 0, 1, 1.5).'}, 'pitch': {'anyOf': [{'type': 'string', 'maxLength': 8}, {'type': 'integer', 'maximum': 127, 'minimum': 0}], 'description': 'Note name like "C5", "F#4", "Bb3", or a MIDI number (60 = C4).'}, 'ticks': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Alternative to beat: 192 ticks per quarter note.'}}}, 'maxItems': 2000, 'minItems': 1, 'description': 'Notes in any order, at most 2000. Only onsets matter: music boxes have no note durations.'}, 'song_id': {'type': 'string', 'maxLength': 40}, 'claim_token': {'type': 'string', 'maxLength': 100, 'description': 'Only for songs saved without an account.'}, 'illegal_threshold_ticks': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Minimum gap between two identical notes, in ticks (default 384 = 2 beats).'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['song_id', 'box', 'replaced', 'validation'], 'properties': {'box': {'type': 'string'}, 'song_id': {'type': 'string'}, 'replaced': {'type': 'boolean'}, 'validation': {'type': 'object', 'required': ['ok', 'issues', 'stats'], 'properties': {'ok': {'type': 'boolean'}, 'stats': {'type': 'object', 'required': ['note_count', 'illegal_count', 'duration_seconds'], 'properties': {'note_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'illegal_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'strip_length_cm': {'type': 'number'}, 'duration_seconds': {'type': 'number'}}, 'additionalProperties': False}, 'issues': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'severity', 'message'], 'properties': {'code': {'type': 'string'}, 'index': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Index of the note in the input, when the issue is about one note.'}, 'message': {'type': 'string'}, 'severity': {'enum': ['error', 'warning'], 'type': 'string'}, 'suggestions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'composer_url': {'type': 'string'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name', 'artist', 'box', 'bpm', 'notes'], 'properties': {'box': {'enum': ['15', '20', '30', 'freestyle'], 'type': 'string', 'description': 'Music box type: "15", "20", "30" (notes) or "freestyle" (digital only). See list_music_boxes.'}, 'bpm': {'type': 'number', 'maximum': 300, 'minimum': 30, 'description': 'Tempo in beats per minute (30-300).'}, 'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Song title.'}, 'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 30, 'minLength': 1}, 'maxItems': 10}, 'notes': {'type': 'array', 'items': {'type': 'object', 'required': ['pitch'], 'properties': {'beat': {'type': 'number', 'minimum': 0, 'description': 'When the note sounds, in quarter notes from 0 (e.g. 0, 1, 1.5).'}, 'pitch': {'anyOf': [{'type': 'string', 'maxLength': 8}, {'type': 'integer', 'maximum': 127, 'minimum': 0}], 'description': 'Note name like "C5", "F#4", "Bb3", or a MIDI number (60 = C4).'}, 'ticks': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Alternative to beat: 192 ticks per quarter note.'}}}, 'maxItems': 2000, 'minItems': 1, 'description': 'Notes in any order, at most 2000. Only onsets matter: music boxes have no note durations.'}, 'artist': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Original artist or composer ("Traditional" if unknown).'}, 'description': {'type': 'string', 'maxLength': 1000, 'description': 'Optional notes about the arrangement.'}, 'save_to_my_account': {'type': 'boolean', 'description': "True to save it in the person's account; they will be asked to sign in if they are not."}, 'illegal_threshold_ticks': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Minimum gap between two identical notes, in ticks (default 384 = 2 beats).'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['song_id', 'box', 'private', 'saved_to_account', 'quota', 'validation'], 'properties': {'box': {'type': 'string'}, 'quota': {'type': 'object', 'required': ['used', 'limit', 'resets_at'], 'properties': {'used': {'type': 'number'}, 'limit': {'type': ['number', 'null'], 'description': 'null means no daily limit'}, 'resets_at': {'type': 'string'}}, 'additionalProperties': False}, 'private': {'type': 'boolean'}, 'song_id': {'type': 'string'}, 'claim_url': {'type': 'string'}, 'validation': {'type': 'object', 'required': ['ok', 'issues', 'stats'], 'properties': {'ok': {'type': 'boolean'}, 'stats': {'type': 'object', 'required': ['note_count', 'illegal_count', 'duration_seconds'], 'properties': {'note_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'illegal_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'strip_length_cm': {'type': 'number'}, 'duration_seconds': {'type': 'number'}}, 'additionalProperties': False}, 'issues': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'severity', 'message'], 'properties': {'code': {'type': 'string'}, 'index': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Index of the note in the input, when the issue is about one note.'}, 'message': {'type': 'string'}, 'severity': {'enum': ['error', 'warning'], 'type': 'string'}, 'suggestions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'claim_token': {'type': 'string'}, 'composer_url': {'type': 'string'}, 'claim_expires_at': {'type': 'string'}, 'saved_to_account': {'type': 'boolean'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['song_id'], 'properties': {'song_id': {'type': 'string', 'maxLength': 40}, 'confirmed': {'type': 'boolean', 'description': 'true only after the person confirmed the deletion.'}, 'claim_token': {'type': 'string', 'maxLength': 100, 'description': 'Only for songs saved without an account.'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['song_id', 'name', 'status'], 'properties': {'name': {'type': 'string'}, 'status': {'enum': ['deleted', 'needs_confirmation'], 'type': 'string'}, 'song_id': {'type': 'string'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['song_id', 'format'], 'properties': {'box': {'enum': ['15', '20', '30', 'freestyle'], 'type': 'string', 'description': 'Which version. Defaults to the preferred one.'}, 'grid': {'enum': ['standard', 'note_lines', 'tempo_lines', 'empty'], 'type': 'string', 'description': 'Grid printed on the strip (PDF only). Default standard.'}, 'format': {'enum': ['mp3', 'midi', 'pdf_long', 'pdf_a4', 'pdf_letter'], 'type': 'string'}, 'song_id': {'type': 'string', 'maxLength': 40}, 'show_title': {'type': 'boolean', 'description': 'Print the song title on the strip (PDF only). Default true.'}, 'strip_shape': {'enum': ['capped', 'straight', 'pointy', 'round'], 'type': 'string', 'description': 'Shape of the strip ends (PDF only). Default capped.'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['song_id', 'box', 'format', 'download_url'], 'properties': {'box': {'type': 'string'}, 'format': {'type': 'string'}, 'song_id': {'type': 'string'}, 'download_url': {'type': 'string'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['box', 'bpm', 'notes'], 'properties': {'box': {'enum': ['15', '20', '30', 'freestyle'], 'type': 'string', 'description': 'Music box type: "15", "20", "30" (notes) or "freestyle" (digital only). See list_music_boxes.'}, 'bpm': {'type': 'number', 'maximum': 300, 'minimum': 30, 'description': 'Tempo in beats per minute (30-300).'}, 'notes': {'type': 'array', 'items': {'type': 'object', 'required': ['pitch'], 'properties': {'beat': {'type': 'number', 'minimum': 0, 'description': 'When the note sounds, in quarter notes from 0 (e.g. 0, 1, 1.5).'}, 'pitch': {'anyOf': [{'type': 'string', 'maxLength': 8}, {'type': 'integer', 'maximum': 127, 'minimum': 0}], 'description': 'Note name like "C5", "F#4", "Bb3", or a MIDI number (60 = C4).'}, 'ticks': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Alternative to beat: 192 ticks per quarter note.'}}}, 'maxItems': 2000, 'minItems': 1, 'description': 'Notes in any order, at most 2000. Only onsets matter: music boxes have no note durations.'}, 'strategy': {'enum': ['transpose', 'nearest_note', 'transpose_then_nearest'], 'type': 'string'}, 'target_box': {'enum': ['15', '20', '30', 'freestyle'], 'type': 'string', 'description': "Box to fit into. Defaults to the melody's box."}, 'quantize_beats': {'type': 'number', 'description': 'Snap every note to this grid in beats (e.g. 0.5 = eighth notes).', 'exclusiveMinimum': 0}, 'illegal_threshold_ticks': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Minimum gap between two identical notes, in ticks (default 384 = 2 beats).'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['summary', 'semitones', 'changes', 'melody', 'validation'], 'properties': {'melody': {'type': 'object', 'required': ['box', 'bpm', 'notes'], 'properties': {'box': {'type': 'string'}, 'bpm': {'type': 'number'}, 'notes': {'type': 'array', 'items': {'type': 'object', 'required': ['pitch'], 'properties': {'beat': {'type': 'number'}, 'pitch': {'type': ['string', 'number']}, 'ticks': {'type': 'number'}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'changes': {'type': 'array', 'items': {'type': 'object', 'required': ['index', 'kind', 'from', 'to'], 'properties': {'to': {'type': 'string'}, 'from': {'type': 'string'}, 'kind': {'type': 'string'}, 'index': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}}, 'summary': {'type': 'string'}, 'semitones': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'validation': {'type': 'object', 'required': ['ok', 'issues', 'stats'], 'properties': {'ok': {'type': 'boolean'}, 'stats': {'type': 'object', 'required': ['note_count', 'illegal_count', 'duration_seconds'], 'properties': {'note_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'illegal_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'strip_length_cm': {'type': 'number'}, 'duration_seconds': {'type': 'number'}}, 'additionalProperties': False}, 'issues': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'severity', 'message'], 'properties': {'code': {'type': 'string'}, 'index': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Index of the note in the input, when the issue is about one note.'}, 'message': {'type': 'string'}, 'severity': {'enum': ['error', 'warning'], 'type': 'string'}, 'suggestions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'composer_link': {'type': 'string', 'description': 'Opens the composer with the fitted melody loaded, without saving.'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'order_id': {'type': 'string', 'maxLength': 40, 'description': 'Omit to list recent orders.'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['orders'], 'properties': {'orders': {'type': 'array', 'items': {'type': 'object', 'required': ['order_id', 'status', 'status_description', 'placed', 'total_usd', 'items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['product', 'song_name', 'song_artist', 'price_usd'], 'properties': {'product': {'type': 'string'}, 'price_usd': {'type': 'number'}, 'song_name': {'type': 'string'}, 'deliverable': {'type': 'string'}, 'song_artist': {'type': 'string'}}, 'additionalProperties': False}}, 'placed': {'type': 'string'}, 'status': {'type': 'string'}, 'finished': {'type': 'string'}, 'order_id': {'type': 'string'}, 'total_usd': {'type': 'number'}, 'status_description': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['product'], 'properties': {'product': {'enum': ['custom_melody', 'custom_strip_design'], 'type': 'string', '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).'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['product', 'name', 'variations', 'fields'], 'properties': {'name': {'type': 'string'}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'required', 'description'], 'properties': {'name': {'type': 'string'}, 'required': {'type': 'boolean'}, 'description': {'type': 'string'}, 'allowed_values': {'type': 'array', 'items': {'type': ['string', 'number', 'boolean']}}}, 'additionalProperties': False}}, 'product': {'type': 'string'}, 'variations': {'type': 'array', 'items': {'type': 'object', 'required': ['variation_id', 'name', 'price_usd'], 'properties': {'name': {'type': 'string'}, 'price_usd': {'type': 'number'}, 'description': {'type': 'string'}, 'variation_id': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['song_id'], 'properties': {'box': {'enum': ['15', '20', '30', 'freestyle'], 'type': 'string', 'description': 'Which version to return. Defaults to the version the arranger marked as preferred.'}, 'song_id': {'type': 'string', 'maxLength': 40, 'description': 'Song id from search_songs, list_my_songs or create_song.'}, 'claim_token': {'type': 'string', 'maxLength': 100, 'description': 'Only for songs saved without an account: the claim_token create_song returned.'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['song_id', 'name', 'artist', 'arranged_by', 'private', 'tags', 'url', 'available_boxes', 'melody', 'stats'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'stats': {'type': 'object', 'required': ['note_count', 'illegal_count', 'duration_seconds'], 'properties': {'note_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'illegal_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'strip_length_cm': {'type': 'number'}, 'duration_seconds': {'type': 'number'}}, 'additionalProperties': False}, 'artist': {'type': 'string'}, 'melody': {'type': 'object', 'required': ['box', 'bpm', 'notes'], 'properties': {'box': {'type': 'string'}, 'bpm': {'type': 'number'}, 'notes': {'type': 'array', 'items': {'type': 'object', 'required': ['pitch'], 'properties': {'beat': {'type': 'number'}, 'pitch': {'type': ['string', 'number']}, 'ticks': {'type': 'number'}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'private': {'type': 'boolean'}, 'song_id': {'type': 'string'}, 'arranged_by': {'type': 'string'}, 'description': {'type': 'string'}, 'composer_url': {'type': 'string'}, 'available_boxes': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['midi_base64'], 'properties': {'box': {'enum': ['15', '20', '30', 'freestyle'], 'type': 'string', 'description': 'Box to validate against. Default "30".'}, 'midi_base64': {'type': 'string', 'maxLength': 699056, 'minLength': 8, 'description': 'The .mid file, base64-encoded.'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name', 'notes_in_file', 'skipped_percussion_tracks', 'melody', 'validation'], 'properties': {'name': {'type': 'string'}, 'melody': {'type': 'object', 'required': ['box', 'bpm', 'notes'], 'properties': {'box': {'type': 'string'}, 'bpm': {'type': 'number'}, 'notes': {'type': 'array', 'items': {'type': 'object', 'required': ['pitch'], 'properties': {'beat': {'type': 'number'}, 'pitch': {'type': ['string', 'number']}, 'ticks': {'type': 'number'}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'validation': {'type': 'object', 'required': ['ok', 'issues', 'stats'], 'properties': {'ok': {'type': 'boolean'}, 'stats': {'type': 'object', 'required': ['note_count', 'illegal_count', 'duration_seconds'], 'properties': {'note_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'illegal_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'strip_length_cm': {'type': 'number'}, 'duration_seconds': {'type': 'number'}}, 'additionalProperties': False}, 'issues': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'severity', 'message'], 'properties': {'code': {'type': 'string'}, 'index': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Index of the note in the input, when the issue is about one note.'}, 'message': {'type': 'string'}, 'severity': {'enum': ['error', 'warning'], 'type': 'string'}, 'suggestions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'notes_in_file': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'skipped_percussion_tracks': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['ticks_per_beat', 'default_min_repeat_beats', 'boxes'], 'properties': {'boxes': {'type': 'array', 'items': {'type': 'object', 'required': ['box', 'name', 'description', 'playable_notes', 'lowest', 'highest', 'has_sharps', 'repeated_note_rule', 'printable_strip'], 'properties': {'box': {'type': 'string'}, 'name': {'type': 'string'}, 'lowest': {'type': 'string'}, 'highest': {'type': 'string'}, 'has_sharps': {'type': 'boolean'}, 'description': {'type': 'string'}, 'playable_notes': {'type': 'array', 'items': {'type': 'string'}}, 'printable_strip': {'type': 'boolean'}, 'repeated_note_rule': {'type': 'boolean'}}, 'additionalProperties': False}}, 'ticks_per_beat': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'default_min_repeat_beats': {'type': 'number'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 500, 'minimum': 1}, 'page_size': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Default 20.'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['page', 'pages', 'total', 'songs'], 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'pages': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'songs': {'type': 'array', 'items': {'type': 'object', 'required': ['song_id', 'name', 'artist', 'private', 'boxes', 'created', 'url', 'composer_url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'boxes': {'type': 'array', 'items': {'type': 'string'}}, 'artist': {'type': 'string'}, 'created': {'type': 'string'}, 'private': {'type': 'boolean'}, 'song_id': {'type': 'string'}, 'composer_url': {'type': 'string'}}, 'additionalProperties': False}}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['currency', 'products'], 'properties': {'currency': {'type': 'string'}, 'products': {'type': 'array', 'items': {'type': 'object', 'required': ['product', 'name', 'url', 'what_you_get', 'delivery', 'notes', 'variations'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'notes': {'type': 'string'}, 'product': {'type': 'string'}, 'delivery': {'type': 'string'}, 'variations': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'price_usd'], 'properties': {'name': {'type': 'string'}, 'price_usd': {'type': 'number'}}, 'additionalProperties': False}}, 'what_you_get': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['product', 'variation_id', 'song_name', 'song_artist', 'time'], 'properties': {'time': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Part of the song to convert, e.g. "0:00 - 1:30" or "whole song".'}, 'theme': {'enum': ['artist_pictures', 'own_pictures'], 'type': 'string', 'description': 'Strip designs only.'}, 'product': {'enum': ['custom_melody', 'custom_strip_design'], 'type': 'string', '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).'}, 'song_name': {'type': 'string', 'maxLength': 150, 'minLength': 1}, 'note_count': {'anyOf': [{'type': 'number', 'const': 15}, {'type': 'number', 'const': 30}], 'description': "Strip designs only: notes of the person's music box."}, 'song_artist': {'type': 'string', 'maxLength': 150, 'minLength': 1}, 'variation_id': {'type': 'string', 'maxLength': 20, 'description': 'From get_product_options.'}, 'existing_tune': {'type': 'boolean', 'description': 'Strip designs only: the song is already on our YouTube channel (25% off).'}, 'reference_link': {'type': 'string', 'maxLength': 500, 'description': 'YouTube or other link to the version the person wants.'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['cart_url', 'summary', 'price_usd', 'expires_at'], 'properties': {'summary': {'type': 'string'}, 'cart_url': {'type': 'string'}, 'price_usd': {'type': 'number'}, 'expires_at': {'type': 'string'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'box': {'enum': ['15', '20', '30', 'freestyle'], 'type': 'string', 'description': "With song_id: which version. Otherwise the melody's box."}, 'bpm': {'type': 'number', 'maximum': 300, 'minimum': 30, 'description': 'Melody tempo (required without song_id).'}, 'notes': {'type': 'array', 'items': {'type': 'object', 'required': ['pitch'], 'properties': {'beat': {'type': 'number', 'minimum': 0, 'description': 'When the note sounds, in quarter notes from 0 (e.g. 0, 1, 1.5).'}, 'pitch': {'anyOf': [{'type': 'string', 'maxLength': 8}, {'type': 'integer', 'maximum': 127, 'minimum': 0}], 'description': 'Note name like "C5", "F#4", "Bb3", or a MIDI number (60 = C4).'}, 'ticks': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Alternative to beat: 192 ticks per quarter note.'}}}, 'maxItems': 2000, 'minItems': 1, 'description': 'Melody notes (required without song_id).'}, 'sound': {'enum': ['synth', 'music_box'], 'type': 'string'}, 'song_id': {'type': 'string', 'maxLength': 40, 'description': "A saved song (public, the person's own, or one you saved without an account with its claim_token)."}, 'claim_token': {'type': 'string', 'maxLength': 100}, 'illegal_threshold_ticks': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Minimum gap between two identical notes, in ticks (default 384 = 2 beats).'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['audio_url', 'duration_seconds', 'sound'], 'properties': {'note': {'type': 'string'}, 'sound': {'type': 'string'}, 'audio_url': {'type': 'string'}, 'duration_seconds': {'type': 'number'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'box': {'enum': ['15', '20', '30', 'freestyle'], 'type': 'string', 'description': 'Only tunes with a version for this box.'}, 'page': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'query': {'type': 'string', 'maxLength': 100, 'description': 'Words to search in the song name, artist or arranger. Omit to list tunes.'}, 'page_size': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Results per page, 1-20 (default 10).'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['page', 'pages', 'total', 'songs'], 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'pages': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'songs': {'type': 'array', 'items': {'type': 'object', 'required': ['song_id', 'name', 'artist', 'arranged_by', 'boxes', 'tags', 'url'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'boxes': {'type': 'array', 'items': {'type': 'string'}}, 'artist': {'type': 'string'}, 'song_id': {'type': 'string'}, 'arranged_by': {'type': 'string'}}, 'additionalProperties': False}}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['song_id', 'visibility'], 'properties': {'song_id': {'type': 'string', 'maxLength': 40}, 'confirmed': {'type': 'boolean', 'description': 'Required to make a song public: true only after the person confirmed.'}, 'visibility': {'enum': ['public', 'private'], 'type': 'string'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['song_id', 'visibility', 'status', 'url'], 'properties': {'url': {'type': 'string'}, 'status': {'enum': ['updated', 'needs_confirmation'], 'type': 'string'}, 'song_id': {'type': 'string'}, 'visibility': {'type': 'string'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['box', 'bpm', 'notes'], 'properties': {'box': {'enum': ['15', '20', '30', 'freestyle'], 'type': 'string', 'description': 'Music box type: "15", "20", "30" (notes) or "freestyle" (digital only). See list_music_boxes.'}, 'bpm': {'type': 'number', 'maximum': 300, 'minimum': 30, 'description': 'Tempo in beats per minute (30-300).'}, 'notes': {'type': 'array', 'items': {'type': 'object', 'required': ['pitch'], 'properties': {'beat': {'type': 'number', 'minimum': 0, 'description': 'When the note sounds, in quarter notes from 0 (e.g. 0, 1, 1.5).'}, 'pitch': {'anyOf': [{'type': 'string', 'maxLength': 8}, {'type': 'integer', 'maximum': 127, 'minimum': 0}], 'description': 'Note name like "C5", "F#4", "Bb3", or a MIDI number (60 = C4).'}, 'ticks': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Alternative to beat: 192 ticks per quarter note.'}}}, 'maxItems': 2000, 'minItems': 1, 'description': 'Notes in any order, at most 2000. Only onsets matter: music boxes have no note durations.'}, 'snap_beats': {'type': 'number', 'description': 'Optional grid in beats (e.g. 0.5) to warn about notes off that grid.', 'exclusiveMinimum': 0}, 'illegal_threshold_ticks': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Minimum gap between two identical notes, in ticks (default 384 = 2 beats).'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['ok', 'issues', 'stats'], 'properties': {'ok': {'type': 'boolean'}, 'stats': {'type': 'object', 'required': ['note_count', 'illegal_count', 'duration_seconds'], 'properties': {'note_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'illegal_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'strip_length_cm': {'type': 'number'}, 'duration_seconds': {'type': 'number'}}, 'additionalProperties': False}, 'issues': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'severity', 'message'], 'properties': {'code': {'type': 'string'}, 'index': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Index of the note in the input, when the issue is about one note.'}, 'message': {'type': 'string'}, 'severity': {'enum': ['error', 'warning'], 'type': 'string'}, 'suggestions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'composer_link': {'type': 'string', 'description': 'Opens the composer with the playable notes loaded, without saving. Give it to the person to listen and edit.'}}, 'additionalProperties': False}
近期工具变更
类似的 MCP 服务器
MiOffice — AI-Powered Workspace Studio
Provides browser-based tools for processing PDFs, images, video, and audio, including generation, enhancement, conversion, transc…
BlitzReels Video Editor
Creates and edits short-form videos, including timelines, captions, transitions, AI-generated visuals, music, voiceovers, sound e…
Morpha
Enables creating, animating, and exporting layered short-form video projects.
switch
Enables management and exploration of an account-scoped library of AI-generated images and videos.
framesail
Creates long-form YouTube videos through script generation, storyboarding, visual assets, voiceover, music, scene composition, an…
Magnific
Provides image enhancement and design tools, AI image and audio generation, text-to-speech, creation management, and reusable cre…
Uwear
Supports AI fashion photoshoot production with garments, outfits, avatars, locations, art direction, image generation, backdrops,…
Creative Claw
Generates and edits branded images, video, audio, speech, and 3D-related creative assets, with media processing and reusable them…