@zackbart/connecta 0.34.1 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/CHANGELOG.md +418 -0
  2. package/README.md +65 -105
  3. package/SECURITY.md +3 -2
  4. package/bin/connecta.mjs +41 -16
  5. package/bin/version.mjs +1 -1
  6. package/dist/access-tokens.d.ts +2 -1
  7. package/dist/access-tokens.js +66 -30
  8. package/dist/activity.d.ts +1 -1
  9. package/dist/activity.js +2 -0
  10. package/dist/agent-config.d.ts +23 -0
  11. package/dist/agent-config.js +59 -0
  12. package/dist/agent-description.js +16 -0
  13. package/dist/agent-identity.js +4 -4
  14. package/dist/agent-observation.js +39 -0
  15. package/dist/auth/clerk-sdk/client.d.ts +2 -0
  16. package/dist/auth/clerk-sdk/generated.js +554 -563
  17. package/dist/auth/clerk-transport.js +70 -3
  18. package/dist/auth/clerk.d.ts +13 -0
  19. package/dist/auth/clerk.js +653 -246
  20. package/dist/auth/cloudflare-access.js +46 -42
  21. package/dist/auth/downstream-client-metadata.js +2 -2
  22. package/dist/auth/downstream-oauth.js +2044 -1161
  23. package/dist/auth/downstream-revocation.js +88 -88
  24. package/dist/auth/native-call.js +20 -0
  25. package/dist/auth/native.js +184 -0
  26. package/dist/auth/oauth-start-reset.js +11 -5
  27. package/dist/auth/oauth-token-response.js +121 -102
  28. package/dist/auth/oauth-v2-migration.js +97 -78
  29. package/dist/auth/renewable-grant.js +10 -0
  30. package/dist/auth/static-oauth.js +751 -281
  31. package/dist/auth/vercel-agent.js +266 -0
  32. package/dist/auth-admission.js +204 -0
  33. package/dist/auth-elicitation.js +350 -241
  34. package/dist/authorization-handoff.js +164 -90
  35. package/dist/call-admission-context.js +3 -10
  36. package/dist/call-admission.js +2 -0
  37. package/dist/call-classification.js +9 -0
  38. package/dist/call-recovery.js +32 -13
  39. package/dist/canonical-json.js +8 -0
  40. package/dist/catalog-cache.js +369 -213
  41. package/dist/catalog-service.js +659 -530
  42. package/dist/catalog.js +5 -1
  43. package/dist/concurrency.js +0 -25
  44. package/dist/config-defaults.d.ts +1 -0
  45. package/dist/config-defaults.js +1 -0
  46. package/dist/config-schema.d.ts +3 -1
  47. package/dist/config-schema.js +13 -3
  48. package/dist/config.d.ts +40 -6
  49. package/dist/config.js +40 -26
  50. package/dist/connector-caller.d.ts +4 -0
  51. package/dist/connector-caller.js +17 -4
  52. package/dist/connectors/api-connector.d.ts +29 -7
  53. package/dist/connectors/api-connector.js +145 -57
  54. package/dist/connectors/guarded-fetch.d.ts +51 -17
  55. package/dist/connectors/guarded-fetch.js +215 -121
  56. package/dist/connectors/negotiation-cache.js +20 -10
  57. package/dist/connectors/remote-mcp.d.ts +10 -30
  58. package/dist/connectors/remote-mcp.js +955 -563
  59. package/dist/d1.js +10 -243
  60. package/dist/derived-context.js +5 -0
  61. package/dist/describe-config.d.ts +3 -1
  62. package/dist/describe-config.js +2 -0
  63. package/dist/downstream-input.js +347 -260
  64. package/dist/errors.d.ts +87 -6
  65. package/dist/errors.js +114 -4
  66. package/dist/execute.js +87 -50
  67. package/dist/executor-admission.js +3 -0
  68. package/dist/executors/quickjs.js +163 -112
  69. package/dist/guarded-transport.js +50 -0
  70. package/dist/guest-runtime.js +1 -1
  71. package/dist/http/client.js +439 -0
  72. package/dist/http/errors.js +558 -0
  73. package/dist/http/fields.js +49 -0
  74. package/dist/http/hatch-paging.js +318 -0
  75. package/dist/http/hatch.js +1279 -0
  76. package/dist/http/json-schema.js +267 -0
  77. package/dist/http/node-transport.js +241 -0
  78. package/dist/http/oauth.js +162 -0
  79. package/dist/http/paging.js +227 -0
  80. package/dist/http/provider.js +221 -0
  81. package/dist/http/safety.js +82 -0
  82. package/dist/http/services.js +79 -0
  83. package/dist/http/tools.js +379 -0
  84. package/dist/http/vendor-index.js +138 -0
  85. package/dist/http/vendor.js +448 -0
  86. package/dist/http/write-request.js +66 -0
  87. package/dist/http-policy.d.ts +11 -0
  88. package/dist/http-policy.js +45 -0
  89. package/dist/inbound-credential.js +1 -1
  90. package/dist/index.d.ts +2 -2
  91. package/dist/index.js +4 -0
  92. package/dist/invocation-auth.js +30 -19
  93. package/dist/invocation.js +218 -85
  94. package/dist/mcp-result.js +0 -4
  95. package/dist/membership.d.ts +4 -0
  96. package/dist/meta-output.js +1 -1
  97. package/dist/meta-tools.js +531 -406
  98. package/dist/native-recovery.js +52 -0
  99. package/dist/native-tools.js +382 -0
  100. package/dist/node.d.ts +4 -3
  101. package/dist/node.js +45 -8
  102. package/dist/oauth-handoff.js +177 -104
  103. package/dist/oauth-partition.js +6 -20
  104. package/dist/oauth-sealing.js +6 -7
  105. package/dist/operation-vocabulary.js +101 -0
  106. package/dist/operator-record.d.ts +2 -2
  107. package/dist/operator-record.js +17 -4
  108. package/dist/operator-ui/contract.d.ts +8 -3
  109. package/dist/operator-ui/generated.js +4 -4
  110. package/dist/operator-ui/model.d.ts +2 -3
  111. package/dist/program-writes.js +47 -26
  112. package/dist/provider-call-facts.d.ts +115 -0
  113. package/dist/provider-call-facts.js +182 -0
  114. package/dist/provider-call.d.ts +112 -0
  115. package/dist/provider-call.js +271 -0
  116. package/dist/provider.d.ts +65 -31
  117. package/dist/provider.js +116 -39
  118. package/dist/providers/_shared/google/hatch.js +91 -0
  119. package/dist/providers/_shared/google/kit.js +427 -0
  120. package/dist/providers/_shared/google/result-size.js +15 -2
  121. package/dist/providers/_shared/google/service-account.d.ts +2 -1
  122. package/dist/providers/_shared/google/service-account.js +8 -4
  123. package/dist/providers/_shared/google/workspace.d.ts +6 -210
  124. package/dist/providers/_shared/google/workspace.js +6 -425
  125. package/dist/providers/_shared/rest/compact-index.js +86 -0
  126. package/dist/providers/_shared/rest/kit.js +146 -0
  127. package/dist/providers/_shared/rest/operation-index.js +230 -14
  128. package/dist/providers/_shared/rest/response-media.js +11 -0
  129. package/dist/providers/_shared/rest/value-safety.js +353 -195
  130. package/dist/providers/_shared/sensitive-fields.js +27 -0
  131. package/dist/providers/breeze/api.js +584 -0
  132. package/dist/providers/breeze/index.d.ts +1 -3
  133. package/dist/providers/breeze/index.js +67 -1420
  134. package/dist/providers/breeze/openapi.generated.js +60 -0
  135. package/dist/providers/breeze/skill.generated.js +2 -6
  136. package/dist/providers/breeze/tools.js +696 -0
  137. package/dist/providers/ccb/api.js +496 -0
  138. package/dist/providers/ccb/index.d.ts +15 -37
  139. package/dist/providers/ccb/index.js +77 -1702
  140. package/dist/providers/ccb/lib/constants.d.ts +34 -0
  141. package/dist/providers/ccb/lib/constants.js +74 -0
  142. package/dist/providers/ccb/lib/guide.js +9 -0
  143. package/dist/providers/ccb/lib/verdicts.js +387 -0
  144. package/dist/providers/ccb/openapi.generated.js +397 -0
  145. package/dist/providers/ccb/safety.js +295 -0
  146. package/dist/providers/ccb/skill.generated.js +2 -6
  147. package/dist/providers/ccb/tools.js +853 -0
  148. package/dist/providers/cloudflare/api.js +1066 -0
  149. package/dist/providers/cloudflare/index.d.ts +5 -22
  150. package/dist/providers/cloudflare/index.js +79 -197
  151. package/dist/providers/cloudflare/lib/config.d.ts +16 -0
  152. package/dist/providers/cloudflare/lib/config.js +2 -0
  153. package/dist/providers/cloudflare/lib/discovery.js +29 -0
  154. package/dist/providers/cloudflare/{graphql.js → lib/graphql.js} +1 -1
  155. package/dist/providers/cloudflare/lib/hatch.js +103 -0
  156. package/dist/providers/cloudflare/lib/path-bounds.js +28 -0
  157. package/dist/providers/cloudflare/lib/response-media.js +75 -0
  158. package/dist/providers/cloudflare/openapi.generated.js +4 -3
  159. package/dist/providers/cloudflare/{value-safety.js → safety.js} +487 -0
  160. package/dist/providers/cloudflare/skill.generated.js +2 -10
  161. package/dist/providers/cloudflare/tools.js +360 -0
  162. package/dist/providers/docs/api.js +51 -0
  163. package/dist/providers/docs/index.d.ts +1 -12
  164. package/dist/providers/docs/index.js +53 -1165
  165. package/dist/providers/docs/lib/constants.d.ts +18 -0
  166. package/dist/providers/docs/lib/constants.js +18 -0
  167. package/dist/providers/docs/lib/discovery.js +26 -0
  168. package/dist/providers/docs/lib/requests.js +48 -0
  169. package/dist/providers/docs/lib/schemas.js +168 -0
  170. package/dist/providers/docs/openapi.generated.js +16 -0
  171. package/dist/providers/docs/safety.js +54 -0
  172. package/dist/providers/docs/skill.generated.js +2 -6
  173. package/dist/providers/docs/tools.js +801 -0
  174. package/dist/providers/drive/api.js +177 -0
  175. package/dist/providers/drive/index.d.ts +1 -12
  176. package/dist/providers/drive/index.js +38 -1448
  177. package/dist/providers/drive/lib/constants.d.ts +6 -0
  178. package/dist/providers/drive/lib/constants.js +6 -0
  179. package/dist/providers/drive/lib/contracts.js +532 -0
  180. package/dist/providers/drive/lib/hatch.js +197 -0
  181. package/dist/providers/drive/openapi.generated.js +77 -0
  182. package/dist/providers/drive/safety.js +90 -0
  183. package/dist/providers/drive/skill.generated.js +2 -6
  184. package/dist/providers/drive/tools.js +1290 -0
  185. package/dist/providers/forms/api.js +71 -0
  186. package/dist/providers/forms/index.d.ts +1 -12
  187. package/dist/providers/forms/index.js +49 -1145
  188. package/dist/providers/forms/lib/constants.d.ts +14 -0
  189. package/dist/providers/forms/lib/constants.js +19 -0
  190. package/dist/providers/forms/lib/hatch.js +72 -0
  191. package/dist/providers/forms/openapi.generated.js +23 -0
  192. package/dist/providers/forms/safety.js +34 -0
  193. package/dist/providers/forms/skill.generated.js +2 -8
  194. package/dist/providers/forms/tools.js +1023 -0
  195. package/dist/providers/github/api.js +150 -0
  196. package/dist/providers/github/index.d.ts +4 -5
  197. package/dist/providers/github/index.js +30 -87
  198. package/dist/providers/github/{auth.d.ts → lib/auth.d.ts} +5 -3
  199. package/dist/providers/github/{auth.js → lib/auth.js} +40 -43
  200. package/dist/providers/github/lib/discovery.js +132 -0
  201. package/dist/providers/github/lib/operations.js +58 -0
  202. package/dist/providers/github/{scope.d.ts → lib/scope.d.ts} +2 -0
  203. package/dist/providers/github/{scope.js → lib/scope.js} +25 -1
  204. package/dist/providers/github/openapi.generated.js +1216 -0
  205. package/dist/providers/github/safety.js +216 -0
  206. package/dist/providers/github/skill.generated.js +2 -5
  207. package/dist/providers/github/tools.js +506 -0
  208. package/dist/providers/gmail/api.js +114 -0
  209. package/dist/providers/gmail/index.d.ts +1 -12
  210. package/dist/providers/gmail/index.js +73 -1621
  211. package/dist/providers/gmail/lib/constants.d.ts +13 -0
  212. package/dist/providers/gmail/lib/constants.js +16 -0
  213. package/dist/providers/gmail/lib/index.js +173 -0
  214. package/dist/providers/gmail/lib/schemas.js +176 -0
  215. package/dist/providers/gmail/lib/threading.js +120 -0
  216. package/dist/providers/gmail/openapi.generated.js +92 -0
  217. package/dist/providers/gmail/safety.js +21 -0
  218. package/dist/providers/gmail/skill.generated.js +2 -6
  219. package/dist/providers/gmail/tools.js +1435 -0
  220. package/dist/providers/overflow/api.js +1008 -0
  221. package/dist/providers/overflow/index.d.ts +1 -17
  222. package/dist/providers/overflow/index.js +60 -1488
  223. package/dist/providers/overflow/skill.generated.js +2 -5
  224. package/dist/providers/overflow/tools.js +873 -0
  225. package/dist/providers/planning-center/api.js +467 -0
  226. package/dist/providers/planning-center/index.d.ts +4 -35
  227. package/dist/providers/planning-center/index.js +69 -2445
  228. package/dist/providers/planning-center/lib/constants.d.ts +58 -0
  229. package/dist/providers/planning-center/lib/constants.js +83 -0
  230. package/dist/providers/planning-center/lib/discovery.js +40 -0
  231. package/dist/providers/planning-center/lib/guide.js +39 -0
  232. package/dist/providers/planning-center/lib/json-api.js +83 -0
  233. package/dist/providers/planning-center/lib/verdicts.js +1758 -0
  234. package/dist/providers/planning-center/openapi.generated.js +1764 -0
  235. package/dist/providers/planning-center/safety.js +188 -0
  236. package/dist/providers/planning-center/skill.generated.js +2 -27
  237. package/dist/providers/planning-center/tools.js +1010 -0
  238. package/dist/providers/quickbooks/api.js +299 -0
  239. package/dist/providers/quickbooks/index.d.ts +13 -0
  240. package/dist/providers/quickbooks/index.js +93 -0
  241. package/dist/providers/quickbooks/lib/query.js +118 -0
  242. package/dist/providers/quickbooks/lib/writes.js +168 -0
  243. package/dist/providers/quickbooks/safety.js +222 -0
  244. package/dist/providers/quickbooks/skill.generated.js +5 -0
  245. package/dist/providers/quickbooks/tools.js +117 -0
  246. package/dist/providers/sheets/api.js +133 -0
  247. package/dist/providers/sheets/index.d.ts +4 -16
  248. package/dist/providers/sheets/index.js +61 -1172
  249. package/dist/providers/sheets/lib/constants.d.ts +14 -0
  250. package/dist/providers/sheets/lib/constants.js +14 -0
  251. package/dist/providers/sheets/lib/hatch.js +163 -0
  252. package/dist/providers/sheets/lib/requests.js +105 -0
  253. package/dist/providers/sheets/lib/schemas.js +138 -0
  254. package/dist/providers/sheets/openapi.generated.js +30 -0
  255. package/dist/providers/sheets/safety.js +27 -0
  256. package/dist/providers/sheets/skill.generated.js +2 -7
  257. package/dist/providers/sheets/tools.js +733 -0
  258. package/dist/providers/slides/api.js +147 -0
  259. package/dist/providers/slides/index.d.ts +2 -10
  260. package/dist/providers/slides/index.js +48 -2555
  261. package/dist/providers/slides/lib/constants.d.ts +11 -0
  262. package/dist/providers/slides/lib/constants.js +11 -0
  263. package/dist/providers/slides/lib/requests.js +60 -0
  264. package/dist/providers/slides/lib/schemas.js +565 -0
  265. package/dist/providers/slides/openapi.generated.js +18 -0
  266. package/dist/providers/slides/skill.generated.js +2 -6
  267. package/dist/providers/slides/tools.js +1968 -0
  268. package/dist/providers/stripe/api.js +401 -0
  269. package/dist/providers/stripe/index.d.ts +5 -27
  270. package/dist/providers/stripe/index.js +74 -210
  271. package/dist/providers/stripe/lib/config.d.ts +4 -0
  272. package/dist/providers/stripe/lib/config.js +2 -0
  273. package/dist/providers/stripe/openapi.generated.js +4 -3
  274. package/dist/providers/stripe/{value-safety.js → safety.js} +5 -5
  275. package/dist/providers/stripe/skill.generated.js +2 -11
  276. package/dist/providers/stripe/tools.js +77 -0
  277. package/dist/providers/tithely/api.js +531 -0
  278. package/dist/providers/tithely/index.d.ts +17 -0
  279. package/dist/providers/tithely/index.js +86 -965
  280. package/dist/providers/tithely/skill.generated.js +2 -5
  281. package/dist/providers/tithely/tools.js +426 -0
  282. package/dist/providers/vercel/api.js +551 -0
  283. package/dist/providers/vercel/index.d.ts +9 -25
  284. package/dist/providers/vercel/index.js +65 -260
  285. package/dist/providers/vercel/lib/config.d.ts +2 -0
  286. package/dist/providers/vercel/lib/config.js +2 -0
  287. package/dist/providers/vercel/lib/index.js +117 -0
  288. package/dist/providers/vercel/lib/logs.js +100 -0
  289. package/dist/providers/vercel/lib/pin.js +270 -0
  290. package/dist/providers/vercel/openapi.generated.js +10 -5
  291. package/dist/providers/vercel/{value-safety.js → safety.js} +247 -38
  292. package/dist/providers/vercel/skill.generated.js +2 -7
  293. package/dist/providers/vercel/tools.js +642 -0
  294. package/dist/redaction-identity.js +47 -0
  295. package/dist/redaction-marker.js +125 -0
  296. package/dist/registry.d.ts +21 -15
  297. package/dist/registry.js +409 -376
  298. package/dist/routes/access-tokens.js +1 -1
  299. package/dist/routes/actor-labels.js +1 -1
  300. package/dist/routes/connect.js +1 -1
  301. package/dist/routes/dispatch.js +103 -0
  302. package/dist/routes/mcp.js +170 -79
  303. package/dist/routes/oauth.js +6 -1
  304. package/dist/routes/operator.js +2 -2
  305. package/dist/routes/shared.d.ts +5 -4
  306. package/dist/routes/shared.js +244 -177
  307. package/dist/routes/skills.js +10 -8
  308. package/dist/routes/ui-config.js +27 -3
  309. package/dist/routes/ui-data.js +21 -20
  310. package/dist/routes/ui.js +1 -1
  311. package/dist/runtime/call-admission.js +0 -26
  312. package/dist/runtime/call-entry.js +30 -0
  313. package/dist/runtime/call.js +552 -0
  314. package/dist/runtime/connector-scope.js +7 -0
  315. package/dist/runtime/credential-probe.js +34 -0
  316. package/dist/runtime/executor.js +40 -0
  317. package/dist/runtime/native-storage.js +63 -0
  318. package/dist/runtime/registry.js +27 -0
  319. package/dist/runtime/request-scope.js +72 -0
  320. package/dist/runtime/run.js +15 -7
  321. package/dist/runtime/shared-read.js +34 -5
  322. package/dist/runtime/storage.js +34 -21
  323. package/dist/sent-secrets.d.ts +194 -37
  324. package/dist/sent-secrets.js +1743 -340
  325. package/dist/server.js +5 -56
  326. package/dist/skills.js +322 -223
  327. package/dist/sqlite.js +15 -14
  328. package/dist/storage/d1-copy.js +255 -0
  329. package/dist/storage/d1-driver.js +15 -0
  330. package/dist/storage/keys.js +28 -0
  331. package/dist/storage/sql-driver.js +88 -0
  332. package/dist/storage/sql-native.js +544 -0
  333. package/dist/storage/sql-schema.d.ts +6 -0
  334. package/dist/storage/sql-schema.js +15 -0
  335. package/dist/storage/sql.d.ts +14 -20
  336. package/dist/storage/sql.js +29 -535
  337. package/dist/timeout.js +0 -26
  338. package/dist/tool-safety.js +20 -10
  339. package/dist/types.d.ts +9 -109
  340. package/dist/ui.d.ts +1 -1
  341. package/dist/ui.js +0 -1
  342. package/dist/upward.js +3 -0
  343. package/dist/usage-guide.js +3 -1
  344. package/dist/validate.d.ts +4 -2
  345. package/dist/validate.js +86 -9
  346. package/dist/version.d.ts +1 -1
  347. package/dist/version.js +1 -1
  348. package/dist/worker.js +312 -292
  349. package/dist/workspace-subject.js +5 -1
  350. package/dist/write-outcome.js +454 -34
  351. package/documentation/README.md +28 -7
  352. package/documentation/architecture.md +2409 -255
  353. package/documentation/auth.md +867 -114
  354. package/documentation/code-mode.md +49 -16
  355. package/documentation/deploying.md +164 -20
  356. package/documentation/hosted-mcp-migration.md +460 -0
  357. package/documentation/integrating.md +129 -144
  358. package/documentation/meta-tools.md +409 -32
  359. package/documentation/operating.md +27 -3
  360. package/documentation/operator-tests.md +3 -0
  361. package/documentation/operator-ui.md +84 -48
  362. package/documentation/provider-auth-migration.md +16 -63
  363. package/documentation/provider-migration-0.29.md +10 -5
  364. package/documentation/provider-migration-0.35.md +975 -0
  365. package/documentation/providers.md +1347 -0
  366. package/examples/worker/AGENTS.md +23 -9
  367. package/examples/worker/README.md +254 -135
  368. package/examples/worker/alchemy.run.ts +116 -0
  369. package/examples/worker/gitignore +10 -0
  370. package/examples/worker/src/connecta.config.ts +23 -21
  371. package/examples/worker/wrangler.jsonc +14 -5
  372. package/guides/connecting-agents.md +157 -0
  373. package/guides/how-it-works.md +156 -0
  374. package/guides/safety-and-trust.md +153 -0
  375. package/package.json +30 -50
  376. package/templates/node/.env.example +3 -0
  377. package/templates/node/README.md +22 -2
  378. package/templates/node/docker-compose.yml +1 -0
  379. package/templates/node/package.json +3 -2
  380. package/templates/node/src/connecta.config.ts +8 -0
  381. package/dist/catalog-drift.d.ts +0 -138
  382. package/dist/catalog-drift.js +0 -578
  383. package/dist/operator-ui/agents.d.ts +0 -74
  384. package/dist/operator-ui/agents.js +0 -104
  385. package/dist/operator-ui/config-summary.js +0 -565
  386. package/dist/operator-ui/connection-map.js +0 -376
  387. package/dist/operator-ui/endpoints.js +0 -221
  388. package/dist/operator-ui/fix-prompts.d.ts +0 -18
  389. package/dist/operator-ui/fix-prompts.js +0 -87
  390. package/dist/operator-ui/health.js +0 -52
  391. package/dist/operator-ui/member-page.js +0 -97
  392. package/dist/operator-ui/overview.js +0 -123
  393. package/dist/operator-ui/setup-commands.js +0 -51
  394. package/dist/operator-ui/view.d.ts +0 -401
  395. package/dist/operator-ui/view.js +0 -705
  396. package/dist/providers/_shared/request-token.js +0 -83
  397. package/dist/providers/_shared/rest/dispatch.js +0 -41
  398. package/dist/providers/_shared/rest/operation-index.d.ts +0 -133
  399. package/dist/providers/_shared/rest/tools.d.ts +0 -141
  400. package/dist/providers/_shared/rest/tools.js +0 -569
  401. package/dist/providers/_shared/rest/value-safety.d.ts +0 -201
  402. package/dist/providers/basecamp/index.d.ts +0 -45
  403. package/dist/providers/basecamp/index.js +0 -997
  404. package/dist/providers/basecamp/skill.generated.js +0 -9
  405. package/dist/providers/cloudflare/rest.d.ts +0 -37
  406. package/dist/providers/cloudflare/rest.js +0 -1097
  407. package/dist/providers/github/hosted.js +0 -218
  408. package/dist/providers/github/rest.js +0 -321
  409. package/dist/providers/infisical/index.d.ts +0 -7
  410. package/dist/providers/infisical/index.js +0 -713
  411. package/dist/providers/infisical/skill.generated.js +0 -8
  412. package/dist/providers/intercom/index.d.ts +0 -24
  413. package/dist/providers/intercom/index.js +0 -121
  414. package/dist/providers/intercom/skill.generated.js +0 -8
  415. package/dist/providers/linear/index.d.ts +0 -55
  416. package/dist/providers/linear/index.js +0 -537
  417. package/dist/providers/linear/skill.generated.js +0 -8
  418. package/dist/providers/mixpanel/index.d.ts +0 -59
  419. package/dist/providers/mixpanel/index.js +0 -472
  420. package/dist/providers/mixpanel/operations.js +0 -20
  421. package/dist/providers/mixpanel/rest.js +0 -603
  422. package/dist/providers/mixpanel/skill.generated.js +0 -10
  423. package/dist/providers/mixpanel/value-safety.js +0 -16
  424. package/dist/providers/notion/index.d.ts +0 -67
  425. package/dist/providers/notion/index.js +0 -368
  426. package/dist/providers/notion/openapi.generated.js +0 -75
  427. package/dist/providers/notion/rest.d.ts +0 -24
  428. package/dist/providers/notion/rest.js +0 -1226
  429. package/dist/providers/notion/skill.generated.js +0 -11
  430. package/dist/providers/notion/value-safety.js +0 -56
  431. package/dist/providers/revenuecat/index.d.ts +0 -51
  432. package/dist/providers/revenuecat/index.js +0 -697
  433. package/dist/providers/revenuecat/skill.generated.js +0 -11
  434. package/dist/providers/stripe/rest.d.ts +0 -14
  435. package/dist/providers/stripe/rest.js +0 -402
  436. package/dist/providers/vercel/rest.d.ts +0 -20
  437. package/dist/providers/vercel/rest.js +0 -1020
  438. package/dist/providers/wispr-flow/index.d.ts +0 -14
  439. package/dist/providers/wispr-flow/index.js +0 -117
  440. package/dist/providers/wispr-flow/skill.generated.js +0 -8
  441. /package/dist/providers/github/{key.js → lib/key.js} +0 -0
@@ -1,3 +1,194 @@
1
+ const absent = {
2
+ "reason": "Paths a shared verdict carries (drains, webhooks, projects, deployments, firewall configurations, environment variables) that this operation's pinned response schema does not declare, including list-root and create-only variants. They stay applied at runtime, so an undeclared field the vendor returns is still removed; listing them here keeps every other path checked against the schema.",
3
+ "operations": {
4
+ "GET /v1/projects/{idOrName}/daemons": ["daemons.replicas.items.iroh.publicKeyCiphertext"],
5
+ "DELETE /v1/env": ["created[].value", "data[].value", "updated[].value"],
6
+ "DELETE /v1/projects/{idOrName}/avatar": [
7
+ "internalRoutes[].missing[?header].value",
8
+ "security.firewallRoutes[].has[?header].value",
9
+ "security.firewallRoutes[].missing[?header].value",
10
+ "security.firewallRoutes[].response_has[?header].value",
11
+ ],
12
+ "DELETE /v1/projects/{idOrName}/env": ["[].legacyValue", "[].value", "legacyValue", "value", "vsmValue"],
13
+ "DELETE /v9/projects/{idOrName}/env/{id}": ["vsmValue"],
14
+ "GET /v1/drains": ["drains[].headers{}", "drains[].secret", "origin:drains[].url"],
15
+ "GET /v1/drains/{id}": ["headers{}", "origin:url", "secret"],
16
+ "GET /v1/env": ["created[].value", "failed[].error.value", "updated[].value"],
17
+ "GET /v1/log-drains": [
18
+ "[].delivery.headers{}",
19
+ "[].delivery.secret",
20
+ "[].headers{}",
21
+ "[].secret",
22
+ "drains[].headers{}",
23
+ "drains[].secret",
24
+ "origin:[].delivery.endpoint",
25
+ "origin:[].delivery.endpoint.traces",
26
+ "origin:[].url",
27
+ "origin:drains[].url",
28
+ ],
29
+ "GET /v1/log-drains/{id}": [
30
+ "delivery.headers{}",
31
+ "delivery.secret",
32
+ "headers{}",
33
+ "origin:delivery.endpoint",
34
+ "origin:delivery.endpoint.traces",
35
+ "origin:url",
36
+ "secret",
37
+ ],
38
+ "GET /v1/microfrontends/groups/{groupId}/projects": [
39
+ "projects[].internalRoutes[].missing[?header].value",
40
+ "projects[].security.firewallRoutes[].has[?header].value",
41
+ "projects[].security.firewallRoutes[].missing[?header].value",
42
+ "projects[].security.firewallRoutes[].response_has[?header].value",
43
+ ],
44
+ "GET /v1/security/firewall/config": [
45
+ "active.conditions[].conditionGroup[].conditions[?header].values",
46
+ "active.rules[].conditionGroup[].conditions[?header].values",
47
+ "active.rulesets[].conditionGroup[].conditions[?header].values",
48
+ "draft.conditions[].conditionGroup[].conditions[?header].values",
49
+ "draft.rules[].conditionGroup[].conditions[?header].values",
50
+ "draft.rulesets[].conditionGroup[].conditions[?header].values",
51
+ "versions[].conditions[].conditionGroup[].conditions[?header].values",
52
+ "versions[].rules[].conditionGroup[].conditions[?header].values",
53
+ "versions[].rulesets[].conditionGroup[].conditions[?header].values",
54
+ ],
55
+ "GET /v1/security/firewall/config/{configVersion}": [
56
+ "conditions[].conditionGroup[].conditions[?header].values",
57
+ "rules[].conditionGroup[].conditions[?header].values",
58
+ "rulesets[].conditionGroup[].conditions[?header].values",
59
+ ],
60
+ "GET /v1/webhooks": ["[].secret", "origin:webhooks[].url", "webhooks[].secret"],
61
+ "GET /v1/webhooks/{id}": ["secret"],
62
+ "GET /v10/projects": [
63
+ "[].dismissedToasts[].value",
64
+ "[].internalRoutes[].missing[?header].value",
65
+ "[].protectionBypass",
66
+ "[].protectionBypass@keys",
67
+ "[].usageStatus.bypassThrottleUntil",
68
+ "projects[].internalRoutes[].missing[?header].value",
69
+ ],
70
+ "GET /v13/deployments/{idOrUrl}": [
71
+ "services[].redirects[].headers{}",
72
+ "services[].redirects[].locale.cookie",
73
+ "services[].redirects[].transforms[].args",
74
+ "services[].rewrites[].headers{}",
75
+ "services[].rewrites[].locale.cookie",
76
+ ],
77
+ "GET /v2/integrations/log-drains": [
78
+ "[].delivery.headers{}",
79
+ "[].delivery.secret",
80
+ "[].secret",
81
+ "origin:[].delivery.endpoint",
82
+ "origin:[].delivery.endpoint.traces",
83
+ ],
84
+ "GET /v3/events": ["events[?env].payload.vsmValue"],
85
+ "GET /v9/projects/{idOrName}": [
86
+ "internalRoutes[].missing[?header].value",
87
+ "security.firewallRoutes[].has[?header].value",
88
+ "security.firewallRoutes[].missing[?header].value",
89
+ "security.firewallRoutes[].response_has[?header].value",
90
+ ],
91
+ "PATCH /v1/drains/{id}": ["headers{}", "origin:url", "secret"],
92
+ "PATCH /v1/env": ["created[].value", "data[].value"],
93
+ "PATCH /v1/env/{id}/unlink/{projectId}": ["value"],
94
+ "PATCH /v1/projects/{projectId}/microfrontends": [
95
+ "internalRoutes[].missing[?header].value",
96
+ "security.firewallRoutes[].has[?header].value",
97
+ "security.firewallRoutes[].missing[?header].value",
98
+ "security.firewallRoutes[].response_has[?header].value",
99
+ ],
100
+ "PATCH /v12/deployments/{id}/cancel": [
101
+ "services[].redirects[].headers{}",
102
+ "services[].redirects[].locale.cookie",
103
+ "services[].redirects[].transforms[].args",
104
+ "services[].rewrites[].headers{}",
105
+ "services[].rewrites[].locale.cookie",
106
+ ],
107
+ "PATCH /v9/projects/{idOrName}": [
108
+ "internalRoutes[].missing[?header].value",
109
+ "security.firewallRoutes[].has[?header].value",
110
+ "security.firewallRoutes[].missing[?header].value",
111
+ "security.firewallRoutes[].response_has[?header].value",
112
+ ],
113
+ "PATCH /v9/projects/{idOrName}/env/{id}": ["[].legacyValue", "[].value", "vsmValue"],
114
+ "POST /v1/drains": ["headers{}", "origin:url", "secret"],
115
+ "POST /v1/drains/test": [
116
+ "delivery.headers{}",
117
+ "delivery.secret",
118
+ "headers{}",
119
+ "origin:delivery.endpoint",
120
+ "origin:delivery.endpoint.traces",
121
+ "origin:url",
122
+ "secret",
123
+ ],
124
+ "POST /v1/env": ["data[].value", "updated[].value"],
125
+ "POST /v1/log-drains": [
126
+ "delivery.headers{}",
127
+ "delivery.secret",
128
+ "headers{}",
129
+ "origin:delivery.endpoint",
130
+ "origin:delivery.endpoint.traces",
131
+ "origin:url",
132
+ "secret",
133
+ ],
134
+ "POST /v1/projects/{idOrName}/avatar": [
135
+ "internalRoutes[].missing[?header].value",
136
+ "security.firewallRoutes[].has[?header].value",
137
+ "security.firewallRoutes[].missing[?header].value",
138
+ "security.firewallRoutes[].response_has[?header].value",
139
+ ],
140
+ "POST /v1/projects/{projectId}/routes/generate": [
141
+ "route.has[?header].value",
142
+ "route.headers{}",
143
+ "route.locale.cookie",
144
+ "route.missing[?header].value",
145
+ "route.transforms[].args",
146
+ ],
147
+ "POST /v1/security/firewall/config/generate-rule": ["rule.conditionGroup[].conditions[?header].values"],
148
+ "POST /v1/security/firewall/config/{configVersion}/activate": [
149
+ "conditions[].conditionGroup[].conditions[?header].values",
150
+ "rules[].conditionGroup[].conditions[?header].values",
151
+ "rulesets[].conditionGroup[].conditions[?header].values",
152
+ ],
153
+ "POST /v11/projects": [
154
+ "internalRoutes[].missing[?header].value",
155
+ "security.firewallRoutes[].has[?header].value",
156
+ "security.firewallRoutes[].missing[?header].value",
157
+ "security.firewallRoutes[].response_has[?header].value",
158
+ ],
159
+ "POST /v13/deployments": [
160
+ "services[].redirects[].headers{}",
161
+ "services[].redirects[].locale.cookie",
162
+ "services[].redirects[].transforms[].args",
163
+ "services[].rewrites[].headers{}",
164
+ "services[].rewrites[].locale.cookie",
165
+ ],
166
+ "POST /v2/integrations/log-drains": [
167
+ "delivery.headers{}",
168
+ "delivery.secret",
169
+ "origin:delivery.endpoint",
170
+ "origin:delivery.endpoint.traces",
171
+ "secret",
172
+ ],
173
+ "PUT /v1/security/firewall/config": [
174
+ "active.conditions[].conditionGroup[].conditions[?header].values",
175
+ "active.rules[].conditionGroup[].conditions[?header].values",
176
+ "active.rulesets[].conditionGroup[].conditions[?header].values",
177
+ "draft.conditions[].conditionGroup[].conditions[?header].value",
178
+ "draft.conditions[].conditionGroup[].conditions[?header].values",
179
+ "draft.rules[].conditionGroup[].conditions[?header].value",
180
+ "draft.rules[].conditionGroup[].conditions[?header].values",
181
+ "draft.rulesets[].conditionGroup[].conditions[?header].value",
182
+ "draft.rulesets[].conditionGroup[].conditions[?header].values",
183
+ "versions[].conditions[].conditionGroup[].conditions[?header].value",
184
+ "versions[].conditions[].conditionGroup[].conditions[?header].values",
185
+ "versions[].rules[].conditionGroup[].conditions[?header].value",
186
+ "versions[].rules[].conditionGroup[].conditions[?header].values",
187
+ "versions[].rulesets[].conditionGroup[].conditions[?header].value",
188
+ "versions[].rulesets[].conditionGroup[].conditions[?header].values",
189
+ ],
190
+ },
191
+ };
1
192
  // Vercel's reviewed value-safety table (decision 0005, "Value safety"), on the
2
193
  // shared mechanism in `../_shared/rest/value-safety.ts`.
3
194
  //
@@ -21,7 +212,7 @@
21
212
  // whose label is credential-named, environment-variable containers, and
22
213
  // URLs with userinfo or credential query parameters.
23
214
  //
24
- // Residual risk, as with Infisical: a secret a person typed into a free-text
215
+ // Residual risk: a secret a person typed into a free-text
25
216
  // name, description, log line, or identifier is out of scope.
26
217
  // Embedded URL verdict (#812): reviewed paths + global signing parameters.
27
218
  // Evidence: pinned index/candidates sha256:5a702fd2dc76 identify deployment
@@ -122,6 +313,12 @@ const TEAM_INVITE = "Teams carry inviteCode, which lets its holder join the team
122
313
  * these operations project it themselves (value-safe environment variables).
123
314
  */
124
315
  const VALUE_SAFETY = {
316
+ // Re-pin 4a06e85c: withhold the entire extensible API-key subtree, including
317
+ // arbitrary metadata/leakedUrl, rather than exempting a credential object.
318
+ "PATCH /api-keys/{apiKeyID}/quota": redact("Changes a budget, not an API key; withhold the complete API-key metadata subtree and retain quota facts.", ["apiKey"], ["quota"]),
319
+ "GET /v1/projects/{projectIdOrName}/feature-flags/labels": safe("Lists attribute labels: entity kind, attribute key, label and value; no credential-bearing fields."),
320
+ "GET /v1/projects/{projectIdOrName}/feature-flags/labels/counts": safe("Lists attribute label counts without credentials or stored secret values."),
321
+ "POST /v1/projects/{projectIdOrName}/feature-flags/labels/lookup": safe("Returns matching attribute labels and missing keys, without credentials; retains conservative write classification."),
125
322
  "GET /ai-gateway/budgets/list": safe("Coverage counts per API key; no key value.", ["defaultCoveredCounts.api-key"]),
126
323
  "GET /v8/artifacts/status": safe("Remote-cache read-only status is a flag.", ["readOnly"]),
127
324
  "GET /v1/security/firewall/bypass/rules": redact(FIREWALL_REASON, under(["", "rules[]"], BYPASS_CONDITIONS)),
@@ -155,9 +352,9 @@ const VALUE_SAFETY = {
155
352
  "GET /v1/webhooks/{id}": redact(WEBHOOK_REASON, WEBHOOK),
156
353
  "DELETE /v1/webhooks/{id}": safe(NO_SECRET_REASON),
157
354
  "GET /v1/env": redact(ENV_REASON, SHARED_ENV),
158
- "POST /v1/env": redact(ENV_REASON, SHARED_ENV),
159
- "PATCH /v1/env": redact(ENV_REASON, SHARED_ENV),
160
- "DELETE /v1/env": redact(ENV_REASON, SHARED_ENV),
355
+ "POST /v1/env": redact(ENV_REASON, [...SHARED_ENV, "failed[].error.message"]),
356
+ "PATCH /v1/env": redact(ENV_REASON, [...SHARED_ENV, "failed[].error.message"]),
357
+ "DELETE /v1/env": redact(ENV_REASON, [...SHARED_ENV, "failed[].error.message"]),
161
358
  "GET /v1/env/{id}": refuse("returns a shared environment variable's decrypted value."),
162
359
  "PATCH /v1/env/{id}/unlink/{projectId}": redact(ENV_REASON, ["value"]),
163
360
  "GET /v1/global-config": safe("Global Config metadata: ids, slugs, sizes, and digests, without items."),
@@ -238,6 +435,7 @@ const VALUE_SAFETY = {
238
435
  "created[].vsmValue",
239
436
  "created[].legacyValue",
240
437
  "failed[].error.value",
438
+ "failed[].error.message",
241
439
  ]),
242
440
  "POST /v11/projects": redact(PROJECT_REASON, PROJECT, PROJECT_ALLOW),
243
441
  "PATCH /v12/deployments/{id}/cancel": redact(DEPLOYMENT_REASON, DEPLOYMENT),
@@ -310,6 +508,7 @@ const VALUE_SAFETY = {
310
508
  * names, which the heuristic leaves.
311
509
  */
312
510
  export const VERCEL_VALUE_SAFETY = {
511
+ absent,
313
512
  embeddedUrls: {
314
513
  operations: {
315
514
  "GET /v13/deployments/{idOrUrl}": ["errorMessage"],
@@ -323,38 +522,48 @@ export const VERCEL_VALUE_SAFETY = {
323
522
  operations: VALUE_SAFETY,
324
523
  envBodies: /^\/v\d+\/(?:env(?:\/|$)|projects\/\{[^}]+\}\/env(?:\/|$))/,
325
524
  scopeMaps: ["permissions"],
326
- fields: Object.fromEntries([
327
- ["env", "Environment names and variable-name lists; values inside environment containers go structurally."],
328
- ["environments", "Environment slugs or ids a policy or variable applies to."],
329
- ["environmentVariables", "Environment variable names a store connects, never values."],
330
- ["type", "A variable's or record's type (plain, encrypted, sensitive, secret)."],
331
- ["visibility", "A variable's visibility setting."],
332
- ["keys", "Rate-limit key kinds (ip, ja4) and changed variable names."],
333
- ["logHeaders", "Header names a firewall rule logs."],
334
- ["log_headers", "Header names the firewall logs."],
335
- ["signingKeys", "KMS signing key metadata and public key material; private keys stay with Vercel."],
336
- ["bindings", "Service-to-service binding names and targets."],
337
- ["canaryResponseHeader", "Whether a canary response sets a header; a boolean."],
338
- ["inferenceRegion", "An AI Gateway routing region."],
339
- ["providerTimeouts", "Provider timeouts in milliseconds."],
340
- ["redirectUri", "A connector's registered OAuth redirect URI, public by design."],
341
- ["supportsRevocation", "Whether a connector can revoke tokens; a boolean."],
342
- ["claims", "OIDC claim matchers a policy requires, not tokens."],
343
- ["customClaims", "OIDC claim configuration, not tokens."],
344
- ["limited", "Whether a record is limited by the token's privileges; a boolean."],
345
- ["enforced", "Whether SAML is enforced; a boolean."],
346
- ["kind", "A store or record kind."],
347
- ["budget", "An AI Gateway key's spend budget."],
348
- ["origin", "How a token was issued (manual, oauth)."],
349
- ["scope", "A token's scope (user, team, project)."],
350
- ["issuedBefore", "A revocation cutoff timestamp."],
351
- ["issuerUrl", "The OIDC issuer URL, public by design."],
352
- ["oidcSubject", "The OIDC subject claim, an identifier."],
353
- ["next", "A pagination cursor; it grants nothing."],
354
- ["partialKeyValue", "A masked SDK key preview."],
355
- ["appUrlRegistrationSupport", "Whether a partner accepts app URLs; a boolean."],
356
- ["disjunctiveProductionSecretPolicy", "A team policy setting."],
357
- ["sensitiveEnvironmentVariablePolicy", "A team policy setting."],
358
- ["strictPasswordProtectionSettings", "A team policy setting."],
359
- ].map(([name, reason]) => [name, { verdict: "keep", reason }])),
525
+ fields: {
526
+ ...Object.fromEntries(["drainUrl", "logDrainUrl", "webhookUrl", "prevWebhookUrl"].map((name) => [
527
+ name,
528
+ {
529
+ verdict: "redact",
530
+ reason: "Audit-event drain and budget webhook destinations may embed credentials in path segments and query tokens; withhold the entire URL in every response shape.",
531
+ },
532
+ ])),
533
+ ...Object.fromEntries([
534
+ ["env", "Environment names and variable-name lists; values inside environment containers go structurally."],
535
+ ["environments", "Environment slugs or ids a policy or variable applies to."],
536
+ ["environmentVariables", "Environment variable names a store connects, never values."],
537
+ ["secretsOutdated", "A boolean indicating outdated integration secrets; no secret value."],
538
+ ["type", "A variable's or record's type (plain, encrypted, sensitive, secret)."],
539
+ ["visibility", "A variable's visibility setting."],
540
+ ["keys", "Rate-limit key kinds (ip, ja4) and changed variable names."],
541
+ ["logHeaders", "Header names a firewall rule logs."],
542
+ ["log_headers", "Header names the firewall logs."],
543
+ ["signingKeys", "KMS signing key metadata and public key material; private keys stay with Vercel."],
544
+ ["bindings", "Service-to-service binding names and targets."],
545
+ ["canaryResponseHeader", "Whether a canary response sets a header; a boolean."],
546
+ ["inferenceRegion", "An AI Gateway routing region."],
547
+ ["providerTimeouts", "Provider timeouts in milliseconds."],
548
+ ["redirectUri", "A connector's registered OAuth redirect URI, public by design."],
549
+ ["supportsRevocation", "Whether a connector can revoke tokens; a boolean."],
550
+ ["claims", "OIDC claim matchers a policy requires, not tokens."],
551
+ ["customClaims", "OIDC claim configuration, not tokens."],
552
+ ["limited", "Whether a record is limited by the token's privileges; a boolean."],
553
+ ["enforced", "Whether SAML is enforced; a boolean."],
554
+ ["kind", "A store or record kind."],
555
+ ["budget", "An AI Gateway key's spend budget."],
556
+ ["origin", "How a token was issued (manual, oauth)."],
557
+ ["scope", "A token's scope (user, team, project)."],
558
+ ["issuedBefore", "A revocation cutoff timestamp."],
559
+ ["issuerUrl", "The OIDC issuer URL, public by design."],
560
+ ["oidcSubject", "The OIDC subject claim, an identifier."],
561
+ ["next", "A pagination cursor; it grants nothing."],
562
+ ["partialKeyValue", "A masked SDK key preview."],
563
+ ["appUrlRegistrationSupport", "Whether a partner accepts app URLs; a boolean."],
564
+ ["disjunctiveProductionSecretPolicy", "A team policy setting."],
565
+ ["sensitiveEnvironmentVariablePolicy", "A team policy setting."],
566
+ ["strictPasswordProtectionSettings", "A team policy setting."],
567
+ ].map(([name, reason]) => [name, { verdict: "keep", reason }])),
568
+ },
360
569
  };
@@ -1,10 +1,5 @@
1
1
  // Generated by scripts/generate-providers.mjs; do not edit.
2
2
  export const skill = {
3
- "content": "- Resolve team, project, and deployment ids with list reads; never guess one. Team ids begin `team_`, project ids `prj_`, and deployment ids `dpl_`.\n- Diagnose a deployment by reading its state first (`readyState`, `errorCode`, `errorMessage`), then its build logs, then runtime logs for a deployment that built. Narrow time windows before raising limits.\n- Environment variable changes apply only to future deployments; a new deployment is a separate write. Promoting an existing deployment to production does not rebuild it.\n- Treat every create, update, delete, promotion, cancellation, and purchase as a write. For guest calls, classification, and routing, fetch `skills({ name: \"usage\" })`.\n",
4
- "instructionsHeading": "Account instructions",
5
- "fragments": {
6
- "oauth": "\n\nTool names, descriptions, argument schemas, and result schemas come from Vercel's live server. Connecta applies release-reviewed classification; reviewed writes stay writes even when Vercel claims they only read.\n\n- Discover the live catalog before assuming a tool exists. Vercel can change the surface independently of a Connecta release, and account features may affect what the authorization can reach.\n- Complete authorization and grant access to the owning team before acting. Listing this server does not prove team access.\n- MCP pagination and arguments follow the live MCP schemas; do not apply REST pagination or argument shapes to them.\n- Diagnose deployments with `get_deployment`, then build logs, runtime error clusters, and runtime logs.\n- `get_project_env` and `filter_project_envs` can return decrypted environment values, so Connecta reviews them as writes, and a read-only endpoint refuses them. Prefer reading variable keys and targets without values.\n- Purchase tools change billing. Read a quote first and carry its price, idempotency key, and requested term into the confirmed purchase unchanged.\n- `get_access_to_vercel_url` creates a temporary access grant. Treat the URL it returns as a credential and do not expose it outside the requested task.\n- `web_fetch_vercel_url` runs application code and is reviewed as destructive; the toolbar reply, reaction, edit, and resolve tools are writes.\n- `deploy_to_vercel` and `import-claude-design-from-url` can create or update live projects. Read the target and deployment mode before invoking them.\n- An `auth_required` failure means this connector's OAuth grant is missing or expired. Run `authorize_connector` for this connector id, then retry.\n",
7
- "key": "\n\n- This is Connecta's REST connector to `api.vercel.com`, holding one operator-managed access token. A default team routes calls; it does not narrow what the token can reach.\n- `vercel_api_search` finds API operations, not records: it searches the pinned API index and names the tool that calls each operation. `vercel_api_details` returns one operation's parameters with types, enums, and required names. Neither sends a request.\n- `vercel_api_read` calls GET operations, plus reviewed POSTs that only read: `POST /v2/observability/query`, registrar availability, price, and search, and `POST /v8/artifacts`. `vercel_api_write` calls every other POST, PUT, PATCH, and DELETE, with `method` and `path` stated; a read-only endpoint refuses it.\n- Paths are concrete and carry the version search returned: `/v13/deployments/dpl_123`, not `/deployments/dpl_123`. Pass `query` and `body` as JSON objects named as `vercel_api_details` lists them. Every call is checked against the pinned index before it is sent: an unknown path returns the nearest operations, and an unknown or missing parameter returns `validation.issues` with the accepted names. Nothing reached Vercel, so fix the call from that answer.\n- Results arrive as `{ status, data, page? }`. On a list, `page.next` is the cursor and `page.param` the query parameter to pass it as: `until` (a millisecond timestamp from `pagination.next`) on most lists, `cursor` on newer ones. Lists belong inside `execute_code`; pass `select` (dot paths such as `deployments.uid` and `deployments.state`) to keep only the fields the question needs.\n- `list_teams` returns team ids and slugs and the connection's default team. `get_deployment_build_logs` reads a deployment's build events without following live output. `get_runtime_logs` collects the runtime log stream for at most `waitMs` or `maxRows`, then stops and says why. Generic reads refuse `follow` and the runtime-log stream, which never end on their own.\n- `vercel_api_upload` sends explicit text or base64 bytes to an octet-stream operation, such as `POST /v2/files` before a deployment (Connecta computes `x-vercel-digest`). `vercel_api_write` sends JSON only.\n- Environment values never come back. `list_project_env_vars` never decrypts. `upsert_project_env_var` (`upsert: false` for create-only), `update_project_env_var`, and `delete_project_env_var` return metadata without values; values are write input only. Generic reads refuse `GET /v1/projects/{idOrName}/env/{id}`, `GET /v10/projects/{idOrName}/env`, `GET /v1/env/{id}`, and any `decrypt`, and Connecta replaces the value of every environment variable in any result with `\"[redacted]\"`, including project reads, shared variables, and audit events.\n- Other secrets read as `[redacted]` in every result: credential-named fields and their whole contents (`token`, `secret`, `password`, `jwt`, `credentials`, `Authorization`, …), protection-bypass secrets (each bypass's metadata stays under a numbered placeholder), deploy hook URLs, daemon liveness-probe header values and internal endpoint ciphertext, drain and webhook headers and signing secrets (including the one a new webhook or drain returns), drain and webhook destination URLs and external route, rewrite, and redirect destinations beyond their scheme and host, the args and values of every header, cookie, and query rule (route transforms and conditions, firewall conditions), conditional firewall bypass compiled `condition` expressions and their credential match values, team invite codes, synced Global Config items, and credentials inside other URLs. Failures of every reviewed operation, and of any operation whose request takes a credential-named field, say only the status and a reviewed code. Read or rotate withheld secrets in the Vercel dashboard. A `[redacted]` field is never the real value; do not send it back.\n- Refused by design: endpoints that mint credentials (access tokens, AI Gateway API keys, project OIDC and trace tokens, Connect and SSO tokens, Edge Config tokens, KMS-signed tokens, Flags SDK keys, protection-bypass secrets, installation credential rotation), Connect authorization requests, project transfer requests (the code lets another team claim the project), KMS signing, a domain move-out (its answer is a transfer token), Global Config items, backups, and tokens, and domain transfer auth codes. Each refusal names its reason.\n- The hosted OAuth connection's documentation search, runtime error clusters, toolbar threads, agent runs, web analytics summaries, purchase quotes, `deploy_to_vercel`, and access grants for protected URLs do not exist with a token. Configure an OAuth connector for those.\n- A `429` carries Vercel's reset time; Vercel meters endpoints separately, so wait before retrying the same operation. An `auth_required` failure means the token is missing, expired, or outside this team: an operator must replace it in this connection in the operator UI, and `authorize_connector` returns that handoff. A rejected argument comes back in Vercel's own words; read it rather than replacing the token.\n- Embedded URL safety uses reviewed paths plus global signing parameters. Generic credential-named query parameters (`code`, `key`, `token`, `sig`, etc.) and credential-looking fragments withhold the destination's entire query/fragment only in deployment `errorMessage`, build-event `payload.text`/`text`, and runtime-log `message` on the reviewed deployment/log operations and vendor error text. Ordinary `code`/`key` links can therefore be false positives in these diagnostics. Deployment metadata and other application content keep those ordinary URL parameters byte for byte. Literal AWS SigV4/Google V4 `X-Amz-*`/`X-Goog-*` Signature, Credential and Security-Token values are withheld in every decoded string before projection. A withheld value is not the original: do not write it back. Deployment creation also inspects decoded `files[].data` when `encoding` is `base64` (one decode bounded by the field's encoded length and the host's request limit; malformed base64 is refused). All writes, including named writes and supported raw/base64/multipart uploads, reject URL destinations whose own query/fragment contains the exact `[redacted]` placeholder, plain or encoded, with `invalid_args` before dispatch. Admission iteratively checks every JSON key and value within the host's accepted request size, without separate depth or node-count ceilings; cyclic direct arguments are refused. A marker outside the destination remains ordinary text. Split strings, encoded host/signing names, bare hosts without `//`, and opaque bearer paths remain outside this scan.\n",
8
- "shared": "- Resolve team, project, and deployment ids with list reads; never guess one. Team ids begin `team_`, project ids `prj_`, and deployment ids `dpl_`.\n- Diagnose a deployment by reading its state first (`readyState`, `errorCode`, `errorMessage`), then its build logs, then runtime logs for a deployment that built. Narrow time windows before raising limits.\n- Environment variable changes apply only to future deployments; a new deployment is a separate write. Promoting an existing deployment to production does not rebuild it.\n- Treat every create, update, delete, promotion, cancellation, and purchase as a write. For guest calls, classification, and routing, fetch `skills({ name: \"usage\" })`.\n"
9
- }
3
+ "content": "## Projects, deployments and domains\n\nResolve a team by slug, a project by name, and deployments by the observed\nproject id. Team ids start with `team_`, project ids with `prj_`, and deployment\nids with `dpl_`. A deployment hostname and a deployment id identify the same\ndeployment; an alias can later point to a different deployment.\n\nSome project paths accept a project name, but a deployment list's projectId\nfilter requires the observed `prj_` id. Resolve the name before listing its\ndeployments; an empty result for a guessed name does not prove absence.\nComplete each identifier lookup before starting the reads that depend on it.\n\n<!-- when: unpinned -->\nThe configured team is a routing default, not a restriction. Explicit teamId\nor slug selects another team the token can reach; teamId: null selects personal\nscope. Vercel token permissions determine access. Prefer an explicit team when\njoining resources across several calls.\n<!-- end -->\n\n<!-- when: pinned -->\nThe deployment confines this connection to one team. A supplied team slug must\nbelong to that team; personal scope and foreign teams are refused. Project and\ndeployment references require ownership reads. Global/account and transfer\noperations without a verifiable team boundary remain unavailable. A team list\nreturns only the pinned team.\n<!-- end -->\n\nRead deployment state before its build events. Runtime logs diagnose requests\nafter a deployment built; build logs explain a failed build. Narrow time windows\nbefore raising collection limits. Generic reads refuse live follow streams;\nuse the bounded build/runtime readers. Deployment timestamps are milliseconds.\n\nProject domains and deployment aliases are different joins: a project domain\nbelongs to the project, while an alias identifies its assigned deployment.\nRead a pending domain's verification instructions before changing DNS.\n\n## Environment changes\n\nResolve environment-variable ids using metadata, including target, branch and\ncustom environment. A key can have distinct production and preview values.\nExisting values cannot be retrieved. Supply new values only when the task asks\nfor a change; confirm the returned id and metadata.\n\nEnvironment changes apply to future deployments. A new deployment is a separate\nwrite. Promoting an existing deployment does not rebuild it or update embedded\nenvironment values. After an uncertain update, reconcile observable metadata\nsuch as id, targets and comment; reading metadata cannot verify a secret value.\n\n## Explicit files and credentials\n\nDeployment files can reference previously uploaded digests. File uploads accept\nexplicit bytes and never read a path on the agent's machine. Decrypted-value,\ncredential-minting, protection-bypass-link, signing and domain move-out operations\nare refused; use Vercel's dashboard for those workflows.\n\n## Conventions\n\n- **Paging:** while `page.hasMore` is true, continue with `page.nextCursor` unchanged. For `list_teams`, `vercel_api_details`, `vercel_api_search`, pass it as the top-level `cursor`; omit raw paging anchors on continuations. For `vercel_api_read`, put it in `query[page.param]` or `body[page.param]`, as `page.in` specifies. Keep the original method, path, filters, page size, fields and headers. Paged `list_*` and `search_*` reads take `limit` (default 20, at most 100). The last page has no `nextCursor`. If `page.hasMore` is true without a cursor, the data is incomplete and continuation was withheld. When approaching execute_code's per-program call limit, return page.nextCursor before the call that would exceed it and continue in the next program; don't restart.\n- **Results:** `fields` narrows a read's result to the dot paths you name. `truncated` lists the dot paths a result cut for size; the ids that fetch what was cut stay in the result.\n- **Hatch:** `vercel_api_search` finds this API's operations and reads no account data, `vercel_api_details` shows one operation's contract, and `vercel_api_read` calls a reviewed read. `vercel_api_write` calls a reviewed write; the host may ask the user to confirm it. An operation without a reviewed verdict is refused. 29 operations are refused by design; use `vercel_api_details` with the method and path to inspect the original operation summary and its separate refusal. Use details for refused methods outside the read/write call schemas; those methods remain unavailable.\n- **Writes:** a write is sent once and never retried. When its outcome is unknown, read the target before repeating it. Writes take no idempotency key.\n- **Errors:** codes come from the vendor's statuses and error facts, never its prose. `not_found` means the record does not exist; this API tells absence from a permission gap. It documents no conflict.\n- **Withheld values:** a value withheld for safety reads `\"[redacted]\"`. Writes refuse whole marker values and withheld links; longer prose may mention the marker. Paths and queries refuse any containment.",
4
+ "instructionsHeading": "Account instructions"
10
5
  };