Qué hace este MCP
Matches singers and groups with songs based on vocal range, voice type, transposition, and karaoke difficulty.
Herramientas
Esquema de entrada
{'type': 'object', 'required': ['slug', 'rangeLow', 'rangeHigh'], 'properties': {'slug': {'type': 'string', 'description': 'The catalog slug of the song, from search_songs.'}, 'rangeLow': {'type': 'string', 'description': 'Lowest comfortable note, as a note name like "D3" or a raw MIDI number.'}, 'rangeHigh': {'type': 'string', 'description': 'Highest comfortable note, as a note name like "C5" or a raw MIDI number.'}, 'voiceType': {'type': 'string', 'description': 'Optional voice type hint (soprano, mezzo, alto, tenor, baritone, bass). Inferred from the range when omitted.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['slug', 'title', 'artist', 'matchScore', 'rangeConfidence'], 'properties': {'url': {'type': 'string', 'description': 'Canonical HumMatch page for the song.'}, 'slug': {'type': 'string', 'description': 'Catalog slug; the identifier check_song_fit takes.'}, 'year': {'type': ['integer', 'null']}, 'genre': {'type': 'string'}, 'title': {'type': 'string'}, 'artist': {'type': 'string'}, 'reason': {'type': 'string', 'description': 'Plain-language verdict.'}, 'lowNote': {'type': ['integer', 'null'], 'description': 'Lowest note of the song as a MIDI number.'}, 'highNote': {'type': ['integer', 'null'], 'description': 'Highest note of the song as a MIDI number.'}, 'whyItFits': {'type': 'string'}, 'fitDetails': {'type': 'object', 'properties': {'riskLabel': {'type': 'string', 'description': 'e.g. "May be too high".'}, 'missingRange': {'type': 'boolean'}, 'priorityTier': {'type': 'integer'}, 'toneReliable': {'type': 'boolean'}, 'trustPhrases': {'type': 'array', 'items': {'type': 'string'}}, 'rangeFitLabel': {'type': 'string', 'description': 'e.g. "Comfortable", "Exploratory".'}, 'likelyVoiceFit': {'type': 'string'}, 'familiarityTier': {'type': 'string'}, 'voiceTypeFitLabel': {'type': 'string'}, 'catalogQualityLabel': {'type': 'string'}, 'reviewedSongProfile': {'type': 'boolean'}}, 'description': 'Labels behind the scores.'}, 'matchScore': {'type': 'integer', 'description': 'Overall suitability for this voice, 0-100.'}, 'lowNoteName': {'type': 'string', 'description': 'Same as lowNote, as a note name like "G2".'}, 'rangeSource': {'type': 'string', 'description': 'Provenance tag for the range, e.g. "estimated_curated_seed".'}, 'riskWarning': {'type': 'string'}, 'highNoteName': {'type': 'string', 'description': 'Same as highNote, as a note name like "C#5".'}, 'suggestedKey': {'type': 'string', 'description': 'Transposition advice, e.g. "Try a lower key".'}, 'vocalFitScore': {'type': 'integer', 'description': 'How well the song range sits inside the singer range, 0-100.'}, 'likelyVoiceFit': {'type': 'string'}, 'tessituraScore': {'type': 'integer', 'description': 'How comfortable the song sits where the voice spends most time, 0-100.'}, 'difficultyScore': {'type': ['integer', 'null'], 'description': 'Karaoke difficulty, 0-100. Higher is harder.'}, 'rangeConfidence': {'enum': ['manual_research', 'estimated', 'high', 'low', 'unknown'], 'type': 'string', 'description': 'How the range was established, strongest first. "manual_research" was researched against sheet music or a score and is the most trustworthy tier. "estimated" was derived from published sources rather than measured, so present those scores as guidance rather than fact. "high" and "low" are legacy confidence labels. "unknown" means no range data.'}, 'voiceTypeFitScore': {'type': 'integer', 'description': 'Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer.'}}}
Esquema de entrada
{'type': 'object', 'required': ['rangeLow', 'rangeHigh'], 'properties': {'rangeLow': {'type': 'string', 'description': 'Lowest comfortable note, as a note name like "D3" or a raw MIDI number.'}, 'rangeHigh': {'type': 'string', 'description': 'Highest comfortable note, as a note name like "C5" or a raw MIDI number.'}, 'voiceType': {'type': 'string', 'description': 'Optional voice type hint (soprano, mezzo, alto, tenor, baritone, bass). Inferred from the range when omitted.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['vocalId', 'rangeLow', 'rangeHigh', 'voiceType'], 'properties': {'vocalId': {'type': 'string', 'description': 'Human-readable profile label, e.g. "Tenor - Balanced tone".'}, 'rangeLow': {'type': 'integer', 'description': 'Lowest comfortable note as MIDI.'}, 'rangeHigh': {'type': 'integer', 'description': 'Highest comfortable note as MIDI.'}, 'toneLabel': {'type': 'string'}, 'voiceType': {'type': 'string'}, 'humProfile': {'type': 'object', 'properties': {'low': {'type': 'integer'}, 'high': {'type': 'integer'}, 'center': {'type': 'integer'}, 'confidence': {'type': 'number', 'description': '0-1. Derived from range input alone is around 0.55.'}, 'timbreLabel': {'type': 'string'}, 'warmthScore': {'type': ['number', 'null']}, 'pitchStability': {'type': 'number'}, 'brightnessScore': {'type': ['number', 'null']}, 'timbreConfidence': {'type': 'number'}}, 'description': 'Underlying measurements. Timbre fields stay null until an actual hum recording has been analyzed.'}}}
Esquema de entrada
{'type': 'object', 'required': ['profiles'], 'properties': {'profiles': {'type': 'array', 'items': {'type': 'object', 'required': ['rangeLow', 'rangeHigh'], 'properties': {'id': {'type': 'string', 'description': 'Optional label for this singer, e.g. their name.'}, 'rangeLow': {'type': 'string', 'description': 'Lowest note, as a note name or MIDI number.'}, 'rangeHigh': {'type': 'string', 'description': 'Highest note, as a note name or MIDI number.'}}}, 'minItems': 2, 'description': 'Two or more singers, each with a rangeLow and rangeHigh.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['sharedRange', 'songs'], 'properties': {'songs': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'title', 'artist'], 'properties': {'url': {'type': 'string', 'description': 'Canonical HumMatch page for the song.'}, 'slug': {'type': 'string', 'description': 'Catalog slug; the identifier check_song_fit takes.'}, 'year': {'type': ['integer', 'null']}, 'genre': {'type': 'string'}, 'title': {'type': 'string'}, 'artist': {'type': 'string'}, 'reason': {'type': 'string'}, 'lowNote': {'type': ['integer', 'null'], 'description': 'Lowest note of the song as a MIDI number.'}, 'fitLabel': {'type': 'string', 'description': 'e.g. "Group-ready", "Higher-risk".'}, 'highNote': {'type': ['integer', 'null'], 'description': 'Highest note of the song as a MIDI number.'}, 'difficulty': {'type': 'string', 'description': 'Label, e.g. "Easy win", "Moderate". Note this is a string here, unlike difficultyScore elsewhere.'}, 'lowNoteName': {'type': 'string', 'description': 'Same as lowNote, as a note name like "G2".'}, 'rangeSource': {'type': 'string', 'description': 'Provenance tag for the range, e.g. "estimated_curated_seed".'}, 'highNoteName': {'type': 'string', 'description': 'Same as highNote, as a note name like "C#5".'}, 'fitsMemberIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Which supplied singers can sing it, by their id. Shorter than the full group means a partial fit.'}, 'rangeConfidence': {'enum': ['manual_research', 'estimated', 'high', 'low', 'unknown'], 'type': 'string', 'description': 'How the range was established, strongest first. "manual_research" was researched against sheet music or a score and is the most trustworthy tier. "estimated" was derived from published sources rather than measured, so present those scores as guidance rather than fact. "high" and "low" are legacy confidence labels. "unknown" means no range data.'}}}}, 'sharedRange': {'type': 'object', 'properties': {'low': {'type': ['integer', 'null']}, 'high': {'type': ['integer', 'null']}, 'lowName': {'type': 'string'}, 'highName': {'type': 'string'}}, 'description': 'The overlap every supplied singer can reach. Null bounds mean no shared range exists.'}}}
Esquema de entrada
{'type': 'object', 'required': ['rangeLow', 'rangeHigh'], 'properties': {'limit': {'type': 'integer', 'description': 'How many songs to return per bucket (default 12, max 50).'}, 'rangeLow': {'type': 'string', 'description': 'Lowest comfortable note, as a note name like "D3" or a raw MIDI number.'}, 'rangeHigh': {'type': 'string', 'description': 'Highest comfortable note, as a note name like "C5" or a raw MIDI number.'}, 'voiceType': {'type': 'string', 'description': 'Optional voice type hint (soprano, mezzo, alto, tenor, baritone, bass). Inferred from the range when omitted.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['vocalId', 'voiceType', 'matches'], 'properties': {'matches': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'title', 'artist', 'rangeConfidence'], 'properties': {'url': {'type': 'string', 'description': 'Canonical HumMatch page for the song.'}, 'slug': {'type': 'string', 'description': 'Catalog slug; the identifier check_song_fit takes.'}, 'year': {'type': ['integer', 'null']}, 'genre': {'type': 'string'}, 'title': {'type': 'string'}, 'artist': {'type': 'string'}, 'lowNote': {'type': ['integer', 'null'], 'description': 'Lowest note of the song as a MIDI number.'}, 'highNote': {'type': ['integer', 'null'], 'description': 'Highest note of the song as a MIDI number.'}, 'whyItFits': {'type': 'string'}, 'matchScore': {'type': 'integer', 'description': 'Overall suitability for this voice, 0-100.'}, 'lowNoteName': {'type': 'string', 'description': 'Same as lowNote, as a note name like "G2".'}, 'rangeSource': {'type': 'string', 'description': 'Provenance tag for the range, e.g. "estimated_curated_seed".'}, 'riskWarning': {'type': 'string'}, 'highNoteName': {'type': 'string', 'description': 'Same as highNote, as a note name like "C#5".'}, 'suggestedKey': {'type': 'string', 'description': 'Transposition advice, e.g. "Try a lower key".'}, 'vocalFitScore': {'type': 'integer', 'description': 'How well the song range sits inside the singer range, 0-100.'}, 'likelyVoiceFit': {'type': 'string'}, 'tessituraScore': {'type': 'integer', 'description': 'How comfortable the song sits where the voice spends most time, 0-100.'}, 'difficultyScore': {'type': ['integer', 'null'], 'description': 'Karaoke difficulty, 0-100. Higher is harder.'}, 'rangeConfidence': {'enum': ['manual_research', 'estimated', 'high', 'low', 'unknown'], 'type': 'string', 'description': 'How the range was established, strongest first. "manual_research" was researched against sheet music or a score and is the most trustworthy tier. "estimated" was derived from published sources rather than measured, so present those scores as guidance rather than fact. "high" and "low" are legacy confidence labels. "unknown" means no range data.'}, 'voiceTypeFitScore': {'type': 'integer', 'description': 'Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer.'}}}, 'description': 'Ranked best matches overall.'}, 'vocalId': {'type': 'string'}, 'easyWins': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'title', 'artist', 'rangeConfidence'], 'properties': {'url': {'type': 'string', 'description': 'Canonical HumMatch page for the song.'}, 'slug': {'type': 'string', 'description': 'Catalog slug; the identifier check_song_fit takes.'}, 'year': {'type': ['integer', 'null']}, 'genre': {'type': 'string'}, 'title': {'type': 'string'}, 'artist': {'type': 'string'}, 'lowNote': {'type': ['integer', 'null'], 'description': 'Lowest note of the song as a MIDI number.'}, 'highNote': {'type': ['integer', 'null'], 'description': 'Highest note of the song as a MIDI number.'}, 'whyItFits': {'type': 'string'}, 'matchScore': {'type': 'integer', 'description': 'Overall suitability for this voice, 0-100.'}, 'lowNoteName': {'type': 'string', 'description': 'Same as lowNote, as a note name like "G2".'}, 'rangeSource': {'type': 'string', 'description': 'Provenance tag for the range, e.g. "estimated_curated_seed".'}, 'riskWarning': {'type': 'string'}, 'highNoteName': {'type': 'string', 'description': 'Same as highNote, as a note name like "C#5".'}, 'suggestedKey': {'type': 'string', 'description': 'Transposition advice, e.g. "Try a lower key".'}, 'vocalFitScore': {'type': 'integer', 'description': 'How well the song range sits inside the singer range, 0-100.'}, 'likelyVoiceFit': {'type': 'string'}, 'tessituraScore': {'type': 'integer', 'description': 'How comfortable the song sits where the voice spends most time, 0-100.'}, 'difficultyScore': {'type': ['integer', 'null'], 'description': 'Karaoke difficulty, 0-100. Higher is harder.'}, 'rangeConfidence': {'enum': ['manual_research', 'estimated', 'high', 'low', 'unknown'], 'type': 'string', 'description': 'How the range was established, strongest first. "manual_research" was researched against sheet music or a score and is the most trustworthy tier. "estimated" was derived from published sources rather than measured, so present those scores as guidance rather than fact. "high" and "low" are legacy confidence labels. "unknown" means no range data.'}, 'voiceTypeFitScore': {'type': 'integer', 'description': 'Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer.'}}}, 'description': 'Comfortable and easy to sing.'}, 'rangeLow': {'type': 'integer'}, 'rangeHigh': {'type': 'integer'}, 'voiceType': {'type': 'string'}, 'bestSafePicks': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'title', 'artist', 'rangeConfidence'], 'properties': {'url': {'type': 'string', 'description': 'Canonical HumMatch page for the song.'}, 'slug': {'type': 'string', 'description': 'Catalog slug; the identifier check_song_fit takes.'}, 'year': {'type': ['integer', 'null']}, 'genre': {'type': 'string'}, 'title': {'type': 'string'}, 'artist': {'type': 'string'}, 'lowNote': {'type': ['integer', 'null'], 'description': 'Lowest note of the song as a MIDI number.'}, 'highNote': {'type': ['integer', 'null'], 'description': 'Highest note of the song as a MIDI number.'}, 'whyItFits': {'type': 'string'}, 'matchScore': {'type': 'integer', 'description': 'Overall suitability for this voice, 0-100.'}, 'lowNoteName': {'type': 'string', 'description': 'Same as lowNote, as a note name like "G2".'}, 'rangeSource': {'type': 'string', 'description': 'Provenance tag for the range, e.g. "estimated_curated_seed".'}, 'riskWarning': {'type': 'string'}, 'highNoteName': {'type': 'string', 'description': 'Same as highNote, as a note name like "C#5".'}, 'suggestedKey': {'type': 'string', 'description': 'Transposition advice, e.g. "Try a lower key".'}, 'vocalFitScore': {'type': 'integer', 'description': 'How well the song range sits inside the singer range, 0-100.'}, 'likelyVoiceFit': {'type': 'string'}, 'tessituraScore': {'type': 'integer', 'description': 'How comfortable the song sits where the voice spends most time, 0-100.'}, 'difficultyScore': {'type': ['integer', 'null'], 'description': 'Karaoke difficulty, 0-100. Higher is harder.'}, 'rangeConfidence': {'enum': ['manual_research', 'estimated', 'high', 'low', 'unknown'], 'type': 'string', 'description': 'How the range was established, strongest first. "manual_research" was researched against sheet music or a score and is the most trustworthy tier. "estimated" was derived from published sources rather than measured, so present those scores as guidance rather than fact. "high" and "low" are legacy confidence labels. "unknown" means no range data.'}, 'voiceTypeFitScore': {'type': 'integer', 'description': 'Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer.'}}}, 'description': 'Lowest-risk choices.'}, 'groupFriendly': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'title', 'artist', 'rangeConfidence'], 'properties': {'url': {'type': 'string', 'description': 'Canonical HumMatch page for the song.'}, 'slug': {'type': 'string', 'description': 'Catalog slug; the identifier check_song_fit takes.'}, 'year': {'type': ['integer', 'null']}, 'genre': {'type': 'string'}, 'title': {'type': 'string'}, 'artist': {'type': 'string'}, 'lowNote': {'type': ['integer', 'null'], 'description': 'Lowest note of the song as a MIDI number.'}, 'highNote': {'type': ['integer', 'null'], 'description': 'Highest note of the song as a MIDI number.'}, 'whyItFits': {'type': 'string'}, 'matchScore': {'type': 'integer', 'description': 'Overall suitability for this voice, 0-100.'}, 'lowNoteName': {'type': 'string', 'description': 'Same as lowNote, as a note name like "G2".'}, 'rangeSource': {'type': 'string', 'description': 'Provenance tag for the range, e.g. "estimated_curated_seed".'}, 'riskWarning': {'type': 'string'}, 'highNoteName': {'type': 'string', 'description': 'Same as highNote, as a note name like "C#5".'}, 'suggestedKey': {'type': 'string', 'description': 'Transposition advice, e.g. "Try a lower key".'}, 'vocalFitScore': {'type': 'integer', 'description': 'How well the song range sits inside the singer range, 0-100.'}, 'likelyVoiceFit': {'type': 'string'}, 'tessituraScore': {'type': 'integer', 'description': 'How comfortable the song sits where the voice spends most time, 0-100.'}, 'difficultyScore': {'type': ['integer', 'null'], 'description': 'Karaoke difficulty, 0-100. Higher is harder.'}, 'rangeConfidence': {'enum': ['manual_research', 'estimated', 'high', 'low', 'unknown'], 'type': 'string', 'description': 'How the range was established, strongest first. "manual_research" was researched against sheet music or a score and is the most trustworthy tier. "estimated" was derived from published sources rather than measured, so present those scores as guidance rather than fact. "high" and "low" are legacy confidence labels. "unknown" means no range data.'}, 'voiceTypeFitScore': {'type': 'integer', 'description': 'Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer.'}}}, 'description': 'Work well with other singers.'}, 'confidenceTier': {'type': 'string'}, 'riskyPicksToAvoid': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'title', 'artist', 'rangeConfidence'], 'properties': {'url': {'type': 'string', 'description': 'Canonical HumMatch page for the song.'}, 'slug': {'type': 'string', 'description': 'Catalog slug; the identifier check_song_fit takes.'}, 'year': {'type': ['integer', 'null']}, 'genre': {'type': 'string'}, 'title': {'type': 'string'}, 'artist': {'type': 'string'}, 'lowNote': {'type': ['integer', 'null'], 'description': 'Lowest note of the song as a MIDI number.'}, 'highNote': {'type': ['integer', 'null'], 'description': 'Highest note of the song as a MIDI number.'}, 'whyItFits': {'type': 'string'}, 'matchScore': {'type': 'integer', 'description': 'Overall suitability for this voice, 0-100.'}, 'lowNoteName': {'type': 'string', 'description': 'Same as lowNote, as a note name like "G2".'}, 'rangeSource': {'type': 'string', 'description': 'Provenance tag for the range, e.g. "estimated_curated_seed".'}, 'riskWarning': {'type': 'string'}, 'highNoteName': {'type': 'string', 'description': 'Same as highNote, as a note name like "C#5".'}, 'suggestedKey': {'type': 'string', 'description': 'Transposition advice, e.g. "Try a lower key".'}, 'vocalFitScore': {'type': 'integer', 'description': 'How well the song range sits inside the singer range, 0-100.'}, 'likelyVoiceFit': {'type': 'string'}, 'tessituraScore': {'type': 'integer', 'description': 'How comfortable the song sits where the voice spends most time, 0-100.'}, 'difficultyScore': {'type': ['integer', 'null'], 'description': 'Karaoke difficulty, 0-100. Higher is harder.'}, 'rangeConfidence': {'enum': ['manual_research', 'estimated', 'high', 'low', 'unknown'], 'type': 'string', 'description': 'How the range was established, strongest first. "manual_research" was researched against sheet music or a score and is the most trustworthy tier. "estimated" was derived from published sources rather than measured, so present those scores as guidance rather than fact. "high" and "low" are legacy confidence labels. "unknown" means no range data.'}, 'voiceTypeFitScore': {'type': 'integer', 'description': 'Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer.'}}}, 'description': 'Scored, but they exceed the comfortable range.'}, 'popularCrowdPleasers': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'title', 'artist', 'rangeConfidence'], 'properties': {'url': {'type': 'string', 'description': 'Canonical HumMatch page for the song.'}, 'slug': {'type': 'string', 'description': 'Catalog slug; the identifier check_song_fit takes.'}, 'year': {'type': ['integer', 'null']}, 'genre': {'type': 'string'}, 'title': {'type': 'string'}, 'artist': {'type': 'string'}, 'lowNote': {'type': ['integer', 'null'], 'description': 'Lowest note of the song as a MIDI number.'}, 'highNote': {'type': ['integer', 'null'], 'description': 'Highest note of the song as a MIDI number.'}, 'whyItFits': {'type': 'string'}, 'matchScore': {'type': 'integer', 'description': 'Overall suitability for this voice, 0-100.'}, 'lowNoteName': {'type': 'string', 'description': 'Same as lowNote, as a note name like "G2".'}, 'rangeSource': {'type': 'string', 'description': 'Provenance tag for the range, e.g. "estimated_curated_seed".'}, 'riskWarning': {'type': 'string'}, 'highNoteName': {'type': 'string', 'description': 'Same as highNote, as a note name like "C#5".'}, 'suggestedKey': {'type': 'string', 'description': 'Transposition advice, e.g. "Try a lower key".'}, 'vocalFitScore': {'type': 'integer', 'description': 'How well the song range sits inside the singer range, 0-100.'}, 'likelyVoiceFit': {'type': 'string'}, 'tessituraScore': {'type': 'integer', 'description': 'How comfortable the song sits where the voice spends most time, 0-100.'}, 'difficultyScore': {'type': ['integer', 'null'], 'description': 'Karaoke difficulty, 0-100. Higher is harder.'}, 'rangeConfidence': {'enum': ['manual_research', 'estimated', 'high', 'low', 'unknown'], 'type': 'string', 'description': 'How the range was established, strongest first. "manual_research" was researched against sheet music or a score and is the most trustworthy tier. "estimated" was derived from published sources rather than measured, so present those scores as guidance rather than fact. "high" and "low" are legacy confidence labels. "unknown" means no range data.'}, 'voiceTypeFitScore': {'type': 'integer', 'description': 'Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer.'}}}, 'description': 'Well-known songs that still fit.'}}}
Esquema de entrada
{'type': 'object', 'required': ['q'], 'properties': {'q': {'type': 'string', 'description': 'Search text: a song title, an artist, or both.'}, 'limit': {'type': 'integer', 'description': 'Maximum results (default 20, max 50).'}, 'rangeLow': {'type': 'string', 'description': 'Optional. Lowest note of the singer, to score and rank the results by fit.'}, 'rangeHigh': {'type': 'string', 'description': 'Optional. Highest note of the singer, to score and rank the results by fit.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['query', 'songs'], 'properties': {'count': {'type': 'integer'}, 'query': {'type': 'string'}, 'songs': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'title', 'artist', 'rangeConfidence'], 'properties': {'url': {'type': 'string', 'description': 'Canonical HumMatch page for the song.'}, 'slug': {'type': 'string', 'description': 'Catalog slug; the identifier check_song_fit takes.'}, 'year': {'type': ['integer', 'null']}, 'genre': {'type': 'string'}, 'title': {'type': 'string'}, 'artist': {'type': 'string'}, 'lowNote': {'type': ['integer', 'null'], 'description': 'Lowest note of the song as a MIDI number.'}, 'highNote': {'type': ['integer', 'null'], 'description': 'Highest note of the song as a MIDI number.'}, 'whyItFits': {'type': 'string'}, 'matchScore': {'type': 'integer', 'description': 'Overall suitability for this voice, 0-100.'}, 'lowNoteName': {'type': 'string', 'description': 'Same as lowNote, as a note name like "G2".'}, 'rangeSource': {'type': 'string', 'description': 'Provenance tag for the range, e.g. "estimated_curated_seed".'}, 'riskWarning': {'type': 'string'}, 'highNoteName': {'type': 'string', 'description': 'Same as highNote, as a note name like "C#5".'}, 'suggestedKey': {'type': 'string', 'description': 'Transposition advice, e.g. "Try a lower key".'}, 'vocalFitScore': {'type': 'integer', 'description': 'How well the song range sits inside the singer range, 0-100.'}, 'likelyVoiceFit': {'type': 'string'}, 'tessituraScore': {'type': 'integer', 'description': 'How comfortable the song sits where the voice spends most time, 0-100.'}, 'difficultyScore': {'type': ['integer', 'null'], 'description': 'Karaoke difficulty, 0-100. Higher is harder.'}, 'rangeConfidence': {'enum': ['manual_research', 'estimated', 'high', 'low', 'unknown'], 'type': 'string', 'description': 'How the range was established, strongest first. "manual_research" was researched against sheet music or a score and is the most trustworthy tier. "estimated" was derived from published sources rather than measured, so present those scores as guidance rather than fact. "high" and "low" are legacy confidence labels. "unknown" means no range data.'}, 'voiceTypeFitScore': {'type': 'integer', 'description': 'Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer.'}}}, 'description': 'Results. Scored fields are present only when rangeLow and rangeHigh were supplied.'}}}
Cambios recientes en herramientas
Servidores MCP similares
Andreax
Offers pay-per-call AI services for inference, agent and workflow design, OCR and transcription, code generation and review, clas…
Social Fetch
Retrieves public content and metadata from social networks, music services, Facebook Marketplace, events, profiles, posts, commen…
Hermoso
Supports ad research, competitor analysis, video and static ad creation, campaign policy checks, content publishing, and performa…
ElevenLabs
Manages ElevenLabs speech, voices, pronunciation dictionaries, podcasts, dubbing, audio projects, workspaces, and related media r…
John's Essentials
Analyzes and converts documents, images, audio, video, archives, data files, and other media formats, with PDF chat and file insp…
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…
Heista
Analyzes video advertising, builds brand intelligence profiles, researches markets, and generates advertising scripts and creativ…