THIRI Chord Intelligence — Music Theory MCP Server
Server Details
Deterministic Music Theory for Claude, Cursor, and Autonomous AI Agents
Large Language Models (LLMs) frequently hallucinate music theory, leading to incorrect notes, false Roman numerals, and broken voice leading. THIRI solves this by providing a deterministic, mathematical music-theory engine (pitch-class-set theory over ℤ/12) directly to your AI.
It gives AI assistants precise, reproducible harmonic reasoning in milliseconds, allowing them to write correct musical scores, analyze progression
- 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 3/5 across 4 of 4 tools scored.
Each tool has a clear, distinct purpose: analyze parses chord structure, generate creates voicings, reharmonize alters progressions, and resolve provides resolution details. No functional overlap.
All tool names follow a consistent verb_noun pattern (analyze_chord, generate_voicing, reharmonize, resolve_chord), with clear active verbs and specific nouns.
Four tools is slightly below average but appropriate for a specialized music theory server. Each tool addresses a core aspect of chord handling without unnecessary bloat.
The set covers chord analysis, voicing generation, reharmonization, and resolution—core tasks in chord intelligence. Minor gaps like chord comparison or scale generation are absent but acceptable given the focused scope.
Available Tools
4 toolsanalyze_chordBInspect
Parse a chord into root, quality, intervals, and (with a key) roman numeral + function.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| chord | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It states the parsing action but omits details such as what happens on invalid input, whether the operation is safe/read-only, error handling, or output format. For a tool with zero annotation coverage, this lack of behavioral context is a significant gap.
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 a single sentence that conveys the core functionality without extraneous information. It is front-loaded with the key action and outputs, achieving maximal conciseness.
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?
Despite moderate complexity (music theory knowledge needed), the description is very brief. It lacks details on acceptable chord notation, interval interpretation, harmonic function definition, and return structure. With no output schema and 0% schema coverage, the description should compensate with additional context, but it does not.
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 coverage is 0%, so the description must add meaning. It clarifies that 'chord' is the symbol to parse and 'key' is optional, affecting roman numeral and function output. However, it does not specify the expected format for the chord string (e.g., 'C#m7'), note spelling conventions, or valid key values. This adds some value beyond the empty schema but is not comprehensive.
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 specifies the tool's function: parsing a chord into root, quality, intervals, and optionally roman numeral with function given a key. It uses a specific verb ('Parse') and resource ('chord'), and the outputs are distinctly listed, differentiating it from siblings like 'generate_voicing' or 'reharmonize'.
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?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, exclusions, or context for choosing it over siblings like 'resolve_chord' or 'reharmonize'. The usage context is only implicitly understood from the tool's purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_voicingCInspect
Instrument-ready voicing in a style; pass previousNotes for a voice-leading score.
| Name | Required | Description | Default |
|---|---|---|---|
| chord | Yes | ||
| style | No | ||
| octave | No | ||
| keyContext | No | ||
| previousNotes | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states the tool produces a voicing but does not describe return format, side effects, or permissions. It lacks detail on whether the operation is read-only or modifies state.
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 a single sentence that immediately states the main purpose and an optional feature. It is concise and front-loaded, though it sacrifices detail for brevity.
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 has 5 parameters, no output schema, and no annotations, the description is insufficient. It does not clarify what 'instrument-ready' means, how style affects output, or what the return value looks like. The presence of sibling tools heightens the need for more contextual completeness to avoid confusion.
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?
With 0% schema description coverage, the description should explain parameters beyond their names. Only `previousNotes` receives context (used for voice-leading score). Other parameters like `chord`, `style`, `octave`, and `keyContext` are left without explanation, leaving significant ambiguity.
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 indicates the tool generates an instrument-ready voicing in a style, and mentions optional voice-leading via previousNotes. It distinguishes itself from siblings like analyze_chord (analysis) and reharmonize (reharmonization) by focusing on voicing generation. However, the verb 'generate' is implied rather than explicit.
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?
No explicit guidance on when to use this tool versus alternatives (analyze_chord, reharmonize, resolve_chord). The mention of 'pass previousNotes for a voice-leading score' hints at a specific use case but does not provide selection criteria or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reharmonizeCInspect
Reharmonize a progression. Techniques: tritone_sub, ii_v_insertion, modal_interchange, diminished_passing, secondary_dominant, chain_of_dominants, coltrane_changes, backdoor (or auto).
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| technique | No | ||
| progression | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It discloses that a technique is applied to a progression, but does not specify whether the tool outputs a new progression or modifies the input, nor any side effects, permissions, or constraints beyond the technique list.
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 a single sentence, very concise, and front-loads the core action ('reharmonize a progression'). The techniques are listed efficiently. However, it sacrifices completeness for brevity.
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 3 parameters (one required), no output schema, and no annotations, the description is incomplete. It does not explain the output (e.g., new progression), how the key parameter affects behavior, or provide usage context. The tool performs a non-trivial operation and needs more detail.
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?
With 0% schema description coverage, the description must compensate for missing param documentation. It clarifies that 'progression' is an array of strings and lists allowed 'technique' values, but does not explain 'key' or the fact that 'key' is optional. The meaning of 'technique' is partially covered, but not comprehensively.
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 indicates the tool reharmonizes a chord progression by listing specific techniques. The verb 'reharmonize' and resource 'progression' are specific, and the sibling tools (analyze_chord, generate_voicing, resolve_chord) are distinct in purpose.
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?
No guidance on when to use reharmonize vs. siblings or which technique to choose. The description implies choosing a technique from the list but does not explain decision criteria or prerequisites (e.g., key requirement).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_chordBInspect
Resolve a chord to spelled notes, frequencies, MIDI, and recommended scales.
| Name | Required | Description | Default |
|---|---|---|---|
| chord | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full behavioral disclosure. It states what the tool does but omits details like input format requirements, behavior on invalid input, or output structure. Adequate but not comprehensive.
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 a single sentence with no superfluous words. It efficiently conveys the tool's purpose.
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 no output schema and no annotations, the description should provide more detail on the return structure. It lists outputs but not their format, which is a gap for a single-parameter 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 description coverage is 0%, so the description must compensate. It implies the 'chord' parameter is a chord name but does not specify accepted formats (e.g., 'C major' vs 'Cmaj7'), leaving ambiguity.
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 resolves a chord into specific outputs: spelled notes, frequencies, MIDI, and recommended scales. This clearly distinguishes it from sibling tools like analyze_chord, generate_voicing, and reharmonize.
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 no guidance on when to use this tool versus its siblings. It does not mention contexts, exclusions, or prerequisites.
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!