Server definition
- Hash
- sha256:53f89fb62e6c73c3476b773dfd4017ff5308eaccdb8a1ffa763389b2fe489790
- What it is
- What a remote MCP server returned when asked what it offers: 5 tools
The blob, as servednamed by its sha256
{
"instructions": "HumMatch matches singers to songs by vocal range. Start with the singer's lowest and highest comfortable notes. Use recommend_songs to find what suits one voice, group_song_fit for two or more singers, search_songs to look up a specific song, and check_song_fit to score one song for a voice. Every song carries rangeConfidence and rangeSource: a range marked estimated is derived from published sources rather than measured from the recording, so present those scores as guidance rather than fact.",
"tools": [
{
"description": "Score a specific catalog song against a singer's range and explain why it fits or does not, including a suggested key to transpose to. Call this when someone asks whether they can sing a particular song. Resolve the song with search_songs first to get its slug.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"rangeHigh": {
"description": "Highest comfortable note, as a note name like \"C5\" or a raw MIDI number.",
"type": "string"
},
"rangeLow": {
"description": "Lowest comfortable note, as a note name like \"D3\" or a raw MIDI number.",
"type": "string"
},
"slug": {
"description": "The catalog slug of the song, from search_songs.",
"type": "string"
},
"voiceType": {
"description": "Optional voice type hint (soprano, mezzo, alto, tenor, baritone, bass). Inferred from the range when omitted.",
"type": "string"
}
},
"required": [
"slug",
"rangeLow",
"rangeHigh"
],
"type": "object"
},
"name": "check_song_fit",
"outputSchema": {
"properties": {
"artist": {
"type": "string"
},
"difficultyScore": {
"description": "Karaoke difficulty, 0-100. Higher is harder.",
"type": [
"integer",
"null"
]
},
"fitDetails": {
"description": "Labels behind the scores.",
"properties": {
"catalogQualityLabel": {
"type": "string"
},
"familiarityTier": {
"type": "string"
},
"likelyVoiceFit": {
"type": "string"
},
"missingRange": {
"type": "boolean"
},
"priorityTier": {
"type": "integer"
},
"rangeFitLabel": {
"description": "e.g. \"Comfortable\", \"Exploratory\".",
"type": "string"
},
"reviewedSongProfile": {
"type": "boolean"
},
"riskLabel": {
"description": "e.g. \"May be too high\".",
"type": "string"
},
"toneReliable": {
"type": "boolean"
},
"trustPhrases": {
"items": {
"type": "string"
},
"type": "array"
},
"voiceTypeFitLabel": {
"type": "string"
}
},
"type": "object"
},
"genre": {
"type": "string"
},
"highNote": {
"description": "Highest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"highNoteName": {
"description": "Same as highNote, as a note name like \"C#5\".",
"type": "string"
},
"likelyVoiceFit": {
"type": "string"
},
"lowNote": {
"description": "Lowest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"lowNoteName": {
"description": "Same as lowNote, as a note name like \"G2\".",
"type": "string"
},
"matchScore": {
"description": "Overall suitability for this voice, 0-100.",
"type": "integer"
},
"rangeConfidence": {
"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.",
"enum": [
"manual_research",
"estimated",
"high",
"low",
"unknown"
],
"type": "string"
},
"rangeSource": {
"description": "Provenance tag for the range, e.g. \"estimated_curated_seed\".",
"type": "string"
},
"reason": {
"description": "Plain-language verdict.",
"type": "string"
},
"riskWarning": {
"type": "string"
},
"slug": {
"description": "Catalog slug; the identifier check_song_fit takes.",
"type": "string"
},
"suggestedKey": {
"description": "Transposition advice, e.g. \"Try a lower key\".",
"type": "string"
},
"tessituraScore": {
"description": "How comfortable the song sits where the voice spends most time, 0-100.",
"type": "integer"
},
"title": {
"type": "string"
},
"url": {
"description": "Canonical HumMatch page for the song.",
"type": "string"
},
"vocalFitScore": {
"description": "How well the song range sits inside the singer range, 0-100.",
"type": "integer"
},
"voiceTypeFitScore": {
"description": "Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer.",
"type": "integer"
},
"whyItFits": {
"type": "string"
},
"year": {
"type": [
"integer",
"null"
]
}
},
"required": [
"slug",
"title",
"artist",
"matchScore",
"rangeConfidence"
],
"type": "object"
}
},
{
"description": "Turn a singer's vocal range into a normalized HumMatch vocal profile: a persistent Vocal ID, voice type, and tone label. Call this first when you know someone's range and want a profile to reuse across the other HumMatch tools.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"rangeHigh": {
"description": "Highest comfortable note, as a note name like \"C5\" or a raw MIDI number.",
"type": "string"
},
"rangeLow": {
"description": "Lowest comfortable note, as a note name like \"D3\" or a raw MIDI number.",
"type": "string"
},
"voiceType": {
"description": "Optional voice type hint (soprano, mezzo, alto, tenor, baritone, bass). Inferred from the range when omitted.",
"type": "string"
}
},
"required": [
"rangeLow",
"rangeHigh"
],
"type": "object"
},
"name": "get_vocal_profile",
"outputSchema": {
"properties": {
"humProfile": {
"description": "Underlying measurements. Timbre fields stay null until an actual hum recording has been analyzed.",
"properties": {
"brightnessScore": {
"type": [
"number",
"null"
]
},
"center": {
"type": "integer"
},
"confidence": {
"description": "0-1. Derived from range input alone is around 0.55.",
"type": "number"
},
"high": {
"type": "integer"
},
"low": {
"type": "integer"
},
"pitchStability": {
"type": "number"
},
"timbreConfidence": {
"type": "number"
},
"timbreLabel": {
"type": "string"
},
"warmthScore": {
"type": [
"number",
"null"
]
}
},
"type": "object"
},
"rangeHigh": {
"description": "Highest comfortable note as MIDI.",
"type": "integer"
},
"rangeLow": {
"description": "Lowest comfortable note as MIDI.",
"type": "integer"
},
"toneLabel": {
"type": "string"
},
"vocalId": {
"description": "Human-readable profile label, e.g. \"Tenor - Balanced tone\".",
"type": "string"
},
"voiceType": {
"type": "string"
}
},
"required": [
"vocalId",
"rangeLow",
"rangeHigh",
"voiceType"
],
"type": "object"
}
},
{
"description": "Given two or more singers' ranges, find the vocal range they share and the songs that sit inside it. Call this for karaoke night with friends, a duet, a choir or worship team, or any \"what can we all sing\" question.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"profiles": {
"description": "Two or more singers, each with a rangeLow and rangeHigh.",
"items": {
"properties": {
"id": {
"description": "Optional label for this singer, e.g. their name.",
"type": "string"
},
"rangeHigh": {
"description": "Highest note, as a note name or MIDI number.",
"type": "string"
},
"rangeLow": {
"description": "Lowest note, as a note name or MIDI number.",
"type": "string"
}
},
"required": [
"rangeLow",
"rangeHigh"
],
"type": "object"
},
"minItems": 2,
"type": "array"
}
},
"required": [
"profiles"
],
"type": "object"
},
"name": "group_song_fit",
"outputSchema": {
"properties": {
"sharedRange": {
"description": "The overlap every supplied singer can reach. Null bounds mean no shared range exists.",
"properties": {
"high": {
"type": [
"integer",
"null"
]
},
"highName": {
"type": "string"
},
"low": {
"type": [
"integer",
"null"
]
},
"lowName": {
"type": "string"
}
},
"type": "object"
},
"songs": {
"items": {
"properties": {
"artist": {
"type": "string"
},
"difficulty": {
"description": "Label, e.g. \"Easy win\", \"Moderate\". Note this is a string here, unlike difficultyScore elsewhere.",
"type": "string"
},
"fitLabel": {
"description": "e.g. \"Group-ready\", \"Higher-risk\".",
"type": "string"
},
"fitsMemberIds": {
"description": "Which supplied singers can sing it, by their id. Shorter than the full group means a partial fit.",
"items": {
"type": "string"
},
"type": "array"
},
"genre": {
"type": "string"
},
"highNote": {
"description": "Highest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"highNoteName": {
"description": "Same as highNote, as a note name like \"C#5\".",
"type": "string"
},
"lowNote": {
"description": "Lowest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"lowNoteName": {
"description": "Same as lowNote, as a note name like \"G2\".",
"type": "string"
},
"rangeConfidence": {
"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.",
"enum": [
"manual_research",
"estimated",
"high",
"low",
"unknown"
],
"type": "string"
},
"rangeSource": {
"description": "Provenance tag for the range, e.g. \"estimated_curated_seed\".",
"type": "string"
},
"reason": {
"type": "string"
},
"slug": {
"description": "Catalog slug; the identifier check_song_fit takes.",
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"description": "Canonical HumMatch page for the song.",
"type": "string"
},
"year": {
"type": [
"integer",
"null"
]
}
},
"required": [
"slug",
"title",
"artist"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"sharedRange",
"songs"
],
"type": "object"
}
},
{
"description": "Rank the HumMatch catalog for one singer and return the songs they can actually sing, scored for range fit, karaoke difficulty, and voice-type suitability. Call this when someone asks what they should sing, what suits their voice or range, or wants karaoke song suggestions. Returns a ranked list plus named buckets (safest picks, easy wins, crowd pleasers, songs to avoid).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "How many songs to return per bucket (default 12, max 50).",
"type": "integer"
},
"rangeHigh": {
"description": "Highest comfortable note, as a note name like \"C5\" or a raw MIDI number.",
"type": "string"
},
"rangeLow": {
"description": "Lowest comfortable note, as a note name like \"D3\" or a raw MIDI number.",
"type": "string"
},
"voiceType": {
"description": "Optional voice type hint (soprano, mezzo, alto, tenor, baritone, bass). Inferred from the range when omitted.",
"type": "string"
}
},
"required": [
"rangeLow",
"rangeHigh"
],
"type": "object"
},
"name": "recommend_songs",
"outputSchema": {
"properties": {
"bestSafePicks": {
"description": "Lowest-risk choices.",
"items": {
"properties": {
"artist": {
"type": "string"
},
"difficultyScore": {
"description": "Karaoke difficulty, 0-100. Higher is harder.",
"type": [
"integer",
"null"
]
},
"genre": {
"type": "string"
},
"highNote": {
"description": "Highest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"highNoteName": {
"description": "Same as highNote, as a note name like \"C#5\".",
"type": "string"
},
"likelyVoiceFit": {
"type": "string"
},
"lowNote": {
"description": "Lowest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"lowNoteName": {
"description": "Same as lowNote, as a note name like \"G2\".",
"type": "string"
},
"matchScore": {
"description": "Overall suitability for this voice, 0-100.",
"type": "integer"
},
"rangeConfidence": {
"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.",
"enum": [
"manual_research",
"estimated",
"high",
"low",
"unknown"
],
"type": "string"
},
"rangeSource": {
"description": "Provenance tag for the range, e.g. \"estimated_curated_seed\".",
"type": "string"
},
"riskWarning": {
"type": "string"
},
"slug": {
"description": "Catalog slug; the identifier check_song_fit takes.",
"type": "string"
},
"suggestedKey": {
"description": "Transposition advice, e.g. \"Try a lower key\".",
"type": "string"
},
"tessituraScore": {
"description": "How comfortable the song sits where the voice spends most time, 0-100.",
"type": "integer"
},
"title": {
"type": "string"
},
"url": {
"description": "Canonical HumMatch page for the song.",
"type": "string"
},
"vocalFitScore": {
"description": "How well the song range sits inside the singer range, 0-100.",
"type": "integer"
},
"voiceTypeFitScore": {
"description": "Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer.",
"type": "integer"
},
"whyItFits": {
"type": "string"
},
"year": {
"type": [
"integer",
"null"
]
}
},
"required": [
"slug",
"title",
"artist",
"rangeConfidence"
],
"type": "object"
},
"type": "array"
},
"confidenceTier": {
"type": "string"
},
"easyWins": {
"description": "Comfortable and easy to sing.",
"items": {
"properties": {
"artist": {
"type": "string"
},
"difficultyScore": {
"description": "Karaoke difficulty, 0-100. Higher is harder.",
"type": [
"integer",
"null"
]
},
"genre": {
"type": "string"
},
"highNote": {
"description": "Highest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"highNoteName": {
"description": "Same as highNote, as a note name like \"C#5\".",
"type": "string"
},
"likelyVoiceFit": {
"type": "string"
},
"lowNote": {
"description": "Lowest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"lowNoteName": {
"description": "Same as lowNote, as a note name like \"G2\".",
"type": "string"
},
"matchScore": {
"description": "Overall suitability for this voice, 0-100.",
"type": "integer"
},
"rangeConfidence": {
"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.",
"enum": [
"manual_research",
"estimated",
"high",
"low",
"unknown"
],
"type": "string"
},
"rangeSource": {
"description": "Provenance tag for the range, e.g. \"estimated_curated_seed\".",
"type": "string"
},
"riskWarning": {
"type": "string"
},
"slug": {
"description": "Catalog slug; the identifier check_song_fit takes.",
"type": "string"
},
"suggestedKey": {
"description": "Transposition advice, e.g. \"Try a lower key\".",
"type": "string"
},
"tessituraScore": {
"description": "How comfortable the song sits where the voice spends most time, 0-100.",
"type": "integer"
},
"title": {
"type": "string"
},
"url": {
"description": "Canonical HumMatch page for the song.",
"type": "string"
},
"vocalFitScore": {
"description": "How well the song range sits inside the singer range, 0-100.",
"type": "integer"
},
"voiceTypeFitScore": {
"description": "Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer.",
"type": "integer"
},
"whyItFits": {
"type": "string"
},
"year": {
"type": [
"integer",
"null"
]
}
},
"required": [
"slug",
"title",
"artist",
"rangeConfidence"
],
"type": "object"
},
"type": "array"
},
"groupFriendly": {
"description": "Work well with other singers.",
"items": {
"properties": {
"artist": {
"type": "string"
},
"difficultyScore": {
"description": "Karaoke difficulty, 0-100. Higher is harder.",
"type": [
"integer",
"null"
]
},
"genre": {
"type": "string"
},
"highNote": {
"description": "Highest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"highNoteName": {
"description": "Same as highNote, as a note name like \"C#5\".",
"type": "string"
},
"likelyVoiceFit": {
"type": "string"
},
"lowNote": {
"description": "Lowest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"lowNoteName": {
"description": "Same as lowNote, as a note name like \"G2\".",
"type": "string"
},
"matchScore": {
"description": "Overall suitability for this voice, 0-100.",
"type": "integer"
},
"rangeConfidence": {
"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.",
"enum": [
"manual_research",
"estimated",
"high",
"low",
"unknown"
],
"type": "string"
},
"rangeSource": {
"description": "Provenance tag for the range, e.g. \"estimated_curated_seed\".",
"type": "string"
},
"riskWarning": {
"type": "string"
},
"slug": {
"description": "Catalog slug; the identifier check_song_fit takes.",
"type": "string"
},
"suggestedKey": {
"description": "Transposition advice, e.g. \"Try a lower key\".",
"type": "string"
},
"tessituraScore": {
"description": "How comfortable the song sits where the voice spends most time, 0-100.",
"type": "integer"
},
"title": {
"type": "string"
},
"url": {
"description": "Canonical HumMatch page for the song.",
"type": "string"
},
"vocalFitScore": {
"description": "How well the song range sits inside the singer range, 0-100.",
"type": "integer"
},
"voiceTypeFitScore": {
"description": "Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer.",
"type": "integer"
},
"whyItFits": {
"type": "string"
},
"year": {
"type": [
"integer",
"null"
]
}
},
"required": [
"slug",
"title",
"artist",
"rangeConfidence"
],
"type": "object"
},
"type": "array"
},
"matches": {
"description": "Ranked best matches overall.",
"items": {
"properties": {
"artist": {
"type": "string"
},
"difficultyScore": {
"description": "Karaoke difficulty, 0-100. Higher is harder.",
"type": [
"integer",
"null"
]
},
"genre": {
"type": "string"
},
"highNote": {
"description": "Highest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"highNoteName": {
"description": "Same as highNote, as a note name like \"C#5\".",
"type": "string"
},
"likelyVoiceFit": {
"type": "string"
},
"lowNote": {
"description": "Lowest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"lowNoteName": {
"description": "Same as lowNote, as a note name like \"G2\".",
"type": "string"
},
"matchScore": {
"description": "Overall suitability for this voice, 0-100.",
"type": "integer"
},
"rangeConfidence": {
"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.",
"enum": [
"manual_research",
"estimated",
"high",
"low",
"unknown"
],
"type": "string"
},
"rangeSource": {
"description": "Provenance tag for the range, e.g. \"estimated_curated_seed\".",
"type": "string"
},
"riskWarning": {
"type": "string"
},
"slug": {
"description": "Catalog slug; the identifier check_song_fit takes.",
"type": "string"
},
"suggestedKey": {
"description": "Transposition advice, e.g. \"Try a lower key\".",
"type": "string"
},
"tessituraScore": {
"description": "How comfortable the song sits where the voice spends most time, 0-100.",
"type": "integer"
},
"title": {
"type": "string"
},
"url": {
"description": "Canonical HumMatch page for the song.",
"type": "string"
},
"vocalFitScore": {
"description": "How well the song range sits inside the singer range, 0-100.",
"type": "integer"
},
"voiceTypeFitScore": {
"description": "Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer.",
"type": "integer"
},
"whyItFits": {
"type": "string"
},
"year": {
"type": [
"integer",
"null"
]
}
},
"required": [
"slug",
"title",
"artist",
"rangeConfidence"
],
"type": "object"
},
"type": "array"
},
"popularCrowdPleasers": {
"description": "Well-known songs that still fit.",
"items": {
"properties": {
"artist": {
"type": "string"
},
"difficultyScore": {
"description": "Karaoke difficulty, 0-100. Higher is harder.",
"type": [
"integer",
"null"
]
},
"genre": {
"type": "string"
},
"highNote": {
"description": "Highest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"highNoteName": {
"description": "Same as highNote, as a note name like \"C#5\".",
"type": "string"
},
"likelyVoiceFit": {
"type": "string"
},
"lowNote": {
"description": "Lowest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"lowNoteName": {
"description": "Same as lowNote, as a note name like \"G2\".",
"type": "string"
},
"matchScore": {
"description": "Overall suitability for this voice, 0-100.",
"type": "integer"
},
"rangeConfidence": {
"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.",
"enum": [
"manual_research",
"estimated",
"high",
"low",
"unknown"
],
"type": "string"
},
"rangeSource": {
"description": "Provenance tag for the range, e.g. \"estimated_curated_seed\".",
"type": "string"
},
"riskWarning": {
"type": "string"
},
"slug": {
"description": "Catalog slug; the identifier check_song_fit takes.",
"type": "string"
},
"suggestedKey": {
"description": "Transposition advice, e.g. \"Try a lower key\".",
"type": "string"
},
"tessituraScore": {
"description": "How comfortable the song sits where the voice spends most time, 0-100.",
"type": "integer"
},
"title": {
"type": "string"
},
"url": {
"description": "Canonical HumMatch page for the song.",
"type": "string"
},
"vocalFitScore": {
"description": "How well the song range sits inside the singer range, 0-100.",
"type": "integer"
},
"voiceTypeFitScore": {
"description": "Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer.",
"type": "integer"
},
"whyItFits": {
"type": "string"
},
"year": {
"type": [
"integer",
"null"
]
}
},
"required": [
"slug",
"title",
"artist",
"rangeConfidence"
],
"type": "object"
},
"type": "array"
},
"rangeHigh": {
"type": "integer"
},
"rangeLow": {
"type": "integer"
},
"riskyPicksToAvoid": {
"description": "Scored, but they exceed the comfortable range.",
"items": {
"properties": {
"artist": {
"type": "string"
},
"difficultyScore": {
"description": "Karaoke difficulty, 0-100. Higher is harder.",
"type": [
"integer",
"null"
]
},
"genre": {
"type": "string"
},
"highNote": {
"description": "Highest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"highNoteName": {
"description": "Same as highNote, as a note name like \"C#5\".",
"type": "string"
},
"likelyVoiceFit": {
"type": "string"
},
"lowNote": {
"description": "Lowest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"lowNoteName": {
"description": "Same as lowNote, as a note name like \"G2\".",
"type": "string"
},
"matchScore": {
"description": "Overall suitability for this voice, 0-100.",
"type": "integer"
},
"rangeConfidence": {
"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.",
"enum": [
"manual_research",
"estimated",
"high",
"low",
"unknown"
],
"type": "string"
},
"rangeSource": {
"description": "Provenance tag for the range, e.g. \"estimated_curated_seed\".",
"type": "string"
},
"riskWarning": {
"type": "string"
},
"slug": {
"description": "Catalog slug; the identifier check_song_fit takes.",
"type": "string"
},
"suggestedKey": {
"description": "Transposition advice, e.g. \"Try a lower key\".",
"type": "string"
},
"tessituraScore": {
"description": "How comfortable the song sits where the voice spends most time, 0-100.",
"type": "integer"
},
"title": {
"type": "string"
},
"url": {
"description": "Canonical HumMatch page for the song.",
"type": "string"
},
"vocalFitScore": {
"description": "How well the song range sits inside the singer range, 0-100.",
"type": "integer"
},
"voiceTypeFitScore": {
"description": "Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer.",
"type": "integer"
},
"whyItFits": {
"type": "string"
},
"year": {
"type": [
"integer",
"null"
]
}
},
"required": [
"slug",
"title",
"artist",
"rangeConfidence"
],
"type": "object"
},
"type": "array"
},
"vocalId": {
"type": "string"
},
"voiceType": {
"type": "string"
}
},
"required": [
"vocalId",
"voiceType",
"matches"
],
"type": "object"
}
},
{
"description": "Search HumMatch by song title or artist. Use this to resolve a song someone named into the catalog slug that check_song_fit needs, or to look up a song's measured vocal range. Pass rangeLow/rangeHigh as well to score every result against that voice and get the hits ranked by fit.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "Maximum results (default 20, max 50).",
"type": "integer"
},
"q": {
"description": "Search text: a song title, an artist, or both.",
"type": "string"
},
"rangeHigh": {
"description": "Optional. Highest note of the singer, to score and rank the results by fit.",
"type": "string"
},
"rangeLow": {
"description": "Optional. Lowest note of the singer, to score and rank the results by fit.",
"type": "string"
}
},
"required": [
"q"
],
"type": "object"
},
"name": "search_songs",
"outputSchema": {
"properties": {
"count": {
"type": "integer"
},
"query": {
"type": "string"
},
"songs": {
"description": "Results. Scored fields are present only when rangeLow and rangeHigh were supplied.",
"items": {
"properties": {
"artist": {
"type": "string"
},
"difficultyScore": {
"description": "Karaoke difficulty, 0-100. Higher is harder.",
"type": [
"integer",
"null"
]
},
"genre": {
"type": "string"
},
"highNote": {
"description": "Highest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"highNoteName": {
"description": "Same as highNote, as a note name like \"C#5\".",
"type": "string"
},
"likelyVoiceFit": {
"type": "string"
},
"lowNote": {
"description": "Lowest note of the song as a MIDI number.",
"type": [
"integer",
"null"
]
},
"lowNoteName": {
"description": "Same as lowNote, as a note name like \"G2\".",
"type": "string"
},
"matchScore": {
"description": "Overall suitability for this voice, 0-100.",
"type": "integer"
},
"rangeConfidence": {
"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.",
"enum": [
"manual_research",
"estimated",
"high",
"low",
"unknown"
],
"type": "string"
},
"rangeSource": {
"description": "Provenance tag for the range, e.g. \"estimated_curated_seed\".",
"type": "string"
},
"riskWarning": {
"type": "string"
},
"slug": {
"description": "Catalog slug; the identifier check_song_fit takes.",
"type": "string"
},
"suggestedKey": {
"description": "Transposition advice, e.g. \"Try a lower key\".",
"type": "string"
},
"tessituraScore": {
"description": "How comfortable the song sits where the voice spends most time, 0-100.",
"type": "integer"
},
"title": {
"type": "string"
},
"url": {
"description": "Canonical HumMatch page for the song.",
"type": "string"
},
"vocalFitScore": {
"description": "How well the song range sits inside the singer range, 0-100.",
"type": "integer"
},
"voiceTypeFitScore": {
"description": "Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer.",
"type": "integer"
},
"whyItFits": {
"type": "string"
},
"year": {
"type": [
"integer",
"null"
]
}
},
"required": [
"slug",
"title",
"artist",
"rangeConfidence"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"query",
"songs"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:53f89fb62e6c73c3476b773dfd4017ff5308eaccdb8a1ffa763389b2fe489790 | sha256sum