{"_id":"@calibress/rwav-bridge-mcp","_rev":"12-4a6910d8a293103f098475261336a622","name":"@calibress/rwav-bridge-mcp","dist-tags":{"latest":"0.2.17"},"versions":{"0.2.2":{"name":"@calibress/rwav-bridge-mcp","version":"0.2.2","license":"SEE LICENSE IN LICENSE","_id":"@calibress/rwav-bridge-mcp@0.2.2","maintainers":[{"name":"craigyp","email":"prescottc@btinternet.com"}],"os":["darwin","linux","win32"],"bin":{"rwav-bridge-mcp":"bin/rwav-bridge-mcp.js","rwav-bridge-mcp-setup":"bin/rwav-bridge-mcp-setup.js","rwav-bridge-mcp-doctor":"bin/rwav-bridge-mcp-doctor.js"},"cpu":["x64","arm64"],"dist":{"shasum":"7574821383aa1a5f88635b8d17ba7e32954c82be","tarball":"https://registry.npmjs.org/@calibress/rwav-bridge-mcp/-/rwav-bridge-mcp-0.2.2.tgz","fileCount":7,"integrity":"sha512-3765c00Qvdqgb8vOoTJNu6QyEiG+7CR4/xU+5Fk7PqMy1inIb2ZfWeiVlNV3V1gh1LHZMntW3wyuDXif3tePhw==","signatures":[{"sig":"MEYCIQDhx/E6i480z7HKLeruloQw24ebWrgCPAgKOwg6QumXDAIhANC5klyBXBBiUSSAYI7B1SE/EbdYWiXRCSQaHG0+R5R9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5999332},"main":"build/rwav-bridge-mcp.cjs","type":"module","config":{},"engines":{"node":">=20"},"funding":[],"gitHead":"e4e443c7e65a5e8901f20e6de7224e357e6eea89","scripts":{"cli":"tsx scripts/cli.ts","dev":"tsx watch src/index.ts","mcp":"tsx src/index.ts","build":"tsc -p tsconfig.json","doctor":"node bin/rwav-bridge-mcp-doctor.js","dev:daily":"bash scripts/launch-daily.sh --modules=transport,library,services --out=docs/TEST-RESULTS.json --mdout=docs/TEST-RESULTS.md","typecheck":"tsc --noEmit -p tsconfig.json","setup:host":"node bin/rwav-bridge-mcp-setup.js","test:daily":"tsx scripts/daily-regression.ts","tools:http":"tsx scripts/tools-http.ts","build:bundle":"esbuild src/index.ts --bundle --platform=node --format=cjs --define:process.env.RWAV_BRIDGE_MCP_VERSION=\\\"$npm_package_version\\\" --outfile=build/rwav-bridge-mcp.cjs --sourcemap=inline","prepublishOnly":"npm run build:bundle"},"_npmUser":{"name":"craigyp","email":"prescottc@btinternet.com"},"_npmVersion":"10.5.0","description":"RWAV Bridge MCP exposes the RWAV Bridge Extension to control Roon via MCP tools","directories":{},"postinstall":"node bin/rwav-bridge-mcp-setup.js || true","_nodeVersion":"21.7.3","dependencies":{"zod":"^3.23.8","node-ssdp":"^4.0.1","bonjour-service":"^1.1.1","@modelcontextprotocol/sdk":"^1.20.0"},"preferGlobal":true,"_hasShrinkwrap":false,"packageManager":"pnpm@9.6.0+sha512.38dc6fba8dba35b39340b9700112c2fe1e12f10b17134715a4aa98ccf7bb035e76fd981cf0bb384dfa98f8d6af5481c2bef2f4266a24bfa20c34eb7147ce0b5e","devDependencies":{"tsx":"^4.15.1","esbuild":"^0.24.0","typescript":"^5.6.3","@types/node":"^20.14.10"},"scripts-overrides":{},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/rwav-bridge-mcp_0.2.2_1762483495887_0.7715814774176235","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@calibress/rwav-bridge-mcp","version":"0.2.3","license":"SEE LICENSE IN LICENSE","_id":"@calibress/rwav-bridge-mcp@0.2.3","maintainers":[{"name":"craigyp","email":"prescottc@btinternet.com"}],"os":["darwin","linux","win32"],"bin":{"rwav-bridge-mcp":"bin/rwav-bridge-mcp.js","rwav-bridge-mcp-setup":"bin/rwav-bridge-mcp-setup.js","rwav-bridge-mcp-doctor":"bin/rwav-bridge-mcp-doctor.js"},"cpu":["x64","arm64"],"dist":{"shasum":"170f4d138c7a8088137c61ce2e0d41f68fb7f6e9","tarball":"https://registry.npmjs.org/@calibress/rwav-bridge-mcp/-/rwav-bridge-mcp-0.2.3.tgz","fileCount":7,"integrity":"sha512-Xvco4UEjBDLo5abmicPYaIOj+aBkRkyPwP/q7j9DddU0mNrzny708tJI4OXrie5a8K46AgbamQexaQjo2Y/5pA==","signatures":[{"sig":"MEUCIGuQyTi7y60BCOfQ+66buDR1nilp9XfFN95MRmK5tIdyAiEAwwtIwvIrXgIdyLl4CY4a05zliKqKsq49K/zEsAYYBAI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5999144},"main":"build/rwav-bridge-mcp.cjs","type":"module","config":{},"engines":{"node":">=20"},"funding":[{"url":"https://paypal.me/CraigPrescott365","type":"paypal"}],"gitHead":"bc584a08cc73db1cccb0721bf0dab5f9d6897155","scripts":{"cli":"tsx scripts/cli.ts","dev":"tsx watch src/index.ts","mcp":"tsx src/index.ts","build":"tsc -p tsconfig.json","doctor":"node bin/rwav-bridge-mcp-doctor.js","dev:daily":"bash scripts/launch-daily.sh --modules=transport,library,services --out=docs/TEST-RESULTS.json --mdout=docs/TEST-RESULTS.md","typecheck":"tsc --noEmit -p tsconfig.json","setup:host":"node bin/rwav-bridge-mcp-setup.js","test:daily":"tsx scripts/daily-regression.ts","tools:http":"tsx scripts/tools-http.ts","build:bundle":"esbuild src/index.ts --bundle --platform=node --format=cjs --define:process.env.RWAV_BRIDGE_MCP_VERSION=\\\"$npm_package_version\\\" --outfile=build/rwav-bridge-mcp.cjs --sourcemap=inline","prepublishOnly":"npm run build:bundle"},"_npmUser":{"name":"craigyp","email":"prescottc@btinternet.com"},"_npmVersion":"10.5.0","description":"RWAV Bridge MCP exposes the RWAV Bridge Extension to control Roon via MCP tools","directories":{},"postinstall":"node bin/rwav-bridge-mcp-setup.js || true","_nodeVersion":"21.7.3","dependencies":{"zod":"^3.23.8","node-ssdp":"^4.0.1","bonjour-service":"^1.1.1","@modelcontextprotocol/sdk":"^1.20.0"},"preferGlobal":true,"_hasShrinkwrap":false,"packageManager":"pnpm@9.6.0+sha512.38dc6fba8dba35b39340b9700112c2fe1e12f10b17134715a4aa98ccf7bb035e76fd981cf0bb384dfa98f8d6af5481c2bef2f4266a24bfa20c34eb7147ce0b5e","devDependencies":{"tsx":"^4.15.1","esbuild":"^0.24.0","typescript":"^5.6.3","@types/node":"^20.14.10"},"scripts-overrides":{},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/rwav-bridge-mcp_0.2.3_1762489628513_0.6489802080066045","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@calibress/rwav-bridge-mcp","version":"0.2.4","keywords":["mcp","model-context-protocol","roon","roon-labs","rwav","bridge","music","media","playback","queue","zones","outputs","volume","live-radio","playlist","tidal","qobuz","cli","stdio","homebrew","scoop","windows","macos","linux","ai","artificial-intelligence"],"license":"SEE LICENSE IN LICENSE","_id":"@calibress/rwav-bridge-mcp@0.2.4","maintainers":[{"name":"craigyp","email":"prescottc@btinternet.com"}],"os":["darwin","linux","win32"],"bin":{"rwav-bridge-mcp":"bin/rwav-bridge-mcp.js","rwav-bridge-mcp-setup":"bin/rwav-bridge-mcp-setup.js","rwav-bridge-mcp-doctor":"bin/rwav-bridge-mcp-doctor.js"},"cpu":["x64","arm64"],"dist":{"shasum":"8bc6bad23aace256bcc6d2ca1e1ebcd5f97aeb92","tarball":"https://registry.npmjs.org/@calibress/rwav-bridge-mcp/-/rwav-bridge-mcp-0.2.4.tgz","fileCount":7,"integrity":"sha512-JLSezJsrjGPtL/UmLCA+ElR6neh6WKNFgAfF4CP435f0Z0oV7jRyqRxY6qn9cM+qFKzHuvZSAvQ7/z9vhGZRGw==","signatures":[{"sig":"MEQCID9DZGcLaTSia1R/JdjTF6r9+ntF1D3BVDgKInqxOXHqAiAIKRgPIk5xFW0QLNrLxYUFKCKNOjjvZ7CDZTW3B94Nog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6022855},"main":"build/rwav-bridge-mcp.cjs","type":"module","config":{},"engines":{"node":">=20"},"funding":[{"url":"https://www.paypal.com/paypalme/CraigPrescott356","type":"paypal"}],"gitHead":"a7108ae3830aefafa302e7baeffbbb5e988f4345","scripts":{"cli":"tsx scripts/cli.ts","dev":"tsx watch src/index.ts","mcp":"tsx src/index.ts","build":"tsc -p tsconfig.json","doctor":"node bin/rwav-bridge-mcp-doctor.js","dev:daily":"bash scripts/launch-daily.sh --modules=transport,library,services --out=docs/TEST-RESULTS.json --mdout=docs/TEST-RESULTS.md","typecheck":"tsc --noEmit -p tsconfig.json","setup:host":"node bin/rwav-bridge-mcp-setup.js","test:daily":"tsx scripts/daily-regression.ts","tools:http":"tsx scripts/tools-http.ts","build:bundle":"esbuild src/index.ts --bundle --platform=node --format=cjs --define:process.env.RWAV_BRIDGE_MCP_VERSION=\\\"$npm_package_version\\\" --outfile=build/rwav-bridge-mcp.cjs --sourcemap=inline","prepublishOnly":"npm run build:bundle"},"_npmUser":{"name":"craigyp","email":"prescottc@btinternet.com"},"_npmVersion":"10.5.0","description":"RWAV Bridge MCP exposes the RWAV Bridge Extension to control Roon via MCP tools","directories":{},"postinstall":"node bin/rwav-bridge-mcp-setup.js || true","_nodeVersion":"21.7.3","dependencies":{"zod":"^3.23.8","node-ssdp":"^4.0.1","bonjour-service":"^1.1.1","@modelcontextprotocol/sdk":"^1.20.0"},"preferGlobal":true,"_hasShrinkwrap":false,"packageManager":"pnpm@9.6.0+sha512.38dc6fba8dba35b39340b9700112c2fe1e12f10b17134715a4aa98ccf7bb035e76fd981cf0bb384dfa98f8d6af5481c2bef2f4266a24bfa20c34eb7147ce0b5e","devDependencies":{"tsx":"^4.15.1","esbuild":"^0.24.0","typescript":"^5.6.3","@types/node":"^20.14.10"},"scripts-overrides":{},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/rwav-bridge-mcp_0.2.4_1762536384193_0.13681237549007141","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@calibress/rwav-bridge-mcp","version":"0.2.8","keywords":["mcp","model-context-protocol","roon","roon-labs","rwav","bridge","music","media","playback","queue","zones","outputs","volume","live-radio","playlist","tidal","qobuz","cli","stdio","homebrew","scoop","windows","macos","linux","ai","artificial-intelligence"],"license":"SEE LICENSE IN LICENSE","_id":"@calibress/rwav-bridge-mcp@0.2.8","maintainers":[{"name":"craigyp","email":"prescottc@btinternet.com"}],"os":["darwin","linux","win32"],"bin":{"rwav-bridge-mcp":"bin/rwav-bridge-mcp.js","rwav-bridge-mcp-setup":"bin/rwav-bridge-mcp-setup.js","rwav-bridge-mcp-doctor":"bin/rwav-bridge-mcp-doctor.js"},"cpu":["x64","arm64"],"dist":{"shasum":"be78ecdd7289a16bd3d68acde175d73b8f3d2517","tarball":"https://registry.npmjs.org/@calibress/rwav-bridge-mcp/-/rwav-bridge-mcp-0.2.8.tgz","fileCount":7,"integrity":"sha512-fBoCLG6nyPWffqOwd5/+DdA5pSIqdrjv99EXrruh/8nJ020lLnrlfocSaKzcVr5lhAHpqYMhrk/7DXYo06aaHw==","signatures":[{"sig":"MEUCIQDZIpeoITZI0vtjQhu9aSEmM4ehufQpLUMQl2HXjGZPeQIgdOvRYRbJc47wGgs6XvDKqYWbfd+0lgDybCHyuI9jg3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6063734},"main":"build/rwav-bridge-mcp.cjs","type":"module","config":{},"engines":{"node":">=20"},"funding":[{"url":"https://www.paypal.com/paypalme/CraigPrescott356","type":"paypal"}],"gitHead":"09b7215143d6bb5ee7eb8335db997c73535caca2","scripts":{"cli":"tsx scripts/cli.ts","dev":"tsx watch src/index.ts","mcp":"tsx src/index.ts","build":"tsc -p tsconfig.json","doctor":"node bin/rwav-bridge-mcp-doctor.js","dev:daily":"bash scripts/launch-daily.sh --modules=transport,library,services --out=docs/TEST-RESULTS.json --mdout=docs/TEST-RESULTS.md","typecheck":"tsc --noEmit -p tsconfig.json","setup:host":"node bin/rwav-bridge-mcp-setup.js","test:daily":"tsx scripts/daily-regression.ts","tools:http":"tsx scripts/tools-http.ts","build:bundle":"esbuild src/index.ts --bundle --platform=node --format=cjs --define:process.env.RWAV_BRIDGE_MCP_VERSION=\\\"$npm_package_version\\\" --outfile=build/rwav-bridge-mcp.cjs --sourcemap=inline","prepublishOnly":"npm run build:bundle"},"_npmUser":{"name":"craigyp","email":"prescottc@btinternet.com"},"_npmVersion":"10.5.0","description":"RWAV Bridge MCP exposes the RWAV Bridge Extension to control Roon via MCP tools","directories":{},"postinstall":"node bin/rwav-bridge-mcp-setup.js || true","_nodeVersion":"21.7.3","dependencies":{"zod":"^3.23.8","node-ssdp":"^4.0.1","bonjour-service":"^1.1.1","@modelcontextprotocol/sdk":"^1.20.0"},"preferGlobal":true,"_hasShrinkwrap":false,"packageManager":"pnpm@9.6.0+sha512.38dc6fba8dba35b39340b9700112c2fe1e12f10b17134715a4aa98ccf7bb035e76fd981cf0bb384dfa98f8d6af5481c2bef2f4266a24bfa20c34eb7147ce0b5e","devDependencies":{"tsx":"^4.15.1","esbuild":"^0.24.0","typescript":"^5.6.3","@types/node":"^20.14.10"},"scripts-overrides":{},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/rwav-bridge-mcp_0.2.8_1762581338507_0.5345313474880797","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@calibress/rwav-bridge-mcp","version":"0.2.9","keywords":["mcp","model-context-protocol","roon","roon-labs","rwav","bridge","music","media","playback","queue","zones","outputs","volume","live-radio","playlist","tidal","qobuz","cli","stdio","homebrew","scoop","windows","macos","linux","ai","artificial-intelligence"],"license":"SEE LICENSE IN LICENSE","_id":"@calibress/rwav-bridge-mcp@0.2.9","maintainers":[{"name":"craigyp","email":"prescottc@btinternet.com"}],"os":["darwin","linux","win32"],"bin":{"rwav-bridge-mcp":"bin/rwav-bridge-mcp.js","rwav-bridge-mcp-setup":"bin/rwav-bridge-mcp-setup.js","rwav-bridge-mcp-doctor":"bin/rwav-bridge-mcp-doctor.js"},"cpu":["x64","arm64"],"dist":{"shasum":"0da2b208e547aa027c15045c39475ec14b19376d","tarball":"https://registry.npmjs.org/@calibress/rwav-bridge-mcp/-/rwav-bridge-mcp-0.2.9.tgz","fileCount":7,"integrity":"sha512-qkkl9LikxxmPNCMVZ13annO5LjTpCS5NU2FECB24X3hfrMQ9/DIVmhNB5JjzryVbQpOjw46S0OVESoS7yuvnQQ==","signatures":[{"sig":"MEUCICZAHbYx/NjbZKl26GWCS/i9T42t8mBrc6id+86u9Dt1AiEA7h8lOME+ptoJuD/tVjjH0d5CF2Hlsdd74iinZvSADCA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6069722},"main":"build/rwav-bridge-mcp.cjs","type":"module","config":{},"engines":{"node":">=20"},"funding":[{"url":"https://www.paypal.com/paypalme/CraigPrescott356","type":"paypal"}],"gitHead":"29105bbe2b9bb253fd09809414bcb0d4e0cd3dda","scripts":{"cli":"tsx scripts/cli.ts","dev":"tsx watch src/index.ts","mcp":"tsx src/index.ts","build":"tsc -p tsconfig.json","doctor":"node bin/rwav-bridge-mcp-doctor.js","dev:daily":"bash scripts/launch-daily.sh --modules=transport,library,services --out=docs/TEST-RESULTS.json --mdout=docs/TEST-RESULTS.md","typecheck":"tsc --noEmit -p tsconfig.json","setup:host":"node bin/rwav-bridge-mcp-setup.js","test:daily":"tsx scripts/daily-regression.ts","tools:http":"tsx scripts/tools-http.ts","build:bundle":"esbuild src/index.ts --bundle --platform=node --format=cjs --define:process.env.RWAV_BRIDGE_MCP_VERSION=\\\"$npm_package_version\\\" --outfile=build/rwav-bridge-mcp.cjs --sourcemap=inline","prepublishOnly":"npm run build:bundle"},"_npmUser":{"name":"craigyp","email":"prescottc@btinternet.com"},"_npmVersion":"10.5.0","description":"RWAV Bridge MCP exposes the RWAV Bridge Extension to control Roon via MCP tools","directories":{},"postinstall":"node bin/rwav-bridge-mcp-setup.js || true","_nodeVersion":"21.7.3","dependencies":{"zod":"^3.23.8","node-ssdp":"^4.0.1","bonjour-service":"^1.1.1","@modelcontextprotocol/sdk":"^1.20.0"},"preferGlobal":true,"_hasShrinkwrap":false,"packageManager":"pnpm@9.6.0+sha512.38dc6fba8dba35b39340b9700112c2fe1e12f10b17134715a4aa98ccf7bb035e76fd981cf0bb384dfa98f8d6af5481c2bef2f4266a24bfa20c34eb7147ce0b5e","devDependencies":{"tsx":"^4.15.1","esbuild":"^0.24.0","typescript":"^5.6.3","@types/node":"^20.14.10"},"scripts-overrides":{},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/rwav-bridge-mcp_0.2.9_1762798410935_0.2934341563956726","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"@calibress/rwav-bridge-mcp","version":"0.2.10","keywords":["mcp","model-context-protocol","roon","roon-labs","rwav","bridge","music","media","playback","queue","zones","outputs","volume","live-radio","playlist","tidal","qobuz","cli","stdio","homebrew","scoop","windows","macos","linux","ai","artificial-intelligence"],"license":"SEE LICENSE IN LICENSE","_id":"@calibress/rwav-bridge-mcp@0.2.10","maintainers":[{"name":"craigyp","email":"prescottc@btinternet.com"}],"os":["darwin","linux","win32"],"bin":{"rwav-bridge-mcp":"bin/rwav-bridge-mcp.js","rwav-bridge-mcp-setup":"bin/rwav-bridge-mcp-setup.js","rwav-bridge-mcp-doctor":"bin/rwav-bridge-mcp-doctor.js"},"cpu":["x64","arm64"],"dist":{"shasum":"4df1677cfcce9188aba5d2bbe055d3e6cc3476ad","tarball":"https://registry.npmjs.org/@calibress/rwav-bridge-mcp/-/rwav-bridge-mcp-0.2.10.tgz","fileCount":7,"integrity":"sha512-xGkDNb7VByBbpEW0W+dwsy1VCC0i7/sqleketpmxC0sT/7SW8twXUgqJcckaZ74XGW4v1U4Qe/hvWUIzWBy1yw==","signatures":[{"sig":"MEYCIQCyxXk3L81Hgi0st/80R2lXoxf9rMbXlpZPZxdarUvpQwIhAM4BuwOlp+2K1yVkb3TWbKARO8wJ/Ek3VQE+xpSTvzMy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6114364},"main":"build/rwav-bridge-mcp.cjs","type":"module","config":{},"engines":{"node":">=20"},"funding":[{"url":"https://www.paypal.com/paypalme/CraigPrescott356","type":"paypal"}],"gitHead":"2a49d07fd8982da1ae5fdbc21b8d0a2bf2f7aa65","scripts":{"cli":"tsx scripts/cli.ts","dev":"tsx watch src/index.ts","mcp":"tsx src/index.ts","build":"tsc -p tsconfig.json","doctor":"node bin/rwav-bridge-mcp-doctor.js","dev:daily":"bash scripts/launch-daily.sh --modules=transport,library,services --out=docs/TEST-RESULTS.json --mdout=docs/TEST-RESULTS.md","typecheck":"tsc --noEmit -p tsconfig.json","setup:host":"node bin/rwav-bridge-mcp-setup.js","test:daily":"tsx scripts/daily-regression.ts","tools:http":"tsx scripts/tools-http.ts","build:bundle":"esbuild src/index.ts --bundle --platform=node --format=cjs --define:process.env.RWAV_BRIDGE_MCP_VERSION=\\\"$npm_package_version\\\" --outfile=build/rwav-bridge-mcp.cjs --sourcemap=inline","prepublishOnly":"npm run build:bundle"},"_npmUser":{"name":"craigyp","email":"prescottc@btinternet.com"},"_npmVersion":"10.5.0","description":"RWAV Bridge MCP exposes the RWAV Bridge Extension to control Roon via MCP tools","directories":{},"postinstall":"node bin/rwav-bridge-mcp-setup.js || true","_nodeVersion":"21.7.3","dependencies":{"zod":"^3.23.8","node-ssdp":"^4.0.1","bonjour-service":"^1.1.1","@modelcontextprotocol/sdk":"^1.20.0"},"preferGlobal":true,"_hasShrinkwrap":false,"packageManager":"pnpm@9.6.0+sha512.38dc6fba8dba35b39340b9700112c2fe1e12f10b17134715a4aa98ccf7bb035e76fd981cf0bb384dfa98f8d6af5481c2bef2f4266a24bfa20c34eb7147ce0b5e","devDependencies":{"tsx":"^4.15.1","esbuild":"^0.24.0","typescript":"^5.6.3","@types/node":"^20.14.10"},"scripts-overrides":{},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/rwav-bridge-mcp_0.2.10_1762802519939_0.3514263040853307","host":"s3://npm-registry-packages-npm-production"}},"0.2.12":{"name":"@calibress/rwav-bridge-mcp","version":"0.2.12","keywords":["mcp","model-context-protocol","roon","roon-labs","rwav","bridge","music","media","playback","queue","zones","outputs","volume","live-radio","playlist","tidal","qobuz","cli","stdio","homebrew","scoop","windows","macos","linux","ai","artificial-intelligence"],"license":"SEE LICENSE IN LICENSE","_id":"@calibress/rwav-bridge-mcp@0.2.12","maintainers":[{"name":"craigyp","email":"prescottc@btinternet.com"}],"os":["darwin","linux","win32"],"bin":{"rwav-bridge-mcp":"bin/rwav-bridge-mcp.js","rwav-bridge-mcp-setup":"bin/rwav-bridge-mcp-setup.js","rwav-bridge-mcp-doctor":"bin/rwav-bridge-mcp-doctor.js"},"cpu":["x64","arm64"],"dist":{"shasum":"2a2283b4b1b880c303e754e93494affd8412e540","tarball":"https://registry.npmjs.org/@calibress/rwav-bridge-mcp/-/rwav-bridge-mcp-0.2.12.tgz","fileCount":7,"integrity":"sha512-hC6per28sQB4Z4tAnTOerBX1+BeDL5fMoa2NFKt03mHRcJnCK+lJeiCR/gRsIDqAipU32cnjAC35kJPl+lxq9w==","signatures":[{"sig":"MEUCIQC6oCWCqzMLdEYPR1V9qVq14+uP6VKvh8Vpkmy8rb5TpAIgCnH9wLh6lBUmQjKaXTo4EPcOkvi+xFakMfQ6T6zWr5Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6129511},"main":"build/rwav-bridge-mcp.cjs","type":"module","config":{},"engines":{"node":">=20"},"funding":[{"url":"https://www.paypal.com/paypalme/CraigPrescott356","type":"paypal"}],"gitHead":"2f4d3d287da3c597253d4b0caf92ba695c3b6740","scripts":{"cli":"tsx scripts/cli.ts","dev":"tsx watch src/index.ts","mcp":"tsx src/index.ts","build":"tsc -p tsconfig.json","doctor":"node bin/rwav-bridge-mcp-doctor.js","dev:daily":"bash scripts/launch-daily.sh --modules=transport,library,services --out=docs/TEST-RESULTS.json --mdout=docs/TEST-RESULTS.md","typecheck":"tsc --noEmit -p tsconfig.json","setup:host":"node bin/rwav-bridge-mcp-setup.js","test:daily":"tsx scripts/daily-regression.ts","tools:http":"tsx scripts/tools-http.ts","build:bundle":"esbuild src/index.ts --bundle --platform=node --format=cjs --define:process.env.RWAV_BRIDGE_MCP_VERSION=\\\"$npm_package_version\\\" --outfile=build/rwav-bridge-mcp.cjs --sourcemap=inline","prepublishOnly":"npm run build:bundle"},"_npmUser":{"name":"craigyp","email":"prescottc@btinternet.com"},"_npmVersion":"10.5.0","description":"RWAV Bridge MCP exposes the RWAV Bridge Extension to control Roon via MCP tools","directories":{},"postinstall":"node bin/rwav-bridge-mcp-setup.js || true","_nodeVersion":"21.7.3","dependencies":{"zod":"^3.23.8","node-ssdp":"^4.0.1","bonjour-service":"^1.1.1","@modelcontextprotocol/sdk":"^1.20.0"},"preferGlobal":true,"_hasShrinkwrap":false,"packageManager":"pnpm@9.6.0+sha512.38dc6fba8dba35b39340b9700112c2fe1e12f10b17134715a4aa98ccf7bb035e76fd981cf0bb384dfa98f8d6af5481c2bef2f4266a24bfa20c34eb7147ce0b5e","devDependencies":{"tsx":"^4.15.1","esbuild":"^0.24.0","typescript":"^5.6.3","@types/node":"^20.14.10"},"scripts-overrides":{},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/rwav-bridge-mcp_0.2.12_1762906734833_0.09846774806533176","host":"s3://npm-registry-packages-npm-production"}},"0.2.14":{"name":"@calibress/rwav-bridge-mcp","version":"0.2.14","keywords":["mcp","model-context-protocol","roon","roon-labs","rwav","bridge","music","media","playback","queue","zones","outputs","volume","live-radio","playlist","tidal","qobuz","cli","stdio","homebrew","scoop","windows","macos","linux","ai","artificial-intelligence"],"license":"SEE LICENSE IN LICENSE","_id":"@calibress/rwav-bridge-mcp@0.2.14","maintainers":[{"name":"craigyp","email":"prescottc@btinternet.com"}],"os":["darwin","linux","win32"],"bin":{"rwav-bridge-mcp":"bin/rwav-bridge-mcp.js","rwav-bridge-mcp-http":"bin/rwav-bridge-mcp-http.js","rwav-bridge-mcp-setup":"bin/rwav-bridge-mcp-setup.js","rwav-bridge-mcp-doctor":"bin/rwav-bridge-mcp-doctor.js"},"cpu":["x64","arm64"],"dist":{"shasum":"bce7e0631e78230bc2986efe469ecf098e5a495f","tarball":"https://registry.npmjs.org/@calibress/rwav-bridge-mcp/-/rwav-bridge-mcp-0.2.14.tgz","fileCount":9,"integrity":"sha512-3kAdPgJChcD8symPoQFWZZbLijZxRV/4fg11hflD4ozQ4KzOsLoi51C85+HwHwVoq7edjsoYSCNt5Hh1Rt/Gcw==","signatures":[{"sig":"MEUCIBSlABLq+55EUsEKDRE3ugD2+NVNZ4+CQ6tGulvy0aLiAiEA8hvowQERW+XO7CdxEe9W1PqWZ7hC4UpxEN+JHjU/how=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17727058},"main":"build/rwav-bridge-mcp.cjs","type":"module","config":{},"engines":{"node":">=20"},"funding":[{"url":"https://www.paypal.com/paypalme/CraigPrescott356","type":"paypal"}],"gitHead":"401d485ebf99f65dd28e787f51c31ef544a04eb0","scripts":{"cli":"tsx scripts/cli.ts","dev":"tsx watch src/index.ts","mcp":"tsx src/index.ts","build":"tsc -p tsconfig.json","doctor":"node bin/rwav-bridge-mcp-doctor.js","dev:http":"node server/http-mcp-adapter.mjs","dev:daily":"bash scripts/launch-daily.sh --modules=transport,library,services --out=docs/TEST-RESULTS.json --mdout=docs/TEST-RESULTS.md","dev:ngrok":"ngrok http ${MCP_PORT:-9099}","typecheck":"tsc --noEmit -p tsconfig.json","setup:host":"node bin/rwav-bridge-mcp-setup.js","start:http":"node server/http-mcp-adapter.mjs","test:daily":"tsx scripts/daily-regression.ts","tools:http":"tsx scripts/tools-http.ts","build:bundle":"esbuild src/index.ts --bundle --platform=node --format=cjs --define:process.env.RWAV_BRIDGE_MCP_VERSION=\\\"$npm_package_version\\\" --outfile=build/rwav-bridge-mcp.cjs --sourcemap=inline","dev:http:9099":"MCP_PORT=9099 node server/http-mcp-adapter.mjs","prepublishOnly":"npm run build:bundle && npm run build:bundle:http","build:bundle:http":"esbuild src/http-server.ts --bundle --platform=node --format=cjs --define:process.env.RWAV_BRIDGE_MCP_VERSION=\\\"$npm_package_version\\\" --outfile=build/rwav-bridge-mcp-http.cjs --sourcemap=inline"},"_npmUser":{"name":"craigyp","email":"prescottc@btinternet.com"},"_npmVersion":"10.5.0","description":"RWAV Bridge MCP exposes the RWAV Bridge Extension to control Roon via MCP tools","directories":{},"postinstall":"node bin/rwav-bridge-mcp-setup.js || true","_nodeVersion":"21.7.3","dependencies":{"zod":"^3.23.8","cors":"^2.8.5","express":"^4.19.2","node-ssdp":"^4.0.1","bonjour-service":"^1.1.1","@modelcontextprotocol/sdk":"^1.20.0"},"preferGlobal":true,"_hasShrinkwrap":false,"packageManager":"pnpm@9.6.0+sha512.38dc6fba8dba35b39340b9700112c2fe1e12f10b17134715a4aa98ccf7bb035e76fd981cf0bb384dfa98f8d6af5481c2bef2f4266a24bfa20c34eb7147ce0b5e","devDependencies":{"tsx":"^4.15.1","esbuild":"^0.24.0","typescript":"^5.6.3","@types/node":"^20.14.10"},"scripts-overrides":{},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/rwav-bridge-mcp_0.2.14_1763183813704_0.9038575369682353","host":"s3://npm-registry-packages-npm-production"}},"0.2.15":{"name":"@calibress/rwav-bridge-mcp","version":"0.2.15","keywords":["mcp","model-context-protocol","roon","roon-labs","rwav","bridge","music","media","playback","queue","zones","outputs","volume","live-radio","playlist","tidal","qobuz","cli","stdio","homebrew","scoop","windows","macos","linux","ai","artificial-intelligence"],"license":"SEE LICENSE IN LICENSE","_id":"@calibress/rwav-bridge-mcp@0.2.15","maintainers":[{"name":"craigyp","email":"prescottc@btinternet.com"}],"os":["darwin","linux","win32"],"bin":{"rwav-bridge-mcp":"bin/rwav-bridge-mcp.js","rwav-bridge-mcp-http":"bin/rwav-bridge-mcp-http.js","rwav-bridge-mcp-setup":"bin/rwav-bridge-mcp-setup.js","rwav-bridge-mcp-doctor":"bin/rwav-bridge-mcp-doctor.js"},"cpu":["x64","arm64"],"dist":{"shasum":"f9ca1ca482dcbf157787a6e66e142f430a84bc18","tarball":"https://registry.npmjs.org/@calibress/rwav-bridge-mcp/-/rwav-bridge-mcp-0.2.15.tgz","fileCount":9,"integrity":"sha512-G937stu11ghhkD+Xp6JHVXApdI95hEJJJEhQW06jbwzwLUnqlNEPDI/bugiJFwDEO7hCmNGNbrxDy7x3Poo4yQ==","signatures":[{"sig":"MEUCIEtIpUCQQFMD6jB9TNy+tYGaCzg4eU3eTJhdrmCnZ4RpAiEA480k9TOGopSjl6jwehCQo2dl1knSeVlCI7d0b1PCtOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17741280},"main":"build/rwav-bridge-mcp.cjs","type":"module","config":{},"engines":{"node":">=20"},"funding":[{"url":"https://www.paypal.com/paypalme/CraigPrescott356","type":"paypal"}],"gitHead":"57da9ae81fa3755b33182122905275d6c68f7256","scripts":{"cli":"tsx scripts/cli.ts","dev":"tsx watch src/index.ts","mcp":"tsx src/index.ts","build":"tsc -p tsconfig.json","doctor":"node bin/rwav-bridge-mcp-doctor.js","dev:http":"node server/http-mcp-adapter.mjs","dev:daily":"bash scripts/launch-daily.sh --modules=transport,library,services --out=docs/TEST-RESULTS.json --mdout=docs/TEST-RESULTS.md","dev:ngrok":"ngrok http ${MCP_PORT:-9099}","typecheck":"tsc --noEmit -p tsconfig.json","setup:host":"node bin/rwav-bridge-mcp-setup.js","start:http":"node server/http-mcp-adapter.mjs","test:daily":"tsx scripts/daily-regression.ts","tools:http":"tsx scripts/tools-http.ts","build:bundle":"esbuild src/index.ts --bundle --platform=node --format=cjs --define:process.env.RWAV_BRIDGE_MCP_VERSION=\\\"$npm_package_version\\\" --outfile=build/rwav-bridge-mcp.cjs --sourcemap=inline","dev:http:9099":"MCP_PORT=9099 node server/http-mcp-adapter.mjs","prepublishOnly":"npm run build:bundle && npm run build:bundle:http","build:bundle:http":"esbuild src/http-server.ts --bundle --platform=node --format=cjs --define:process.env.RWAV_BRIDGE_MCP_VERSION=\\\"$npm_package_version\\\" --outfile=build/rwav-bridge-mcp-http.cjs --sourcemap=inline"},"_npmUser":{"name":"craigyp","email":"prescottc@btinternet.com"},"_npmVersion":"10.5.0","description":"RWAV Bridge MCP exposes the RWAV Bridge Extension to control Roon via MCP tools","directories":{},"postinstall":"node bin/rwav-bridge-mcp-setup.js || true","_nodeVersion":"21.7.3","dependencies":{"zod":"^3.23.8","cors":"^2.8.5","express":"^4.19.2","node-ssdp":"^4.0.1","bonjour-service":"^1.1.1","@modelcontextprotocol/sdk":"^1.20.0"},"preferGlobal":true,"_hasShrinkwrap":false,"packageManager":"pnpm@9.6.0+sha512.38dc6fba8dba35b39340b9700112c2fe1e12f10b17134715a4aa98ccf7bb035e76fd981cf0bb384dfa98f8d6af5481c2bef2f4266a24bfa20c34eb7147ce0b5e","devDependencies":{"tsx":"^4.15.1","esbuild":"^0.24.0","typescript":"^5.6.3","@types/node":"^20.14.10"},"scripts-overrides":{},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/rwav-bridge-mcp_0.2.15_1763275856729_0.9942130992619624","host":"s3://npm-registry-packages-npm-production"}},"0.2.17":{"name":"@calibress/rwav-bridge-mcp","version":"0.2.17","type":"module","description":"RWAV Bridge MCP exposes the RWAV Bridge Extension to control Roon via MCP tools","main":"build/rwav-bridge-mcp.cjs","license":"SEE LICENSE IN LICENSE","keywords":["mcp","model-context-protocol","roon","roon-labs","rwav","bridge","music","media","playback","queue","zones","outputs","volume","live-radio","playlist","tidal","qobuz","cli","stdio","homebrew","scoop","windows","macos","linux","ai","artificial-intelligence"],"bin":{"rwav-bridge-mcp":"bin/rwav-bridge-mcp.js","rwav-bridge-mcp-setup":"bin/rwav-bridge-mcp-setup.js","rwav-bridge-mcp-doctor":"bin/rwav-bridge-mcp-doctor.js","rwav-bridge-mcp-http":"bin/rwav-bridge-mcp-http.js"},"scripts":{"build":"tsc -p tsconfig.json","build:bundle":"esbuild src/index.ts --bundle --platform=node --format=cjs --define:process.env.RWAV_BRIDGE_MCP_VERSION=\\\"$npm_package_version\\\" --outfile=build/rwav-bridge-mcp.cjs --sourcemap=inline","build:bundle:http":"esbuild src/http-server.ts --bundle --platform=node --format=cjs --define:process.env.RWAV_BRIDGE_MCP_VERSION=\\\"$npm_package_version\\\" --outfile=build/rwav-bridge-mcp-http.cjs --sourcemap=inline","prepublishOnly":"npm run build:bundle && npm run build:bundle:http","typecheck":"tsc --noEmit -p tsconfig.json","dev":"tsx watch src/index.ts","mcp":"tsx src/index.ts","dev:http":"node server/http-mcp-adapter.mjs","dev:http:9099":"MCP_PORT=9099 node server/http-mcp-adapter.mjs","start:http":"node server/http-mcp-adapter.mjs","dev:ngrok":"ngrok http ${MCP_PORT:-9099}","test:daily":"tsx scripts/daily-regression.ts","dev:daily":"bash scripts/launch-daily.sh --modules=transport,library,services --out=docs/TEST-RESULTS.json --mdout=docs/TEST-RESULTS.md","tools:http":"tsx scripts/tools-http.ts","cli":"tsx scripts/cli.ts","setup:host":"node bin/rwav-bridge-mcp-setup.js","doctor":"node bin/rwav-bridge-mcp-doctor.js"},"engines":{"node":">=20"},"optionalDependencies":{},"scripts-overrides":{},"packageManager":"pnpm@9.6.0+sha512.38dc6fba8dba35b39340b9700112c2fe1e12f10b17134715a4aa98ccf7bb035e76fd981cf0bb384dfa98f8d6af5481c2bef2f4266a24bfa20c34eb7147ce0b5e","funding":[{"type":"paypal","url":"https://www.paypal.com/paypalme/CraigPrescott356"}],"config":{},"os":["darwin","linux","win32"],"cpu":["x64","arm64"],"preferGlobal":true,"postinstall":"node bin/rwav-bridge-mcp-setup.js || true","dependencies":{"@modelcontextprotocol/sdk":"^1.20.0","zod":"^3.23.8","bonjour-service":"^1.1.1","node-ssdp":"^4.0.1","express":"^4.19.2","cors":"^2.8.5"},"devDependencies":{"esbuild":"^0.24.0","tsx":"^4.15.1","typescript":"^5.6.3","@types/node":"^20.14.10"},"_id":"@calibress/rwav-bridge-mcp@0.2.17","gitHead":"57da9ae81fa3755b33182122905275d6c68f7256","_nodeVersion":"21.7.3","_npmVersion":"10.5.0","dist":{"integrity":"sha512-qaYUB2P5Q6sYgUEPB/IhXKE9TOKdwJ15d3c46nSIDd/TSTJDuYmX/jJX2xXh9x2yFBfmvhIOTBO60tup4HSbsw==","shasum":"a45b43b93d65560395ba748151b336415c410ce1","tarball":"https://registry.npmjs.org/@calibress/rwav-bridge-mcp/-/rwav-bridge-mcp-0.2.17.tgz","fileCount":9,"unpackedSize":17741280,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAF8llVGmPKcb3GsDhZRcihjMZgJQwzYnoe4ap9CmxBcAiBNspSaLDsqaTuiwDzbh+LpAJ9xrsVSDvdixEh+OOf79g=="}]},"_npmUser":{"name":"craigyp","email":"prescottc@btinternet.com"},"directories":{},"maintainers":[{"name":"craigyp","email":"prescottc@btinternet.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rwav-bridge-mcp_0.2.17_1763420247255_0.7458396945072436"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-06T01:57:52.202Z","modified":"2025-11-17T22:57:27.722Z","0.1.8":"2025-11-06T01:57:52.450Z","0.2.2":"2025-11-07T02:44:56.176Z","0.2.3":"2025-11-07T04:27:08.736Z","0.2.4":"2025-11-07T17:26:24.387Z","0.2.8":"2025-11-08T05:55:38.722Z","0.2.9":"2025-11-10T18:13:31.144Z","0.2.10":"2025-11-10T19:22:00.201Z","0.2.12":"2025-11-12T00:18:55.251Z","0.2.14":"2025-11-15T05:16:54.007Z","0.2.15":"2025-11-16T06:50:57.006Z","0.2.17":"2025-11-17T22:57:27.497Z"},"license":"SEE LICENSE IN LICENSE","keywords":["mcp","model-context-protocol","roon","roon-labs","rwav","bridge","music","media","playback","queue","zones","outputs","volume","live-radio","playlist","tidal","qobuz","cli","stdio","homebrew","scoop","windows","macos","linux","ai","artificial-intelligence"],"description":"RWAV Bridge MCP exposes the RWAV Bridge Extension to control Roon via MCP tools","maintainers":[{"name":"craigyp","email":"prescottc@btinternet.com"}],"readme":"# RWAV Bridge MCP — Control Roon via MCP\n\nSimple, local MCP server that exposes the RWAV Bridge as safe, typed tools for any MCP client. Public‑facing, minimal, and only the tools_* API surface.\n\n- Local‑first: stdio MCP process with auto‑discovery\n- Platforms: macOS, Windows, Linux\n- Auto‑setup on install (“just works” for GUI clients)\n\n## Quick Start\n\n- macOS (Homebrew)\n  - `brew install calibress/rwav/rwav-bridge-mcp`\n  - Verify (STDIO): `rwav-bridge-mcp --version`\n  - Verify (HTTP): `rwav-bridge-mcp-http --version`\n  - HTTP run (local): `MCP_PORT=9099 rwav-bridge-mcp-http`\n  - ngrok: `ngrok http ${MCP_PORT:-9099}` → use `https://<id>.ngrok-free.app/mcp`\n  - Clients must send `Accept: application/json, text/event-stream` for initialize and tools/call\n\n- Windows (npm)\n  - `npm i -g @calibress/rwav-bridge-mcp`\n  - Verify: `rwav-bridge-mcp --help`\n\n- Linux / Windows (npm)\n  - `npm i -g @calibress/rwav-bridge-mcp`\n  - Verify: `rwav-bridge-mcp --help`\n\nNote: GUI apps often don’t inherit shell PATH. Homebrew post‑install runs setup automatically. Your MCP config should always use the portable command name `rwav-bridge-mcp` (no absolute paths). If anything looks off, run: `rwav-bridge-mcp doctor`.\n\n## HTTP MCP — Homebrew runner (0.2.14+)\n\nRun a public HTTP endpoint without the dev adapter:\n\n- Start (default 9099):\n  - `MCP_PORT=9099 rwav-bridge-mcp-http`\n- Expose via ngrok:\n  - `ngrok http ${MCP_PORT:-9099}` → `https://<id>.ngrok-free.app/mcp`\n- Clients must send:\n  - `Accept: application/json, text/event-stream`\n\nSee also:\n- `docs/BREW-USAGE.md` (brew STDIO + HTTP quickstart)\n- `docs/HTTP-EXPOSE.md` (curl recipes, ngrok, connectors)\n\n## HTTP MCP Adapter (Dev)\n\nExpose the MCP server over HTTP (JSON + SSE) for Connectors/Apps and ngrok.\n\n- Start (default 9099):\n  - `npm run build`\n  - `MCP_PORT=9099 node server/http-mcp-adapter.mjs`\n- Pin RWAV Bridge base for LAN testing:\n  - `RWAV_BASE=\"http://<bridge-host>:3002\" MCP_PORT=9099 node server/http-mcp-adapter.mjs`\n- Public tools on HTTP: initialize to get `Mcp-Session-Id`, then call `tools_*` via `tools/call`.\n- See `docs/HTTP-EXPOSE.md` for curl + ngrok + inspector notes.\n\n\n### Windows notes\n- Prefer npm global install: `npm i -g @calibress/rwav-bridge-mcp`\n- Ensure your global Node bin is on PATH. Common locations:\n  - Scoop Node LTS: `C:\\\\Users\\\\<you>\\\\scoop\\\\apps\\\\nodejs-lts\\\\current\\\\bin`\n  - Node installer: `%USERPROFILE%\\AppData\\Roaming\\npm`\n- Use forward‑slash paths in JSON to avoid escaping issues (or escape backslashes as `\\\\`).\n- Fallback if a GUI host can’t spawn the shim:\n  - `\"command\": \"C:/Users/<you>/scoop/apps/nodejs-lts/current/bin/node.exe\"`\n  - `\"args\": [\"C:/Users/<you>/scoop/apps/nodejs-lts/current/node_modules/@calibress/rwav-bridge-mcp/build/rwav-bridge-mcp.cjs\"]`\n  - Or: `\"command\": \"npx\", \"args\": [\"-y\", \"@calibress/rwav-bridge-mcp@<version>\"]` (first run needs network)\n\n## Uninstall\n- Homebrew (macOS): `brew uninstall calibress/rwav/rwav-bridge-mcp`\n- npm (Windows/Linux/macOS): `npm uninstall -g @calibress/rwav-bridge-mcp`\n\n## Enable RWAV Bridge\n- Install RWAV Bridge: https://rwav-bridge.co.uk/downloads/\n- Roon → Settings → Extensions → enable “RWAV Bridge”\n\n## MCP Host Config (copy/paste)\nFor VS Code / Roo Code (JSON):\n```\n{\n  \"mcpServers\": {\n    \"rwav-bridge-mcp\": {\n      \"transport\": \"stdio\",\n      \"command\": \"rwav-bridge-mcp\",\n      \"env\": {\n        \"RWAV_DISCOVERY\": \"auto\",\n        \"RWAV_BASE\": \"auto\",\n        \"RWAV_TOOL_ALLOWLIST\": \"tools,history\"\n      }\n    }\n  }\n}\n```\n\nNote: the key under `mcpServers` (e.g., `\"rwav-bridge-mcp\"`) is what most clients display in the UI as the server label.\n\n### Windows MCP Settings Example\nRecommended (portable command; forward slashes in JSON)\n```\n{\n  \"mcpServers\": {\n    \"rwav-bridge-mcp\": {\n      \"transport\": \"stdio\",\n      \"command\": \"rwav-bridge-mcp\",\n      \"env\": {\n        \"RWAV_DISCOVERY\": \"static\",\n        \"RWAV_BASE\": \"http://localhost:3002\",\n        \"RWAV_TOOL_ALLOWLIST\": \"tools,history\"\n      }\n    }\n  }\n}\n```\n\nNote: `http://localhost:3002` is advisory. If RWAV Bridge runs on another machine on your LAN, use its IP, e.g. `http://192.168.68.68:3002`.\n\nFallback (explicit Node path + entrypoint, if a GUI host cannot spawn the shim)\n```\n{\n  \"mcpServers\": {\n    \"rwav-bridge-mcp\": {\n      \"transport\": \"stdio\",\n      \"command\": \"C:/Users/<you>/scoop/apps/nodejs-lts/current/bin/node.exe\",\n      \"args\": [\n        \"C:/Users/<you>/scoop/apps/nodejs-lts/current/node_modules/@calibress/rwav-bridge-mcp/build/rwav-bridge-mcp.cjs\"\n      ],\n      \"env\": {\n        \"RWAV_DISCOVERY\": \"static\",\n        \"RWAV_BASE\": \"http://localhost:3002\",\n        \"RWAV_TOOL_ALLOWLIST\": \"tools,history\"\n      }\n    }\n  }\n}\n```\n\nStatic config example (no discovery)\n```\n{\n  \"mcpServers\": {\n    \"rwav-bridge-mcp\": {\n      \"transport\": \"stdio\",\n      \"command\": \"rwav-bridge-mcp\",\n      \"env\": {\n        \"RWAV_DISCOVERY\": \"static\",\n        \"RWAV_BASE\": \"http://localhost:3002\",\n        \"RWAV_TOOL_ALLOWLIST\": \"tools,history\"\n      }\n    }\n  }\n}\n```\n\n## Public Tools\nThese are the public, stable tools. Hidden/internal helpers are intentionally not listed.\n\n- `tools_track_search_open`\n- `tools_album_play_now`\n- `tools_transfer_playback`\n- `tools_snapshots_recently_played`\n- `tools_snapshots_most_played_tracks`\n- `tools_history_plays_list`\n- `tools_genre_artists_list`\n- `tools_track_open`\n- `tools_library_playlists_list`\n- `tools_snapshots_most_played_artists`\n- `tools_playlist_add_next`\n- `tools_outputs_list_group_candidates`\n- `tools_library_artists_list`\n- `tools_artist_get_albums`\n- `tools_album_start_radio`\n- `tools_playlist_shuffle`\n- `tools_outputs_list`\n- `tools_group_zones`\n- `tools_mute`\n- `tools_unmute`\n- `tools_mute_all`\n- `tools_unmute_all`\n- `tools_library_tags_list`\n- `tools_tag_open`\n- `tools_tag_play_now`\n- `tools_tidal_playlists_list`\n- `tools_tidal_open`\n- `tools_track_play_now`\n- `tools_qobuz_open`\n- `tools_qobuz_albums_list`\n- `tools_live_radio_list`\n- `tools_live_radio_play_now`\n- `tools_live_radio_play_by_key`\n- `tools_library_playlists_pick`\n- `tools_snapshots_listening_time_daily`\n- `tools_track_queue`\n- `tools_artist_get_top_tracks`\n- `tools_roon_playlist_open`\n- `tools_playlist_search_open`\n- `tools_queue_head_get`\n- `tools_playlist_capabilities`\n- `tools_album_track_execute`\n- `tools_snapshots_most_played_albums`\n- `tools_library_composers_list`\n- `tools_composer_open`\n- `tools_library_albums_list`\n- `tools_library_tracks_list`\n- `tools_now_playing_shuffle`\n- `tools_now_playing_repeat`\n- `tools_composer_list_works`\n- `tools_composer_play_now`\n- `tools_playlist_discard`\n\n## Usage Examples (public tools only)\n\n### Albums (Play / Add Next / Queue / Radio)\n- Play an album now:\n```\n{ \"tool\": \"tools_album_play_now\", \"args\": { \"albumTitle\": \"Kind of Blue\", \"albumArtist\": \"Miles Davis\" } }\n```\n- Add a specific track from an album (by title or index):\n```\n{ \"tool\": \"tools_album_track_execute\", \"args\": { \"albumTitle\": \"Kind of Blue\", \"albumArtist\": \"Miles Davis\", \"trackTitle\": \"So What\", \"action\": \"addnext\" } }\n```\n- Start Radio from an album:\n```\n{ \"tool\": \"tools_album_start_radio\", \"args\": { \"albumTitle\": \"Blue Train\", \"albumArtist\": \"John Coltrane\" } }\n```\n\n### Tracks\n- Session-first precision (recommended):\n```\n{ \"tool\": \"tools_search_run\", \"args\": { \"query\": \"Artist - Track Title\" } }\n{ \"tool\": \"tools_track_execute_by_query\",  \"args\": { \"query\": \"Artist - Track Title\", \"action\": \"addnext\", \"verify_queue\": true } }\n```\n- Search and open a track, then execute:\n```\n{ \"tool\": \"tools_track_search_open\", \"args\": { \"query\": \"Massive Attack - Teardrop\" } }\n{ \"tool\": \"tools_track_play_now\",  \"args\": { \"trackTitle\": \"Teardrop\", \"artist\": \"Massive Attack\" } }\n{ \"tool\": \"tools_track_add_next\", \"args\": { \"trackTitle\": \"Teardrop\", \"artist\": \"Massive Attack\" } }\n{ \"tool\": \"tools_track_queue\",    \"args\": { \"trackTitle\": \"Teardrop\", \"artist\": \"Massive Attack\" } }\n```\n\n### Playlists\n- Search and open playlists:\n```\n{ \"tool\": \"tools_playlist_search_open\", \"args\": { \"query\": \"Trip Hop\" } }\n```\n- Add a playlist next / shuffle playlist:\n```\n{ \"tool\": \"tools_playlist_add_next\", \"args\": { \"title\": \"Sunday Jazz\" } }\n{ \"tool\": \"tools_playlist_shuffle\",  \"args\": { \"title\": \"Sunday Jazz\" } }\n```\n- Capabilities:\n```\n{ \"tool\": \"tools_playlist_capabilities\", \"args\": {} }\n```\n\n#### Draft → Execute (Async) — in‑memory, no migrations\n- Create a draft (RAM only):\n```\n{ \"tool\":\"tools_playlists_drafts_create\", \"args\": {\n  \"name\":\"Late Night\",\n  \"items\":[ {\"entity\":\"track\",\"query\":\"Steely Dan - Aja\"}, {\"entity\":\"track\",\"query\":\"Massive Attack - Teardrop\"} ]\n}}\n```\n- Execute the draft (pick strategy at run time; async job starts immediately under the hood):\n```\n{ \"tool\":\"tools_playlists_execute\", \"args\": { \"draftId\":\"<draftId>\", \"strategy\":\"append\" } }\n```\n- Track the job and verify:\n```\n{ \"tool\":\"tools_job_status_get\", \"args\": { \"job_id\":\"<jobId>\" } }\n// For append → tail check; for addnext → head check\n{ \"tool\":\"tools_queue_tail_get\", \"args\": { \"zoneId\":\"<zoneId>\", \"count\":3 } }\n```\n\n### Live Radio\n```\n{ \"tool\": \"tools_live_radio_list\",     \"args\": { \"page\": 1, \"list_size\": 50 } }\n{ \"tool\": \"tools_live_radio_play_now\", \"args\": { \"name\": \"BBC Radio 6 Music\" } }\n{ \"tool\": \"tools_live_radio_play_by_key\", \"args\": { \"stationKey\": \"<stationKey>\" } }\n```\n\n### Outputs, Grouping, Transfer\n```\n{ \"tool\": \"tools_outputs_list\",                  \"args\": {} }\n{ \"tool\": \"tools_outputs_list_group_candidates\", \"args\": { \"primary_output_id\": \"<outputId>\" } }\n{ \"tool\": \"tools_group_zones\",                   \"args\": { \"outputs\": [\"<o1>\", \"<o2>\"] } }\n{ \"tool\": \"tools_transfer_playback\",             \"args\": { \"to_zone_id\": \"<zoneId>\" } }\n```\n\n### Mute Controls\n```\n{ \"tool\": \"tools_mute\",        \"args\": { \"zoneId\": \"<zoneId>\", \"how\": \"mute\" } }\n{ \"tool\": \"tools_unmute\",      \"args\": { \"zoneId\": \"<zoneId>\" } }\n { \"tool\": \"tools_mute_all\",    \"args\": { } }               // global\n { \"tool\": \"tools_unmute_all\",  \"args\": { } }\n```\nNote: When a zone has multiple outputs, you may need to specify `outputId`. Use `tools_outputs_list { zoneId }` to enumerate outputs, then retry `tools_mute`/`tools_unmute` with `outputId`.\n\n### Queue and Now Playing\n```\n{ \"tool\": \"tools_queue_head_get\",       \"args\": { \"count\": 3 } }\n{ \"tool\": \"tools_queue_play_from_here\", \"args\": { \"queue_item_id\": \"<id>\" } }\n{ \"tool\": \"tools_now_playing_shuffle\",  \"args\": { \"on\": true } }\n{ \"tool\": \"tools_now_playing_repeat\",   \"args\": { \"mode\": \"all\" } }\n```\n\n### Snapshots & History\n```\n{ \"tool\": \"tools_snapshots_recently_played\",     \"args\": {} }\n{ \"tool\": \"tools_snapshots_most_played_tracks\",  \"args\": {} }\n{ \"tool\": \"tools_snapshots_most_played_albums\",  \"args\": {} }\n{ \"tool\": \"tools_snapshots_most_played_artists\", \"args\": {} }\n{ \"tool\": \"tools_history_plays_list\",            \"args\": { \"limit\": 50 } }\n```\n\n### Library, Genres, Composers\n```\n{ \"tool\": \"tools_library_albums_list\",     \"args\": { \"page\": 1 } }\n{ \"tool\": \"tools_library_tracks_list\",     \"args\": { \"page\": 1 } }\n{ \"tool\": \"tools_genre_artists_list\",      \"args\": { \"genre\": \"Jazz\" } }\n{ \"tool\": \"tools_library_composers_list\",  \"args\": { \"page\": 1 } }\n{ \"tool\": \"tools_composer_open\",           \"args\": { \"name\": \"Mozart\" } }\n{ \"tool\": \"tools_composer_play_now\",       \"args\": { \"name\": \"Mozart\" } }\n```\n\n### Services (TIDAL / Qobuz)\n```\n{ \"tool\": \"tools_tidal_open\",           \"args\": {} }\n{ \"tool\": \"tools_tidal_playlists_list\", \"args\": { \"page\": 1 } }\n{ \"tool\": \"tools_tidal_albums_list\",    \"args\": { \"page\": 1 } }\n{ \"tool\": \"tools_qobuz_open\",           \"args\": {} }\n{ \"tool\": \"tools_qobuz_albums_list\",    \"args\": { \"page\": 1 } }\n```\n\n## License\nProprietary — see LICENSE.\n","readmeFilename":"README.md"}