{"_id":"@agentforge-io/connectors-hubspot","_rev":"11-eefa39c0928602823d1c516f44f717bc","name":"@agentforge-io/connectors-hubspot","dist-tags":{"latest":"4.1.1"},"versions":{"2.0.7":{"name":"@agentforge-io/connectors-hubspot","version":"2.0.7","license":"MIT","_id":"@agentforge-io/connectors-hubspot@2.0.7","maintainers":[{"name":"stupidmvp","email":"stupidmvp@gmail.com"}],"dist":{"shasum":"450bba258b709e0796d940339c6f803643162aae","tarball":"https://registry.npmjs.org/@agentforge-io/connectors-hubspot/-/connectors-hubspot-2.0.7.tgz","fileCount":13,"integrity":"sha512-mH3OF3y4bBC8yMVc8PJdcpbC1ICc9eOUieFHyGVx3Ct4nJCsTYbtLktT5J1+RQoZ5Lf8Mo2d5sMg1sm5JrgB5w==","signatures":[{"sig":"MEUCIQDL6GHkKzI/4DYebty0EbcnPrYhmJVHbX6a/tpnaGgUngIgCSF7cUYFo0GKwv5/LCEVf29/9wHyCOlMQUBpiuOLfZc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33204},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"3b1eb67bbb7055055ba0cb9cf37e11da93c2abde","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tgz","build:watch":"tsc -p tsconfig.build.json --watch"},"_npmUser":{"name":"stupidmvp","email":"stupidmvp@gmail.com"},"_npmVersion":"10.8.2","description":"HubSpot connector for AgentForge — contacts, deals, and engagement tools wired to per-user OAuth2 credentials managed by the core ConnectorRegistryService.","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@agentforge-io/core":"*"},"peerDependencies":{"@agentforge-io/core":"^2.0.7"},"_npmOperationalInternal":{"tmp":"tmp/connectors-hubspot_2.0.7_1779837553769_0.6334689287225099","host":"s3://npm-registry-packages-npm-production"}},"2.0.8":{"name":"@agentforge-io/connectors-hubspot","version":"2.0.8","license":"MIT","_id":"@agentforge-io/connectors-hubspot@2.0.8","maintainers":[{"name":"stupidmvp","email":"stupidmvp@gmail.com"}],"dist":{"shasum":"cfca7e69b1d6ffc7a05f3745ebc3dddc56a684b0","tarball":"https://registry.npmjs.org/@agentforge-io/connectors-hubspot/-/connectors-hubspot-2.0.8.tgz","fileCount":13,"integrity":"sha512-BxM99YHSug4jmmFd/bv8zE93ZCz/dK1HspodWXyQurnWR6A3POUclb9rq+rrZHhPoGwqcX/J2Hyaii14nuoDLw==","signatures":[{"sig":"MEUCIEd1vWtaLB3Zqj2GccNQfbo/fmj9guMFJYIem+MROAv0AiEAiVqMfPwQ3bCCCsTfeclxg2cVwuNXtAA/bioCfNigs/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33204},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"78eed964d6d8c5f27619398c2ade16ace973ee4e","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tgz","build:watch":"tsc -p tsconfig.build.json --watch"},"_npmUser":{"name":"stupidmvp","email":"stupidmvp@gmail.com"},"_npmVersion":"10.8.2","description":"HubSpot connector for AgentForge — contacts, deals, and engagement tools wired to per-user OAuth2 credentials managed by the core ConnectorRegistryService.","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@agentforge-io/core":"*"},"peerDependencies":{"@agentforge-io/core":"^2.0.8"},"_npmOperationalInternal":{"tmp":"tmp/connectors-hubspot_2.0.8_1779837673722_0.0015068261951296513","host":"s3://npm-registry-packages-npm-production"}},"2.0.10":{"name":"@agentforge-io/connectors-hubspot","version":"2.0.10","license":"MIT","_id":"@agentforge-io/connectors-hubspot@2.0.10","maintainers":[{"name":"stupidmvp","email":"stupidmvp@gmail.com"}],"dist":{"shasum":"6ee81e0792f35cbb5160af315fe0c11ada9ce5e6","tarball":"https://registry.npmjs.org/@agentforge-io/connectors-hubspot/-/connectors-hubspot-2.0.10.tgz","fileCount":14,"integrity":"sha512-kaby38Wd24cC9rIUtrmHEHMfWMyv1qIzoeFLmFoRAwQvkY84HTez0Fgy20iWk2VOzXw3GdccsueCIdHgEBhWFw==","signatures":[{"sig":"MEQCICpxtfk98RTQHrI1NGrLxXIentT/ITjAABHBHav9egJJAiAFt9aLclYOD4y494ic6fmD31/inXZ5+Gk6wPKskMAjNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39355},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"15fec4202132cc5bdc1b299f4ff666c4d7dc446e","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tgz","build:watch":"tsc -p tsconfig.build.json --watch"},"_npmUser":{"name":"stupidmvp","email":"stupidmvp@gmail.com"},"_npmVersion":"10.8.2","description":"HubSpot connector for AgentForge — contacts, deals, and engagement tools wired to per-user OAuth2 credentials managed by the core ConnectorRegistryService.","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@agentforge-io/core":"*"},"peerDependencies":{"@agentforge-io/core":"^2.0.10"},"_npmOperationalInternal":{"tmp":"tmp/connectors-hubspot_2.0.10_1779985283360_0.6307807575808648","host":"s3://npm-registry-packages-npm-production"}},"2.0.14":{"name":"@agentforge-io/connectors-hubspot","version":"2.0.14","license":"MIT","_id":"@agentforge-io/connectors-hubspot@2.0.14","maintainers":[{"name":"stupidmvp","email":"stupidmvp@gmail.com"}],"dist":{"shasum":"1f7a2226da4101d80f981a668400801287901cc9","tarball":"https://registry.npmjs.org/@agentforge-io/connectors-hubspot/-/connectors-hubspot-2.0.14.tgz","fileCount":14,"integrity":"sha512-x92n/Xv170bxHCKPiLOuKHwHHkEeaJR0eeMU8U08g8L6UBoI9RArS98D0JNtijfG4VniXIM3EOI54za5evKtvw==","signatures":[{"sig":"MEUCICcCMnEPPQnqFWwB48rIX7+0R8hpJ/WQrNSIbBqgQJH5AiEAuYkMF/vgozLudnKRfQWAbCgv983fxXR6YfsUscvEk8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39355},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"7e307742ec7a1720bf5fbc05164dad2c98348f2d","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tgz","build:watch":"tsc -p tsconfig.build.json --watch"},"_npmUser":{"name":"stupidmvp","email":"stupidmvp@gmail.com"},"_npmVersion":"10.8.2","description":"HubSpot connector for AgentForge — contacts, deals, and engagement tools wired to per-user OAuth2 credentials managed by the core ConnectorRegistryService.","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@agentforge-io/core":"*"},"peerDependencies":{"@agentforge-io/core":"^2.0.14"},"_npmOperationalInternal":{"tmp":"tmp/connectors-hubspot_2.0.14_1780053942042_0.45395603581756516","host":"s3://npm-registry-packages-npm-production"}},"2.0.15":{"name":"@agentforge-io/connectors-hubspot","version":"2.0.15","license":"MIT","_id":"@agentforge-io/connectors-hubspot@2.0.15","maintainers":[{"name":"stupidmvp","email":"stupidmvp@gmail.com"}],"dist":{"shasum":"a6f3d760f8d7b9747d511e158c094bd08e719e98","tarball":"https://registry.npmjs.org/@agentforge-io/connectors-hubspot/-/connectors-hubspot-2.0.15.tgz","fileCount":14,"integrity":"sha512-eE8xYx6dTpHueQLkM1pIwb5tk7QcHG8lP2/GGEwfFKeZHFA1Jc6jBPos0mJ9Z4s3DxEm9VI98RPH6IswG1fZmQ==","signatures":[{"sig":"MEUCIA35veKEL3YHofCCQdDoK2p4I/HtG43Ld3swJpxFHifFAiEA5aIQ7Imhp+rl934upyz1RNb1SWtSrWnOUMVD4HhYy8s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39355},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"c33af4c0d48f27df76a02600df2b6c55e662a7d7","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tgz","build:watch":"tsc -p tsconfig.build.json --watch"},"_npmUser":{"name":"stupidmvp","email":"stupidmvp@gmail.com"},"_npmVersion":"10.8.2","description":"HubSpot connector for AgentForge — contacts, deals, and engagement tools wired to per-user OAuth2 credentials managed by the core ConnectorRegistryService.","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@agentforge-io/core":"*"},"peerDependencies":{"@agentforge-io/core":"^2.0.15"},"_npmOperationalInternal":{"tmp":"tmp/connectors-hubspot_2.0.15_1780092516043_0.9112358543540211","host":"s3://npm-registry-packages-npm-production"}},"2.0.16":{"name":"@agentforge-io/connectors-hubspot","version":"2.0.16","license":"MIT","_id":"@agentforge-io/connectors-hubspot@2.0.16","maintainers":[{"name":"stupidmvp","email":"stupidmvp@gmail.com"}],"dist":{"shasum":"e706c0002f1439356cb0886adf7311bc7c0aa89f","tarball":"https://registry.npmjs.org/@agentforge-io/connectors-hubspot/-/connectors-hubspot-2.0.16.tgz","fileCount":14,"integrity":"sha512-iam6oSJh/7X+hZzgKf2tw5JTeW5sO7WTs9USykhqpT/euV/OoZJDx/ALRdMgDxIDY3+BAiy/N62AA/IlxvyDlg==","signatures":[{"sig":"MEUCIQD0fHdbLTZ4GPrg2Hx9i3QBgVpUbKfUhpuE11nCYiKfUwIgdHnPcnLrCxhCkgf8rYQk6cNzd8ugG/4KGwSkxoLu4VU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39355},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"c33af4c0d48f27df76a02600df2b6c55e662a7d7","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tgz","build:watch":"tsc -p tsconfig.build.json --watch"},"_npmUser":{"name":"stupidmvp","email":"stupidmvp@gmail.com"},"_npmVersion":"10.8.2","description":"HubSpot connector for AgentForge — contacts, deals, and engagement tools wired to per-user OAuth2 credentials managed by the core ConnectorRegistryService.","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@agentforge-io/core":"*"},"peerDependencies":{"@agentforge-io/core":"^2.0.16"},"_npmOperationalInternal":{"tmp":"tmp/connectors-hubspot_2.0.16_1780093293029_0.2960347524449052","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@agentforge-io/connectors-hubspot","version":"3.0.0","license":"MIT","_id":"@agentforge-io/connectors-hubspot@3.0.0","maintainers":[{"name":"stupidmvp","email":"stupidmvp@gmail.com"}],"dist":{"shasum":"5328c9d276d13bf8783cc84b9e071529ae947237","tarball":"https://registry.npmjs.org/@agentforge-io/connectors-hubspot/-/connectors-hubspot-3.0.0.tgz","fileCount":14,"integrity":"sha512-VpJmu275DjRUBnwQDr9nD/jTGQeQ9Vz3xEUKTjZ3B9c2apb5u0foF8i7weaq/vjJLe6ZdNJlIc8+GBRKp6kTSQ==","signatures":[{"sig":"MEYCIQCp+7s/rNzMGUE5TTx9D0rT14ykZZL4hNEHu3rXKur1cQIhAKtMjxX5Gn7J/XzmkE1xHQ2EQgL2YaZN1voum5f7sJ3D","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39355},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"7986a6d41934228605fefece3e362e58fdf6da24","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tgz","build:watch":"tsc -p tsconfig.build.json --watch"},"_npmUser":{"name":"stupidmvp","email":"stupidmvp@gmail.com"},"_npmVersion":"10.8.2","description":"HubSpot connector for AgentForge — contacts, deals, and engagement tools wired to per-user OAuth2 credentials managed by the core ConnectorRegistryService.","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@agentforge-io/core":"*"},"peerDependencies":{"@agentforge-io/core":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/connectors-hubspot_3.0.0_1780877821098_0.3147685563831446","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"@agentforge-io/connectors-hubspot","version":"4.0.1","license":"MIT","_id":"@agentforge-io/connectors-hubspot@4.0.1","maintainers":[{"name":"stupidmvp","email":"stupidmvp@gmail.com"}],"dist":{"shasum":"d9593117e2319491289b8b13a1dff538446451b7","tarball":"https://registry.npmjs.org/@agentforge-io/connectors-hubspot/-/connectors-hubspot-4.0.1.tgz","fileCount":14,"integrity":"sha512-jZzz/HkFdDp8+DKAHRhDLO4LPchEIcPHDKK+NtP1pdT+UwHNmyDtizPJu30AbbjPIGK7At0gKhp5GpmR35qoIg==","signatures":[{"sig":"MEQCIAT6qMZoaAIQeMQmdsl4ajQ6RgNgoy3OsrcXzAbwhEQwAiBk4xkJAzTiJQb6RdHCkaPHpqXTONQthVXPA/7YSyc4rQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39352},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2812194b7dceba20d7e6adc1dca4f1ec3008ea0e","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tgz","build:watch":"tsc -p tsconfig.build.json --watch"},"_npmUser":{"name":"stupidmvp","email":"stupidmvp@gmail.com"},"_npmVersion":"10.8.2","description":"HubSpot connector for AgentForge — contacts, deals, and engagement tools wired to per-user OAuth2 credentials managed by the core ConnectorRegistryService.","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@agentforge-io/core":"*"},"peerDependencies":{"@agentforge-io/core":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/connectors-hubspot_4.0.1_1782089969923_0.772736520643434","host":"s3://npm-registry-packages-npm-production"}},"4.0.18":{"name":"@agentforge-io/connectors-hubspot","version":"4.0.18","license":"MIT","_id":"@agentforge-io/connectors-hubspot@4.0.18","maintainers":[{"name":"stupidmvp","email":"stupidmvp@gmail.com"}],"dist":{"shasum":"9521a206e71a112fb04755e5b9269d5564cdcf31","tarball":"https://registry.npmjs.org/@agentforge-io/connectors-hubspot/-/connectors-hubspot-4.0.18.tgz","fileCount":14,"integrity":"sha512-pR94/Ek4dYiiQ+a1nAhuugabgsY9Sp4nsmR2bwNR4zyXFBWKn8TJ1bKxmJLYgshCtvYMpWR+x1WLK+WXMwcUwQ==","signatures":[{"sig":"MEUCIHmnn0/4eLwieYCWudr/AejUKck5JbWIKYnEuGEqS4fxAiEA5kPc5rFkaTietTjDDVhxjbRXhvPIf1Tg/qTAeme2zT4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39354},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"260a6598b7563a6d279624080b3120a79e55dd5c","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tgz","build:watch":"tsc -p tsconfig.build.json --watch"},"_npmUser":{"name":"stupidmvp","email":"stupidmvp@gmail.com"},"_npmVersion":"10.8.2","description":"HubSpot connector for AgentForge — contacts, deals, and engagement tools wired to per-user OAuth2 credentials managed by the core ConnectorRegistryService.","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@agentforge-io/core":"*"},"peerDependencies":{"@agentforge-io/core":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/connectors-hubspot_4.0.18_1783710602768_0.9991398977146275","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"@agentforge-io/connectors-hubspot","version":"4.1.0","license":"MIT","_id":"@agentforge-io/connectors-hubspot@4.1.0","maintainers":[{"name":"stupidmvp","email":"stupidmvp@gmail.com"}],"dist":{"shasum":"723dbaa0ba3a1610c025e15601a967acc62d1ee3","tarball":"https://registry.npmjs.org/@agentforge-io/connectors-hubspot/-/connectors-hubspot-4.1.0.tgz","fileCount":14,"integrity":"sha512-PChEhLO4a6/FcBfVcxLIPilsSerL7wHHG+/0fMMzFtsmMDH5wToD6n69GQW7f6elGKjy0GVW5AsRd1l+8Q4phw==","signatures":[{"sig":"MEQCIFkACoMSm6ZZkKpmkbBXwmlt+mkp8zzE/jLkSwxq+uCnAiA46d+G56S6vTNf+ADANuGU5fUWO3pRGRZkxugh3Z48iw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40417},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"c0ffb76a466c0d9583ed826e22fc4991bfa58634","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tgz","build:watch":"tsc -p tsconfig.build.json --watch"},"_npmUser":{"name":"stupidmvp","email":"stupidmvp@gmail.com"},"_npmVersion":"10.8.2","description":"HubSpot connector for AgentForge — contacts, deals, and engagement tools wired to per-user OAuth2 credentials managed by the core ConnectorRegistryService.","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@agentforge-io/core":"*"},"peerDependencies":{"@agentforge-io/core":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/connectors-hubspot_4.1.0_1784903408831_0.8494071763600346","host":"s3://npm-registry-packages-npm-production"}},"4.1.1":{"name":"@agentforge-io/connectors-hubspot","version":"4.1.1","description":"HubSpot connector for AgentForge — contacts, deals, and engagement tools wired to per-user OAuth2 credentials managed by the core ConnectorRegistryService.","license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p tsconfig.build.json","build:watch":"tsc -p tsconfig.build.json --watch","clean":"rm -rf dist *.tgz"},"peerDependencies":{"@agentforge-io/core":"^4.0.18"},"devDependencies":{"@agentforge-io/core":"*","@types/node":"^20.0.0","typescript":"^5.0.0"},"_id":"@agentforge-io/connectors-hubspot@4.1.1","gitHead":"cfd493a87ec57db1aef457aa7317a88e32e11f8b","_nodeVersion":"20.19.4","_npmVersion":"10.8.2","dist":{"integrity":"sha512-kZ8oyPnaxwWDT6JURdk3sIAsxwDAuLPoDeZdKSgDZTzL1MJTtG6r0VzEunow36M15dR4yB2VEyahvFdO8vORoA==","shasum":"03b8664b6f5d1347ffd9500c7be9846c532190f8","tarball":"https://registry.npmjs.org/@agentforge-io/connectors-hubspot/-/connectors-hubspot-4.1.1.tgz","fileCount":14,"unpackedSize":40721,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD9gS/voHuusUxzeZQt2g96LC/f5cvjQb4O4Cs4nkb4UwIhAO/twjvqocehuW1Jiv/8zcF3GVMltuByeFJBsbViRWQN"}]},"_npmUser":{"name":"stupidmvp","email":"stupidmvp@gmail.com"},"directories":{},"maintainers":[{"name":"stupidmvp","email":"stupidmvp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/connectors-hubspot_4.1.1_1785168170165_0.24815279675209378"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-26T23:19:13.665Z","modified":"2026-07-27T16:02:50.537Z","2.0.7":"2026-05-26T23:19:13.938Z","2.0.8":"2026-05-26T23:21:13.871Z","2.0.10":"2026-05-28T16:21:23.500Z","2.0.14":"2026-05-29T11:25:42.189Z","2.0.15":"2026-05-29T22:08:36.239Z","2.0.16":"2026-05-29T22:21:33.194Z","3.0.0":"2026-06-08T00:17:01.272Z","4.0.1":"2026-06-22T00:59:30.039Z","4.0.18":"2026-07-10T19:10:02.911Z","4.1.0":"2026-07-24T14:30:08.963Z","4.1.1":"2026-07-27T16:02:50.350Z"},"license":"MIT","description":"HubSpot connector for AgentForge — contacts, deals, and engagement tools wired to per-user OAuth2 credentials managed by the core ConnectorRegistryService.","maintainers":[{"name":"stupidmvp","email":"stupidmvp@gmail.com"}],"readme":"# @agentforge-io/connectors-hubspot\n\nFirst-class HubSpot connector for AgentForge. Plugs into\n`ConnectorRegistryService.register(...)` from `@agentforge-io/core` and gives\nyour agents seven tools that read and write contacts, deals, and engagement\ntimelines.\n\n```ts\nimport { hubspotConnector } from '@agentforge-io/connectors-hubspot';\n\nconnectorRegistry.register(\n  hubspotConnector({\n    clientId: process.env.HUBSPOT_OAUTH_CLIENT_ID!,\n    clientSecret: process.env.HUBSPOT_OAUTH_CLIENT_SECRET!,\n  }),\n);\n```\n\nSame shape and lifecycle as `@agentforge-io/connectors-google`: register once\nat boot, the registry handles OAuth, refresh, encryption, per-user token\nstorage, and tool materialization.\n\n---\n\n## Tools\n\nAll seven tools are auto-registered the moment a user authorizes the connector\nin the dashboard. Each one returns a JSON-stringified payload — the model can\nquote individual fields.\n\n| Tool | Use it when… |\n|---|---|\n| `hubspot_search_contacts` | The user mentions an email, name, phone, or company. **Always call this before `hubspot_create_contact`.** |\n| `hubspot_get_contact` | You already have a `contactId` and need fresh properties. |\n| `hubspot_create_contact` | Search returned nothing for the email. HubSpot 409s on duplicates — search first. |\n| `hubspot_update_contact` | Enrich an existing contact (plan tier, source, phone, custom property…). |\n| `hubspot_create_deal` | The user shows buying intent or commits to a plan. Pass `contactId` so the deal lands on their timeline. |\n| `hubspot_update_deal` | Move a deal stage, bump the amount, or set `closedate` on close. |\n| `hubspot_log_engagement` | Drop a `note` / `call` / `email` / `meeting` summary on a contact so the human rep sees what the agent did. |\n\nDefault contact return properties: `email, firstname, lastname, phone, company,\nlifecyclestage`. Override per call with the `properties` argument.\n\n---\n\n## Setup\n\n### 1. Create the HubSpot OAuth app\n\n1. Sign in at https://developers.hubspot.com → **Apps** → **Create app**.\n2. Under the **Auth** tab, set the **Redirect URL** to your AgentForge's\n   connector callback (the platform exposes it at\n   `https://<your-host>/connectors/callback` — the URL is the same one you\n   configured for Google, just registered as an additional redirect).\n3. Scopes — copy the default set the connector requests:\n   - `oauth`\n   - `crm.objects.contacts.read`\n   - `crm.objects.contacts.write`\n   - `crm.objects.deals.read`\n   - `crm.objects.deals.write`\n   - `crm.schemas.contacts.read`\n   - `crm.schemas.deals.read`\n4. Save → copy the **Client ID** and **Client Secret**.\n\n> If you plan to read companies, custom objects, or marketing data later,\n> add the matching scopes here *and* pass them via the connector's `scopes`\n> option. The default set is intentionally tight — fewer scopes mean fewer\n> consent prompts at authorize time.\n\n### 2. Drop the creds into AgentForge\n\nIn the admin dashboard → **Settings → Secrets**, set:\n\n- `HUBSPOT_OAUTH_CLIENT_ID`\n- `HUBSPOT_OAUTH_CLIENT_SECRET`\n\nThe platform's `HostConnectorsModule` listens for changes on those two keys\nand reconfigures the connector live — no server restart needed. The\nDirectory card flips from \"Needs admin setup\" to \"Connect\".\n\n### 3. End-user authorizes\n\nEach end user clicks **Connect** on the HubSpot card → standard OAuth consent\non HubSpot → redirect back with the authorization code → AgentForge encrypts\nand stores the access + refresh tokens against their `userId`.\n\nAgents owned by that user (or public-chat agents whose\n`connectorOwnerUserId` points to that user) now see the seven `hubspot__*`\ntools in their picker, grouped under \"HubSpot\".\n\n---\n\n## Typical agent loop\n\nA common \"MVP that sells\" flow:\n\n1. Visitor opens the chat widget.\n2. Agent qualifies via conversation.\n3. `hubspot_search_contacts({ query: visitor_email })` — dedupe gate.\n4. `hubspot_create_contact({ email, firstname, lastname, lifecyclestage: 'lead' })`\n   on miss; `hubspot_update_contact` on hit.\n5. `hubspot_log_engagement({ contactId, type: 'note', body: transcript })`\n   so the human rep has full context.\n6. When the user agrees to a plan, kick off your existing checkout flow\n   (Stripe/LemonSqueezy), then in the webhook handler:\n7. `hubspot_create_deal({ name, amount, stage: 'closedwon', contactId })`.\n\nThe connector tools live alongside built-ins (`current_time`, `fetch_url`,\n`web_search`) and any other connector you've registered, so a single agent\ncan search the web, hit HubSpot, send a Gmail confirmation, and check the\nclock without leaving the loop.\n\n---\n\n## Custom and extra properties\n\nEvery HubSpot property (built-in or custom) is reachable via the\n`properties` map on `create_contact`, `update_contact`, `create_deal`, and\n`update_deal`:\n\n```jsonc\n// Tool call the model would make\n{\n  \"email\": \"alice@example.com\",\n  \"firstname\": \"Alice\",\n  \"properties\": {\n    \"utm_source\": \"twitter\",\n    \"plan_interest\": \"pro_annual\",\n    \"custom_text_field\": \"...\"\n  }\n}\n```\n\nNo connector update required to support new fields — just create the\nproperty in HubSpot and let the agent fill it.\n\n---\n\n## Error handling\n\nThe HTTP wrapper handles two retry classes transparently:\n\n- **429 Too Many Requests** — honors `Retry-After`, up to 2 retries.\n- **5xx** — single retry with ~500ms jitter.\n- **401 Unauthorized** — not retried in the connector; the\n  `ConnectorRegistryService` catches it, refreshes the access token, and\n  the agent runner re-dispatches the tool call.\n\nAnything else surfaces as a `HubSpotApiError` whose message includes the\nHTTP status and the first 500 chars of the response body. The model reads\nthat string verbatim and will typically correct course (e.g. drop a bad\nproperty name on a 400, switch to `update_contact` on a 409).\n\n---\n\n## Versioning\n\nThis package ships in lockstep with the rest of the `@agentforge-io/*`\nfamily via Changesets' fixed-group config. Bump it together with `core`\nand `nest` to avoid mismatched OAuth or tool-registry contracts.\n\nSee `HUBSPOT_CONNECTOR_SDD.md` at the repo root for the full design\nrationale, including the choice vs Attio/Pipedrive/Salesforce.\n","readmeFilename":"README.md"}