{"_id":"@besales/mcp","_rev":"25-99373c38d265cb380064a23f103fe0ec","name":"@besales/mcp","dist-tags":{"latest":"0.47.1"},"versions":{"0.1.0":{"name":"@besales/mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.1.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"32893ae3e292df4d6111d4f3f28e5c52a9d33d94","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.1.0.tgz","fileCount":59,"integrity":"sha512-YNBMvzMEixizDPcXTnJQbbZobTPXYlWaY9qKXxSnq2ezInhoB1fsakliQPkGLKIFTmm2ZNHVB0faTTNUk7pnVg==","signatures":[{"sig":"MEUCICKLD2Ki04wiXao0RStOvOWe3OkkNgN64yEeelOsdC24AiEA+CQwhhdS8pAGTkD9ZE0E7jP4N+98pBMNuV1GsCX1Scs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":427995},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"852bb04341ec1115966ff69e25ea172031b473d8","scripts":{"test":"vitest run","build":"tsc && mkdir -p dist/schemas dist/resources/concepts && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.0_1778796751116_0.30252768778814065","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"@besales/mcp","version":"0.11.1","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.11.1","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"0657c20ff9039503af41841b87ddf017b285a20a","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.11.1.tgz","fileCount":107,"integrity":"sha512-2SjfR2/4udYWns47ci+Y4GXWVdWbAFlBj3MDGJ7MEN5FP+akV2F0ZWStdabu9LD3EMlF/YNAp3IQnGqUkz+Lxw==","signatures":[{"sig":"MEQCICH4ZZ4ijokgiOwI/EruAdKITz97Wg3CWYQJPNL59McAAiBq/TM0EcAIyTLNDHPewPMXfRL0TBmIOP9YM+XBfaSs4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1165452},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d971188dfc99223edcfa594bcdd634eb0db3e5f6","scripts":{"test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.11.1_1781096133821_0.7134535673349995","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@besales/mcp","version":"0.12.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.12.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"c98e62685f626ec18b97c9c0ccefb7dfbd7bfbaa","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.12.0.tgz","fileCount":107,"integrity":"sha512-ahg2Q5WwsF/prlJow31Z1kytVQUfIo7IyhEyYq29jPlVG2FFFq7+v3oU9FnPv08z/PmE+4P8qTyGEP/UxDyiHw==","signatures":[{"sig":"MEQCIGZD/zWpJt/eFlJw0LMInAbj0QznPZHQrgYf1EakkGzpAiAZlxXTHfBZV1j6HN4gc/P5eayG/DkcWp9bSKGwzYCasg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1180936},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"5f57503e149fd10489a302ce1300c9b2153d9b53","scripts":{"test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.12.0_1781109951806_0.7834819919344245","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@besales/mcp","version":"0.14.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.14.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"e9db5f4383a5ec69d95a8b90bb96430c33aabefe","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.14.0.tgz","fileCount":114,"integrity":"sha512-QzJAePRwRpzvzfluxyCrDraSVxZfA3SfCoDKqL3bCOmc1NcrbmbGEKlcBdX9XImGEO52K3eS/8PMRGs+zlpcQg==","signatures":[{"sig":"MEYCIQCueUg9xiVlDr8AlxriGs5Sxk03Wp15BIf5cBi/mjqCvAIhAM4znrijd0/p6VnMfBt7+ufwzL/d8mwTFM9nSX62f3ns","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1358659},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c8bb3f56337fccd02637c30917bd3e09b4a2b2e4","scripts":{"test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.14.0_1781532243012_0.6908948210943691","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@besales/mcp","version":"0.15.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.15.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"b07d96ed5163be2d2d1d20fe51a54d8585acc66a","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.15.0.tgz","fileCount":114,"integrity":"sha512-GZ0vx2NkQ7WFkKg1S8fA4yBv31p/vQuCqV7d64NZLvHnEIbU0o0NLgv6NDIb7YkSEgi0bV7YtdQ5tuvRiV0WyQ==","signatures":[{"sig":"MEQCIFShWvdTbzz7Nja9qs7axUpkhBVGo0VhGS8+AYrRQWQqAiBg/iuvyHxGH96G2gRZIBePeDGGvBzHOEHektscTv65kw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1366586},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"bc8574917feaa2cfd04c26b7f833d36aebadee4c","scripts":{"test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.15.0_1781611455342_0.2537009945691622","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@besales/mcp","version":"0.18.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.18.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"6dda21b4e84f43ac5e7e04f2563c4cdcf0d30340","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.18.0.tgz","fileCount":116,"integrity":"sha512-KHbSxLNlxqm0rs4xE1pHVR6XxUJKebjxVElI5WqNKNrMdz5P8bqhLSHf4ZwRr39QoAe3QUN3zGhS6s4l3WOakg==","signatures":[{"sig":"MEQCIAV2JQci7gsRMdIsSlbijbEKBTPQGOUt6a/G+UQfjqXiAiAv/vELTOkmKPS6h0S1453kW2FBVDrQAy5zurysqCZceQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1441008},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"bce6a26809d0791aa8ab4b37e47ca05c732cdbe6","scripts":{"test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.18.0_1782214038975_0.9525133832211563","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@besales/mcp","version":"0.19.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.19.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"2c5cd387ae18533974f8dd4b96a71a81f7cacc58","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.19.0.tgz","fileCount":117,"integrity":"sha512-eeYKf94kbeZ5DrObZSvg4nXLUybjFsAU5dfy76XNQI7+T3bdy5j597CtS5tbmgyw+vKS33f3NfOzPC+9iY66UA==","signatures":[{"sig":"MEQCIB2wHZiKPhGeeuH5M0ih6vAQquEjWOzMpZ5nUi0ibxIsAiAZzH7nF1H7KC41wjT5kSWbx1Zo+9KL3s7s79Tb0SHWpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1474007},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"02d9f0acfbb5cc57d06e75afbc310af2b45c7758","scripts":{"test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"description":"Model Context Protocol server for Animaly / Besales","directories":{},"dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.19.0_1782398394440_0.3064276528297285","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"@besales/mcp","version":"0.25.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.25.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"829769126497ca7de8c4c6c60cb07e42775d18d8","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.25.0.tgz","fileCount":122,"integrity":"sha512-En/bxEmSnDvkUQFsvYu2yDlg2+PdTRf7VFlUWZdgtm046JWt50n0blSS22TBNNvuU9Ibz7md2MeGCr7Ve2uGHA==","signatures":[{"sig":"MEQCIF2u+476fVEdJIaQ4vvGxQj3ultdrLNhTRXla9ijUbPcAiASnyLPasE5ufsqgwz0puDngGjdNFF9agMI09rmYDrXXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1514474},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"74a394a2a1b9b19d45ad50c483168c834f96368c","scripts":{"test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.25.0_1783625826102_0.6189861286828353","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"@besales/mcp","version":"0.28.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.28.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"30706ff048aa162b9e592d281b7a8b7c38fba957","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.28.0.tgz","fileCount":128,"integrity":"sha512-62uwtzT5i19uk4cW89d5bcvQGJ+87FnOaE7uAJpcoYOK93vS8leL9ona+7tvlZ/ey4MrFNEgylVpAYVtoiuTtw==","signatures":[{"sig":"MEQCIGSm7qKgRwv17nlCXEU1Bo3e9jxw8LHbhV8UQCqapCgIAiAS4nXsUKHQXMOhDx32X9BS2OBpynROxfACMGzgxbe46w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1618607},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"717bc1c5c298de1b5d7e7efeb756a6b4dd5c33a6","scripts":{"test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs dist/skills/besales-dialogue-audit && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/ && cp src/skills/besales-dialogue-audit/SKILL.md dist/skills/besales-dialogue-audit/SKILL.md","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"description":"Model Context Protocol server for Animaly / Besales","directories":{},"dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.28.0_1784128660213_0.5335930555036572","host":"s3://npm-registry-packages-npm-production"}},"0.31.0":{"name":"@besales/mcp","version":"0.31.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.31.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"bad1acd7e731613abe802fb4e3762517f6b56d98","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.31.0.tgz","fileCount":130,"integrity":"sha512-wHFAN4GCNkBfOwp+fAGg9ev4+Ao6r2ilHyBztSDE7+6NMeHyBRmLo4nmNvEPpfwdNmIrvLNWdTJfNP89lFI0Fw==","signatures":[{"sig":"MEYCIQCfaAL6Ih5XAsyZ82Km6GZWX12AESIM+SIjbg8gXMddrgIhAJGjDJ7Ih6f/46dtFzWyxWDbNyeoDbOusmLbxgDAmWV7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1626786},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ca7fbc0fe7b6a2477a0466e71e8440c8627bb211","scripts":{"test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs dist/skills/besales-dialogue-audit && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/ && cp src/skills/besales-dialogue-audit/SKILL.md dist/skills/besales-dialogue-audit/SKILL.md","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.31.0_1784567697403_0.06778070561930094","host":"s3://npm-registry-packages-npm-production"}},"0.32.0":{"name":"@besales/mcp","version":"0.32.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.32.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"63636cb630342d45be8fba12848b0ed9f2c7600d","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.32.0.tgz","fileCount":136,"integrity":"sha512-+lbrURwlfJgojEUETiiRmKNSvZ728VJ5OowsGiX87WPsQeYv02OebEYLXWNeyOxAi2MjTdstib0fzDYh7lrijg==","signatures":[{"sig":"MEUCIQDskIlgE1/1/iWkJCve5yrakY3/2ZrDQDAtqdd6Qj/8swIgYU9SB3R0I5WqPjWbbFDfHDOO9uzlu6+jsreH8PKEBfk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1718748},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"eba371b152bcd16c03b839691e6517555f386d9f","scripts":{"test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs dist/skills/besales-dialogue-audit && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/ && cp src/skills/besales-dialogue-audit/SKILL.md dist/skills/besales-dialogue-audit/SKILL.md","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.32.0_1785079137960_0.3643824644406046","host":"s3://npm-registry-packages-npm-production"}},"0.33.0":{"name":"@besales/mcp","version":"0.33.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.33.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"383a2dacc1923da8293f5449812749ca90d9de95","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.33.0.tgz","fileCount":136,"integrity":"sha512-mNHnClsCbbRe7wnGVZf7LXNPFrzzIrHfQU3/gNErjSDz6mBGxB+Fa7Rd2ZCPbBdK1hQZ6mCBeUYw/4aRjWghoQ==","signatures":[{"sig":"MEYCIQCp0kShMaqI6BtKdXwONkF/MlluMxqr8s3nHh6AVhJ9ygIhAOnfb5VXycjT4np2AXshyesmqm42iGhs3ABkG0WgwSrd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1752788},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"33833e1f84f331c342c0ae6979d93771fb3fc3f4","scripts":{"test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs dist/skills/besales-dialogue-audit && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/ && cp src/skills/besales-dialogue-audit/SKILL.md dist/skills/besales-dialogue-audit/SKILL.md","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.33.0_1785097348205_0.7981511945711277","host":"s3://npm-registry-packages-npm-production"}},"0.37.0":{"name":"@besales/mcp","version":"0.37.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.37.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"bf2e9c07c383da722333882e1006af1bf0f62584","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.37.0.tgz","fileCount":148,"integrity":"sha512-tnmv1WAbJ4bEsoSNJQpkBKdvtyqJCSq9gsYwalbmda0gdq1MSBjtuHRpAbDR3D2N8HpyGBdMHiBYyyfiyRuDRw==","signatures":[{"sig":"MEUCIDk2Nm+3apNVkdKf5QziW6Pp/KoZUY0UWvatepTv6YmJAiEAtNV+yCdwMYBgczWozCRQGitEZZzyqmpR5R6jLipvQJk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1974812},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"dbc22f7ca5817ce10521bc6374b7ccfcd0cd7b35","scripts":{"test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs dist/skills/besales-dialogue-audit && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/ && cp src/skills/besales-dialogue-audit/SKILL.md dist/skills/besales-dialogue-audit/SKILL.md","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.37.0_1785521395712_0.8123455598515044","host":"s3://npm-registry-packages-npm-production"}},"0.37.1":{"name":"@besales/mcp","version":"0.37.1","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.37.1","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"7f19bb0dae8186160712aa82b7ad4520a5823f82","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.37.1.tgz","fileCount":154,"integrity":"sha512-qvLj+Kne2rTQLZjXRJcmekQIfPpLJ08zPcpelQrhY1uBHkcaSSY5kQFZiPmCFiWZde/6lh/3RFUnvjQTIiP6aQ==","signatures":[{"sig":"MEUCIFtJUc+1rZEMvaY+i6ID0hHOCbzi/W+VqdDyge/U1POUAiEA/gLAbs2TMi/rPYVS8yjOX7WcgiztvS5krsHOix5L9gc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2048307},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d7db8fe1c497c10d202bd56adf9f5e2850e2afee","scripts":{"test":"vitest run --maxWorkers=4","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs dist/skills/besales-dialogue-audit && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/ && cp src/skills/besales-dialogue-audit/SKILL.md dist/skills/besales-dialogue-audit/SKILL.md","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.37.1_1786403867054_0.8582258183400711","host":"s3://npm-registry-packages-npm-production"}},"0.38.0":{"name":"@besales/mcp","version":"0.38.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.38.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"10b730784bcc00173a7a967bdf20826d0a76760c","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.38.0.tgz","fileCount":157,"integrity":"sha512-sQ6aMRG7N51XS4M0o3PtPi64N04lcvEvQCcf4nloACl9DBV2iGELuGM0fykSrI9P8cLnS75t+O1NhLbIayhpHQ==","signatures":[{"sig":"MEUCIDPTOompiHX6yV7p0dXF1NDIsMb2LFCyshDSX/AkKyW+AiEA7gHhDusc7ScFaDamgAuYmYbbwsmQzQAJrVC7yeFgQu4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2119968},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c5e037b6ae252251638befe6582f116e89b70513","scripts":{"test":"vitest run --maxWorkers=4","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs dist/skills/besales-dialogue-audit && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/ && cp src/skills/besales-dialogue-audit/SKILL.md dist/skills/besales-dialogue-audit/SKILL.md","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.38.0_1786678026128_0.05604449083090146","host":"s3://npm-registry-packages-npm-production"}},"0.39.0":{"name":"@besales/mcp","version":"0.39.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.39.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"0496840f01566955f6b312ddb2af7a9b1a80cb00","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.39.0.tgz","fileCount":160,"integrity":"sha512-2sOe1N5S4G0L5U9EBSfiqpjQzSnYGpqrpHLeMZCgdpTyYDvNw5D3WWCVdw6VbYzjXYSyk3WCKAnln/DVmHbZhA==","signatures":[{"sig":"MEQCIFlRMU6CeUcJlxsT9E/uAphEFi7BsdwfoMa5wU6n/KmpAiBR8QM24RZ0ScIoXW6ueNFix6kvv54X/E29cxwpp1DTvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2157230},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"16bc8c6216c55eab8316e34eb70d72d6da9e9da8","scripts":{"test":"vitest run --maxWorkers=4","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs dist/skills/besales-dialogue-audit && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/ && cp src/skills/besales-dialogue-audit/SKILL.md dist/skills/besales-dialogue-audit/SKILL.md","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.39.0_1786713746062_0.8052548360716074","host":"s3://npm-registry-packages-npm-production"}},"0.40.0":{"name":"@besales/mcp","version":"0.40.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.40.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"d9da036319137fd833c4194b4a942818ed1b7d49","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.40.0.tgz","fileCount":160,"integrity":"sha512-5X40xg5w4OwvCIoZoWxmmBr8Hyri2Xco8Dw2hzQuvCFeNbVHrTlneOg6b3ty6VW3bLEOvtE/Oi/81+WNqYM5Nw==","signatures":[{"sig":"MEQCIA/GL4xMCc8dempQO0EFnVbP050lUfeZq07ULJL82DM8AiAx/3py8Imw5R+5g8Qg/pbZ4MFKrIieHL4Ef9AJlebv+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2186132},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d0805516a603fad8652351cd45ef061e7deac8ba","scripts":{"test":"vitest run --maxWorkers=4","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs dist/skills/besales-dialogue-audit && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/ && cp src/skills/besales-dialogue-audit/SKILL.md dist/skills/besales-dialogue-audit/SKILL.md","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.40.0_1787004812616_0.6013299553696994","host":"s3://npm-registry-packages-npm-production"}},"0.41.0":{"name":"@besales/mcp","version":"0.41.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.41.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"02f3a0a587a062b0985ba5b277b3781b6e51a138","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.41.0.tgz","fileCount":166,"integrity":"sha512-h2dF2JMHxi8l3yD61mgZYgaugssX5KvZAD7KMc3qh90aNn1v4fRX2Cv3jp7IusKIUnPFymT57lLmV4Bq9CqpfA==","signatures":[{"sig":"MEUCIQDwfXzvocPxq5ci+5cy8XI7cxCGyTsAoB76lMw+s/LEFQIgJBdFPaZclh0ZIoG05TCq4jfw0ibQHumt6ya9vRiYdew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3215315},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4f1ee05856535028d76da4ffa41dab3337dbc9d2","scripts":{"test":"vitest run --maxWorkers=4","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs dist/skills/besales-dialogue-audit && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/ && cp src/skills/besales-dialogue-audit/SKILL.md dist/skills/besales-dialogue-audit/SKILL.md","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.41.0_1787145749280_0.026317216140499644","host":"s3://npm-registry-packages-npm-production"}},"0.42.0":{"name":"@besales/mcp","version":"0.42.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.42.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"695b9bda4509828c39a84c4176f80e47063d6640","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.42.0.tgz","fileCount":166,"integrity":"sha512-haCVwWDv53FTv9TyRLxRZ7D+/t2oqkmsDubeewHyl2uA/qQcHqrGtKIKlIiU/4m7w5LFCGxfUUTbFo3CRt0DLg==","signatures":[{"sig":"MEYCIQCrSd1/RZaKSP4hJeV6DP/v525470mLm/qTZ5vEe6CPKwIhALUBH4AlLn2QoOrX/17z92roqZGQkg2sSioy3KJ596ot","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3241231},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"162f5c54ec1dccda66a48c859d9448d107132422","scripts":{"test":"vitest run --maxWorkers=4","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs dist/skills/besales-dialogue-audit && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/ && cp src/skills/besales-dialogue-audit/SKILL.md dist/skills/besales-dialogue-audit/SKILL.md","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.42.0_1787187669032_0.08770642828510611","host":"s3://npm-registry-packages-npm-production"}},"0.43.0":{"name":"@besales/mcp","version":"0.43.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.43.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"5131dc2e4b17ae82a1bdcb4131a857fc54c0b3f2","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.43.0.tgz","fileCount":169,"integrity":"sha512-YkPEFvVhAsSPSRrNaLiBtTn+yFWCJkCDRp2lytKJisT9dTf8TH9GiXuHSawN2QTeGrmO6xbuxLYgzz+nZSggZg==","signatures":[{"sig":"MEYCIQCSKFY0gCI/ugsOf3qD/UtQfu0zKX5iXo0xNl8fl2HE7wIhANe/USUcEPu07EYxt4J6i0SIvhzUxPfOqy+yUlFee9Hk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3275925},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1fa167d862107b255853a6f52ac29615fd469f64","scripts":{"test":"vitest run --maxWorkers=4","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs dist/skills/besales-dialogue-audit && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/ && cp src/skills/besales-dialogue-audit/SKILL.md dist/skills/besales-dialogue-audit/SKILL.md","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.43.0_1787297756965_0.2890452269461481","host":"s3://npm-registry-packages-npm-production"}},"0.45.0":{"name":"@besales/mcp","version":"0.45.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.45.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"151ccde867b3bf18d2ba1b903d171e3c7c5f4af6","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.45.0.tgz","fileCount":175,"integrity":"sha512-oj0X5tXJRISZKtYdcomQqO2+lC9LmlIi5vonFWUTgyc8XkNDM1ZhsCyPPv9yU+eEUUsRZAjq4oz84xgsEHC8ZA==","signatures":[{"sig":"MEYCIQDcctlpytEW5R+490TNVRXraNeEkztVXc7IqGVA2NwumgIhAOpQuctdGVMlgEB53WCCQZ2412DezHKs/y1gAUJnkpFV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3462957},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d0d98217e2be7f4e39613c361d115cb4eef4bd5f","scripts":{"test":"vitest run --maxWorkers=4","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs dist/skills/besales-dialogue-audit && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/ && cp src/skills/besales-dialogue-audit/SKILL.md dist/skills/besales-dialogue-audit/SKILL.md","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.45.0_1787668346404_0.4539984502169403","host":"s3://npm-registry-packages-npm-production"}},"0.46.0":{"name":"@besales/mcp","version":"0.46.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.46.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"ba022dfe409af5bfa03aaa8a7451aae1092c0760","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.46.0.tgz","fileCount":178,"integrity":"sha512-Zs6w/0YGkifEbuTSUW8erb6TeN3cOET2TPKWay2jMoEcSZKyz+MsjnL1YKjYhg1TVJU6+kQkRRm+NU2eWBN+BA==","signatures":[{"sig":"MEYCIQCr3Tvq84lbU2e0Z1qrbafP4bMb1mzMufWMfwcXQRzYLAIhALgFs+Q7uPnmuM7rqMKz8h1DBE6MxfHRZ+tiwjOpeBEk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3625014},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"e7be84aab7518598b9ec270be3bdf935c07b846a","scripts":{"test":"vitest run --maxWorkers=4","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs dist/skills/besales-dialogue-audit && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/ && cp src/skills/besales-dialogue-audit/SKILL.md dist/skills/besales-dialogue-audit/SKILL.md","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:gen:mcp":"mkdir -p src/schemas && cp ../docs/specs/v2/contracts/mcp-tools.json src/schemas/mcp-tools.json","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.46.0_1788945540533_0.8145186311522978","host":"s3://npm-registry-packages-npm-production"}},"0.47.0":{"name":"@besales/mcp","version":"0.47.0","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"license":"MIT","_id":"@besales/mcp@0.47.0","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"homepage":"https://github.com/be-sales/mcp#readme","bugs":{"url":"https://github.com/be-sales/mcp/issues"},"bin":{"besales-mcp":"bin/besales-mcp.js"},"dist":{"shasum":"dc8c2c1181b191aa1d5aadd44c38a5dbc268c95e","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.47.0.tgz","fileCount":247,"integrity":"sha512-hfjfRTRQFNqLjDoyWvj0Eltqs6QdeBDnvu+GSv6uuwYQDPCQ9zqrsMLz6NjLRoJb7kGA1n/XgDbgu+TU0fHHrA==","signatures":[{"sig":"MEQCIEFHvIAEksQL6hp74i9Zm9LDywmdDiatORPKB6qZJdhlAiBWts14ZV73t2EXzHT7WNeVPCDkNcJOMG1eIH0jJnjBKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4159305},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"7aac7f3c8a3d095ba29b2ab9dac178644ea8f55a","scripts":{"test":"vitest run --maxWorkers=4","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs dist/skills/besales-dialogue-audit && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/ && cp src/skills/besales-dialogue-audit/SKILL.md dist/skills/besales-dialogue-audit/SKILL.md","start":"node bin/besales-mcp.js","prepack":"yarn build","dev:mock":"node scripts/mock-api-server.js","lint:fix":"eslint src bin scripts eslint.config.js --fix","host:probe":"node scripts/probe-mcp-protocol.js","model:eval":"node scripts/run-model-eval.js","lint:errors":"eslint src bin scripts eslint.config.js","dev:mock:seed":"node scripts/mock-credentials.js seed","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","dev:mock:clear":"node scripts/mock-credentials.js clear","prepublishOnly":"yarn lint:errors && yarn test && yarn build","types:check:mcp":"node -e \"const s=require('./src/schemas/mcp-tools.json');if(s.summary.total_tools!==s.tools.length)process.exit(1)\"","model:eval:server":"node scripts/model-eval-server.js","install:claude-desktop":"node scripts/install-claude-desktop.js"},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"repository":{"url":"git+https://github.com/be-sales/mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"Model Context Protocol server for Animaly / Besales","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","open":"^11.0.0","pino":"^10.3.1","axios":"^1.16.0","keytar":"^7.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"eslint":"^10.3.0","vitest":"^4.1.6","typescript":"^5.5.0","@types/node":"^25.7.0","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^8.59.3","@typescript-eslint/eslint-plugin":"^8.59.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.47.0_1789119243684_0.9450708780676245","host":"s3://npm-registry-packages-npm-production"}},"0.47.1":{"name":"@besales/mcp","version":"0.47.1","description":"Model Context Protocol server for Animaly / Besales","license":"MIT","homepage":"https://github.com/be-sales/mcp#readme","repository":{"type":"git","url":"git+https://github.com/be-sales/mcp.git"},"bugs":{"url":"https://github.com/be-sales/mcp/issues"},"keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"bin":{"besales-mcp":"bin/besales-mcp.js"},"scripts":{"build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc && mkdir -p dist/schemas dist/resources/concepts dist/resources/workflows dist/resources/docs dist/skills/besales-dialogue-audit && cp src/schemas/mcp-tools.json dist/schemas/mcp-tools.json && cp src/resources/concepts/*.md dist/resources/concepts/ && cp src/resources/workflows/*.md dist/resources/workflows/ && cp src/resources/docs/*.md dist/resources/docs/ && cp src/skills/besales-dialogue-audit/SKILL.md dist/skills/besales-dialogue-audit/SKILL.md","start":"node bin/besales-mcp.js","dev:mock":"node scripts/mock-api-server.js","dev:mock:seed":"node scripts/mock-credentials.js seed","dev:mock:clear":"node scripts/mock-credentials.js clear","host:probe":"node scripts/probe-mcp-protocol.js","model:eval:server":"node scripts/model-eval-server.js","model:eval":"node scripts/run-model-eval.js","install:claude-desktop":"node scripts/install-claude-desktop.js","prepack":"yarn build","prepublishOnly":"yarn lint:errors && yarn test && yarn build","test":"vitest run --maxWorkers=4","lint:fix":"eslint src bin scripts eslint.config.js --fix","lint:errors":"eslint src bin scripts eslint.config.js","types:gen:api":"mkdir -p src/types && openapi-typescript ../docs/specs/v2/contracts/openapi-besales-api.yaml -o src/types/api-contract.gen.ts","types:check:mcp":"node -e \"const s=require('./src/schemas/mcp-tools.json');if(s.summary.total_tools!==s.tools.length)process.exit(1)\""},"engines":{"node":">=20.0.0"},"packageManager":"yarn@4.13.0","dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","axios":"^1.16.0","keytar":"^7.9.0","open":"^11.0.0","pino":"^10.3.1","zod":"^4.4.3"},"devDependencies":{"@types/node":"^25.7.0","@typescript-eslint/eslint-plugin":"^8.59.3","@typescript-eslint/parser":"^8.59.3","eslint":"^10.3.0","openapi-typescript":"^7.0.0","typescript":"^5.5.0","vitest":"^4.1.6"},"_id":"@besales/mcp@0.47.1","gitHead":"8bd24205889565de7ca374f87c6a4ccf35ffc34b","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-NjI4/PS9na5PSUERcy0daR0uveXZWeApfUWl+pSqkV5VIpxhED0WnMr+H2QP0v9CQfhlcN9Eg7JTeExC2EN7Dw==","shasum":"1a51a60caf92cd3f8c27603d825242c59c2d30ed","tarball":"https://registry.npmjs.org/@besales/mcp/-/mcp-0.47.1.tgz","fileCount":247,"unpackedSize":4200252,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIB5bZbgWCkRerUUXFNnfSO6wuqc6BL24OCu5aWYZxn+SAiEAu4FQrspZTnjxU4J0watoHXtSrdMDmGeq5gZbj4cDRGo="}]},"_npmUser":{"name":"peresvets","email":"nick.soloview@gmail.com"},"directories":{},"maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.47.1_1789243601442_0.13684503945049653"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-14T22:12:31.028Z","modified":"2026-09-12T20:06:41.792Z","0.1.0":"2026-05-14T22:12:31.260Z","0.11.1":"2026-06-10T12:55:33.966Z","0.12.0":"2026-06-10T16:45:51.951Z","0.14.0":"2026-06-15T14:04:03.243Z","0.15.0":"2026-06-16T12:04:15.515Z","0.18.0":"2026-06-23T11:27:19.144Z","0.19.0":"2026-06-25T14:39:54.597Z","0.25.0":"2026-07-09T19:37:06.266Z","0.28.0":"2026-07-15T15:17:40.362Z","0.31.0":"2026-07-20T17:14:57.564Z","0.32.0":"2026-07-26T15:18:58.126Z","0.33.0":"2026-07-26T20:22:28.349Z","0.37.0":"2026-07-31T18:09:55.938Z","0.37.1":"2026-08-10T23:17:47.233Z","0.38.0":"2026-08-14T03:27:06.296Z","0.39.0":"2026-08-14T13:22:26.294Z","0.40.0":"2026-08-17T22:13:32.757Z","0.41.0":"2026-08-19T13:22:29.482Z","0.42.0":"2026-08-20T01:01:09.276Z","0.43.0":"2026-08-21T07:35:57.127Z","0.45.0":"2026-08-25T14:32:26.562Z","0.46.0":"2026-09-09T09:19:00.698Z","0.47.0":"2026-09-11T09:34:03.866Z","0.47.1":"2026-09-12T20:06:41.640Z"},"bugs":{"url":"https://github.com/be-sales/mcp/issues"},"license":"MIT","homepage":"https://github.com/be-sales/mcp#readme","keywords":["mcp","model-context-protocol","besales","animaly","claude","codex"],"repository":{"type":"git","url":"git+https://github.com/be-sales/mcp.git"},"description":"Model Context Protocol server for Animaly / Besales","maintainers":[{"name":"peresvets","email":"nick.soloview@gmail.com"},{"name":"solgalovk","email":"kirillsolgalov@gmail.com"}],"readme":"# @besales/mcp\n\nModel Context Protocol server for Animaly / Besales.\n\nStatus: public npm package candidate.\n\n## Install\n\nRequirements:\n\n- Node.js 20+\n- BeSales account with an active workspace\n- Claude Desktop, Claude Code, Codex CLI, or another MCP-capable host\n\nNo global install is required. Production users can run the package with `npx`:\n\n```bash\nnpx -y @besales/mcp connect\nnpx -y @besales/mcp status\nnpx -y @besales/mcp\n```\n\n`connect` opens the browser consent flow and stores an MCP API key plus the\nselected workspace in the local keychain. With one connection or an explicit session pin,\nworkspace-level tools resolve it automatically. With several unpinned connections they refuse\nthe call as ambiguous; inspect `besales_workspace_current` and select one deliberately.\n\nFor production, do not set `BESALES_API_BASE_URL` or\n`BESALES_OAUTH_AUTHORIZE_URL`. They default to:\n\n- `BESALES_API_BASE_URL` → `https://core.besales.ai/api/v2` (backend API host —\n  used for MCP tool calls)\n- `BESALES_OAUTH_AUTHORIZE_URL` →\n  `https://app.besales.ai/settings/mcp/consent` (frontend bridge page — opened\n  in the browser during `connect`; it mints a one-time setup ticket and forwards\n  to the backend consent page. After approval `connect` receives a one-time `code`\n  on the loopback callback and exchanges it with the PKCE `code_verifier` at\n  `/api/v2/auth/mcp-token` — the API key never travels in a URL)\n\nFor staging or local development override them per command:\n\n```bash\nBESALES_API_BASE_URL=http://localhost:3000/api/v2 \\\nBESALES_OAUTH_AUTHORIZE_URL=http://localhost:5173/settings/mcp/consent \\\n  npx -y @besales/mcp connect\n```\n\n## Configure Your MCP Host\n\nStep-by-step guide in Russian (Claude Code, Codex, several workspaces, updating):\n[docs/connect.ru.md](docs/connect.ru.md). Release order for maintainers: [RELEASING.md](RELEASING.md).\n\nAfter `connect`, add the server to your MCP host and restart the host.\n\nClaude Desktop config:\n\n```json\n{\n  \"mcpServers\": {\n    \"besales\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@besales/mcp\"]\n    }\n  }\n}\n```\n\nClaude Code:\n\n```bash\nclaude mcp add --scope user besales -- npx -y @besales/mcp\n```\n\nCodex CLI:\n\n```bash\ncodex mcp add besales -- npx -y @besales/mcp\n```\n\nEquivalent Codex config:\n\n```toml\n[mcp_servers.besales]\ncommand = \"npx\"\nargs = [\"-y\", \"@besales/mcp\"]\n```\n\nFor staging/local backends, include both backend and frontend bridge URLs in the\nhost env. For example:\n\n```toml\n[mcp_servers.besales.env]\nBESALES_API_BASE_URL = \"http://localhost:3000/api/v2\"\nBESALES_OAUTH_AUTHORIZE_URL = \"http://localhost:5173/settings/mcp/consent\"\n```\n\n## Multiple Workspaces\n\n`besales-mcp` can hold keys for several workspaces at once — even across\ndifferent accounts. Connect each one **once** (switch the account/workspace in\nthe browser before each `connect`); keys are cached in your OS keychain and\nswitching afterwards needs no browser.\n\n```bash\nnpx -y @besales/mcp connect          # workspace A (browser logged into account A)\nnpx -y @besales/mcp connect          # workspace B (re-login in the browser first)\nnpx -y @besales/mcp connections      # list all connections, marks the active one\n```\n\n`connect` stores the workspace name and a masked account label such as\n`o***@example.com`; the raw email is never stored in the MCP index. These labels\nare refreshed by a lightweight scoped endpoint (at most once per day) and never\nrequire a full workspace overview. `besales_workspace_current` reports\n`current`, `cached`, `stale`, or `unknown` plus a safe refresh reason. Reconnect\nalso refreshes a renamed workspace; legacy connections migrate on first read.\n\nBind a host session to a specific workspace with `BESALES_WORKSPACE_ID` in that\nserver's `env` block — the cleanest \"one session = one workspace\" setup (one\nproject/profile per workspace):\n\n```json\n{\n  \"mcpServers\": {\n    \"besales\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@besales/mcp\"],\n      \"env\": { \"BESALES_WORKSPACE_ID\": \"<workspace-uuid>\" }\n    }\n  }\n}\n```\n\n```toml\n[mcp_servers.besales.env]\nBESALES_WORKSPACE_ID = \"<workspace-uuid>\"\n```\n\nWorkspace selection precedence, per tool call:\n\n1. `BESALES_WORKSPACE_ID` (env) — authoritative; an explicit, mismatching\n   `workspace_id` argument is refused.\n2. an explicit `workspace_id` argument (only when the env var is not set).\n3. the session binding set by the `besales_workspace_use` tool (in-memory, this\n   session/process only — see below).\n4. the only connected workspace.\n5. otherwise the call is refused — several workspaces are connected and none was\n   chosen.\n\n**The global `active` workspace is not an implicit fallback.** It is set on the\nvery first `connect` and never revisited, so using it silently would send calls\nto whichever workspace you happened to connect first — returning another\nworkspace's data with no error at all. When several workspaces are connected and\nnothing above selects one, the call fails closed; the error names the current\n`active` so you can pass it explicitly if that is what you meant. With exactly\none connection nothing changes. `besales_workspace_current` reports\n`source: \"ambiguous\"` and `workspace_id: null` in the same situation, so the\ndiagnostic never claims a binding the real call would not use.\n\n`BESALES_WORKSPACE_ID` always overrides everything. `besales_workspace_current`\nlists names, safe account labels, UUIDs, the selection source, and label freshness.\nThe assistant shows those names to the user and passes the chosen UUID itself.\n\n### GUI hosts without per-session env (e.g. Claude Desktop)\n\nWhen the host has no place to set `BESALES_WORKSPACE_ID` per session (you just\nclick \"new session\"), there are two ways to keep several workspaces apart.\n\n**Recommended — one pinned named server per workspace (survives reconnects).**\nRun once per workspace:\n\n```bash\nyarn install:claude-desktop --name besales-acme   --workspace <uuid-A>\nyarn install:claude-desktop --name besales-globex --workspace <uuid-B>\n```\n\nThis adds env-pinned `mcpServers` entries (with a timestamped config backup);\nrestart Claude Desktop. Their tools appear namespaced —\n`mcp__besales-acme__besales_*` (always workspace A) and\n`mcp__besales-globex__besales_*` (always B). Because the pin lives in the host\nconfig, it **survives MCP reconnects** and **never silently drifts** to the wrong\nworkspace. Both toolsets are visible in every session; you just address the one\nyou mean.\n\n**Quick / in-session — `besales_workspace_use` (does NOT survive a reconnect).**\nAsk the assistant to call **`besales_workspace_use <workspaceId>`** to bind the\ncurrent session in-memory. Each host session runs its own `besales-mcp` process,\nso it is per-session and touches neither the global `active` nor other sessions.\nCaveat: the binding is **in-memory only** — when the host respawns the server\n(reconnect, which GUI hosts do often), it is **lost and falls back to the global\n`active`**. Use it for a stable stretch, not as a durable lock; for that use the\npinned named servers above. `besales_workspace_current` shows the current binding\n+ source and lists connected workspaces; it is **refused** under a\n`BESALES_WORKSPACE_ID` pin (env wins).\n\n- `BESALES_WORKSPACE_ID` is read **once at process start** — exporting it after a\n  session is already open has no effect. Restart the session to re-pin via env.\n\n## First Smoke\n\nStart a fresh host session after changing MCP config, then ask a natural\nbusiness request:\n\n```text\nUse besales MCP to create an ICP for SaaS B2B sales automation.\n```\n\nThe assistant should discover and call the relevant `besales_*` tools itself. The user can ask in\nordinary business language. If several workspaces are connected without a pin, the assistant must\nshow the choices from `besales_workspace_current`; the user does not need to invent an ID.\n\nExpected quick checks:\n\n1. `npx -y @besales/mcp status` shows connected credentials.\n2. The host shows the `besales` MCP server as connected.\n3. Direct tools such as `besales_icp_create` work.\n4. External flows use `*_get_instructions`, execute stages locally in the host,\n   then call the matching `*_submit` tool.\n\nIf the host does not expose MCP resources to the model, ask the same request in ordinary words.\nThe model can call `besales_help_search` and then `besales_help_get`; both tools read the same\npackaged documents as `besales://...` resources. `besales_help_get` returns a compact heading index\nby default, one section with `section`, or the complete document with `full=true`. See\n[`docs/help-navigation.md`](docs/help-navigation.md).\n\nHosts with MCP prompts may also show five optional task entries: configure an agent, improve an\nagent, audit dialogues, build a campaign report, and diagnose a failure. They expand to the same\nordinary instructions and tool navigation; a host without prompts loses no operation.\n\nTo switch workspace, connect each one once (see [Multiple Workspaces](#multiple-workspaces))\nand either set `BESALES_WORKSPACE_ID` per host session or run\n`npx -y @besales/mcp use <workspaceId>`. No browser re-auth is needed once a\nworkspace is connected.\n\nIf a call asks for `workspace_id`, first run `besales_workspace_current`: the cause may be a real\nmulti-workspace ambiguity, an env pin conflict, a missing key, or an old schema. Restart the host\nwith `@besales/mcp@latest` only when the schema/version is actually stale; reconnect only when the\ncredential or granted scopes are the problem.\n\n`besales_workspace_current` reports `effective_scopes` from the exact selected credential and\nmarks their source. It never unions permissions from other MCP keys in the same workspace.\n\n## Development\n\n```bash\nyarn install\nyarn types:gen:api\nyarn types:gen:mcp\nyarn build\n```\n\nThe generated files in `src/types/` and `src/schemas/` are committed because\nthe source contracts live outside this independent repository.\n\nRun a lightweight local mock API for MCP Inspector tool-call smoke tests:\n\nTerminal 1:\n\n```bash\nyarn dev:mock\n```\n\nTerminal 2:\n\n```bash\nyarn dev:mock:seed\nBESALES_API_BASE_URL=http://127.0.0.1:3100/api/v2 node bin/besales-mcp.js\n```\n\n`yarn dev:mock:seed` and `yarn dev:mock:clear` use the same keytar entries as\nreal `besales-mcp connect` credentials. They can overwrite or clear a local real\nconnection for the current macOS user.\n\nThe mock server only verifies request wiring. Live tool E2E depends on the\nmatching `ai-aniomaly` `/api/v2/*` endpoints.\nRemove seeded mock credentials after smoke testing:\n\n```bash\nyarn dev:mock:clear\n```\n\n## CLI\n\n```bash\nnode bin/besales-mcp.js connect              # connect (or refresh) a workspace\nnode bin/besales-mcp.js connections          # list connected workspaces (* = active)\nnode bin/besales-mcp.js use <workspaceId>    # set the active (default) workspace\nnode bin/besales-mcp.js status               # show the active workspace\nnode bin/besales-mcp.js disconnect           # disconnect the active workspace only\nnode bin/besales-mcp.js disconnect <id>      # disconnect one workspace\nnode bin/besales-mcp.js disconnect --all     # disconnect every workspace\nnode bin/besales-mcp.js                       # start the MCP server\n```\n\n`BESALES_API_BASE_URL` defaults to `https://core.besales.ai/api/v2` (backend).\n`BESALES_OAUTH_AUTHORIZE_URL` defaults to\n`https://app.besales.ai/settings/mcp/consent` (frontend bridge). For local\ndevelopment point them at your local backend and frontend respectively.\n\n`BESALES_MCP_RESULT_ENVELOPE=on` turns on the response size ceiling: oversized\nanswers are shaped or refused instead of flooding the caller's context. It is\n**off by default** for one release because the package is normally run unpinned,\nso a change in response semantics would land mid-session. See\n[`docs/response-size-budget.md`](docs/response-size-budget.md) for the measured\nnumbers and the per-tool classes.\n\n`BESALES_MCP_TOOLSETS` limits the session to named toolsets, comma separated —\n`readonly` (every tool that only reads), or a domain group derived from the tool\nname (`knowledge`, `crm`, `agent`, `prompt`, …). Unset or empty means the full\nsurface: a setting nobody filled in must never narrow access silently. The filter\napplies to both `tools/list` and `tools/call`, and an unknown name fails loudly\nwith the list of valid ones. See [`docs/tool-surface.md`](docs/tool-surface.md)\nfor why the surface gets profiles rather than fewer, larger tools.\n\nTool calls require stored credentials. Run `node bin/besales-mcp.js connect`\nagainst a backend that implements the MCP OAuth endpoints\n(`/api/v2/auth/mcp-connect*` + `/api/v2/auth/mcp-token`), or run\n`yarn dev:mock:seed` for mock-only smoke tests.\n\nFor production users, do not set `BESALES_API_BASE_URL` or\n`BESALES_OAUTH_AUTHORIZE_URL`. Run:\n\n```bash\nnpx -y @besales/mcp connect\n```\n\nThe browser consent flow stores the connected workspace key in the local\nkeychain. Workspace-level tools default to the session's workspace, so users\nshould not provide `workspace_id` manually. To work with several workspaces,\nconnect each once and pin sessions via `BESALES_WORKSPACE_ID` (or switch the\nglobal default with `besales-mcp use <id>`) — see\n[Multiple Workspaces](#multiple-workspaces).\n\n## Available tools (253 tools by category)\n\nИтог и категории строятся из активных имён `src/schemas/mcp-tools.json`. Тест сверяет этот блок,\n`summary.tools_by_category` и сумму категорий с `tools.length`.\n\n<!-- BEGIN GENERATED TOOL INVENTORY -->\n| Category | Tools | Name prefixes |\n|---|---:|---|\n| Workspace, help, tasks and audit | 18 | `workspace_*`, `help_*`, `task_*`, `audit_*` |\n| Agents, behavior and routing | 14 | `agent_*`, `behavior_*`, `facts_*`, `pipeline_*`, `routing_*`, `router_*` |\n| Prompts, sandbox and evaluation | 33 | `prompt_*`, `qa_*`, `sandbox_*`, `simulation_*`, `test_*`, `model_*` |\n| ICP | 9 | `icp_*` |\n| Knowledge, workbooks, files and variables | 50 | `knowledge_*`, `workbook_*`, `feedback_*`, `variable_*`, `file_*` |\n| CRM and data sources | 27 | `crm_*`, `datasource_*` |\n| Channels and external API credentials | 14 | `platform_*`, `external_*` |\n| Dialogues and contacts | 16 | `dialogue_*`, `dialogues_*`, `dialog_*`, `contact_*` |\n| Triggers | 5 | `trigger_*` |\n| Outbound, follow-up and analytics | 67 | `broadcast_*`, `getcourse_*`, `wazzup_*`, `followup_*`, `scheduled_*`, `tracked_*`, `link_*`, `inbound_*`, `funnel_*`, `ai_*`, `custom_*` |\n<!-- END GENERATED TOOL INVENTORY -->\n\nRecent capabilities:\n\n- **Intent navigation** — `besales_workspace_navigate` combines the requested task, bot type,\n  selected objects and live workspace overview into one next tool call, required user input and a\n  result check. It does not perform the recommended mutation.\n- **Complete async lifecycle** — every background start has a read-only status tool; see\n  [docs/async-operation-lifecycle.md](docs/async-operation-lifecycle.md). Contact imports and a\n  single cold-welcome launch use `besales_getcourse_contact_import_status`; anchor refresh uses\n  `besales_getcourse_anchor_refresh_status` and reports a lost worker as `STALLED`.\n- **Funnel test outside the web UI** — `besales_followup_funnel_test_plan` freezes expanded\n  texts and dynamic generations under one `runId`; `start` sends exactly that snapshot to the\n  live contact and requires both `explicit_confirmation=true` and `confirmation_reason`.\n  Status/cancel wrap the durable 15-second-gap run. All four tools require the dedicated\n  `mcp:funnel-test` scope, which is not covered by `mcp:*`.\n- **Prompt lint diagnostics** — a rejected `besales_prompt_patch_commit` now carries the\n  backend's `lintIssues` (up to 3, e.g. the exact character count over the 80000 hard\n  limit) instead of a bare 400. `besales_prompt_headroom` answers the same question\n  *before* a draft is built; `besales_prompt_diff` compares two agents' prompts without\n  pulling both full texts into context.\n- **Fleet prompt rollout** — `besales_prompt_batch_start` applies one set of patch\n  operations across many agents as a background run (33 agents × 3 calls do not fit the\n  60s client timeout). Every agent is prepared and fully linted first; only those that\n  pass are committed. Poll `besales_prompt_batch_status`; roll forward the failures with\n  `besales_prompt_batch_resume` — never by starting a second run.\n- **OAuth PKCE provisioning** — `besales_platform_create_oauth_init` opens the\n  authorization flow in the browser for Instagram/Avito so the OAuth code never\n  passes through the LLM.\n- **CRM connection via browser-secrets** — `besales_crm_create_init` provisions\n  AmoCRM/Bitrix24 (and GetCourse/Telegram) using the Setup URL pattern, where the\n  user pastes credentials in the browser instead of through the chat.\n- **External API credential handoff** — channel create/key rotation/secret rotation\n  return `revealUrl` and its expiry. The signed-in user opens that page to receive\n  credentials once; keys and webhook secrets never enter MCP content or host logs.\n- **Setup URL pattern** — `*_init` returns a one-time URL; the user completes\n  sensitive input in the browser and the host polls `*_status` until ready.\n- **External execution pairs** — schemas returned by `*_get_instructions` use canonical\n  camelCase fields. Matching `*_submit` tools accept those fields directly and retain\n  legacy snake_case aliases, then send one canonical camelCase body to the API.\n- **File upload** — two-step flow (`besales_file_upload_request` →\n  `besales_file_upload_status`) so binaries are uploaded directly, not via MCP.\n- **Platform provisioning & clone** — create channels and clone an existing\n  platform configuration (`besales_platform_clone_preview` / `_execute`).\n- **Knowledge ingestion** — full namespace/document/Q&A/website/table CRUD plus\n  workbook ingestion from xlsx and Google Sheets. `besales_workbook_inspect` inventories\n  sheets and returns a bounded sample; `besales_workbook_sheet_read` pages through late rows\n  and columns with source identity and a page fingerprint. Metadata/classification and\n  archival are available through dedicated workbook tools. Namespace/table reindex returns\n  a job ID; poll the matching `_reindex_status` tool to a terminal state instead of reading\n  worker logs.\n- **GetCourse wave-run batches** — queue 1–10 status-mode segments sequentially\n  through `besales_getcourse_wave_run_batch_start`; use one `_batch_status` poll,\n  reuse a generated `batch_key` on retry, and resume only after resolving two\n  consecutive rejected segments. `UNKNOWN` и небезопасный `FAILED` жёстко\n  блокируются между волнами; repeat mode не является обходом неопределённого исхода.\n  Контакты import/run/batch принимают `email`, `phone`, `first_name`, `last_name` и передают их\n  backend-у без потери snake_case→camelCase.\n- **Broadcast mailing variants** — `besales_broadcast_mailing_variant_list/create/update/delete`;\n  архивирование через delete или `update(archived=true)` требует `explicit_confirmation=true`\n  управляют workspace-каталогом «Вариантов рассылки». Передавай выбранный UUID как\n  `mailing_variant_id` в direct, durable или batch GetCourse wave; analytics принимает тот же\n  фильтр. Удаление использованного варианта архивирует его и сохраняет историю когорт.\n- **GetCourse school bindings** — `besales_platform_settings_update` принимает\n  `getcourse_settings.wave_field_bindings`: роли `launch_type/product/segment/funnel/channels`\n  связываются с numeric custom-field ID сделки; `product_value_source` выбирает код или название\n  продукта, а `null` очищает настройку школы.\n\n## Resources\n\nThe package exposes 38 MCP resources. The dialogue-audit workflow is:\n\n- `besales://workflows/audit-dialogues`\n\nThe seven base concept resources are:\n\n- `besales://concepts/icp`\n- `besales://concepts/triggers`\n- `besales://concepts/sandbox`\n- `besales://concepts/handoff`\n- `besales://concepts/external-execution`\n- `besales://concepts/feedback-sheets`\n- `besales://concepts/workbook-classification`\n\nInspect them locally:\n\n```bash\nyarn dlx @modelcontextprotocol/inspector node bin/besales-mcp.js\n```\n\nThe Inspector should show 253 tools, 38 resources, and 5 optional prompts.\n\n## Codex Dialogue Audit Skill\n\nInstall the packaged read-only audit skill on Anton's machine:\n\n```bash\nnpx -y @besales/mcp install-skill besales-dialogue-audit\n```\n\nRestart Codex after installation. To update an existing copy:\n\n```bash\nnpx -y @besales/mcp install-skill besales-dialogue-audit --force\n```\n\nThe skill uses only `besales_dialogues_query` and `besales_dialogue_transcript`,\nfollows `besales://workflows/audit-dialogues`, and never mutates agents or CRM data.\n\n## Claude Desktop\n\nFor local development before the package is published, install a Claude Desktop\nconfig entry with:\n\n```bash\nyarn install:claude-desktop\n```\n\nThe installer creates a timestamped backup of the existing config and writes only\nthe `mcpServers.besales` entry. It uses the absolute Node executable path because\nGUI apps may not inherit the shell `PATH`.\n\n## Host Setup\n\nHost-specific local setup and smoke steps for MCP Inspector, Claude Desktop,\nClaude Code, and Codex CLI are documented in\n[docs/host-setup.md](docs/host-setup.md).\n\n## Scope\n\n- Claude Desktop / Claude Code / Codex call this package through MCP.\n- This package calls Animaly only through `ai-aniomaly` `/api/v2/*`.\n- Direct calls to `prompt-services` are intentionally out of scope.\n\nThe package exposes 253 active MCP tools from `src/schemas/mcp-tools.json`.\n\n### Token scopes\n\n`besales-mcp connect` requests one canonical set, declared as `MCP_OAUTH_SCOPES`\nin `src/auth/oauth-client.ts`:\n\n| Scope | Covers |\n|---|---|\n| `mcp:*` | composite base — reads, PromptHub, ICP, sandbox, knowledge, dialogue export, analytics aggregates |\n| `mcp:platform-setup` | setup mutations: knowledge ingestion, variables, CRM pipelines, platform settings/provisioning, clone, the Platform Setup Bridge, waves |\n| `mcp:funnel-test` | frozen follow-up funnel test against a live person |\n| `read:campaigns` | cold-welcome preview, broadcast reads and their message texts |\n| `launch:campaigns` | cold-welcome and broadcast launches |\n| `read:contacts` | contact search, cards, and safe diagnostics |\n| `write:operators` | CAS-protected workspace-operator assignment; no message send or CRM mutation |\n\nNone of these is implied by another: a plain `mcp:*` key authorizes neither setup\nmutations nor campaigns, and `mcp:platform-setup` does not imply the right to send\nto real people. Existing connections are never widened silently — after upgrading,\nreconnect once to be granted a newly added scope.\n\n> **⚠️ Invariant — the scope set only ever GROWS.**\n> A new scope is **appended** to `MCP_OAUTH_SCOPES`; existing entries are never removed,\n> renamed or reordered. Replacing an entry silently narrows every key issued from then on,\n> and `connect` gives no sign of it: consent opens, the key is issued, tools load, and the\n> loss only surfaces much later as a 403 from one endpoint. That is exactly how\n> `read:campaigns` + `launch:campaigns` were lost when `mcp:funnel-test` was added\n> (2026-08-19) — the set used to be one flat string, and the string was rewritten.\n> The same rule applies to the backend's `MCP_OPTIONAL_CONNECT_SCOPES`, the consent-page\n> allowlist `OPTIONAL_OAUTH_SCOPES`, and the `scope` enum in the OpenAPI contract:\n> add a line, never swap one.\n\n`connect` prints the granted set, and warns on stderr when the new key carries fewer\npermissions than the one it replaces:\n\n```\nConnected to workspace Animaly [de86534d-…] (key: mcp_a1b2…, account: o***@besales.ai).\nScopes: mcp:* mcp:platform-setup mcp:funnel-test read:campaigns launch:campaigns read:contacts write:operators\nActive workspace: de86534d-….\n\nWARNING: this key has FEWER permissions than the one it replaced.\n  Lost: read:campaigns, launch:campaigns\n  Tools needing them will fail with 403 \"API key does not have required scopes\".\n  Update the client (npx -y @besales/mcp@latest) and run `besales-mcp connect` again.\n```\n\nThe comparison is made by the backend (`dropped_scopes` in the `/auth/mcp-token`\nresponse) against the newest live MCP key of that workspace — the client cannot read\nan old key's scopes on its own.\n","readmeFilename":"README.md"}