HumMatch
Server Details
Match singers to songs by vocal range: score fit, karaoke difficulty, and voice type.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.4/5 across 5 of 5 tools scored.
Each tool has a clearly distinct purpose: profile creation, song search, single-song fit check, individual recommendations, and group recommendations. Even though check_song_fit and recommend_songs both assess fit, the former is for a specific song while the latter ranks the entire catalog, so no ambiguity.
All tool names follow a consistent verb_noun pattern: check_song_fit, get_vocal_profile, group_song_fit, recommend_songs, and search_songs. The naming is uniformly snake_case with action-first verbs, making the function of each tool predictable.
Five tools is ideal for this domain, covering the core workflows without unnecessary bloat. Each tool serves a distinct need, and the count feels well-scoped for a music matching service.
The tool set covers the full lifecycle: creating a vocal profile, searching the catalog, checking a specific song, recommending songs for an individual, and finding songs for a group. There are no obvious dead ends or missing operations for the stated purpose.
Available Tools
5 toolscheck_song_fitScore one song for a voiceARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The catalog slug of the song, from search_songs. | |
| rangeLow | Yes | Lowest comfortable note, as a note name like "D3" or a raw MIDI number. | |
| rangeHigh | Yes | Highest comfortable note, as a note name like "C5" or a raw MIDI number. | |
| voiceType | No | Optional voice type hint (soprano, mezzo, alto, tenor, baritone, bass). Inferred from the range when omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Canonical HumMatch page for the song. |
| slug | Yes | Catalog slug; the identifier check_song_fit takes. |
| year | No | |
| genre | No | |
| title | Yes | |
| artist | Yes | |
| reason | No | Plain-language verdict. |
| lowNote | No | Lowest note of the song as a MIDI number. |
| highNote | No | Highest note of the song as a MIDI number. |
| whyItFits | No | |
| fitDetails | No | Labels behind the scores. |
| matchScore | Yes | Overall suitability for this voice, 0-100. |
| lowNoteName | No | Same as lowNote, as a note name like "G2". |
| rangeSource | No | Provenance tag for the range, e.g. "estimated_curated_seed". |
| riskWarning | No | |
| highNoteName | No | Same as highNote, as a note name like "C#5". |
| suggestedKey | No | Transposition advice, e.g. "Try a lower key". |
| vocalFitScore | No | How well the song range sits inside the singer range, 0-100. |
| likelyVoiceFit | No | |
| tessituraScore | No | How comfortable the song sits where the voice spends most time, 0-100. |
| difficultyScore | No | Karaoke difficulty, 0-100. Higher is harder. |
| rangeConfidence | Yes | 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 | No | Fit against the voice type lane, 0-100. Can be high while matchScore is low when the range still exceeds the singer. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds behavioral context beyond these by explaining that the tool not only scores but also 'explain why it fits or does not, including a suggested key to transpose to.' This describes the output behavior without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the core purpose, and each sentence contributes necessary information: what it does, when to use it, and a prerequisite. No wasted words or redundant restating of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the presence of rich annotations, a complete input schema with 100% descriptions, and an output schema, the description fully covers the necessary context. It tells the agent exactly when and how to invoke the tool, and the schema/output schema cover the technical details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description adds valuable semantic context for the slug parameter by noting it comes from search_songs. This extra guidance helps the agent understand the parameter's provenance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Score a specific catalog song against a singer's range and explain why it fits or does not.' It distinguishes itself from siblings like recommend_songs and group_song_fit by focusing on a single song evaluation, and directly mentions the search_songs prerequisite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: 'Call this when someone asks whether they can sing a particular song.' It also gives a clear instruction to resolve the song via search_songs first. While it doesn't explicitly state when not to use it or name alternatives, the context is unambiguous and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vocal_profileBuild a vocal profileARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| rangeLow | Yes | Lowest comfortable note, as a note name like "D3" or a raw MIDI number. | |
| rangeHigh | Yes | Highest comfortable note, as a note name like "C5" or a raw MIDI number. | |
| voiceType | No | Optional voice type hint (soprano, mezzo, alto, tenor, baritone, bass). Inferred from the range when omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| vocalId | Yes | Human-readable profile label, e.g. "Tenor - Balanced tone". |
| rangeLow | Yes | Lowest comfortable note as MIDI. |
| rangeHigh | Yes | Highest comfortable note as MIDI. |
| toneLabel | No | |
| voiceType | Yes | |
| humProfile | No | Underlying measurements. Timbre fields stay null until an actual hum recording has been analyzed. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly and idempotent, and the description adds context by noting the profile is 'normalized' and 'persistent', and that it is reusable. This clarifies that the tool transforms input into a stable, shareable profile, complementing the annotation-level safety information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff: first sentence defines the function, second provides usage timing. It is front-loaded with the core purpose and ends with actionable guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a complete input schema, an output schema, and comprehensive annotations, the description does not need to explain return values. It adds the essential workflow context and is fully self-contained for an agent to decide when to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all three parameters with detailed descriptions (e.g., 'Lowest comfortable note, as a note name like "D3" or a raw MIDI number'). The description does not add parameter-specific meaning beyond the schema, which is acceptable given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: 'Turn a singer's vocal range into a normalized HumMatch vocal profile' and identifies the output components (Vocal ID, voice type, tone label). It clearly differentiates this tool from sibling tools, which focus on song fitting and recommendations, by being a profile-building prerequisite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs when to use: 'Call this first when you know someone's range and want a profile to reuse across the other HumMatch tools.' This provides both a trigger condition and a contrast with alternative tools, establishing this as the initial step in a workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
group_song_fitFind songs a group can sing togetherARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| profiles | Yes | Two or more singers, each with a rangeLow and rangeHigh. |
Output Schema
| Name | Required | Description |
|---|---|---|
| songs | Yes | |
| sharedRange | Yes | The overlap every supplied singer can reach. Null bounds mean no shared range exists. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds context about the task but does not disclose behavioral details like handling of non-overlapping ranges or note format assumptions. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core function and then enriched with use-case examples. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficiently complete for a read-only analysis tool with an output schema. It explains the input, purpose, and when to use it. Minor missing details around edge cases (e.g., no overlap) are not critical given the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameter descriptions, including the structure of profiles with rangeLow/rangeHigh. The description simply restates 'two or more singers' ranges' without adding new semantic details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: finding the shared vocal range and songs within it for two or more singers. It also distinguishes itself from siblings by focusing on group compatibility rather than individual song checks or recommendations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage contexts (karaoke, duets, choir, worship team) and suggests when to call it ('what can we all sing' question). It lacks explicit exclusions or alternative tool names, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_songsFind songs that fit a voiceARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many songs to return per bucket (default 12, max 50). | |
| rangeLow | Yes | Lowest comfortable note, as a note name like "D3" or a raw MIDI number. | |
| rangeHigh | Yes | Highest comfortable note, as a note name like "C5" or a raw MIDI number. | |
| voiceType | No | Optional voice type hint (soprano, mezzo, alto, tenor, baritone, bass). Inferred from the range when omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| matches | Yes | Ranked best matches overall. |
| vocalId | Yes | |
| easyWins | No | Comfortable and easy to sing. |
| rangeLow | No | |
| rangeHigh | No | |
| voiceType | Yes | |
| bestSafePicks | No | Lowest-risk choices. |
| groupFriendly | No | Work well with other singers. |
| confidenceTier | No | |
| riskyPicksToAvoid | No | Scored, but they exceed the comfortable range. |
| popularCrowdPleasers | No | Well-known songs that still fit. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint as safe, so the bar is lower. The description adds behavioral context: 'scored for range fit, karaoke difficulty, and voice-type suitability' and the output structure with named buckets. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: purpose, when-to-use, and return structure. Every sentence adds value, is front-loaded, and avoids redundancy with the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, an output schema exists (so return values are covered), and the description explains the key behavior, use cases, and output buckets. It is complete for an agent to understand when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add significant syntax or domain meaning beyond the schema—'range' and 'voice-type' are mentioned but not expanded with new parameter-specific details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Rank') and resource ('the HumMatch catalog') and clearly states the outcome: 'return the songs they can actually sing, scored for range fit, karaoke difficulty, and voice-type suitability.' It also distinguishes from siblings by emphasizing 'one singer' versus group-oriented tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit call scenarios: 'when someone asks what they should sing, what suits their voice or range, or wants karaoke song suggestions.' It does not mention when-not-to-use or alternatives, but the context is clear and sufficient for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_songsSearch the song catalogARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search text: a song title, an artist, or both. | |
| limit | No | Maximum results (default 20, max 50). | |
| rangeLow | No | Optional. Lowest note of the singer, to score and rank the results by fit. | |
| rangeHigh | No | Optional. Highest note of the singer, to score and rank the results by fit. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| query | Yes | |
| songs | Yes | Results. Scored fields are present only when rangeLow and rangeHigh were supplied. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint annotations, the description discloses that providing rangeLow/rangeHigh scores every result and ranks by fit, and that it resolves songs to catalog slugs. This adds behavioral context not captured in annotations, though it could mention behavior when no results are found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a purpose: purpose, use cases, and parameter behavior. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return format is covered. The description explains use cases, relation to check_song_fit, ranking behavior, and parameter usage, making it complete for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema fully describes all 4 parameters, and the description adds semantic context: q searches title or artist, rangeLow/rangeHigh are used for scoring/ranking results. Limit is self-explanatory, so the description provides meaningful value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Search HumMatch by song title or artist' – a specific verb and resource. It further distinguishes from siblings by noting check_song_fit needs the catalog slug from this tool and that it can look up a song's measured vocal range.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this to resolve a song someone named into the catalog slug that check_song_fit needs' explicitly gives when-to-use context, and the rangeLow/rangeHigh guidance explains when to enrich the search. This clearly positions the tool relative to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides keyless lyrics lookup for songs by artist and title, with a suggest tool for query autocomplete.11MIT
- FlicenseNot gradedqualityCmaintenanceEnables music search, metadata retrieval, local audio analysis (tempo, key, energy), recommendations, song recognition, and classical work resolution via Spotify, Last.fm, AudD, MusicBrainz, and Songkick APIs.
- AlicenseNot gradedqualityDmaintenanceEnables musical analysis of MIDI and musicXML files using music21, providing tools for key detection, harmony, melody, rhythm, form analysis, counterpoint checking, and motif extraction.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to generate, inspect, and micro-tune OpenUtau .ustx project files and DiffSinger neural expression curves.MIT