{"_id":"@botozap/mcp","_rev":"17-11345718067747de686d7c8df062964f","name":"@botozap/mcp","dist-tags":{"next":"0.2.0","latest":"0.8.3"},"versions":{"0.1.0":{"name":"@botozap/mcp","version":"0.1.0","license":"MIT","_id":"@botozap/mcp@0.1.0","maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"homepage":"https://botozap.com.br","bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"bin":{"botozap-mcp":"dist/index.js"},"dist":{"shasum":"222a7261daf15dc5bbb12bdde4ca2691ba80d02d","tarball":"https://registry.npmjs.org/@botozap/mcp/-/mcp-0.1.0.tgz","fileCount":42,"integrity":"sha512-n6AY5q91i5WY9pRAEmVTu95Zgn2QhcR1Xn0sLJr/rFu921TNfatO+mj5lCNVWrpKXTgOtuENBsNGX0SuoD6PmQ==","signatures":[{"sig":"MEYCIQD8+SiNMddTG0FL/MhilSMuwAkr8pWxbRHW09hZg9kDHAIhAIb6YbfnIaY8C9PB2fkGNbXwyamokPMtyFVvgwD5FL6b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70274},"type":"module","engines":{"node":">=20.19"},"scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.ts","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","smoke:sandbox":"node scripts/smoke-sandbox.ts"},"_npmUser":{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"},"repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^3.25.76","@botozap/sdk":"0.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.0_1784096391056_0.7867694080529108","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@botozap/mcp","version":"0.2.0","license":"MIT","_id":"@botozap/mcp@0.2.0","maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"homepage":"https://botozap.com.br","bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"bin":{"botozap-mcp":"dist/index.js"},"dist":{"shasum":"f2a9d72c4cf73190d6b873cef16b388495e2287d","tarball":"https://registry.npmjs.org/@botozap/mcp/-/mcp-0.2.0.tgz","fileCount":54,"integrity":"sha512-IiwzRve4KXyuY+Ai5XU8ri/UXjHBvxWyWf4kFCgJVIYnhFwneaLkLnYwo9ROPDDvQk6XkcXwIJswWF9nryafng==","signatures":[{"sig":"MEYCIQCTZcB7WRL1zeFKIB4Zvk9k39Uan7ViP33jfi+VBj2axAIhALu/a3vl2HN0tM4+pYzxOyPi5PLp6aDg8+4OLgjB6NLK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":338536},"type":"module","engines":{"node":">=20.19"},"scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.ts","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","smoke:sandbox":"node scripts/smoke-sandbox.ts"},"_npmUser":{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"},"repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","directories":{},"_nodeVersion":"26.0.0","dependencies":{"pg":"^8.23.0","zod":"^3.25.76","@botozap/sdk":"0.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/pg":"^8.23.1","typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.0_1787801732767_0.4804815890857048","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@botozap/mcp","version":"0.2.1","license":"MIT","_id":"@botozap/mcp@0.2.1","maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"homepage":"https://botozap.com.br","bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"bin":{"botozap-mcp":"dist/index.js"},"dist":{"shasum":"bbe8b0cac6c1f3684c92cd21cf51898cac8430a7","tarball":"https://registry.npmjs.org/@botozap/mcp/-/mcp-0.2.1.tgz","fileCount":54,"integrity":"sha512-bgpdlSZog50iyO7Qeq1G1seg4l3j3J4xSDKZASSWqMDZBFaXUj7kHbuafbJ+r98C/hNA77a+hyvC7g6HtZJs0A==","signatures":[{"sig":"MEUCIFU4mr4DabEe3yf6QTLgAxDMzLUb8z4dHbNjCmDZ/zDYAiEA7VPYajdqpi5KfzcOctThDa70/t7fTatV3rtFf6AJaBU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":338536},"type":"module","engines":{"node":">=20.19"},"scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.ts","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","smoke:sandbox":"node scripts/smoke-sandbox.ts"},"_npmUser":{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"},"repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","directories":{},"_nodeVersion":"26.0.0","dependencies":{"pg":"^8.23.0","zod":"^3.25.76","@botozap/sdk":"0.3.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/pg":"^8.23.1","typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.1_1787804505026_0.42462813160734925","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@botozap/mcp","version":"0.2.2","license":"MIT","_id":"@botozap/mcp@0.2.2","maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"homepage":"https://botozap.com.br","bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"bin":{"botozap-mcp":"dist/index.js"},"dist":{"shasum":"a12edee2244ae73ff580161378a3f7e36a628ec0","tarball":"https://registry.npmjs.org/@botozap/mcp/-/mcp-0.2.2.tgz","fileCount":54,"integrity":"sha512-HgCbfIWXJD0L8HUQz3441UBQHzdYJtxFR1c9I3RXhueR+kuzgtN8j78cR/UOgKRZr0AqOr1Wn6pRs1dkjMkAYQ==","signatures":[{"sig":"MEUCIQCnwI3scmOQKTe6mGnGMkz8VzaV+EDOB3hkOY/CkB4aPwIgT0RwcHqV9dLqn/trNrkPkCyc0AFy4D41zP4mY5oCNjU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":357400},"type":"module","_from":"file:botozap-mcp-0.2.2.tgz","engines":{"node":">=20.19"},"scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.ts","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","smoke:sandbox":"node scripts/smoke-sandbox.ts"},"_npmUser":{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"},"_resolved":"/Users/fernando/Desenvolvimento/bytecraft/botozap-js/botozap-mcp-0.2.2.tgz","_integrity":"sha512-HgCbfIWXJD0L8HUQz3441UBQHzdYJtxFR1c9I3RXhueR+kuzgtN8j78cR/UOgKRZr0AqOr1Wn6pRs1dkjMkAYQ==","repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"_npmVersion":"11.19.0","description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"pg":"^8.23.0","zod":"^3.25.76","@botozap/sdk":"0.3.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/pg":"^8.23.1","typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.2_1787858931692_0.7648280104847704","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@botozap/mcp","version":"0.2.3","license":"MIT","_id":"@botozap/mcp@0.2.3","maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"homepage":"https://botozap.com.br","bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"bin":{"botozap-mcp":"dist/index.js"},"dist":{"shasum":"a2f302bf9439060d2b129cae6bb7bf835ad3cb78","tarball":"https://registry.npmjs.org/@botozap/mcp/-/mcp-0.2.3.tgz","fileCount":54,"integrity":"sha512-LzK56Yt+Dx+fnCYqb0mqkrDxSspbt6MhAANMMWOoonh9FuESjTtIVRTDiGZWeBSjQMEQ7uglfcXDJdeaDQPYxg==","signatures":[{"sig":"MEUCIQDWmdYFuqB9GsK9O0/LS+I2iA04x0hKNmKW2JBBNCNsXwIgWnjXwWGLL2ql+Z1wZwKcnd+gjQACfAJSsNLZ8+xI05s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":363693},"type":"module","engines":{"node":">=20.19"},"gitHead":"7de2b43dd773602f3e38f743aa1a17faefdff1f2","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.ts","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","smoke:sandbox":"node scripts/smoke-sandbox.ts","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"},"deprecated":"Versão com dependência workspace inválida; use 0.2.4 ou superior.","repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"_npmVersion":"11.19.0","description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"pg":"^8.23.0","zod":"^3.25.76","@botozap/sdk":"workspace:*","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/pg":"^8.23.1","typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.3_1787887825599_0.2693975228429888","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@botozap/mcp","version":"0.2.4","license":"MIT","_id":"@botozap/mcp@0.2.4","maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"homepage":"https://botozap.com.br","bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"bin":{"botozap-mcp":"dist/index.js"},"dist":{"shasum":"f54a9b589dba6e421fbabbeb363f74fb72c4fb98","tarball":"https://registry.npmjs.org/@botozap/mcp/-/mcp-0.2.4.tgz","fileCount":54,"integrity":"sha512-kXY8igDGELZXHM12sGksMCa1cosNoVdN0ZEAQAc8a87lzlcRdCWnXT7vgzc9G/06MmsxZ8K9XX0fXMougZinOQ==","signatures":[{"sig":"MEQCIHhtIC0NMEpx2G63aasMnbXnHGWG5AkRkmY3t44ACx8xAiBNei8f5BC0YdZyXNshhGqEPmnypD/2cNgalkDxYj3PlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":363646},"type":"module","_from":"file:/tmp/botozap-npm-fix.4xgArB/botozap-mcp-0.2.4.tgz","engines":{"node":">=20.19"},"scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.ts","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","smoke:sandbox":"node scripts/smoke-sandbox.ts"},"_npmUser":{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"},"_resolved":"/tmp/botozap-npm-fix.4xgArB/botozap-mcp-0.2.4.tgz","_integrity":"sha512-kXY8igDGELZXHM12sGksMCa1cosNoVdN0ZEAQAc8a87lzlcRdCWnXT7vgzc9G/06MmsxZ8K9XX0fXMougZinOQ==","repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"_npmVersion":"11.19.0","description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"pg":"^8.23.0","zod":"^3.25.76","@botozap/sdk":"0.3.2","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/pg":"^8.23.1","typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.4_1787887931214_0.9049117289958708","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@botozap/mcp","version":"0.2.5","license":"MIT","_id":"@botozap/mcp@0.2.5","maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"homepage":"https://botozap.com.br","bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"bin":{"botozap-mcp":"dist/index.js"},"dist":{"shasum":"3b59afc784d85cf2d5b348447d6a9d4dccf7d3b6","tarball":"https://registry.npmjs.org/@botozap/mcp/-/mcp-0.2.5.tgz","fileCount":54,"integrity":"sha512-vJfGqaYfgD6yyLOYcPPPefybHyNXu0wt9gH2TcnpVJdvVVtaLG1b8Y8JXOkHvypB3T7KD0LVRQNIFxZxFqKtag==","signatures":[{"sig":"MEQCIA2XAcEqv9yjXpOxLW5Qb0PfX9TBjEaBGMNv0GrJ0cf7AiBZlrn6ZtLeq3nagZE6sooAjzks3vmjyJ/8CWKDxqSliw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":364286},"type":"module","engines":{"node":">=20.19"},"gitHead":"d85848a7d1af93d7af78f600233cd649b6db2a41","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.ts","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","smoke:sandbox":"node scripts/smoke-sandbox.ts","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"},"repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"_npmVersion":"11.19.0","description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"pg":"^8.23.0","zod":"^3.25.76","@botozap/sdk":"workspace:*","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/pg":"^8.23.1","typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.5_1788071353873_0.015490710286008902","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@botozap/mcp","version":"0.2.6","license":"MIT","_id":"@botozap/mcp@0.2.6","maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"homepage":"https://botozap.com.br","bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"bin":{"botozap-mcp":"dist/index.js"},"dist":{"shasum":"3fde9b2d5019862ee57c4bee45406a870bc235ba","tarball":"https://registry.npmjs.org/@botozap/mcp/-/mcp-0.2.6.tgz","fileCount":54,"integrity":"sha512-eDhpfiNNitLMZh3H/JTVworhDcc0xJ4H1rD/2XLEXPRXJEBW09GuWPthw2+zYj9647hP4pd+cN4F07gEQmpATA==","signatures":[{"sig":"MEUCIQCNWrtuXAiz/DjRbb50LwqiimZNCccS2LcFEQ5iz+6HmQIgNuChXPtRqFzAimdxA7tFGMPtSWmRVmGOwbaV7L6erXs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":365087},"type":"module","_from":"file:/private/tmp/botozap-mcp-0.2.6.tgz","engines":{"node":">=20.19"},"scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.ts","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","smoke:sandbox":"node scripts/smoke-sandbox.ts"},"_npmUser":{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"},"_resolved":"/private/tmp/botozap-mcp-0.2.6.tgz","_integrity":"sha512-eDhpfiNNitLMZh3H/JTVworhDcc0xJ4H1rD/2XLEXPRXJEBW09GuWPthw2+zYj9647hP4pd+cN4F07gEQmpATA==","repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"_npmVersion":"11.19.0","description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"pg":"^8.23.0","zod":"^3.25.76","@botozap/sdk":"0.3.2","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/pg":"^8.23.1","typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.6_1789193162961_0.7754783954409532","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@botozap/mcp","version":"0.3.0","license":"MIT","_id":"@botozap/mcp@0.3.0","maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"homepage":"https://botozap.com.br","bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"bin":{"botozap-mcp":"dist/index.js"},"dist":{"shasum":"70f4bf95e084d07208dd1f916a446f5ca609a8f5","tarball":"https://registry.npmjs.org/@botozap/mcp/-/mcp-0.3.0.tgz","fileCount":69,"integrity":"sha512-PDPsu/YpoKqt4xcAGIIwu+UwsVzqQWELpyjh/guYkXIGmuMuU24YSoXDPdIbziVg5wQhH9Ish9eYUQI9pkBeuA==","signatures":[{"sig":"MEUCID6CLiz5A/OHgajKci7WC6bJAsfyjZLK7Celvjm5QJcBAiEAo7gql6r7k8qEp1FxOLUHGs3plYorTqdm6PcFqZlKW+g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCu1dVr27l4UNpvL2bhX89UDd1usX85LlP3/HwheAcsVwIhAJdtuMpOjGC1TAPgSR+MBYP0eeWFr0U0Lv2DhiaHRcSX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":476074},"type":"module","_from":"file:/var/folders/bv/8dsknpf93qschnp8frqt6_gm0000gn/T/botozap-mcp-publish.7ls3Q8/mcp.tgz","engines":{"node":">=20.19"},"scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.ts","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","smoke:sandbox":"node scripts/smoke-sandbox.ts"},"_npmUser":{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"},"_resolved":"/var/folders/bv/8dsknpf93qschnp8frqt6_gm0000gn/T/botozap-mcp-publish.7ls3Q8/mcp.tgz","_integrity":"sha512-PDPsu/YpoKqt4xcAGIIwu+UwsVzqQWELpyjh/guYkXIGmuMuU24YSoXDPdIbziVg5wQhH9Ish9eYUQI9pkBeuA==","repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"_npmVersion":"11.19.0","description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.23.0","zod":"^3.25.76","@botozap/sdk":"0.4.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/pg":"^8.23.1","typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.3.0_1790265662371_0.5644985070800033","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@botozap/mcp","version":"0.4.0","license":"MIT","_id":"@botozap/mcp@0.4.0","maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"homepage":"https://botozap.com.br","bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"bin":{"botozap-mcp":"dist/index.js"},"dist":{"shasum":"b146ee7f05b7062b6e3b2a6183f9e4b43f3f7e88","tarball":"https://registry.npmjs.org/@botozap/mcp/-/mcp-0.4.0.tgz","fileCount":69,"integrity":"sha512-el4u+Dl1e43ZVaPGmKXzktBWlsVHXVLcRM27BxTc4c3Aa3sCuGz1DuAhkOy5QpSz8zylB8mLIRMJ+9GhnnfjUA==","signatures":[{"sig":"MEQCIEGj992mYe+TmSoOReWOMPM2Al9oiQ3JsXlv9pcrkKKwAiAGXA7Np6jY5pOgOiMgnNf9jXFcK1EKuocFwttgaBRBIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDdtED5YCOJqjetMXyX2k9hmGensUXUD+G7nGtN4x88UQIhAJielS1Y5jajTq0GMcNasWoV78X5RxOR0cLuaXR2PWhp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":478563},"type":"module","_from":"file:/var/folders/bv/8dsknpf93qschnp8frqt6_gm0000gn/T/botozap-mcp-publish.R5z3A8/mcp.tgz","engines":{"node":">=20.19"},"scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.ts","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","smoke:sandbox":"node scripts/smoke-sandbox.ts"},"_npmUser":{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"},"_resolved":"/var/folders/bv/8dsknpf93qschnp8frqt6_gm0000gn/T/botozap-mcp-publish.R5z3A8/mcp.tgz","_integrity":"sha512-el4u+Dl1e43ZVaPGmKXzktBWlsVHXVLcRM27BxTc4c3Aa3sCuGz1DuAhkOy5QpSz8zylB8mLIRMJ+9GhnnfjUA==","repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"_npmVersion":"11.19.0","description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.23.0","zod":"^3.25.76","@botozap/sdk":"0.5.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/pg":"^8.23.1","typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.4.0_1790347110737_0.7652033450734947","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@botozap/mcp","version":"0.5.0","license":"MIT","_id":"@botozap/mcp@0.5.0","maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"homepage":"https://botozap.com.br","bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"bin":{"botozap-mcp":"dist/index.js"},"dist":{"shasum":"7a4fe98bb6697eaf825fd404d5760346ccdfc7db","tarball":"https://registry.npmjs.org/@botozap/mcp/-/mcp-0.5.0.tgz","fileCount":72,"integrity":"sha512-y/x2T/y7vyG0IpHoVHqRyGmxfmNDpcrhmequH9rkRt0ov6/UUMig8SWyjyxWoo2XXkK7J9zkeTsPcg7JJ2uxQQ==","signatures":[{"sig":"MEQCIDi7EhPjHHD9eOi0LbAZKkIVKRLP/njZC+Q4XOJEHijBAiAshT82antHu1K0/6rc4dTrpB/KXbSN7AIkbdfSZ5wYsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEMCICJVgNw3GvBq2kEH7swP2qnYxIn4XSAqpsINBUeEoqJvAh8SFMLh8jO+hXaovpuFDSRZDHYCuTiBqDSumMCO4zy7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":582091},"type":"module","_from":"file:/var/folders/bv/8dsknpf93qschnp8frqt6_gm0000gn/T/botozap-mcp-publish.J9CS8P/mcp.tgz","engines":{"node":">=20.19"},"scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.ts","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","smoke:sandbox":"node scripts/smoke-sandbox.ts"},"_npmUser":{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"},"_resolved":"/var/folders/bv/8dsknpf93qschnp8frqt6_gm0000gn/T/botozap-mcp-publish.J9CS8P/mcp.tgz","_integrity":"sha512-y/x2T/y7vyG0IpHoVHqRyGmxfmNDpcrhmequH9rkRt0ov6/UUMig8SWyjyxWoo2XXkK7J9zkeTsPcg7JJ2uxQQ==","repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"_npmVersion":"11.19.0","description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.23.0","zod":"^3.25.76","@botozap/sdk":"0.7.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/pg":"^8.23.1","typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.5.0_1790366784298_0.15739816364937842","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@botozap/mcp","version":"0.6.0","license":"MIT","_id":"@botozap/mcp@0.6.0","maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"homepage":"https://botozap.com.br","bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"bin":{"botozap-mcp":"dist/index.js"},"dist":{"shasum":"6f9eea48c9a470779059e8d185d573d54f6b3195","tarball":"https://registry.npmjs.org/@botozap/mcp/-/mcp-0.6.0.tgz","fileCount":72,"integrity":"sha512-eP5dQvEIZh0jo5jN3Qs77UaKs008aezb448V0PuKP471qLYba5el2f5vETMIrAYTQ7XCrHqEnlsVhKxZ4KppbA==","signatures":[{"sig":"MEUCIHjeVXMi7NmwC2I6ATfBHb3YfEnYqp/w/lB6GDXTApAyAiEArdQ7vk7KbkTGH6KEgEhOFg8R6BaNHR45iuJHNTn56UQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCq8iK8rEcxIQQIT+bGY+CiIFkFVHZ6JQZSBVQEzNPJzwIgJA25MIQXqfLt1eFOxguhdg28OyncNAGaIWJsWJVZLTA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":582831},"type":"module","_from":"file:/var/folders/bv/8dsknpf93qschnp8frqt6_gm0000gn/T/botozap-mcp-publish.k5J4Rv/mcp.tgz","engines":{"node":">=20.19"},"scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json","smoke":"node scripts/smoke.ts","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","smoke:sandbox":"node scripts/smoke-sandbox.ts"},"_npmUser":{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"},"_resolved":"/var/folders/bv/8dsknpf93qschnp8frqt6_gm0000gn/T/botozap-mcp-publish.k5J4Rv/mcp.tgz","_integrity":"sha512-eP5dQvEIZh0jo5jN3Qs77UaKs008aezb448V0PuKP471qLYba5el2f5vETMIrAYTQ7XCrHqEnlsVhKxZ4KppbA==","repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"_npmVersion":"11.19.0","description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.23.0","zod":"^3.25.76","@botozap/sdk":"0.8.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/pg":"^8.23.1","typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.6.0_1790383503160_0.46528058631877056","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@botozap/mcp","version":"0.7.0","license":"MIT","_id":"@botozap/mcp@0.7.0","maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"homepage":"https://botozap.com.br","bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"bin":{"botozap-mcp":"dist/index.js"},"dist":{"shasum":"f904060c3cf66a0af12dc66a8ca99e2e2e43f4c2","tarball":"https://registry.npmjs.org/@botozap/mcp/-/mcp-0.7.0.tgz","fileCount":94,"integrity":"sha512-XdgGhm9ZfxHwajdDtSbKALOWvCDyfm2xxx44MyfrTLMcju3hNkfzQBp02ffCC1eBHLMuPmrr602+7EHTRKOU8A==","signatures":[{"sig":"MEUCIQCsCMo0kj/2FC0frCfa3IXjWAdIy0u7UIVJfK7GAyIpLAIgK3HcdUmHuUzNdSC0pXgIEe3CW+OWLnLE7ASR8MDPOZs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCm7r5/q54uNl6jmboarlymKxHMyGNLY7ZxQE1DpTOWSgIhAOyEazZSC8W3AFkR1KC90sSq8fCw2KXJPUaSXvfVcl23","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":901133},"type":"module","_from":"file:/var/folders/bv/8dsknpf93qschnp8frqt6_gm0000gn/T/botozap-mcp-publish.2iLVsp/mcp.tgz","engines":{"node":">=20.19"},"scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-ui.mjs","smoke":"node scripts/smoke.ts","start":"node dist/index.js","build:ui":"node scripts/build-ui.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p web/tsconfig.json --noEmit","preview:build":"node scripts/build-ui.mjs --demo","smoke:sandbox":"node scripts/smoke-sandbox.ts"},"_npmUser":{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"},"_resolved":"/var/folders/bv/8dsknpf93qschnp8frqt6_gm0000gn/T/botozap-mcp-publish.2iLVsp/mcp.tgz","_integrity":"sha512-XdgGhm9ZfxHwajdDtSbKALOWvCDyfm2xxx44MyfrTLMcju3hNkfzQBp02ffCC1eBHLMuPmrr602+7EHTRKOU8A==","repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"_npmVersion":"11.19.0","description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.23.0","zod":"^3.25.76","@botozap/sdk":"0.9.0","@openai/mcp-extensions":"0.1.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"1.7.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","esbuild":"0.28.1","@types/pg":"^8.23.1","happy-dom":"20.14.0","typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.7.0_1790734621776_0.6288693213753187","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@botozap/mcp","version":"0.8.0","license":"MIT","_id":"@botozap/mcp@0.8.0","maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"homepage":"https://botozap.com.br","bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"bin":{"botozap-mcp":"dist/index.js"},"dist":{"shasum":"09adbe50274281531cf127dd88a8f551d8785f79","tarball":"https://registry.npmjs.org/@botozap/mcp/-/mcp-0.8.0.tgz","fileCount":130,"integrity":"sha512-T4u5N62R3VY6YA9dms3p1HJtbM3fOANsqt48n2ogfDgfMs711SLhIloiEInjE4qC9Xf5Wf0QyGIloO8rpMm1Jg==","signatures":[{"sig":"MEUCIQD/fhCg3hdQb0viHbUJ9mwxknpIcEOuO+13dMKWoYeUrwIgc11I0E1m496dQRjmv/zPms2A2k9b7eIYNNqKo0c0WdA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEsQEBAkj26LUzLAEorCKX79q69rgVjaancUFy8V7npJAiAtRtVCrmVMvJzu5BvrfF3jwoKsCGuIyfBJzPaB86DL4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1187272},"type":"module","_from":"file:/var/folders/bv/8dsknpf93qschnp8frqt6_gm0000gn/T/botozap-mcp-publish.2VWHdv/mcp.tgz","engines":{"node":">=20.19"},"scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-ui.mjs","smoke":"node scripts/smoke.ts","start":"node dist/index.js","demo:ui":"node scripts/demo-ui.mjs","build:ui":"node scripts/build-ui.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p web/tsconfig.json --noEmit","preview:build":"node scripts/build-ui.mjs --demo","smoke:sandbox":"node scripts/smoke-sandbox.ts","screenshots:ui":"node scripts/screenshot-ui.mjs"},"_npmUser":{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"},"_resolved":"/var/folders/bv/8dsknpf93qschnp8frqt6_gm0000gn/T/botozap-mcp-publish.2VWHdv/mcp.tgz","_integrity":"sha512-T4u5N62R3VY6YA9dms3p1HJtbM3fOANsqt48n2ogfDgfMs711SLhIloiEInjE4qC9Xf5Wf0QyGIloO8rpMm1Jg==","repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"_npmVersion":"11.19.0","description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.23.0","zod":"^3.25.76","@botozap/sdk":"0.10.0","@openai/mcp-extensions":"0.1.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"1.7.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","esbuild":"0.28.1","@types/pg":"^8.23.1","happy-dom":"20.14.0","playwright":"1.56.1","typescript":"^5.6.0","@types/node":"^20.19.0","@openai/apps-sdk-ui":"0.2.2","@axe-core/playwright":"4.10.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.8.0_1790831479015_0.6327976416469321","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@botozap/mcp","version":"0.8.1","license":"MIT","_id":"@botozap/mcp@0.8.1","maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"homepage":"https://botozap.com.br","bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"bin":{"botozap-mcp":"dist/index.js"},"dist":{"shasum":"06a81b8b9a8a2da748ef98db79f5b4cf3ebcd9bc","tarball":"https://registry.npmjs.org/@botozap/mcp/-/mcp-0.8.1.tgz","fileCount":130,"integrity":"sha512-rrJYwfxloBRHy97CYX3NFUu/hzoEHilZvH9omQSRtQi4U/8mYWl7L0d0T4fkVq2KJTBgR2F/Kbtfj8BT+FAC0A==","signatures":[{"sig":"MEYCIQDe6NRRMjJIhjjzb0KmNtQFC0HNeCdTKMiiuruIBM58DwIhAIiUH4Xq95ueVipG+w+wAywUjzzM2gu+xUiUqD138al9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIF4AR8xxcVi6SgxS4LMODu1Rq0eFzbmpmxfXpjbWrPOnAiEAgzg+9GbMKE/RSmgCdn2iny3/8yiIt+Nh60tJIZmvnWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1195578},"type":"module","_from":"file:/var/folders/bv/8dsknpf93qschnp8frqt6_gm0000gn/T/botozap-mcp-publish.lyFslY/mcp.tgz","engines":{"node":">=20.19"},"scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-ui.mjs","smoke":"node scripts/smoke.ts","start":"node dist/index.js","demo:ui":"node scripts/demo-ui.mjs","build:ui":"node scripts/build-ui.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p web/tsconfig.json --noEmit","preview:build":"node scripts/build-ui.mjs --demo","smoke:sandbox":"node scripts/smoke-sandbox.ts","screenshots:ui":"node scripts/screenshot-ui.mjs"},"_npmUser":{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"},"_resolved":"/var/folders/bv/8dsknpf93qschnp8frqt6_gm0000gn/T/botozap-mcp-publish.lyFslY/mcp.tgz","_integrity":"sha512-rrJYwfxloBRHy97CYX3NFUu/hzoEHilZvH9omQSRtQi4U/8mYWl7L0d0T4fkVq2KJTBgR2F/Kbtfj8BT+FAC0A==","repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"_npmVersion":"11.19.0","description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.23.0","zod":"^3.25.76","@botozap/sdk":"0.10.0","@openai/mcp-extensions":"0.1.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"1.7.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","esbuild":"0.28.1","@types/pg":"^8.23.1","happy-dom":"20.14.0","playwright":"1.56.1","typescript":"^5.6.0","@types/node":"^20.19.0","@openai/apps-sdk-ui":"0.2.2","@axe-core/playwright":"4.10.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.8.1_1790866664742_0.5837106976292343","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"_id":"@botozap/mcp@0.8.3","bin":{"botozap-mcp":"dist/index.js"},"bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"dist":{"shasum":"d294d9b8bb8b9f718d7f8f680c43579c74125c4a","tarball":"https://registry.npmjs.org/@botozap/mcp/-/mcp-0.8.3.tgz","fileCount":130,"integrity":"sha512-svZA/XBvDPv9ChnMim55p8SBezRym159cCVqyCoJdGWPjTT/fJQpZfF4OJqfYs25sm5O5v+NcNP+qRYnoHscPA==","signatures":[{"sig":"MEQCIBsN3PMtC6puXPLQB9Aij5Iax7l4X8d2eLcriCgpeDq/AiAqdFc/GQZgHrYo+nHuDZf+rkQdXEdLFH8oxTddr/rDDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBk4WglnX7iStOYdONpl7aNyWp1W/cSI6n+4UpJ2VNW+AiEAiUqZL1tkqEuAnaySjCYOWTHnaOmBtRP6xNgRki402xQ="}],"unpackedSize":1198934},"name":"@botozap/mcp","type":"module","_from":"file:/var/folders/bv/8dsknpf93qschnp8frqt6_gm0000gn/T/botozap-mcp-publish.pEEhkB/mcp.tgz","engines":{"node":">=20.19"},"license":"MIT","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-ui.mjs","smoke":"node scripts/smoke.ts","start":"node dist/index.js","demo:ui":"node scripts/demo-ui.mjs","build:ui":"node scripts/build-ui.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p web/tsconfig.json --noEmit","preview:build":"node scripts/build-ui.mjs --demo","smoke:sandbox":"node scripts/smoke-sandbox.ts","screenshots:ui":"node scripts/screenshot-ui.mjs"},"version":"0.8.3","_npmUser":{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"},"homepage":"https://botozap.com.br","_resolved":"/var/folders/bv/8dsknpf93qschnp8frqt6_gm0000gn/T/botozap-mcp-publish.pEEhkB/mcp.tgz","_integrity":"sha512-svZA/XBvDPv9ChnMim55p8SBezRym159cCVqyCoJdGWPjTT/fJQpZfF4OJqfYs25sm5O5v+NcNP+qRYnoHscPA==","repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"_npmVersion":"11.19.0","description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","directories":{},"maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.23.0","zod":"^3.25.76","@botozap/sdk":"0.10.0","@openai/mcp-extensions":"0.1.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"1.7.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","esbuild":"0.28.1","@types/pg":"^8.23.1","happy-dom":"20.14.0","playwright":"1.56.1","typescript":"^5.6.0","@types/node":"^20.19.0","@openai/apps-sdk-ui":"0.2.2","@axe-core/playwright":"4.10.2"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.8.3_1790873482910_0.639626548406727"}}},"time":{"created":"2026-07-15T06:19:50.843Z","modified":"2026-10-01T16:51:23.203Z","0.1.0":"2026-07-15T06:19:51.204Z","0.2.0":"2026-08-27T03:35:33.106Z","0.2.1":"2026-08-27T04:21:45.168Z","0.2.2":"2026-08-27T19:28:51.832Z","0.2.3":"2026-08-28T03:30:25.774Z","0.2.4":"2026-08-28T03:32:11.605Z","0.2.5":"2026-08-30T06:29:13.999Z","0.2.6":"2026-09-12T06:06:03.119Z","0.3.0":"2026-09-24T16:01:02.458Z","0.4.0":"2026-09-25T14:38:30.813Z","0.5.0":"2026-09-25T20:06:24.404Z","0.6.0":"2026-09-26T00:45:03.309Z","0.7.0":"2026-09-30T02:17:01.880Z","0.8.0":"2026-10-01T05:11:19.115Z","0.8.1":"2026-10-01T14:57:44.818Z","0.8.3":"2026-10-01T16:51:23.038Z"},"bugs":{"url":"https://github.com/bytecraft-fernando/botozap-js/issues"},"license":"MIT","homepage":"https://botozap.com.br","repository":{"url":"git+https://github.com/bytecraft-fernando/botozap-js.git","type":"git","directory":"packages/mcp"},"description":"Servidor MCP (Model Context Protocol) para a API pública do BotoZap — expõe as operações da plataforma WhatsApp Cloud API como ferramentas MCP para Claude Code, Cursor e Codex.","maintainers":[{"name":"bytecraft-technology","email":"fernando@bytecraft.technology"}],"readme":"# @botozap/mcp\n\nServidor **MCP (Model Context Protocol)** para a API pública do **BotoZap** — a\nplataforma sobre a WhatsApp Cloud API oficial. Painel, API/MCP e links de setup\noperam a mesma Conta, para um ou vários negócios.\n\nEle expõe as operações da plataforma (`/api/v1`) como **ferramentas MCP** e o\nstream durável de Eventos como **resource assinável**, para que assistentes como\n**Claude Code**, **Cursor** e **Codex** consigam operar o canal e receber um\nsinal de baixa latência quando o WhatsApp mudar.\n\nCada ferramenta MCP mapeia para uma operação do SDK oficial **`@botozap/sdk`**\n(que autentica com a sua chave `bz_...`, monta a requisição e trata o envelope de\nerro). É uma ponte fina: valida os argumentos e resultados (zod), delega ao SDK\ne devolve o JSON da API.\n\nTodas as tools anunciam `outputSchema` e devolvem o resultado em\n`structuredContent`, além do `content[].text` em JSON mantido para clientes\nantigos. Isso inclui paginação por cursor/offset, operações de gestão e os\n`DELETE` sem corpo — estes preservam `null` no texto legado e devolvem\n`{ success: true }` na saída estruturada. Erros preservam `isError` e também\nexpõem `{ error: { code, message, status } }` em `structuredContent`, sem\ncredenciais.\n\n> **Status: preview público `0.x`.** Sem promessa de estabilidade de tools e\n> argumentos até a `1.0`; fixe a versão para integrações reproduzíveis.\n\n## Requisitos\n\n- **Node.js ≥ 20.19** (ESM).\n- Uma chave de API do BotoZap (gere em **/chaves** no painel).\n- **pnpm** (este monorepo usa pnpm exclusivamente).\n\n## Descoberta por permissão (próxima versão)\n\nA inicialização consulta `GET /v1/me` pelo SDK e anuncia somente as ferramentas\npermitidas pelos escopos e pelo ambiente da credencial. A API precisa oferecer\nesse endpoint antes de publicar o SDK e o MCP; erro de introspecção impede iniciar a\nsessão, sem fallback para o catálogo completo. Essa consulta não exige\n`events:read`: o escopo só é necessário para o resource de Eventos.\n\nNo stdio, o catálogo reflete a inicialização; reconecte após alterar escopos.\nNo Streamable HTTP, a identidade da sessão é reutilizada por até 60 segundos,\ninclusive nas consultas periódicas de Eventos. Após esse prazo, uma introspecção\ncompartilhada entre requests e polls atualiza as permissões. A chave de API precisa\nmanter o fingerprint original. Um bearer OAuth novo exige introspecção imediata e\nsó é aceito para a mesma Conta, ambiente, usuário, cliente e grant. A descoberta\nOAuth também exige as rotas concretas usadas pela ferramenta.\n\nA API continua autorizando cada chamada, inclusive após revogação da credencial;\nesconder uma ferramenta e reutilizar a identidade não substituem essa verificação.\n`reply_to_conversation` exige `conversations:read` e `messages:send`, pois o SDK\nresolve a conversa antes de enviar. `get_profile` identifica a Conta e o ambiente\nautorizados e revalida a credencial a cada consulta; não representa uma pessoa.\n\nTodas as ferramentas declaram `readOnlyHint`, `destructiveHint` e `openWorldHint`\nconforme seus efeitos. Operações compostas consideram também efeitos indiretos.\nAs anotações orientam o host; não implementam autorização nem comprovam que uma\npessoa confirmou a ação. OAuth e a publicação no diretório ChatGPT são etapas\nseparadas.\n\nPara desenvolvimento: `buildServer` é assíncrono. Aguarde sua conclusão antes de\nconectar o transporte. Os testes de operação usam identidade previamente validada;\nos testes de descoberta exercitam o contrato real de introspecção com HTTP simulado.\n\n## Compatibilidade das respostas e ordem de publicação\n\nRespostas tipadas publicam somente os campos declarados pelo schema, tanto no\nJSON textual quanto em `structuredContent`. `list_users.data[].id` e o alias\n`data[].user_id` continuam disponíveis. A auditoria dos endpoints revisados não\nidentificou remoção de campo público na projeção final. O segredo HMAC de webhook\ncontinua disponível apenas em `create_webhook`. Conteúdo dinâmico de mensagens,\nmetadados de contatos e payloads de IA preservam seus objetos de negócio.\n\n**Publique primeiro a API com `GET /v1/me` validado; só depois publique SDK e MCP.**\nClientes que usam `npx @botozap/mcp` ou `pnpm dlx @botozap/mcp` sem versão podem\nreceber a atualização imediatamente. Veja o [plano de release](../../docs/chatgpt-phase1-release.md)\npara a auditoria dos campos e as verificações por ambiente.\n\n## Instalação\n\nO pacote pode ser executado diretamente do npm:\n\n```bash\npnpm dlx @botozap/mcp@0.2.6\n```\n\nPara desenvolver o monorepo localmente:\n\n```bash\npnpm install\npnpm build\npnpm --filter @botozap/mcp smoke\npnpm --filter @botozap/mcp test\n```\n\n## Configuração (variáveis de ambiente)\n\n| Variável | Quando | Default | Descrição |\n| --- | --- | --- | --- |\n| `BOTOZAP_API_KEY` | Obrigatória em stdio | — | Chave `bz_...` usada pelo processo stdio. |\n| `BOTOZAP_API_URL` | Opcional | `https://botozap.com.br/api/v1` | Base da API (útil para staging/local). |\n| `BOTOZAP_MCP_TRANSPORT` | Remoto | `stdio` | Use `streamable-http` para iniciar o endpoint remoto. |\n| `BOTOZAP_MCP_HOST` | Remoto | `127.0.0.1` | Interface TCP do endpoint remoto. |\n| `BOTOZAP_MCP_PORT` | Remoto | `3001` | Porta do endpoint remoto (`0` escolhe uma porta livre). |\n| `BOTOZAP_MCP_ALLOWED_HOSTS` | Remoto | loopback em localhost | CSV saneado (trim, vazio descartado) dos valores de `Host` aceitos em `/mcp`. Obrigatória fora de localhost. |\n| `BOTOZAP_MCP_ALLOWED_ORIGINS` | Remoto | vazio | CSV saneado das `Origin` aceitas em `/mcp` (match exato). Sem `Origin` continua aceito; `Origin` presente só passa se estiver na lista. |\n| `BOTOZAP_MCP_RATE_LIMIT_PER_CLIENT` | Remoto | `120` | Requisições por minuto por cliente/IP antes da autenticação. |\n| `BOTOZAP_MCP_RATE_LIMIT_GLOBAL` | Remoto | `1200` | Teto global de requisições por minuto por processo. |\n| `BOTOZAP_MCP_TRUSTED_PROXY_CIDRS` | Remoto | vazio | CSV de CIDRs autorizados a alcançar `/mcp`; com Cloudflare, use somente as faixas oficiais e o rate limit passa a usar `CF-Connecting-IP`. |\n| `BOTOZAP_EVENT_BUS_DATABASE_URL` | Obrigatória no remoto | — | Conexão PostgreSQL de sessão que suporta `LISTEN/NOTIFY`. |\n\nSem a configuração obrigatória do transporte escolhido, o servidor falha\nimediatamente com uma mensagem clara e sem imprimir o valor recebido.\n\n### Streamable HTTP (operador da plataforma)\n\nO mesmo binário pode manter sessões remotas stateful em `/mcp`. Nesse modo cada\ncliente envia sua própria chave BotoZap no header `Authorization: Bearer`; a\nsessão fica vinculada a essa credencial e a Conta/ambiente continuam derivados\npela API. A chave nunca entra na URL do endpoint, URI do resource ou\nnotification.\n\n```bash\nBOTOZAP_MCP_TRANSPORT=streamable-http \\\nBOTOZAP_MCP_HOST=0.0.0.0 \\\nBOTOZAP_MCP_PORT=3001 \\\nBOTOZAP_MCP_ALLOWED_HOSTS=mcp.botozap.com.br \\\nBOTOZAP_EVENT_BUS_DATABASE_URL=postgresql://... \\\npnpm dlx @botozap/mcp@0.2.6\n```\n\nBind em `0.0.0.0` ou `::` sem `BOTOZAP_MCP_ALLOWED_HOSTS` recusa o boot (fail-closed). Em `127.0.0.1`/`::1`/`localhost` a allowlist padrão de loopback é aplicada e o desenvolvimento local segue igual.\n\nTodo request a `/mcp` valida `Host` e `Origin` **antes** de Bearer e do parse do corpo, como exige o transporte Streamable HTTP (spec 2025-11-25): `Host` precisa estar na allowlist; `Origin` ausente é aceita (clientes server-to-server); `Origin` presente só passa por match exato. Desvio responde `403` JSON-RPC (`-32000`) sem autenticar.\n\n`GET /healthz` é público, mínimo e sem segredo: responde `200` com `{\"ok\": true}` para readiness (Fly). Não exige Bearer, não consulta sessão e não revela estado interno — o health check interno pode usar um `Host` que não está na allowlist de `/mcp`.\n\nQuando `BOTOZAP_MCP_TRUSTED_PROXY_CIDRS` está definida, `/mcp` exige que o\n`Fly-Client-IP` pertença a uma das redes configuradas; isso bloqueia acesso\ndireto ao origin mesmo com `Host` forjado. Em deploy atrás da Cloudflare,\nmantenha a lista sincronizada com `https://www.cloudflare.com/ips/`; somente\ndepois dessa validação o rate limiter confia em `CF-Connecting-IP`.\n\nUse uma conexão PostgreSQL persistente/direta ou pooler em modo de sessão;\npooler em modo de transação não preserva `LISTEN`. O bus carrega somente um\nsinal vazio. Ao recebê-lo, cada sessão consulta `/events` com sua própria chave\ne só envia `notifications/resources/updated` se houver Evento no cursor\nautorizado. O payload autoritativo permanece no stream durável.\n\nSe o bus cair — inclusive durante o boot — o servidor continua disponível em\nmodo degradado, reconecta com backoff de 250 ms a 10 s e mantém um heartbeat de\nreconciliação pelo cursor a cada 15 s. Um sinal que chega enquanto outra leitura\nestá em voo fica pendente para um novo probe imediato; não depende do próximo\nheartbeat.\n\nO processo mantém no máximo 1.000 sessões, 5 sessões por chave e 8 resources de\nEventos por sessão. `resources/unsubscribe` interrompe o consumo daquele\nresource; `DELETE /mcp` encerra a sessão e libera listeners/timers. Uma sessão\nque perde o transporte sem enviar `DELETE` é recolhida após 5 minutos sem\nrequest ativo (varredura a cada 30 s). Esses limites são conservadores para o\npreview `0.x` e podem mudar antes da `1.0`.\n\n## Usar com Claude Code\n\nVia CLI:\n\n```bash\nclaude mcp add botozap \\\n  --env BOTOZAP_API_KEY=bz_live_suachaveaqui \\\n  -- pnpm dlx @botozap/mcp@0.2.6\n```\n\nOu no JSON do MCP (`.mcp.json` do projeto ou config do usuário):\n\n```json\n{\n  \"mcpServers\": {\n    \"botozap\": {\n      \"command\": \"pnpm\",\n      \"args\": [\"dlx\", \"@botozap/mcp@0.2.6\"],\n      \"env\": {\n        \"BOTOZAP_API_KEY\": \"bz_live_suachaveaqui\"\n      }\n    }\n  }\n}\n```\n\n## Usar com Cursor\n\nEdite `~/.cursor/mcp.json` (global) ou `.cursor/mcp.json` (no projeto):\n\n```json\n{\n  \"mcpServers\": {\n    \"botozap\": {\n      \"command\": \"pnpm\",\n      \"args\": [\"dlx\", \"@botozap/mcp@0.2.6\"],\n      \"env\": {\n        \"BOTOZAP_API_KEY\": \"bz_live_suachaveaqui\"\n      }\n    }\n  }\n}\n```\n\n## Ferramentas disponíveis\n\nTransportes: **stdio** (padrão, local) e **Streamable HTTP** (remoto stateful).\nNomes em inglês (snake_case, melhor para tool-calling); descrições em PT-BR.\n\n**Mensagens** — `send_message` (`text`, `template`, `interactive` button/list/cta_url, `location`, `reaction`), `list_messages` (`sort`: `created_at` ou `event_at`; cada item traz `source`), `get_message`\n**Conversas** — `reply_to_conversation`, `list_conversations`, `get_conversation`, `update_conversation` (leituras trazem `entry_point`, `referral` Click-to-WhatsApp, `fep_expires_at` e `fep_reply_by`)\n**Contatos** — `list_contacts`, `get_contact`, `create_contact`, `update_contact`, `delete_contact` (`display_name` é o nome dado pela empresa; `null` limpa)\n**Mídia** — `send_media_message`, `ingest_media`\n**Clientes** — `list_customers`, `get_customer`, `create_customer`, `update_customer`, `delete_customer`\n**Links de setup** — `list_setup_links`, `create_setup_link`, `update_setup_link` (redirects `https`: concluído → `success_redirect_url` com `status=completed`; link esgotado → `failure_redirect_url` com `status=failed`; cliente volta num erro recuperável → `failure_redirect_url` com `status=cancelled`, link segue válido; todo destino recebe `setup_link_id`)\n**Números** — `list_phone_numbers`, `get_phone_number`, `update_phone_number` (só o `label`, nome local), `phone_number_health`\n**Templates** — `list_templates`, `get_template`, `create_template`\n**Webhooks** — `list_webhooks`, `get_webhook`, `create_webhook`, `update_webhook`, `delete_webhook`, `test_webhook` (`events` aceita a categoria opt-in `app_messages`)\n**Entregas de webhook** — `list_webhook_deliveries` (status `limited` = cortada pelo limite de repasse do Free)\n**Logs** — `list_api_logs`\n**Usuários** — `list_users`\n**Uso** — `get_meta_costs` (custo aproximado da Meta por moeda, dia e categoria; custo ausente vem `null`, nunca 0)\n\n## Resource de Eventos\n\nOs dois transportes anunciam `resources.subscribe` e o template\n`botozap://events{?after,limit}`. Um cliente persistente pode assinar, por\nexemplo, `botozap://events?after=42&limit=100` e receber\n`notifications/resources/updated` quando existir um Evento posterior ao cursor\n42. O tail da API existe somente enquanto há assinatura ativa; clientes que usam\napenas tools não iniciam consultas de Eventos. A chave usada pelo servidor\nprecisa incluir o escopo `events:read`.\n\nA notification é deliberadamente só um sinal e não carrega mensagem, Contato\nou credencial. Ao recebê-la, releia o mesmo resource, processe `data` e persista\n`paging.cursor`. Depois de uma desconexão, leia a partir do último cursor salvo e\ndrene todas as páginas de catch-up (`paging.next`). Só então assine uma nova URI\ncom o cursor final em `after`; o probe inicial da assinatura fecha a corrida com\num Evento persistido entre a última leitura e o subscribe. Notifications são\nhints at-least-once e podem se repetir; deduplique por `event.id` antes de\nproduzir qualquer resposta. O mesmo Evento conserva `id`, `cursor` e identidade\nde mensagem em retries e replay.\n\nNo stdio, o tail usa intervalo padrão de 1,5 segundo e para no `unsubscribe` ou\nno fim da sessão. No remoto, o PostgreSQL acorda o processo MCP mesmo quando o\nEvento foi persistido por outra instância; a consulta escopada continua sendo a\nfonte do payload e o heartbeat cobre sinais perdidos. Receber a notification não\nsignifica que todo host inicia automaticamente uma nova execução do agente.\n\nEm caso de erro da API, a ferramenta devolve um resultado de erro (`isError`) com\na mensagem PT-BR do envelope `{ error: { code, message } }` no formato\n`Erro [code]: message`. `code`, `message` e o status HTTP também ficam\ndisponíveis de forma programática em todas as tools.\n\n## Chaves de sandbox\n\nUma chave de **sandbox** (prefixo `bz_sandbox_`) habilita as ferramentas de\nmensagem (`send_message`, `send_media_message`, `list_messages` e `get_message`) e o resource de\nEventos do próprio Sandbox. Qualquer outra ferramenta responde\n`403 sandbox_forbidden` (vindo da API) — útil para testar a integração sem tocar\ndados reais.\n\n**Números mágicos** (destinatários simulados, sem custo, sem número real):\n\n| `to`             | Comportamento simulado                                  |\n| ---------------- | ------------------------------------------------------- |\n| `+5500000000001` | happy path: `sent → delivered → read`, janela sempre aberta |\n| `+5500000000002` | falha: `sent → failed` (erro Meta `131026`)             |\n| `+5500000000003` | `sent → delivered` + resposta inbound simulada (abre a janela de 24h) |\n\n### Smokes de sandbox\n\nHá dois smokes, com propósitos distintos:\n\n- **Hermético (roda no `test`, CI):** `tests/sandbox-smoke.test.ts` usa um\n  `fetch` stub fiel ao contrato do sandbox — não precisa de credencial nem rede.\n  Verifica que o texto (acento + emoji) sobrevive intacto, que a chave vira\n  `Authorization: Bearer`, que a resposta (`sandbox: true` + `wamid.sandbox.<...>`)\n  chega ao agente, e que **a chave nunca aparece** no resultado.\n\n- **Externo (manual, exige credencial):** `pnpm --filter @botozap/mcp smoke:sandbox`\n  bate na API real. Exige `dist/` compilado (`pnpm --filter @botozap/mcp build`\n  antes) e as variáveis `BOTOZAP_API_KEY` (uma chave **`bz_sandbox_`**) e\n  `BOTOZAP_API_URL`. Recusa qualquer chave que não seja sandbox e **nunca imprime\n  a chave** (redação defensiva em toda saída, inclusive erros). **Nunca** entra no\n  `test` — não roda em PR/fork, que não têm credencial.\n\n  ```bash\n  pnpm --filter @botozap/mcp build\n  BOTOZAP_API_KEY=bz_sandbox_suachave BOTOZAP_API_URL=https://.../api/v1 \\\n    pnpm --filter @botozap/mcp smoke:sandbox\n  ```\n\n## Segurança\n\nA conta é sempre derivada da chave de API no servidor do BotoZap (multi-tenant,\nIDOR-safe). A chave é um segredo — não a comite nem a logue. O servidor MCP só\nescreve logs em **stderr** (stdout é reservado para o protocolo MCP); a chave\nnunca aparece em resultado de ferramenta, mensagem de erro, `/healthz` ou\nresposta `403` de `Host`/`Origin`.\n\n## Publicação pelos mantenedores\n\nUse `pnpm release:mcp` a partir de um checkout limpo da `main`, após\n`pnpm build`, `pnpm typecheck`, `pnpm test` e `pnpm gate:tarballs`. O comando\nempacota com pnpm, verifica as dependências no próprio tarball e publica esse\nmesmo arquivo com `npm publish`. Publicação usa npm; instalação, build e pack\ncontinuam usando pnpm. `pnpm release:mcp --dry-run` valida sem publicar e aceita\nbranches de revisão com alterações locais; a publicação real exige `main` limpa.\nPublique primeiro o SDK 0.10.0, depois a CLI 0.6.1 e o MCP 0.8.0: os dois\ntarballs dependem da versão exata do SDK, convertida de `workspace:*`.\n\nNão publique o diretório com outro empacotador: `workspace:*` pertence ao\nmonorepo e precisa virar a versão do SDK no artefato. A versão 0.2.5 violou esse\ncontrato; a 0.2.6 corrige a instalação. Após publicar, instale a versão exata em\num projeto vazio **sem overrides** e repita o cliente MCP real. O gate com\noverride serve para candidatos cujo SDK ainda não está no registry.\n\n**2FA exige terminal interativo.** `npm publish` pede o código do autenticador\nna hora; rodar `pnpm release:mcp` fora de um terminal interativo (CI, script\nnão-interativo, agente sem TTY) não tem como responder esse prompt. Publique a\npartir de um terminal interativo de verdade.\n\n**Depois do `npm publish`, o npm pode levar alguns minutos para listar a versão\nnova** (janela de processamento). `pnpm release:mcp` espera essa janela com um\npoll em `npm view @botozap/mcp@<versão> version` (~20 min de timeout, 15 s de\nintervalo) antes de instalar a versão publicada na prova pós-registry; o\ntimeout imprime como conferir manualmente. Se a publicação ficar presa nessa\njanela sem 2FA (terminal não-interativo) ou a versão demorar mais que o\ntimeout, **não rode `pnpm release:mcp` de novo**: publicar de novo com a\nversão anterior ainda na janela de processamento falha com `409 \"Cannot\npublish over previously staged version\"`, e essa versão fica presa até a\njanela passar sozinha. Espere a versão aparecer (`npm view` acima) e, só então,\nrode a prova pós-registry manualmente se quiser confirmar sem esperar o script.\n\n## Atendimento, CRM e Agenda\n\nO catálogo inclui respostas compartilhadas, notas/retornos/arquivo/adiamento,\noportunidades/demandas com histórico e conversas, Radar, réguas e execuções,\nAgenda completa e sincronização Google Calendar. Etapas, campos e atribuições\na membros também podem ser descobertos e gerenciados. Cada operação tem schemas\nde entrada e saída estruturada, com campos de versão exigidos quando aplicável.\n\nA chave representa a Conta: não acessa rascunhos/respostas pessoais nem executa\na autorização OAuth em nome de um humano. Configure Google em `/calendarios`.\nFerramentas de réguas e ativação podem gerar envios: use conforme instrução do\nusuário, preservando o controle de canal, consentimento e plano do servidor.\n\n[Scopes, CAS e roteiro de release](https://github.com/bytecraft-fernando/botozap-js/blob/main/docs/attendance-release.md).\n\nIA usa exclusivamente credenciais próprias (BYOK): SDK `client.ai`, CLI `botozap ai`\ne ferramentas MCP `ai_*`. Agentes versionados, provedores, credenciais, conhecimento,\nmemória, skills, follow-ups e retornos prometidos, roteadores, casos, alertas,\navisos, propostas de aprendizado e comerciais, controle de acesso (elegibilidade),\ninferências, promessas do operador, catálogo de modelos, execuções e uso. Scopes\n`agents:read/write`; aprovação exige chave criada por\nowner/admin ainda autorizado. Prévia não envia WhatsApp. Não há carteira, créditos\nou compra de vagas de IA. [Contratos e exemplos IA](https://github.com/bytecraft-fernando/botozap-js/blob/main/docs/ai.md).\n\n### Tamanho e contrato dos retornos\n\nO texto de cada resposta usa JSON compacto. Nas entidades com schema tipado,\ncampos fora do contrato são removidos antes de gerar texto e `structuredContent`.\nIDs, cursores e metadados de paginação são preservados; textos e listas não são\ntruncados. O segredo HMAC de webhook só é retornado na criação.\n\nOs payloads de negócio dinâmicos (IA, CRM/Agenda, conteúdo de mensagens,\nmetadados de contato, diagnóstico de saúde e extensões de mídia) mantêm seu\nconteúdo. Reduções futuras nesses domínios precisam de contratos específicos.\n\n## OAuth no transporte remoto\n\nConfigure as mesmas URLs canônicas usadas pelo app BotoZap:\n\n```sh\nOAUTH_ENABLED=true\nOAUTH_RESOURCE_URL=https://mcp.botozap.com.br/mcp\nOAUTH_ISSUER_URL=https://botozap.com.br\n```\n\nO endpoint publica metadados RFC 9728 em `/.well-known/oauth-protected-resource/mcp` e `/.well-known/oauth-protected-resource`. Respostas 401 incluem o endereço desses metadados em `WWW-Authenticate`. As URLs vêm da configuração do servidor.\n\n`scopes_supported` anuncia `openid`, `profile`, `email` e `phone`, aceitos pelo servidor de autorização do app. As permissões BotoZap, como `contacts:read` e `messages:send`, são escolhidas no consentimento e retornadas por `/v1/me`; não devem ser enviadas no parâmetro OAuth `scope`. O parâmetro OAuth `resource` deve usar a URL canônica `https://mcp.botozap.com.br/mcp` em autorização e troca de token.\n\nCada request, inclusive em sessões já abertas, valida a credencial em `/v1/me`. Uma sessão OAuth aceita o token renovado somente quando grant, usuário, cliente, Conta e ambiente permanecem iguais. Chaves de API continuam vinculadas ao fingerprint original. Tokens de requests simultâneos ficam isolados; chamadas de API usam a credencial do próprio request. A descoberta de ferramentas acompanha os scopes e as rotas efetivamente permitidas pelo app. Revogação e mudança de papel passam a valer na próxima requisição.\n\nO transporte stdio continua recebendo a credencial pelo ambiente `BOTOZAP_API_KEY`. O servidor MCP não realiza login nem armazena refresh tokens.\n\n\n## Intenção de envio e painel de revisão\n\n`send_message`, `send_media_message` e `reply_to_conversation` continuam aceitando\nas chamadas da versão 0.6.0. `idempotency_key` é opcional; omiti-la mantém o fluxo\nanterior, sem deduplicação por chave. Recomenda-se chamar `prepare_send_intent`\nantes de um novo envio e passar a chave retornada à tool. Em retry, preserve chave\ne conteúdo. Não crie outra chave para contornar timeout ou 409 pendente.\n\nO painel candidato de Plugin Extensions é habilitado com\n`BOTOZAP_MCP_UI_ENABLED=true` (HTTP ou stdio). `open_review_panel` abre a seleção de\nnegócio e Radar; `stage_review_reply` prepara um rascunho sem enviar. O rascunho e\na UI sempre preservam uma chave por intenção, com confirmação explícita e sem\nretry automático. A UI só aparece após o cliente negociar MCP Apps:\n`capabilities.extensions[\"io.modelcontextprotocol/ui\"].mimeTypes` deve incluir\n`text/html;profile=mcp-app`. Sem essa capacidade, mesmo com as flags, o catálogo\né tools-only, igual ao catálogo sem UI.\n\nO build inclui `dist/ui/review.html`, sem assets externos nem credenciais.\n`pnpm preview:build` cria uma demonstração local em `web/.preview/demo.html`, com\ndados fictícios. O pacote de plugin candidato está em `plugins/botozap`; não é\numa publicação no diretório.\n\nAPI `/v1/me` **e suporte a idempotência** devem estar disponíveis antes de publicar\nos pacotes novos. Resultados terminais por chave expiram após 24h; uma tentativa\ndesconhecida permanece pendente até reconciliação. Ver\n`docs/chatgpt-phase1-release.md` para a ordem de release e compatibilidade.\n\nRecusas confirmadas (`outcome: rejected`) liberam a chave. Aguarde o backoff ou\ncorrija a causa e repita com a mesma chave; após liberação, outro payload é uma\nnova intenção. `unknown` ou `accepted` exigem conciliação antes de considerar\noutro envio. SDK e MCP preservam `outcome` e `retry` da API. Resultados concluídos\nvencidos são removidos pelo cron a cada minuto; claims incertas não são removidas\npor tempo, conforme o runbook `botozap/docs/ops/message-send-receipts.md`.\n\n### Piloto da UI por conta\n\nCom `BOTOZAP_MCP_UI_ENABLED=true`, a variável opcional\n`BOTOZAP_MCP_UI_ACCOUNTS=account_id_1,account_id_2` restringe as tools de revisão,\nrecursos e metadados de UI às Contas selecionadas, usando a identidade autenticada\njá resolvida da sessão. Conta fora da lista recebe o catálogo tools-only habitual\n(fixture 0.6.0 mais `get_profile` e `prepare_send_intent`). Lista definida mas vazia\nnão libera nenhuma conta; espaços são ignorados. Sem essa variável, a flag mantém\na regra de contas da flag, sempre condicionada à capacidade MCP Apps. Sem a flag,\na lista não ativa UI. Nenhuma configuração\nfoi habilitada em produção por este protótipo.\n\n### Simulador de hosts MCP Apps\n\n```sh\npnpm --filter @botozap/mcp demo:ui\n# Abra http://127.0.0.1:4173/chat\n```\n\nA página hospeda os iframes reais de produção via `AppBridge` / MCP Apps. Dados,\nmodelo, envio e eventos de entregue/lido são simulados exclusivamente no host.\nUse o compositor ou os controles do roteiro para explorar carrossel, rascunho,\nconversa fullscreen e os estados alternativos. Consulte `web/DESIGN.md`.\n\n\nO seletor também inclui **4 · Template aprovado**, **6 · O agente precisa de\nvocê** e **7 · Marcar horário**, com carregamento, vazio, erro, recusa/incerteza\nquando há envio, e ausência de permissão no atendimento. A janela fechada abre\num editor de templates aprovados com prévia renderizada. Quando o cliente anuncia\n`extensions[\"openai/elicitation\"].form`, as variáveis usam o formulário nativo\ncom `x-openai-suggestions`; nos demais hosts ficam no formulário acessível da UI.\nNenhum formulário envia sem a confirmação final.\n\nAs auxiliares `stage_review_template`, `review_template_variables`,\n`open_agent_cases` e `stage_appointment_booking` só aparecem no piloto da UI,\nrespeitam `allowed_routes`, não aceitam `account_id` e apenas consultam/preparam.\nEnvio, atribuição de caso e compromisso usam as tools existentes. Um resultado\nincerto bloqueia repetição; compromisso criado com aviso incerto continua criado\nsem tentar marcar novamente. Casos usam `expected_revision` e a identidade do\noperador; devolver ao agente exige confirmação da retomada automática.\n\n```sh\n# Com a demo em execução, gerar as capturas e vídeos da rodada 3A:\nnode packages/mcp/scripts/screenshot-3a.mjs\n```\n\nO seletor **Host** alterna ChatGPT, Genérico MCP Apps (variáveis de estilo próprias,\nsem elicitation OpenAI) e Sem UI (dados e rascunho em texto, sem iframe).\nTemplates aprovados incluem cabeçalho texto/imagem/vídeo/documento/localização,\ncorpo posicional/nomeado, moeda/data com fallback, rodapé, respostas rápidas,\nURL dinâmica, telefone, cupom, autenticação e carrossel. Oferta limitada e botões\nde catálogo já sincronizados têm prévia e parâmetros; isso não cria templates\nque o builder do app hoje não aceita. Consulte `web/RELATORIO-4A.md` para limites.\nA mídia usa somente placeholders locais: não baixa arquivos, resolve URLs ou\nvalida existência de media_id. Nome/tamanho são exibidos quando informados no contexto.\nCódigos de autenticação devem ser emitidos pelo sistema do negócio.\n\n`stage_review_template` aceita campos opcionais `template_id`, `suggested_values`\n(por ID de template) e `media_metadata` (por slot `header`/`card_0_header`, com\n`filename` e `file_size` em bytes); nada muda nos parâmetros obrigatórios das tools.\n\nA tela de escalação lê `usage.unique_contacts_today` e `usage.timezone` (também\naceita ambos em `usage.handoff`). Contagem inteira não negativa + fuso IANA válido\nmostram **clientes hoje** no fuso do negócio. Sem ambos, mantém a métrica real\n`usage.handoff.conversations` com o rótulo **conversas hoje (UTC)**. Não deduz pessoas\na partir de conversas. A API dessa contagem é trabalho separado.\n\n```sh\nnode packages/mcp/scripts/screenshot-4a.mjs\n```\n\nCapturas/vídeos e validação axe A/AA ficam em `web/screenshots/`.\n\n### Templates: prévia primeiro\n\nNa revisão de templates, peça ajustes na conversa ou abra **Editar campos**. Referências de mídia e outros detalhes técnicos ficam em **Avançado**; o código de autenticação vem do sistema do negócio e permanece visível. O staging existente atualiza a prévia, sem enviar. Veja [o roteiro e as capturas da rodada 4A.2](web/RELATORIO-4A2.md).\n\n## Perfil de catálogo OAuth\n\nAPI keys mantêm o catálogo completo, sujeito aos scopes, ambiente e rotas existentes. Sessões OAuth usam o perfil `assistant` por padrão, inclusive para um `client_id` não mapeado. Esse perfil oferece 35 tools sem UI e até 44 com UI negociada; `list_users` fica visível apenas à app quando a UI está ativa, pois o agendamento precisa do nome do responsável. O limite real pode ser menor conforme os scopes/rotas da identidade. Administração, webhooks e credenciais de IA ficam fora desse perfil.\n\nA configuração opcional `BOTOZAP_MCP_OAUTH_CLIENT_PROFILES` aceita pares UUID:perfil separados por vírgula, por exemplo:\n\n```text\ne948ea06-d925-41b6-980c-d7ea3538a4ac:assistant,1ec8fa7c-f51a-44dd-88b2-b5696bc0b627:assistant\n```\n\nOs perfis válidos são `assistant` e `full`. `full` é uma opção explícita para clientes futuros que precisem do catálogo completo; não altera os scopes/rotas autorizados. A configuração é lida na criação da sessão/servidor e rejeita UUIDs, perfis ou duplicatas inválidos. O filtro vale no registro, na atualização de identidade e na execução: conhecer o nome de uma tool omitida não permite chamá-la. Nenhuma configuração foi aplicada a produção neste PR.\n","readmeFilename":"README.md"}