{"_id":"@bluesprincemedia/thiri-mcp","_rev":"10-1f1db1f8b9adcf10537434147140720a","name":"@bluesprincemedia/thiri-mcp","dist-tags":{"latest":"0.5.3"},"versions":{"0.1.0":{"name":"@bluesprincemedia/thiri-mcp","version":"0.1.0","author":{"name":"Blues Prince Media","email":"api@bluesprince.ai"},"license":"MIT","_id":"@bluesprincemedia/thiri-mcp@0.1.0","maintainers":[{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"}],"bin":{"thiri-mcp":"dist/index.js"},"dist":{"shasum":"10a0ab94832289f9bce3d4d13851a5fa043be9a5","tarball":"https://registry.npmjs.org/@bluesprincemedia/thiri-mcp/-/thiri-mcp-0.1.0.tgz","fileCount":4,"integrity":"sha512-TZK0WqbNMPA/LhtN/G/JBEF3h3nLEjNC6jRD+dZJl2/8WV8JRaLS9l2UvMH8bWVfTfDyW2xi3r6cK9i9i9Ik0A==","signatures":[{"sig":"MEUCICwi4GyWSjP9pbMsrSL601LOqjYdxPmY8gQ7bSqhLOlFAiEA65EJ4k2I6UDgDr+YJvp4JzF992fE206GWFPKBZXEtA4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13814},"type":"module","gitHead":"604daf02861de67a1b4219bee38d0fc467dfe307","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"},"_npmVersion":"11.11.0","description":"MCP server for the THIRI Chord Intelligence API — analyze, resolve, voice, and reharmonize any chord symbol","directories":{},"_nodeVersion":"25.8.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^25.9.1"},"_npmOperationalInternal":{"tmp":"tmp/thiri-mcp_0.1.0_1780246758222_0.9545882509258954","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bluesprincemedia/thiri-mcp","version":"0.2.0","author":{"name":"Blues Prince Media","email":"api@bluesprince.ai"},"license":"MIT","_id":"@bluesprincemedia/thiri-mcp@0.2.0","maintainers":[{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"}],"bin":{"thiri-mcp":"dist/index.js"},"dist":{"shasum":"b4647403b3fca1719a110406d41ac1a7f2df0aba","tarball":"https://registry.npmjs.org/@bluesprincemedia/thiri-mcp/-/thiri-mcp-0.2.0.tgz","fileCount":4,"integrity":"sha512-aoyXNybTlX3r7vOYCcovgzZ7jObUTQXXneOr2QHay5i0FUdwjir/y4dFKiyNeUlJRP/5xzi/Z7AKpw+dpH8HYg==","signatures":[{"sig":"MEUCIQDc8WRwjfv/bO4BN0OzfBRfFcsHEypQqMB0Z0aJ9gVFWQIgJZ8yEM15d1kTajwcd40eByaunozxleE8G5u2Cdi/SaE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17515},"type":"module","gitHead":"d9941cef37251ba06f6275199b1044a1b058391a","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"},"_npmVersion":"11.11.0","description":"MCP server for the THIRI Chord Intelligence API — analyze, resolve, voice, and reharmonize any chord symbol","directories":{},"_nodeVersion":"25.8.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^25.9.1"},"_npmOperationalInternal":{"tmp":"tmp/thiri-mcp_0.2.0_1780358254947_0.46091951771830675","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@bluesprincemedia/thiri-mcp","version":"0.2.1","keywords":["mcp","model-context-protocol","music","chords","music-theory","reharmonization","thiri"],"author":{"name":"Blues Prince Media","email":"api@bluesprince.ai"},"license":"MIT","_id":"@bluesprincemedia/thiri-mcp@0.2.1","maintainers":[{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"}],"homepage":"https://thiri.ai/developers.html","bugs":{"url":"https://github.com/BluesPrince/thiri-mcp/issues"},"bin":{"thiri-mcp":"dist/index.js"},"dist":{"shasum":"f7ac5243712146dc91c3aadd4b2d0f9f725a4e44","tarball":"https://registry.npmjs.org/@bluesprincemedia/thiri-mcp/-/thiri-mcp-0.2.1.tgz","fileCount":5,"integrity":"sha512-8qdUIwznR0LaZC8SGLU9h1tAgUo72Tm4B9Ihe2m4ZUzsMyMknnS08GwK1StwXbpcjfXUu05e+ARlg60TGTJnXg==","signatures":[{"sig":"MEYCIQCSmWvPOCc+sL1xFVft+i/5EmKAj1uH2Msvz5WePZEDiwIhAKt1UIB3FRSoi88HjHS0tY1BXWYCdWzhBobpY9aNjJV8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20767},"type":"module","gitHead":"483ba880dc5d64ff30262b3bd2200dda9b55623f","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"},"repository":{"url":"git+https://github.com/BluesPrince/thiri-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server for the THIRI Chord Intelligence API — analyze, resolve, voice, and reharmonize any chord symbol","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^25.9.1"},"_npmOperationalInternal":{"tmp":"tmp/thiri-mcp_0.2.1_1781568751365_0.778864670181713","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@bluesprincemedia/thiri-mcp","version":"0.2.2","keywords":["mcp","model-context-protocol","music-theory","music-theory-api","music-theory-mcp","chord","chords","chord-analysis","roman-numeral-analysis","voicing","voice-leading","reharmonization","harmony","ai-agent","claude","cursor","thiri"],"author":{"name":"Blues Prince Media","email":"api@bluesprince.ai"},"license":"MIT","_id":"@bluesprincemedia/thiri-mcp@0.2.2","maintainers":[{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"}],"homepage":"https://thiri.ai/developers.html","bugs":{"url":"https://github.com/BluesPrince/thiri-mcp/issues"},"bin":{"thiri-mcp":"dist/index.js"},"dist":{"shasum":"753dc63d48bb49ede6df469d998677b2d47a6966","tarball":"https://registry.npmjs.org/@bluesprincemedia/thiri-mcp/-/thiri-mcp-0.2.2.tgz","fileCount":5,"integrity":"sha512-Xdz4AZxkv1lh1qhWfpDVUziY2mSfSshCfWzJHfMewafl5fKKI7Q9wz6GNpmuaA4c9qcFNXTEEoVMVBIoboVSEA==","signatures":[{"sig":"MEUCIQC9HSHaTmWyPrMOen84JWiKUmKN7Ez5wk1ZXsSr3Cd7EgIgJ7YtIIB6aohBJfyxKthFEdVwR7k/3k8VHpetgOaA3zU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21394},"type":"module","gitHead":"de210c3492f7ca4e3b15103025760773706a6b9d","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"},"repository":{"url":"git+https://github.com/BluesPrince/thiri-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Deterministic music theory API + MCP server for AI builders — analyze chords, roman-numeral analysis, voicings, and reharmonization, computed not guessed.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^25.9.1"},"_npmOperationalInternal":{"tmp":"tmp/thiri-mcp_0.2.2_1781614763089_0.9031300699583891","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@bluesprincemedia/thiri-mcp","version":"0.2.3","keywords":["mcp","model-context-protocol","music-theory","music-theory-api","music-theory-mcp","chord","chords","chord-analysis","roman-numeral-analysis","voicing","voice-leading","reharmonization","harmony","ai-agent","claude","cursor","thiri"],"author":{"name":"Blues Prince Media","email":"api@bluesprince.ai"},"license":"MIT","_id":"@bluesprincemedia/thiri-mcp@0.2.3","maintainers":[{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"}],"homepage":"https://thiri.ai/developers.html","bugs":{"url":"https://github.com/BluesPrince/thiri-mcp/issues"},"bin":{"thiri-mcp":"dist/index.js"},"dist":{"shasum":"77df2153608b167efc384c7228af8ab220a0b072","tarball":"https://registry.npmjs.org/@bluesprincemedia/thiri-mcp/-/thiri-mcp-0.2.3.tgz","fileCount":5,"integrity":"sha512-C9NX+4zTtuQ//ad4XBQsbuPK1g9BIECGbm/Eyg6qaB2W7Loi0RlgHDC0r14FVEtXnGbOf4uIwYcASuGN6CycaQ==","signatures":[{"sig":"MEQCIGnhAG1lEQWoE/JTQbZiBJ44nh1tGAEoZ91sDO7EoT/vAiAheoGx481MZcdmuWM8v3Flf/wFNpIwdV1qj31BaEfb4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21399},"type":"module","gitHead":"de210c3492f7ca4e3b15103025760773706a6b9d","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"},"repository":{"url":"git+https://github.com/BluesPrince/thiri-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Deterministic music theory MCP server + REST API for AI builders — analyze chords, roman-numeral analysis, voicings, and reharmonization, computed not guessed.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^25.9.1"},"_npmOperationalInternal":{"tmp":"tmp/thiri-mcp_0.2.3_1781620422877_0.20726908178349657","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bluesprincemedia/thiri-mcp","version":"0.3.0","keywords":["mcp","model-context-protocol","music-theory","music-theory-api","music-theory-mcp","chord","chords","chord-analysis","roman-numeral-analysis","voicing","voice-leading","reharmonization","harmony","csound","conduct","ai-agent","claude","cursor","thiri"],"author":{"name":"Blues Prince Media","email":"api@bluesprince.ai"},"license":"MIT","_id":"@bluesprincemedia/thiri-mcp@0.3.0","maintainers":[{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"}],"homepage":"https://thiri.ai/developers.html","bugs":{"url":"https://github.com/BluesPrince/thiri-mcp/issues"},"bin":{"thiri-mcp":"dist/index.js","thiri-conductor-mcp":"conductor-server.mjs","thiri-composition-mcp":"composition-server.mjs"},"dist":{"shasum":"b2972437bb17194a1aec7d4e804990d94e7a01fa","tarball":"https://registry.npmjs.org/@bluesprincemedia/thiri-mcp/-/thiri-mcp-0.3.0.tgz","fileCount":21,"integrity":"sha512-ODscRY0IVzhgy08rqMrTfu1A1Ik5CWOOR4RDMa4/qmHKYmO2XuFeU3MMtfBUrxzIdg1QMDp1gbUXEiSHKUEEHg==","signatures":[{"sig":"MEQCIBUgWAq6yMXXtAJGOjH9Maq+h8EsHA4hXyEPT2WIYPAlAiALw0HRNSMAfW3xFFdOUloppO3gDySschG3BTOvBbgrMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1435840},"type":"module","gitHead":"113e040fa2874ee7a04372ca6bcb3201cd78710b","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js","test:conductor":"node mcp-conductor-test.mjs","test:composition":"node mcp-comp-test.mjs"},"_npmUser":{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"},"repository":{"url":"git+https://github.com/BluesPrince/thiri-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Deterministic music theory MCP server + REST API for AI builders — analyze chords, roman-numeral analysis, voicings, reharmonization, and conduct, computed not guessed.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^25.9.1"},"_npmOperationalInternal":{"tmp":"tmp/thiri-mcp_0.3.0_1781913192146_0.7085965069334978","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@bluesprincemedia/thiri-mcp","version":"0.5.0","keywords":["mcp","model-context-protocol","music-theory","music-theory-api","music-theory-mcp","chord","chords","chord-analysis","roman-numeral-analysis","voicing","voice-leading","reharmonization","harmony","csound","conduct","ai-agent","claude","cursor","thiri"],"author":{"name":"Blues Prince Media","email":"api@bluesprince.ai"},"license":"SEE LICENSE IN LICENSE","_id":"@bluesprincemedia/thiri-mcp@0.5.0","maintainers":[{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"}],"homepage":"https://thiri.ai/developers.html","bugs":{"url":"https://github.com/BluesPrince/thiri-mcp/issues"},"bin":{"thiri-mcp":"dist/index.js","thiri-conductor-mcp":"conductor-server.mjs","thiri-composition-mcp":"composition-server.mjs"},"dist":{"shasum":"daae9af5eb9e8bfaf4f5640c62f215d48536a5a8","tarball":"https://registry.npmjs.org/@bluesprincemedia/thiri-mcp/-/thiri-mcp-0.5.0.tgz","fileCount":9,"integrity":"sha512-fLxDT+XvcgU1wn5BBlWkLQ2xRj2n21p7IGQLDxVSYkvodBOrQRUmKH4F4yLBcIzGypmTyrrF5YVv52u9v86sTw==","signatures":[{"sig":"MEUCIQD4SYTcX5MUf24B0jAU2IiqEljsNrtVqIDg/aS4j6zvyQIgdYTDq/0taVssd8AVvkAgz8bCKyaEETSFP02JUyznFUY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1345169},"type":"module","gitHead":"d454632a6c08f8319d23c8a0b9e38ed4bb0cd9dc","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js","test:composition":"node mcp-comp-test.mjs"},"_npmUser":{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"},"repository":{"url":"git+https://github.com/BluesPrince/thiri-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"Deterministic music theory MCP server + REST API for AI builders — analyze chords, roman-numeral analysis, voicings, reharmonization, and conduct, computed not guessed.","directories":{},"_nodeVersion":"25.2.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^25.9.1"},"_npmOperationalInternal":{"tmp":"tmp/thiri-mcp_0.5.0_1784838844229_0.21652391404292537","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@bluesprincemedia/thiri-mcp","version":"0.5.1","keywords":["mcp","model-context-protocol","music-theory","music-theory-api","music-theory-mcp","chord","chords","chord-analysis","roman-numeral-analysis","voicing","voice-leading","reharmonization","harmony","csound","conduct","ai-agent","claude","cursor","thiri"],"author":{"name":"Blues Prince Media","email":"api@bluesprince.ai"},"license":"PolyForm-Noncommercial-1.0.0","_id":"@bluesprincemedia/thiri-mcp@0.5.1","maintainers":[{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"}],"homepage":"https://thiri.ai/developers.html","bugs":{"url":"https://github.com/BluesPrince/thiri-mcp/issues"},"bin":{"thiri-mcp":"dist/index.js","thiri-conductor-mcp":"conductor-server.mjs","thiri-composition-mcp":"composition-server.mjs"},"dist":{"shasum":"5326526a4975315d1c11b2c76395e61aec295e0a","tarball":"https://registry.npmjs.org/@bluesprincemedia/thiri-mcp/-/thiri-mcp-0.5.1.tgz","fileCount":9,"integrity":"sha512-pw8L/THiYnhSAEj0XToLB+Z5eAIpDOHNFrElr593U+jLjjqfRYjpxNXt2hTh+6eJTYU4oJNq3ddNy4jq8HuoyA==","signatures":[{"sig":"MEQCIAaIv1/EN1MNrOU0yxpAHXV6rnrPqDPTtDB2MOc7HRElAiAFXXS9wIU8PT7XaJO0FFL37k59S38bnvPHcXojJ6AteA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1348661},"type":"module","gitHead":"8bddd32c7063df4f89f8496847c77e8576fc03e6","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js","test:composition":"node mcp-comp-test.mjs"},"_npmUser":{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"},"repository":{"url":"git+https://github.com/BluesPrince/thiri-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"Deterministic music theory MCP server + REST API for AI builders — analyze chords, roman-numeral analysis, voicings, reharmonization, and conduct, computed not guessed.","directories":{},"_nodeVersion":"25.2.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^25.9.1"},"_npmOperationalInternal":{"tmp":"tmp/thiri-mcp_0.5.1_1785360595450_0.3395702076503533","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@bluesprincemedia/thiri-mcp","version":"0.5.2","keywords":["mcp","model-context-protocol","music-theory","music-theory-api","music-theory-mcp","chord","chords","chord-analysis","roman-numeral-analysis","voicing","voice-leading","reharmonization","harmony","csound","conduct","ai-agent","claude","cursor","thiri"],"author":{"name":"Blues Prince Media","email":"dennison@bluesprincemedia.com"},"license":"PolyForm-Noncommercial-1.0.0","_id":"@bluesprincemedia/thiri-mcp@0.5.2","maintainers":[{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"}],"homepage":"https://thiri.ai/developers.html","bugs":{"url":"https://github.com/BluesPrince/thiri-mcp/issues"},"bin":{"thiri-mcp":"dist/index.js","thiri-conductor-mcp":"conductor-server.mjs","thiri-composition-mcp":"composition-server.mjs"},"dist":{"shasum":"63f14c30cb6f5c34b68741433a46cfaf2986d2d8","tarball":"https://registry.npmjs.org/@bluesprincemedia/thiri-mcp/-/thiri-mcp-0.5.2.tgz","fileCount":9,"integrity":"sha512-3teQ4XTjtSBjhgGyK0y5Dv1Awfbl4zKKvXANU8n9TLI53r+QhLlGBp+J39HtdMV+Mf6Ipc7Kya7XdgfXwjyLGg==","signatures":[{"sig":"MEUCIQD/HYWtuTXgG1d+xIqRCxBne49DFqGmMm1dd3seAIEw+gIgcuAcBrN5cbE7Sa6YFBLPf3MsU/dQHPZlDfT7BX8V+Jw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1348738},"type":"module","gitHead":"5439694887a5010b6d85f67435f3798e01800dc9","mcpName":"ai.thiri/chord-intelligence","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/index.js","test:composition":"node mcp-comp-test.mjs"},"_npmUser":{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"},"repository":{"url":"git+https://github.com/BluesPrince/thiri-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"Deterministic music theory MCP server + REST API for AI builders — analyze chords, roman-numeral analysis, voicings, reharmonization, and conduct, computed not guessed.","directories":{},"_nodeVersion":"25.2.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^25.9.1"},"_npmOperationalInternal":{"tmp":"tmp/thiri-mcp_0.5.2_1785555492873_0.7775861807517486","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@bluesprincemedia/thiri-mcp","mcpName":"ai.thiri/chord-intelligence","version":"0.5.3","description":"Deterministic music theory MCP server + REST API for AI builders — analyze chords, roman-numeral analysis, voicings, reharmonization, and conduct, computed not guessed.","author":{"name":"Blues Prince Media","email":"dennison@bluesprincemedia.com"},"license":"PolyForm-Noncommercial-1.0.0","homepage":"https://thiri.ai/developers.html","repository":{"type":"git","url":"git+https://github.com/BluesPrince/thiri-mcp.git"},"bugs":{"url":"https://github.com/BluesPrince/thiri-mcp/issues"},"keywords":["mcp","model-context-protocol","music-theory","music-theory-api","music-theory-mcp","chord","chords","chord-analysis","roman-numeral-analysis","voicing","voice-leading","reharmonization","harmony","csound","conduct","ai-agent","claude","cursor","thiri"],"type":"module","bin":{"thiri-mcp":"dist/index.js","thiri-conductor-mcp":"conductor-server.mjs","thiri-composition-mcp":"composition-server.mjs"},"scripts":{"build":"tsc","dev":"tsc --watch","start":"node dist/index.js","test:composition":"node mcp-comp-test.mjs"},"dependencies":{"@modelcontextprotocol/sdk":"^1.12.1","zod":"^4.4.3"},"devDependencies":{"@types/node":"^25.9.1","typescript":"^5.8.3"},"gitHead":"f0060c6d47567eea19a38f63252fec7c0df5355c","_id":"@bluesprincemedia/thiri-mcp@0.5.3","_nodeVersion":"25.2.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-wT+iA+1bBGfDsYpF0ZVyoL+j2eTtNQYQ5DVtEUebEFQVvQbKxDyYVjq/PWrLU4D+1VpeR5UojzaneqYHUMA6vw==","shasum":"6d717d54aaa1f2cc8327732241e6342389c5d545","tarball":"https://registry.npmjs.org/@bluesprincemedia/thiri-mcp/-/thiri-mcp-0.5.3.tgz","fileCount":9,"unpackedSize":1348727,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEJYMDHU8s7xhFGaRU9RbKVdrvI/El0sQax0x8h3KmwtAiAr2IssQlsTZDhi1kpCAQGbibNzZ7IR3N94zjPKAfJJNQ=="}]},"_npmUser":{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"},"directories":{},"maintainers":[{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/thiri-mcp_0.5.3_1786318393061_0.4657482926713248"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-31T16:59:18.067Z","modified":"2026-08-09T23:33:13.389Z","0.1.0":"2026-05-31T16:59:18.389Z","0.2.0":"2026-06-01T23:57:35.086Z","0.2.1":"2026-06-16T00:12:31.569Z","0.2.2":"2026-06-16T12:59:23.208Z","0.2.3":"2026-06-16T14:33:43.033Z","0.3.0":"2026-06-19T23:53:12.282Z","0.5.0":"2026-07-23T20:34:04.467Z","0.5.1":"2026-07-29T21:29:55.642Z","0.5.2":"2026-08-01T03:38:13.018Z","0.5.3":"2026-08-09T23:33:13.249Z"},"bugs":{"url":"https://github.com/BluesPrince/thiri-mcp/issues"},"author":{"name":"Blues Prince Media","email":"dennison@bluesprincemedia.com"},"license":"PolyForm-Noncommercial-1.0.0","homepage":"https://thiri.ai/developers.html","keywords":["mcp","model-context-protocol","music-theory","music-theory-api","music-theory-mcp","chord","chords","chord-analysis","roman-numeral-analysis","voicing","voice-leading","reharmonization","harmony","csound","conduct","ai-agent","claude","cursor","thiri"],"repository":{"type":"git","url":"git+https://github.com/BluesPrince/thiri-mcp.git"},"description":"Deterministic music theory MCP server + REST API for AI builders — analyze chords, roman-numeral analysis, voicings, reharmonization, and conduct, computed not guessed.","maintainers":[{"name":"bluesrincemedia","email":"dennison@bluesprincemedia.com"}],"readme":"# 🎷 THIRI Chord Intelligence — MCP Server\n\n[![npm](https://img.shields.io/npm/v/@bluesprincemedia/thiri-mcp)](https://www.npmjs.com/package/@bluesprincemedia/thiri-mcp)\n[![npm downloads](https://img.shields.io/npm/dm/@bluesprincemedia/thiri-mcp)](https://www.npmjs.com/package/@bluesprincemedia/thiri-mcp)\n[![CI](https://github.com/BluesPrince/thiri-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/BluesPrince/thiri-mcp/actions/workflows/ci.yml)\n[![license](https://img.shields.io/badge/license-PolyForm%20NC%201.0.0-blue)](./LICENSE)\n![MCP](https://img.shields.io/badge/MCP-server-black)\n[![Glama score](https://glama.ai/mcp/servers/BluesPrince/thiri-mcp/badges/score.svg)](https://glama.ai/mcp/servers/BluesPrince/thiri-mcp)\n\n**Give your AI real music theory.** THIRI is the deterministic **music theory MCP server + API** for AI builders — it lets Claude, Cursor, or any [MCP](https://modelcontextprotocol.io) agent **analyze chords, run roman-numeral analysis, generate voicings, and reharmonize progressions** with answers that are *computed, not guessed*.\n\nLLMs hallucinate music theory: wrong notes, fake roman numerals, voicings that don't voice-lead. THIRI is a **deterministic** engine (pitch-class-set theory over ℤ/12) behind a hosted API — so `C7sus4` keeps its suspension, `Caug` spells `C E G#`, and \"Coltrane changes on Dm7 G7 Cmaj7\" returns `Cmaj7 Ab7 Abmaj7 E7`, every time.\n\n**Downstream of Suno / Udio or any generator?** Wrap the output and get a correct chord chart your agent can trust. And unlike `tonal.js` or `music21`, THIRI is hosted and agent-native (no install, any language) — and it *reharmonizes* and *voice-leads*, not just looks chords up.\n\n> ⭐ If this is useful, star the repo — it helps other musicians and agent builders find it.\n\n## Musicians: 2-minute setup (no code)\n\n1. Get a free key at **[build.thiri.ai/developers](https://build.thiri.ai/developers)**\n2. In **Claude**: Settings → **Connectors** → **Add custom connector** → URL `https://mcp.thiri.ai/mcp` → paste your `sk_live_` key\n3. Ask Claude: *\"Reharmonize Dm7 G7 Cmaj7 with Coltrane changes.\"*\n\nThat's it — no install, no config file. Builders: full install options (Claude Code, Desktop config, raw HTTP) are [below](#install).\n\n## What you can ask\n> *\"Analyze Dm7b5 in C.\"* → `iiø7`, half-diminished, borrowed predominant, + scale options\n> *\"What notes are in C7sus4?\"* → `C F G Bb` (the suspension survives)\n> *\"Give me a rootless Cmaj7 voicing, then voice-lead into Dm7.\"* → voicings + a voice-leading score\n> *\"Reharmonize Dm7 G7 Cmaj7 with Coltrane changes.\"* → `Cmaj7 Ab7 Abmaj7 E7`\n\n## Tools\n| Tool | What it does |\n|------|-------------|\n| `analyze_chord` | Chord → root, quality, intervals, roman numeral & harmonic function (secondary dominants, modal-interchange labels) |\n| `resolve_chord` | Chord → spelled notes (enharmonically correct), frequencies, MIDI, scale recommendations |\n| `generate_voicing` | Instrument-ready voicings (rootless/bill_evans, shell, triad, pad, guide-tones, drop-2/3); pass `previousNotes` for a **voice-leading score**; `colorPreferences` for explicit tensions |\n| `reharmonize` | Progression reharmonization — 8 techniques: `tritone_sub`, `ii_v_insertion`, `modal_interchange`, `diminished_passing`, `secondary_dominant`, `chain_of_dominants`, `coltrane_changes`, `backdoor` (or `auto`) |\n| `conduct_band` | Natural-language band conduct → lanes + MIDI (hosted MCP v0.3+) |\n\n> Runs on the **v2 grid engine** — correct sus chords, real triads, enharmonic spelling, all altered dominants — with request timeouts, quota reporting, and structured errors.\n\n### Conductor & composition companions (Desktop only)\n\nFor **hear-it** agent loops (conduct → server-side render → WAV through your speakers), add a second local server alongside hosted theory tools:\n\n```json\n{\n  \"mcpServers\": {\n    \"thiri\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@bluesprincemedia/thiri-mcp\"],\n      \"env\": { \"THIRI_API_KEY\": \"sk_live_your_key\" }\n    },\n    \"thiri-conductor\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@bluesprincemedia/thiri-mcp\", \"thiri-conductor-mcp\"],\n      \"env\": { \"THIRI_API_KEY\": \"sk_live_your_key\" }\n    },\n    \"thiri-composition\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@bluesprincemedia/thiri-mcp\", \"thiri-composition-mcp\"]\n    }\n  }\n}\n```\n\n| Bin | Tools |\n|-----|-------|\n| `thiri-conductor-mcp` | `conduct_band`, `render_audio` (server-side Csound via `POST /v2/render`), `play_audio`, `search_corpus` |\n| `thiri-composition-mcp` | Composition IR tools + `play_composition` (fluidsynth preview) |\n\nRendering runs **server-side** as of v0.5.0 — no Csound install needed. Proof: `npm run test:conductor` · live docs: [build.thiri.ai/lab/conductor-mcp](https://build.thiri.ai/lab/conductor-mcp) · [agent recipes](https://build.thiri.ai/lab/agent-recipes).\n\n### Conductor Agent (vibe compose)\n\nEnd-to-end persona for local vibe composition — skill, CLI, and Band dashboard panel:\n\n| Entry | Command / path |\n|-------|----------------|\n| **Cursor skill** | Copy `THIRI/lab/skills/thiri-conductor-agent/SKILL.md` → `~/.cursor/skills/thiri-conductor-agent/SKILL.md` |\n| **CLI** | `cd thiri-mcp && npm run conductor:vibe -- \"gospel ballad in F minor\"` |\n| **Dashboard** | `npm run dev:studio` → [localhost:5173/band](http://localhost:5173/band) → **Vibe Conduct** panel |\n| **Lab proof** | [build.thiri.ai/lab/conductor-agent](https://build.thiri.ai/lab/conductor-agent) |\n\nDual MCP config above + `mapConductResultToStudioModules` after each `conduct_band`. Last CLI render writes `~/.thiri/conductor-last.json` (local only, not committed).\n\n### Flagship agent recipe (analyze → conduct → render → critique)\n\nPaste in order after dual MCP config above:\n\n1. **Analyze** — *\"Analyze Dm7 G7 Cmaj7 in key C with analyze_chord; summarize roman numerals and tension.\"*\n2. **Conduct** — *\"conduct_band: warm Rhodes pad, walking bass, brush drums, 8 bars medium swing in C.\"*\n3. **Render** — *\"render_audio from the conduct result at tempo 120.\"*\n4. **Critique** — *\"play_audio; critique voice-leading and register balance; suggest one revision.\"*\n\nFull prompts: [build.thiri.ai/lab/agent-recipes](https://build.thiri.ai/lab/agent-recipes)\n\n### Hosted vs local boundary\n\n| Surface | Audio render |\n|---------|--------------|\n| `mcp.thiri.ai` / hosted connector | No — theory + `conduct_band` lanes only |\n| Local `thiri-conductor-mcp` | Yes — WAV rendered server-side (`POST /v2/render`), played locally; no Csound install needed |\n\n## Install\nGet a free key at **[build.thiri.ai/developers](https://build.thiri.ai/developers)**, then pick a path:\n\n**Claude Desktop / web / mobile — hosted (one-click custom connector, nothing to install):**\nSettings → Connectors → **Add custom connector** → URL `https://mcp.thiri.ai/mcp` → paste your `sk_live_` key on the consent page. Same 5 tools, same key, same quota — no config file, no `npx`.\n\n**Claude Code (one line):**\n```sh\nclaude mcp add thiri --env THIRI_API_KEY=sk_live_your_key -- npx -y @bluesprincemedia/thiri-mcp\n```\n\n**Claude Desktop** (`claude_desktop_config.json`):\n```json\n{\n  \"mcpServers\": {\n    \"thiri\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@bluesprincemedia/thiri-mcp\"],\n      \"env\": { \"THIRI_API_KEY\": \"sk_live_your_key\" }\n    }\n  }\n}\n```\n\n## Prefer raw HTTP? (no MCP needed)\nThe same engine is a plain REST API:\n```sh\ncurl -X POST https://chords.thiri.ai/v2/analyze \\\n  -H \"Authorization: Bearer YOUR_KEY\" -H \"content-type: application/json\" \\\n  -d '{\"chord\":\"Dm7b5\",\"key\":\"C\"}'\n```\nFive endpoints: `/v2/analyze`, `/v2/resolve`, `/v2/voicing`, `/v2/reharmonize`, `/v2/conduct`. See [`openapi.yaml`](./openapi.yaml).\n\n## Environment variables\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `THIRI_API_KEY` | (none) | Bearer token (`sk_live_…`) — get one at build.thiri.ai/developers |\n| `THIRI_API_URL` | `https://chords.thiri.ai` | API base (override only for local dev) |\n\n## Development\n```sh\nnpm install && npm run build && npm start\n```\n\n## License\n**PolyForm Noncommercial 1.0.0** — © 2026 Blues Prince Media. Free for personal,\nresearch, and noncommercial use; commercial use requires a license\n(dennison@bluesprincemedia.com). See [`LICENSE`](./LICENSE). Versions published at or\nbefore v0.5.0 remain under the MIT/PolyForm dual license they shipped with.\n\n> As of v0.5.0 the composition engine and Csound renderer run server-side behind\n> the hosted API (`POST /v2/compose`, `POST /v2/render`); their source no longer\n> ships in this package.\n","readmeFilename":"README.md"}