{"_id":"@avala-ai/mcp-server","_rev":"10-5491fd4f081a88287747d500068fcde4","name":"@avala-ai/mcp-server","dist-tags":{"latest":"0.7.5"},"versions":{"0.1.0":{"name":"@avala-ai/mcp-server","version":"0.1.0","license":"MIT","_id":"@avala-ai/mcp-server@0.1.0","maintainers":[{"name":"emal-avala","email":"emal@avala.ai"}],"bin":{"avala-mcp-server":"dist/index.js"},"dist":{"shasum":"51ee0ee3fc8bf83207c12ef5344645882a1b418c","tarball":"https://registry.npmjs.org/@avala-ai/mcp-server/-/mcp-server-0.1.0.tgz","fileCount":5,"integrity":"sha512-aNHW3iRlwiQROqViCwfIw8JNbBkNNwivy4rNgdVLH9U3Xo0hhRTHhcFJf9KeZ6IE5F8kKdqnqXXbda61+Q9UKQ==","signatures":[{"sig":"MEYCIQDWNmvOZWwlcbnSuYYdmkZ0eJpUx57VJDgyGHp6N2k5CAIhALa1iLpA4kFA5y+2XZm+plLaZz5iMY/jBjlXu8SrAaOX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18415},"main":"./dist/index.js","type":"module","_from":"file:avala-ai-mcp-server-0.1.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"scripts":{"lint":"tsc --project ../sdk/tsconfig.json --emitDeclarationOnly && tsc --noEmit","test":"vitest run","build":"tsup"},"_npmUser":{"name":"emal-avala","email":"emal@avala.ai"},"_resolved":"/tmp/7558e2c9794b796f1055abc0c54fc577/avala-ai-mcp-server-0.1.0.tgz","_integrity":"sha512-aNHW3iRlwiQROqViCwfIw8JNbBkNNwivy4rNgdVLH9U3Xo0hhRTHhcFJf9KeZ6IE5F8kKdqnqXXbda61+Q9UKQ==","_npmVersion":"10.9.4","description":"MCP server for the Avala API","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.23.0","@avala-ai/sdk":"0.1.0","@modelcontextprotocol/sdk":"^1.25.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.4.0","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.1.0_1771823012064_0.4501851139404214","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@avala-ai/mcp-server","version":"0.2.0","license":"MIT","_id":"@avala-ai/mcp-server@0.2.0","maintainers":[{"name":"emal-avala","email":"emal@avala.ai"}],"bin":{"avala-mcp-server":"dist/index.js"},"dist":{"shasum":"c42220ad21842c0aaee4bd3ac544d122e2917968","tarball":"https://registry.npmjs.org/@avala-ai/mcp-server/-/mcp-server-0.2.0.tgz","fileCount":6,"integrity":"sha512-QMsiCV8KdCqFHA3cX0h6vdbcpwaZ1E9d38RzgCzUdVl68T2qIPDaPUYGI8EMWuZqqLamx/2076LTrR/v93EeEg==","signatures":[{"sig":"MEYCIQCVLj4wlaza+0UURBQlq8/qTSeaQZSIwb/Sdp72IEWbfQIhANXaOdnEKfJnwZYy1s1msyOr6uJGf3LqkFTRDnWItSoE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19985},"main":"./dist/index.js","type":"module","_from":"file:avala-ai-mcp-server-0.2.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"scripts":{"lint":"tsc --project ../sdk/tsconfig.json --emitDeclarationOnly && tsc --noEmit","test":"vitest run","build":"tsup"},"_npmUser":{"name":"emal-avala","email":"emal@avala.ai"},"_resolved":"/tmp/679cb5ef297f564e2bb55765f8c734cd/avala-ai-mcp-server-0.2.0.tgz","_integrity":"sha512-QMsiCV8KdCqFHA3cX0h6vdbcpwaZ1E9d38RzgCzUdVl68T2qIPDaPUYGI8EMWuZqqLamx/2076LTrR/v93EeEg==","_npmVersion":"10.9.4","description":"MCP server for the Avala API","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.23.0","@avala-ai/sdk":"0.2.0","@modelcontextprotocol/sdk":"^1.25.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.4.0","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.2.0_1771871771328_0.43618000763558307","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@avala-ai/mcp-server","version":"0.3.0","license":"MIT","_id":"@avala-ai/mcp-server@0.3.0","maintainers":[{"name":"emal-avala","email":"emal@avala.ai"}],"bin":{"avala-mcp-server":"dist/index.js"},"dist":{"shasum":"410d40f1399fcea446306c72cf0ad10665e823b8","tarball":"https://registry.npmjs.org/@avala-ai/mcp-server/-/mcp-server-0.3.0.tgz","fileCount":6,"integrity":"sha512-rM8NiR9yOZYDBLR7mfDB4xsslWQU6nCdCzqA9iqpLEbk1L27uL9PWtiFM4XbCAyX+FALl5Dnm+o1M/XnV9vxcg==","signatures":[{"sig":"MEQCIB9HSUTbVQOT4we7rPkvVGMICbwqeU5QLZwiUHMwWLT0AiBO0dxeoZ7VCqpyAzVULP7WfCqkC71HyJvI/jA+UIoWYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19985},"main":"./dist/index.js","type":"module","_from":"file:avala-ai-mcp-server-0.3.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"scripts":{"lint":"tsc --project ../sdk/tsconfig.json --emitDeclarationOnly && tsc --noEmit","test":"vitest run","build":"tsup"},"_npmUser":{"name":"emal-avala","email":"emal@avala.ai"},"_resolved":"/tmp/44e0a9177d5f0b6de77aa766966025c6/avala-ai-mcp-server-0.3.0.tgz","_integrity":"sha512-rM8NiR9yOZYDBLR7mfDB4xsslWQU6nCdCzqA9iqpLEbk1L27uL9PWtiFM4XbCAyX+FALl5Dnm+o1M/XnV9vxcg==","_npmVersion":"10.9.4","description":"MCP server for the Avala API","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.23.0","@avala-ai/sdk":"0.3.0","@modelcontextprotocol/sdk":"^1.25.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.4.0","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.3.0_1771926925678_0.05547906092878452","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@avala-ai/mcp-server","version":"0.4.1","license":"MIT","_id":"@avala-ai/mcp-server@0.4.1","maintainers":[{"name":"emal-avala","email":"emal@avala.ai"}],"bin":{"avala-mcp-server":"dist/index.js"},"dist":{"shasum":"b6500ad3fc1baca5b71779b1e86adc62b0e18e8f","tarball":"https://registry.npmjs.org/@avala-ai/mcp-server/-/mcp-server-0.4.1.tgz","fileCount":6,"integrity":"sha512-nKqQVuQmSurySNmnbzWI17Yx8/Firr++H+i2V4QWd+sIhK+JqSha8YwwJMGT7piyOxXUz952EHsWeYKkQTy5Jg==","signatures":[{"sig":"MEYCIQD8UCDvM80GS084PFvrOao7gWpkM++hP3G71PTzxD3PEwIhAPn6QCWV1JCpr/sHWo06VFC7GddnsR60TQRGYsxzVOW8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85666},"main":"./dist/index.js","type":"module","_from":"file:avala-ai-mcp-server-0.4.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"scripts":{"lint":"tsc --project ../sdk/tsconfig.json --emitDeclarationOnly && tsc --noEmit","test":"vitest run","build":"tsup"},"_npmUser":{"name":"emal-avala","email":"emal@avala.ai"},"_resolved":"/tmp/81df6c89a3c7b48c4e34096d62b62273/avala-ai-mcp-server-0.4.1.tgz","_integrity":"sha512-nKqQVuQmSurySNmnbzWI17Yx8/Firr++H+i2V4QWd+sIhK+JqSha8YwwJMGT7piyOxXUz952EHsWeYKkQTy5Jg==","_npmVersion":"10.9.4","description":"MCP server for the Avala API","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.23.0","@avala-ai/sdk":"0.4.1","@modelcontextprotocol/sdk":"^1.25.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.4.0","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.4.1_1772113369833_0.5539524311269897","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@avala-ai/mcp-server","version":"0.5.0","license":"MIT","_id":"@avala-ai/mcp-server@0.5.0","maintainers":[{"name":"emal-avala","email":"emal@avala.ai"}],"bin":{"avala-mcp-server":"dist/index.js"},"dist":{"shasum":"b24d6b878f2091b5f43a89c346b17d4d8ea6f85a","tarball":"https://registry.npmjs.org/@avala-ai/mcp-server/-/mcp-server-0.5.0.tgz","fileCount":6,"integrity":"sha512-2tcVlGtfeVyqOx6gpPSYeMKWGniOrf4pDSNYRCKRbBXfhq3C2YDwhtnUaEli/dCmsFWVzagsraZnmDL83dWsjQ==","signatures":[{"sig":"MEUCIQCfOrzcGXEXV3R/7FrMhOp/YfUDnc0ac7/oIBPkcNIeQwIgZqDXLWIDU04toJzIMl8dtT6OkTMH4D5dddWd2qeZ9WY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103177},"main":"./dist/index.js","type":"module","_from":"file:avala-ai-mcp-server-0.5.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"scripts":{"lint":"tsc --project ../sdk/tsconfig.json --emitDeclarationOnly && tsc --noEmit","test":"vitest run","build":"tsup"},"_npmUser":{"name":"emal-avala","email":"emal@avala.ai"},"_resolved":"/tmp/0730c0aac7513042ed38e4a2016d3707/avala-ai-mcp-server-0.5.0.tgz","_integrity":"sha512-2tcVlGtfeVyqOx6gpPSYeMKWGniOrf4pDSNYRCKRbBXfhq3C2YDwhtnUaEli/dCmsFWVzagsraZnmDL83dWsjQ==","_npmVersion":"10.9.4","description":"MCP server for the Avala API","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.23.0","@avala-ai/sdk":"0.5.0","@modelcontextprotocol/sdk":"^1.25.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.4.0","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.5.0_1773708049148_0.03570672502603078","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@avala-ai/mcp-server","version":"0.6.0","license":"MIT","_id":"@avala-ai/mcp-server@0.6.0","maintainers":[{"name":"emal-avala","email":"emal@avala.ai"}],"bin":{"avala-mcp-server":"dist/index.js"},"dist":{"shasum":"cea145d65478b2390003b77ba1577c7e6aa22e73","tarball":"https://registry.npmjs.org/@avala-ai/mcp-server/-/mcp-server-0.6.0.tgz","fileCount":6,"integrity":"sha512-WYAFq6/p5T0ofkaY5sEsuygTB1EbZc6ABRDqm7kpKcx3t0IRrcC8rkZNP26unDuICl62o7AFvQplNkkI8xoQ5Q==","signatures":[{"sig":"MEYCIQDux/mkEj3cyEemyVeffYfGurdYH00jSxBEcOxcWta+zwIhALThDWYyeCFy5wymt7EH21CipFTEKibVhQmXrX7Upya4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125514},"main":"./dist/index.js","type":"module","_from":"file:avala-ai-mcp-server-0.6.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"scripts":{"lint":"tsc --project ../sdk/tsconfig.json --emitDeclarationOnly && tsc --noEmit","test":"vitest run","build":"tsup","docs:list":"tsx scripts/generate-mcp-docs.ts --list","docs:check":"tsx scripts/generate-mcp-docs.ts --check","docs:generate":"tsx scripts/generate-mcp-docs.ts"},"_npmUser":{"name":"emal-avala","email":"emal@avala.ai"},"_resolved":"/tmp/05400bff9a799fdcf67198739b0b585d/avala-ai-mcp-server-0.6.0.tgz","_integrity":"sha512-WYAFq6/p5T0ofkaY5sEsuygTB1EbZc6ABRDqm7kpKcx3t0IRrcC8rkZNP26unDuICl62o7AFvQplNkkI8xoQ5Q==","_npmVersion":"10.9.7","description":"MCP server for the Avala API","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","@avala-ai/sdk":"0.6.0","@modelcontextprotocol/sdk":"^1.25.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.4.0","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.6.0_1774647606213_0.9650474561175579","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@avala-ai/mcp-server","version":"0.7.0","license":"MIT","_id":"@avala-ai/mcp-server@0.7.0","maintainers":[{"name":"emal-avala","email":"emal@avala.ai"}],"bin":{"avala-mcp-server":"dist/index.js"},"dist":{"shasum":"692774ea267646d8523ee95d32ee1ca88803e9c5","tarball":"https://registry.npmjs.org/@avala-ai/mcp-server/-/mcp-server-0.7.0.tgz","fileCount":5,"integrity":"sha512-9cNX4zgeWf155feh63D2Ki3j2NRDVcqVHElvlB5mKCGM08S7Dt91ye8ZG01weLckZH+r7VWsuuJmu41AKoD1Uw==","signatures":[{"sig":"MEQCIAVMIXEllzFVuWbclaNMa1keTi/h60Ozc+l3AT1Iu5SAAiA6kXDjQWW7mfdtDcWXt0Sl9OMgF6/b22uWG8UJJEyCXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135212},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"d48688cb821b45e547715081f27b411e30cac4e8","scripts":{"lint":"tsc --project ../sdk/tsconfig.json --emitDeclarationOnly && tsc --noEmit","test":"vitest run","build":"tsup","docs:list":"bun scripts/generate-mcp-docs.ts --list","docs:check":"bun scripts/generate-mcp-docs.ts --check","docs:generate":"bun scripts/generate-mcp-docs.ts"},"_npmUser":{"name":"emal-avala","email":"emal@avala.ai"},"_npmVersion":"10.9.7","description":"MCP server for the Avala API","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","@avala-ai/sdk":"workspace:*","@modelcontextprotocol/sdk":"^1.25.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.4.0","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.7.0_1776918328329_0.9574739046222256","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@avala-ai/mcp-server","version":"0.7.2","license":"MIT","_id":"@avala-ai/mcp-server@0.7.2","maintainers":[{"name":"emal-avala","email":"emal@avala.ai"}],"homepage":"https://github.com/avala-ai/avala-sdk-ts#readme","bugs":{"url":"https://github.com/avala-ai/avala-sdk-ts/issues"},"bin":{"avala-mcp-server":"dist/index.js"},"dist":{"shasum":"6c6e5dfc6675741fe7518d9b43a66c005f59fb4f","tarball":"https://registry.npmjs.org/@avala-ai/mcp-server/-/mcp-server-0.7.2.tgz","fileCount":5,"integrity":"sha512-mrIr27r+tJk301BBG+Pki1ni8Fl6DA6NoEhFqo8qSp/x69UmhMlN+sZ9QezQdo8BZH2Bnj++Vk4xRmlSbnP9fQ==","signatures":[{"sig":"MEUCIAgh2dJb7LOKg/slPjM3D9ZLVUSBnGmExxTPYKBLRzsSAiEA7sSkdcIOBmLmjpGBqddRmFf5SzDUIlHgFSbVtKQd9zQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@avala-ai%2fmcp-server@0.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140037},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"90a95893f8af89a282096631435bee5e06ffb8c4","scripts":{"lint":"tsc --project ../sdk/tsconfig.json --emitDeclarationOnly && tsc --noEmit","test":"vitest run","build":"tsup","docs:list":"bun scripts/generate-mcp-docs.ts --list","docs:check":"bun scripts/generate-mcp-docs.ts --check","docs:generate":"bun scripts/generate-mcp-docs.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b518ed97-af4a-47e1-8f28-28ac53844b2e"}},"repository":{"url":"git+https://github.com/avala-ai/avala-sdk-ts.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"11.18.0","description":"MCP server for the Avala API","directories":{},"_nodeVersion":"22.23.0","dependencies":{"zod":"^3.23.0","@avala-ai/sdk":"workspace:*","@modelcontextprotocol/sdk":"^1.25.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.4.0","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.7.2_1782846224869_0.6148594519689916","host":"s3://npm-registry-packages-npm-production"}},"0.7.4":{"name":"@avala-ai/mcp-server","version":"0.7.4","license":"MIT","_id":"@avala-ai/mcp-server@0.7.4","maintainers":[{"name":"emal-avala","email":"emal@avala.ai"}],"homepage":"https://github.com/avala-ai/avala-sdk-ts#readme","bugs":{"url":"https://github.com/avala-ai/avala-sdk-ts/issues"},"bin":{"avala-mcp-server":"dist/index.js"},"dist":{"shasum":"6434855f2eb525e35157ce09003bdd6def2a423c","tarball":"https://registry.npmjs.org/@avala-ai/mcp-server/-/mcp-server-0.7.4.tgz","fileCount":5,"integrity":"sha512-Gn859bGgJzJcYyhjc2C2IgNzGJIfCd3t3EzqOaNpnG/CKWQAa3heWhEEGekqaxLb6fcBDO0UE6tEps8AijcY3A==","signatures":[{"sig":"MEYCIQD9rehzgmtKbMe8FkQ9pqM4KIGfP35hFxzPNn5MNhgTZwIhAIlMjpUxev4/Yvqxjb3/YBWwdCue1ExyCGqEgHYfyUsk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@avala-ai%2fmcp-server@0.7.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140513},"main":"./dist/index.js","type":"module","_from":"file:dist-release/avala-ai-mcp-server-0.7.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"scripts":{"lint":"tsc --project ../sdk/tsconfig.json --emitDeclarationOnly && tsc --noEmit","test":"vitest run","build":"tsup","docs:list":"bun scripts/generate-mcp-docs.ts --list","docs:check":"bun scripts/generate-mcp-docs.ts --check","docs:generate":"bun scripts/generate-mcp-docs.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b518ed97-af4a-47e1-8f28-28ac53844b2e"}},"_resolved":"/home/runner/work/avala-sdk-ts/avala-sdk-ts/dist-release/avala-ai-mcp-server-0.7.4.tgz","_integrity":"sha512-Gn859bGgJzJcYyhjc2C2IgNzGJIfCd3t3EzqOaNpnG/CKWQAa3heWhEEGekqaxLb6fcBDO0UE6tEps8AijcY3A==","repository":{"url":"git+https://github.com/avala-ai/avala-sdk-ts.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"11.18.0","description":"MCP server for the Avala API","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.0","@avala-ai/sdk":"workspace:*","@modelcontextprotocol/sdk":"^1.25.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.4.0","@types/node":"^25.3.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.7.4_1783443470808_0.7198419091991537","host":"s3://npm-registry-packages-npm-production"}},"0.7.5":{"name":"@avala-ai/mcp-server","version":"0.7.5","description":"MCP server for the Avala API","type":"module","repository":{"type":"git","url":"git+https://github.com/avala-ai/avala-sdk-ts.git","directory":"packages/mcp-server"},"main":"./dist/index.js","bin":{"avala-mcp-server":"dist/index.js"},"scripts":{"build":"tsup","test":"vitest run","test:package":"bun run --cwd ../sdk build && bun run build && bun scripts/verify-package-install.ts","test:release":"bun scripts/verify-package-install.ts --registry-version","lint":"tsc --project ../sdk/tsconfig.json --emitDeclarationOnly && tsc --noEmit && tsc --project scripts/tsconfig.json && tsc --project eval/tsconfig.json","docs:generate":"bun scripts/generate-mcp-docs.ts","docs:check":"bun scripts/generate-mcp-docs.ts --check","docs:list":"bun scripts/generate-mcp-docs.ts --list","eval":"bun eval/runner.ts","eval:record":"bun eval/runner.ts --live --trials 1 --concurrency 1"},"dependencies":{"@avala-ai/sdk":"0.7.5","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/server":"^2.0.0","jose":"^6.2.1","zod":"^4.2.0"},"devDependencies":{"@anthropic-ai/sdk":"^0.122.0","@modelcontextprotocol/client":"^2.0.0","@types/node":"^25.3.0","tsup":"^8.0.0","typescript":"^5.4.0","vitest":"^3.2.7"},"engines":{"node":">=20"},"license":"MIT","types":"./dist/index.d.ts","_id":"@avala-ai/mcp-server@0.7.5","bugs":{"url":"https://github.com/avala-ai/avala-sdk-ts/issues"},"homepage":"https://github.com/avala-ai/avala-sdk-ts#readme","_integrity":"sha512-hLw05VcbXSpALLuuV0+oiRY8WhE50wFz0KE12FSdVeTMxenW6lX5Ra649NSOV2mQozcgdBX6+DRCvItfSxvriw==","_resolved":"/home/runner/work/avala-sdk-ts/avala-sdk-ts/dist-release/avala-ai-mcp-server-0.7.5.tgz","_from":"file:dist-release/avala-ai-mcp-server-0.7.5.tgz","_nodeVersion":"22.23.2","_npmVersion":"12.0.2","dist":{"integrity":"sha512-hLw05VcbXSpALLuuV0+oiRY8WhE50wFz0KE12FSdVeTMxenW6lX5Ra649NSOV2mQozcgdBX6+DRCvItfSxvriw==","shasum":"098ad3b9c86528c74bfd7d439a945b167556a6dd","tarball":"https://registry.npmjs.org/@avala-ai/mcp-server/-/mcp-server-0.7.5.tgz","fileCount":10,"unpackedSize":518786,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@avala-ai%2fmcp-server@0.7.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFzYXi6HxXWGEMMZsCr+ngDtPjnMQJKBM6pM4M6lWEj8AiEA5rScZx1bUnm8dj16Kwl/rB2yXIMuPywdccLhXLGp8gw="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b518ed97-af4a-47e1-8f28-28ac53844b2e"}},"directories":{},"maintainers":[{"name":"emal-avala","email":"emal@avala.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-server_0.7.5_1789532011389_0.27321109206532657"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-23T05:03:31.962Z","modified":"2026-09-16T04:13:31.842Z","0.1.0":"2026-02-23T05:03:32.202Z","0.2.0":"2026-02-23T18:36:11.471Z","0.3.0":"2026-02-24T09:55:25.833Z","0.4.1":"2026-02-26T13:42:49.972Z","0.5.0":"2026-03-17T00:40:49.298Z","0.6.0":"2026-03-27T21:40:06.356Z","0.7.0":"2026-04-23T04:25:28.468Z","0.7.2":"2026-06-30T19:03:45.030Z","0.7.4":"2026-07-07T16:57:50.955Z","0.7.5":"2026-09-16T04:13:31.547Z"},"bugs":{"url":"https://github.com/avala-ai/avala-sdk-ts/issues"},"license":"MIT","homepage":"https://github.com/avala-ai/avala-sdk-ts#readme","repository":{"type":"git","url":"git+https://github.com/avala-ai/avala-sdk-ts.git","directory":"packages/mcp-server"},"description":"MCP server for the Avala API","maintainers":[{"name":"emal-avala","email":"emal@avala.ai"}],"readme":"# @avala-ai/mcp-server\n\n[![npm version](https://img.shields.io/npm/v/@avala-ai/mcp-server)](https://www.npmjs.com/package/@avala-ai/mcp-server)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n[Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server for the [Avala API](https://avala.ai/docs). It lets agents such as Claude and Codex manage the Avala Physical AI data loop through the same tenant-safe APIs used by the platform.\n\n## Connect to Avala's hosted MCP\n\nUse `https://mcp.avala.ai/mcp` as a remote Streamable HTTP server in an\nOAuth-capable MCP client. Sign in with your Avala account when prompted. Access\nrequires the corresponding Avala organization permissions and MCP grants; a\nregistry listing does not grant access. Staff tools require separate staff access.\nAsk your Avala administrator if sign-in succeeds but the required tools are missing.\n\nFor VS Code, add this to `.vscode/mcp.json`, start the server, and complete sign-in:\n\n```json\n{\n  \"servers\": {\n    \"avala\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.avala.ai/mcp\"\n    }\n  }\n}\n```\n\nBegin with a read, such as listing the projects available to your account.\nTool availability follows your credential scopes and the deployed server version.\nThe initial registry listing describes read capabilities; it does not promise\nproposal creation, approval, or execution. Never commit credentials to client\nconfiguration files. See the [setup guide](https://avala.ai/docs/integrations/mcp-setup)\nfor additional clients and API-key configuration.\n\nThe hosted listing metadata lives in [`server.json`](./server.json). Its version\ntracks registry metadata independently of the npm package and deployed image.\n\n## Installation\n\n```bash\nnpm install -g @avala-ai/mcp-server\n```\n\nRequires Node.js 20+.\n\n### First-party operations skill\n\nThe source tree includes [avala-physical-ai-operations](./skills/avala-physical-ai-operations/SKILL.md)\nand packages its complete directory under `skills/` in the MCP npm artifact.\nIt guides staff through bounded monitoring, exact-target inspection, independently\napproved dispatch proposals, and separate execution/current-state verification.\nIt is not a customer QC approval skill and does not grant staff access or scopes.\n\n**Release availability:** this is new package content, not present in the older\n`0.7.4` npm artifact. Use a reviewed release that contains `skills/`, or test the\nlocally built SDK and MCP tarballs together. Do not infer publication from a\nsource checkout or assume the hosted MCP runs the same version.\n\nAfter installing that MCP package into a local npm project, explicitly copy the\nwhole skill directory into your agent's skill location. For a repository-local\n[Codex skill](https://learn.chatgpt.com/docs/build-skills), run from the project root:\n\n```bash\ntest -f node_modules/@avala-ai/mcp-server/skills/avala-physical-ai-operations/SKILL.md &&\ntest ! -e .agents/skills/avala-physical-ai-operations &&\ntest ! -L .agents/skills/avala-physical-ai-operations &&\nmkdir -p .agents/skills &&\ncp -R node_modules/@avala-ai/mcp-server/skills/avala-physical-ai-operations .agents/skills/\n```\n\nThe existence checks stop a reinstall from overwriting a customized skill.\nReview and back up an existing copy before replacing it. Preserve `references/`\nand `agents/`, not just `SKILL.md`. npm installation itself does not install an\nagent skill or change client configuration. Other skill-capable clients can use\nthe same complete directory in their documented skill location.\n\nConnect the hosted MCP separately as described above. Start with:\n“Use $avala-physical-ai-operations to inspect the current dispatch state for this\nexact batch; report evidence gaps and propose next steps without changing it.”\nInspect live tool metadata first: unavailable tools or scopes are a deployment\nor access gap. Skill installation does not establish hosted readiness, human\napproval, successful assignment, or the original customer QC acceptance flow.\n\nFor contributors, `skills/` is the canonical source and travels with the SDK\nmirror. Catalog tests run in both repositories; monorepo tests additionally\ncheck the local discovery copy. `bun run test:package` builds both packages,\ninstalls their actual npm tarballs outside the workspace, copies the complete\nskill into a disposable agent directory, and checks content and overwrite refusal.\nIt does not publish or call the Avala API.\n\nTo check an **already published** stable release from a source checkout, run\n`bun run test:release X.Y.Z` from this package directory, replacing `X.Y.Z`\nwith the exact reviewed version. Tags, ranges, prereleases and omitted versions\nare refused; the command never selects `latest`, bumps a version or publishes.\nIt downloads that SDK/MCP pair from the public npm registry, installs only the\nMCP tarball into an isolated consumer (so npm must resolve its actual SDK edge),\nthen checks matching package/protocol versions, the complete skill and default\nread catalog. Registry skill bytes are compared with that downloaded artifact,\nnot potentially newer checkout files. The output records version, artifact\nintegrities and actual Node version. npm lifecycle scripts are disabled, inherited\ncredentials are excluded, and only owned temporary files are removed.\n\nA nonzero exit is a failed release check, including a missing version, a broken\ndependency, missing skill or unavailable registry. In particular, the old `0.7.4`\nartifact must not pass this operations-release check. Successful installation and\ncatalog discovery do not establish hosted authorization, provenance attestation,\nAPI behavior or real Operations/customer-QC acceptance.\n\n## Setup\n\nSet your API key:\n\n```bash\nexport AVALA_API_KEY=\"avk_your_api_key\"\n```\n\nLocal stdio MCP exposes only reads unless you explicitly enable its legacy mutation catalog:\n\n```bash\nexport AVALA_MCP_ENABLE_MUTATIONS=true\n```\n\n### Claude Desktop\n\nAdd to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"avala\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@avala-ai/mcp-server\"],\n      \"env\": {\n        \"AVALA_API_KEY\": \"avk_your_api_key\"\n      }\n    }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add avala -- npx -y @avala-ai/mcp-server\n```\n\n### Direct Usage\n\n```bash\navala-mcp-server\n```\n\n## Hosted mode (Streamable HTTP)\n\nThe package also ships a stateless [Streamable HTTP](https://modelcontextprotocol.io/specification/2026-07-28/basic/transports#streamable-http) entry, used by Avala's hosted deployment:\n\n```bash\nnode dist/http.js\n```\n\n- `POST /mcp` — the MCP endpoint. Every request carries either `X-Avala-Api-Key: <key>`, a 40-hex Avala key as `Authorization: Bearer`, or an Auth0 OAuth token issued for the exact MCP resource. OAuth subject tokens are verified at this boundary and exchanged through RFC 8693; only the resulting API-audience token reaches Avala's REST API.\n- `GET /.well-known/oauth-protected-resource/mcp` — public RFC 9728 protected-resource metadata. Authentication failures point clients here through `WWW-Authenticate`, enabling OAuth-capable clients to discover Auth0 automatically.\n- `GET /` — public endpoint/discovery summary.\n- `GET /healthz` — unauthenticated liveness probe.\n- **Dual protocol**: current clients use the stateless 2026-07-28 request\n  envelope and `Mcp-Method` / `Mcp-Name` routing headers. The same factory\n  retains the SDK's stateless 2025 compatibility path for existing clients.\n- **Proposal-backed dispatch**: use `list_workforce_assignment_candidates` (`workforce.write` OR `operations.proposal.read`), then `create_operation_proposal`, `evaluate_operation_proposal`, `request_operation_approval`, `get_operation_proposal`, `execute_approved_operation`, `verify_operation`, and `list_operation_events`. Each lifecycle tool declares its exact `operations.*` scope. Independent approval is available only through the returned same-origin Django admin `approval.reviewPath`; MCP cannot approve, and the requester cannot self-approve. Any credential with one of the five proposal scopes is proposal-only for writes, including credentials that also carry legacy write scopes. Direct assignment/cancellation tools have been removed. Execution queues a backend task and does not prove success; preserve UID/version and verify all current observations. Historical `verified` may coexist with current `changed`, and productive activity remains unmeasured. `reverse_operation` only records a BLOCKED child because progress observability is unavailable.\n- **Read-first with an exact legacy action allowlist**: hosted MCP ignores `AVALA_MCP_ENABLE_MUTATIONS`. Its reviewed writes are `change_workforce_group_membership`, `change_workforce_batch_allocation`, `create_workforce_batch`, `set_workforce_batch_priority`, `set_workforce_batch_status`, `set_workforce_sequence_status`, visible only to a staff-privileged credential carrying `workforce.write` and none of the proposal scopes. Each action requires MCP elicitation, encrypted confirmation state bound to the exact tool, arguments, credential, expiry and idempotency key, exact expected state, and provider-side MCP audit provenance. Every successful response includes an immutable `operationEventUid`; preserve it and call `get_workforce_operation_event` before reporting the effect as verified. When a receipt UID is unknown, `list_workforce_operation_events` searches a bounded past window with explicit per-ledger storage coverage. Both receipt reads return only opaque targets, fixed before/after effects, provenance-presence booleans, and an explicit `complete`, `partial`, or `unavailable` verification status—never actor identity, reason/client text, raw changes, names, URLs, payloads, pay, rankings, or composite scores. Batch creation accepts only a bounded sequence-scoped unit plan, defaults to explicit allocated staffing, and always starts unavailable; the server derives coworker routes and rejects arbitrary URLs or configuration. Sequence inspection returns only opaque IDs, workflow state, observation tokens, and authorized next edges—never sequence contents or workflow definitions. Current dispatch health reports only present released-to-claimable state and includes an exact receipt for its sampled server observation; an unavailable receipt leaves the live snapshot usable but prevents claiming it was durably recorded. Historical dispatch observations expose those recorded states over bounded windows without pretending sparse, read-triggered samples are continuous telemetry; absent rows do not prove health or unchanged state, and current context is not historical context. Historical dispatch outcomes separately report first database-observed release, first recorded anonymous server-generated queue visibility, and earliest recorded post-release claim, with explicit release and queue-storage gaps. Queue evidence proves neither client receipt nor earliest possible visibility, and historical blocker attribution is never inferred from current state. The exact-journey training-cohort read joins current stored enrollment/completion and latest durable completed-step evidence to current qualifying production-result state. Learning enrollment, progress, and practice data remains authoritative at `learning.avala.ai` (Vercel/Supabase); Django only supplies the bounded join to production evidence. For returned members without observed current qualifying output, the same read includes per-exercise current-curriculum outcome counts and positive load-failure diagnostics. Failure without pass is unresolved recorded evidence—not causal dropoff, actual stall, skill, intent, or ranking—and absence of a load-failure row does not prove success. Aggregate stable exercise step UIDs across every unchanged cursor page before any global practice claim. The read explicitly excludes deleted/overwritten enrollment and practice-row history, historical payouts, sequence results, prompts, answers, scores, raw payloads, and browser/build labels. Its page summaries are never presented as global unless the provider marks reconciliation complete. The exact-coworker journey read joins account readiness, Learning, task access, and non-practice production only for a caller-supplied coworker UID; it exposes a safe label and evidence-backed diagnosis while excluding contacts, provider identities, KYC, pay, and customer payloads, and it propagates joined-provider failures instead of manufacturing zeroes. Unit inspection never exposes coworker identity; write-scoped group discovery returns stable group UIDs, internal labels, and aggregate membership readiness without member rows or live-capacity claims. The separate member roster returns only opaque coworker UIDs, safe first-name/fallback labels, and active, approved, and active-work booleans—never contact/profile data, permissions, pay, performance, customer payloads, or work details. Exact-batch activity monitoring returns opaque coworker IDs plus current assignment state and raw bounded activity only; it never exposes identity fields, work details, rankings, rates, or a composite performance score. `change_workforce_group_membership` requires every exact field from `preview_workforce_group_membership_impact`, two explicit global/capability acknowledgements, and separate human approval; it refuses known no-ops and removals blocked by active target-group work. Global group membership may affect work eligibility and platform capabilities beyond the listed production lines. Batch allocation is the narrower scheduling control: the staffing roster and impact preview expose only opaque IDs, readiness, fixed counts, and raw organization-scoped outcomes, and `change_workforce_batch_allocation` never changes global group qualification. Candidate discovery never returns a ranking, composite score, profile, customer payload, or pay data.\n- **Session and station monitoring**: `get_workforce_session_monitoring` and `get_workforce_station_monitoring` require staff access plus `workforce.read`. Session monitoring accepts `endedFrom`/`endedBefore` as a past half-open window of at most 31 days and counts endings by `ended_at`; missing historical end times stay unknown. Its definition counts span all projects and sample at most 1000 newest-created rows per status; false `statusCountsComplete` means lower bounds, and window completeness requires both terminal statuses complete. Station monitoring counts only retained SessionTask links: recovery can delete links, historical coverage is incomplete, and cross-station counts are not additive. Station reads sample at most 1000 links; false `countsComplete` means lower bounds, and `unknownStatusTaskLinks` preserves sampled unknown statuses. Both use bounded UID pages (`limit` 1–10, default 5; preserve filters with `nextCursor`). Neither establishes completed annotation throughput, upload/acceptance, billing, safe reassignment, Redis queue visibility, or infrastructure health.\n- **Coworker queue-output evidence**: `get_workforce_coworker_reliability` is a pseudonymous, `workforce.write`-scoped staff read. It separates sampled no-work observations from sampled work-available/no-output observations, refuses incomplete storage windows, and explicitly does not claim complete attendance, scheduled availability, intent, or deliberate idleness.\n- **Asset handles**: reads return short-lived opaque handles instead of provider-signed media and export URLs. `resolve_asset_handle` uses MCP elicitation, verifies a short-lived server-issued confirmation challenge bound to the exact handle, then re-fetches the resource with the current credential. Unsupported, declined, forged, or cross-handle replayed confirmation releases no URL.\n- Browser `Origin` validation applies to `/mcp`; public liveness and discovery routes contain no credentialed functionality.\n\nHosted operators must configure `AVALA_MCP_INTERNAL_CLIENT_SECRET`, `AVALA_MCP_OAUTH_RESOURCE`, `AVALA_MCP_OAUTH_ISSUER`, `AVALA_MCP_OAUTH_API_AUDIENCE`, `AVALA_MCP_OAUTH_CLIENT_ID`, `AVALA_MCP_OAUTH_CLIENT_SECRET`, and the space-separated `AVALA_MCP_OAUTH_SCOPES`. For proposal-backed staff operations, advertise `mcp.staff_access`, `workforce.read`, `operations.proposal.read`, `operations.proposal.create`, `operations.approval.request`, `operations.execution.request`, and `operations.verification.read`. Auth0 still requires the admin-assigned role and Django still requires `is_staff=True`; advertising scopes never grants them to customers. Omitting a required scope makes its tools undiscoverable or causes 403 responses. `workforce.read` supplies bounded production monitoring and journey evidence; `operations.proposal.read` also permits assignment-candidate discovery without `workforce.write`.\n\nInclude `workforce.write` only for deployments supporting separate legacy staff credentials that need immutable operation receipts, internal group discovery, group and batch staffing rosters, exact-batch activity, impact previews, or the six reviewed group-membership, batch-allocation, batch-creation, batch-priority, batch-lifecycle and sequence-lifecycle actions. Proposal-bearing credentials cannot use those legacy writes even when they also carry `workforce.write`. Direct assignment/deassignment tools are removed. `PORT`, `AVALA_BASE_URL`, and comma-separated `ALLOWED_ORIGINS` remain optional. Confidential values belong in the deployment secret store, never environment templates or source control.\n\nThe pseudonymous queue-output comparison also requires `workforce.write`; omit that scope when a deployment should not expose person-level operational evidence.\n\nUnlike stdio mode, no `AVALA_API_KEY` environment variable is read — the server is multi-tenant, one credential per request.\n\n## Available Tools\n\n| Tool Category     | Description                                                                                                                                            |\n| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| Datasets          | List and inspect datasets, sequences, frames, calibration, ingest health, capture campaigns, and submissions                                           |\n| Projects          | List and inspect projects                                                                                                                              |\n| Exports           | List, inspect, and create annotation exports                                                                                                           |\n| Fleet             | Device management, recordings, events, alerts, rules                                                                                                   |\n| Agents            | List and inspect automation agents                                                                                                                     |\n| Webhooks          | List and inspect webhook subscriptions                                                                                                                 |\n| Storage           | List storage configurations                                                                                                                            |\n| Quality           | Quality targets, per-capture verdict evidence, campaign acceptance yield and coverage, and consensus scoring                                           |\n| Annotation Issues | List and manage annotation issue data                                                                                                                  |\n| Organizations     | List organizations and members                                                                                                                         |\n| Slices            | List and inspect data slices                                                                                                                           |\n| Assets            | Resolve an opaque media or export handle after confirmation and a current-credential access check                                                     |\n| Stats             | Get overview statistics for your account                                                                                                               |\n| **Workflows**     | **Composite tools: fleet health overview, project quality summary, workspace overview, annotation pipeline creation**                                  |\n| Staff             | Avala staff only: SQL sandbox proxies, aggregate production monitoring, exact-journey training-cohort evidence, current and sampled historical dispatch evidence, release → queue exposure → claim outcomes, bounded production-line inventory, pseudonymous queue-output evidence, immutable operation-receipt verification, group/member readiness, batch/unit attention, signal-backed opaque assignment candidates, and confirmed queue controls |\n| Note              | Local stdio legacy writes (`create_*`, `delete_*`, `test_storage_config`, `evaluate_quality`, `compute_consensus`) require `AVALA_MCP_ENABLE_MUTATIONS=true`; hosted MCP ignores that flag. |\n\n## Documentation\n\n- [MCP Setup Guide](https://avala.ai/docs/integrations/mcp-setup)\n- [TypeScript SDK Guide](https://avala.ai/docs/sdks/typescript)\n- [API Reference](https://avala.ai/docs/api-reference/overview)\n\n## License\n\nMIT - see [LICENSE](../../LICENSE) for details.\n\nFor read-only application readiness, run `python scripts/mcp_production_readiness.py --phase proposal-readiness --json` from the monorepo with `AVALA_MCP_PROPOSAL_BEARER_TOKEN` and `AVALA_MCP_CANARY_OPERATION_PROPOSAL_UID` set through the normal environment. Use a staff proposal credential with `workforce.read` and all five proposal scopes, plus an existing executed proposal. The check inspects all eight lifecycle tools and calls only the three GET tools; it does not create, approve, execute or reverse anything and does not establish infrastructure/deployment readiness.\n\nProposal responses preserve `snapshotCanonicalJson`, the provider's exact frozen hash input. SHA-256 over its untouched UTF-8 bytes equals `snapshotHash`; do not reserialize the typed snapshot to reproduce the digest. The MCP boundary checks those bytes and their exact correspondence with the finite typed snapshot before returning them.\n\n### Recorded earnings and billing\n\nStaff credentials with explicitly granted `billing.read` can call\n`get_billing_coworker_earnings` and `list_billing_organizations`. Workforce grants\ndo not include financial access. Earnings select complete recorded payout periods\nby their end timestamp in a past half-open window of at most 31 days. Preserve\ncurrency and decimal-string precision; time is milliseconds. These reads do not\ncalculate pending earnings, verify settlement, expose invoices or attribute costs\nto work batches. Organization status is stored data, not a live provider check.\n","readmeFilename":"README.md"}