@cursor/bdk 0.2.25 → 0.2.27

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 (449) hide show
  1. package/AGENTS.md +3 -18
  2. package/CHANGELOG.md +3 -0
  3. package/dist/artifacts.d.ts +1 -1
  4. package/dist/artifacts.js +1 -1
  5. package/dist/bin/agent-serve.js +25 -21
  6. package/dist/channels/bitbucket/api.d.ts +2 -2
  7. package/dist/channels/bitbucket/api.d.ts.map +1 -1
  8. package/dist/channels/bitbucket/bitbucket-channel.js +1 -1
  9. package/dist/channels/bitbucket/bitbucket-webhook.d.ts +2 -2
  10. package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
  11. package/dist/channels/change-monitors/change-monitors-channel.js +1 -1
  12. package/dist/channels/deployments/deployments-channel.js +1 -1
  13. package/dist/channels/github/cursor-account.d.ts +7 -0
  14. package/dist/channels/github/cursor-account.d.ts.map +1 -1
  15. package/dist/channels/github/cursor-account.js +22 -5
  16. package/dist/channels/github/github-channel.js +1 -1
  17. package/dist/channels/github/replay.d.ts +1 -1
  18. package/dist/channels/github/replay.d.ts.map +1 -1
  19. package/dist/channels/gitlab/api.d.ts +2 -2
  20. package/dist/channels/gitlab/api.d.ts.map +1 -1
  21. package/dist/channels/gitlab/gitlab-channel.js +1 -1
  22. package/dist/channels/issues/issues-channel.js +1 -1
  23. package/dist/channels/origin/api.d.ts +4 -4
  24. package/dist/channels/origin/api.d.ts.map +1 -1
  25. package/dist/channels/origin/origin-channel.js +1 -1
  26. package/dist/channels/origin/origin-webhook.d.ts +3 -3
  27. package/dist/channels/origin/origin-webhook.d.ts.map +1 -1
  28. package/dist/channels/pagerduty/pagerduty-webhook.d.ts +2 -2
  29. package/dist/channels/pagerduty/pagerduty-webhook.d.ts.map +1 -1
  30. package/dist/channels/runs/runs-channel.js +1 -1
  31. package/dist/channels/slack/agentic-delivery.d.ts +2 -1
  32. package/dist/channels/slack/agentic-delivery.d.ts.map +1 -1
  33. package/dist/channels/slack/agentic-delivery.js +6 -10
  34. package/dist/channels/slack/agentic-signals.d.ts +2 -7
  35. package/dist/channels/slack/agentic-signals.d.ts.map +1 -1
  36. package/dist/channels/slack/agentic-signals.js +4 -3
  37. package/dist/channels/slack/api.d.ts +1 -0
  38. package/dist/channels/slack/api.d.ts.map +1 -1
  39. package/dist/channels/slack/api.js +3 -0
  40. package/dist/channels/slack/constants.d.ts +2 -0
  41. package/dist/channels/slack/constants.d.ts.map +1 -1
  42. package/dist/channels/slack/constants.js +2 -0
  43. package/dist/channels/slack/defaults.d.ts.map +1 -1
  44. package/dist/channels/slack/defaults.js +3 -2
  45. package/dist/channels/slack/dispatch.d.ts +9 -0
  46. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  47. package/dist/channels/slack/dispatch.js +3 -0
  48. package/dist/channels/slack/inbound.d.ts.map +1 -1
  49. package/dist/channels/slack/inbound.js +24 -20
  50. package/dist/channels/slack/interactive.d.ts +2 -0
  51. package/dist/channels/slack/interactive.d.ts.map +1 -1
  52. package/dist/channels/slack/interactive.js +1 -0
  53. package/dist/channels/slack/live-delivery.d.ts +3 -0
  54. package/dist/channels/slack/live-delivery.d.ts.map +1 -1
  55. package/dist/channels/slack/live-delivery.js +5 -0
  56. package/dist/channels/slack/reply-options.d.ts +9 -0
  57. package/dist/channels/slack/reply-options.d.ts.map +1 -1
  58. package/dist/channels/slack/reply-options.js +31 -1
  59. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  60. package/dist/channels/slack/slack-channel.js +7 -0
  61. package/dist/channels/slack/stream.d.ts +5 -1
  62. package/dist/channels/slack/stream.d.ts.map +1 -1
  63. package/dist/channels/slack/types.d.ts +29 -0
  64. package/dist/channels/slack/types.d.ts.map +1 -1
  65. package/dist/channels.d.ts +1 -1
  66. package/dist/channels.js +1 -1
  67. package/dist/docs/404.html +3 -3
  68. package/dist/docs/assets/{app.BjS1QEI4.js → app.wA5xBBcd.js} +4 -4
  69. package/dist/docs/assets/changelog.md.BvHRIiMH.js +1 -0
  70. package/dist/docs/assets/changelog.md.BvHRIiMH.lean.js +1 -0
  71. package/dist/docs/assets/chunks/@localSearchIndexroot.BoDEJQWv.js +1 -0
  72. package/dist/docs/assets/chunks/{VPLocalSearchBox.BOuvjb5Y.js → VPLocalSearchBox.C29HLCVL.js} +2 -2
  73. package/dist/docs/assets/chunks/{arc.3WR6Jf-y.js → arc.BOaoYWmh.js} +1 -1
  74. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.Dtb6Dqh6.js → architectureDiagram-Q4EWVU46.MfG0itQh.js} +1 -1
  75. package/dist/docs/assets/chunks/{baseUniq.BUyrgrZE.js → baseUniq.CUeJciCF.js} +1 -1
  76. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.BVLV_voZ.js → blockDiagram-DXYQGD6D.BrXMZRtK.js} +1 -1
  77. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.jXJ1q70M.js → c4Diagram-AHTNJAMY.DfkDHeB9.js} +1 -1
  78. package/dist/docs/assets/chunks/channel.D2BTz0L-.js +1 -0
  79. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.zz1SMBvK.js → chunk-4BX2VUAB.xKz8CiXK.js} +1 -1
  80. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.CzYKuv3I.js → chunk-4TB4RGXK.kkfBh4zk.js} +1 -1
  81. package/dist/docs/assets/chunks/{chunk-55IACEB6.C7_tcJZD.js → chunk-55IACEB6.BClJGb94.js} +1 -1
  82. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.DeTwQPVO.js → chunk-EDXVE4YY.P9BpQ9L3.js} +1 -1
  83. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DhMTl7ut.js → chunk-FMBD7UC4.R4iYi58S.js} +1 -1
  84. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.Me7f5hEp.js → chunk-OYMX7WX6.Cpn8L1dw.js} +1 -1
  85. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.D0E0Bb6g.js → chunk-QZHKN3VN.BLftECqU.js} +1 -1
  86. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.CdOOBFYL.js → chunk-YZCP3GAM.BWDV1AYt.js} +1 -1
  87. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.DqByliAC.js +1 -0
  88. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.DqByliAC.js +1 -0
  89. package/dist/docs/assets/chunks/clone.CldT1lbQ.js +1 -0
  90. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BNbGESzN.js → cose-bilkent-S5V4N54A.DGpAcJ55.js} +1 -1
  91. package/dist/docs/assets/chunks/{dagre-KV5264BT.zU7Lu_xJ.js → dagre-KV5264BT.BBXxGEaD.js} +1 -1
  92. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.B9qOdE5h.js → diagram-5BDNPKRD.EKqOwmK2.js} +1 -1
  93. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.D8X-sf77.js → diagram-G4DWMVQ6.CB8pdkoZ.js} +1 -1
  94. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.CW7MvMlE.js → diagram-MMDJMWI5.aHh4WGg9.js} +1 -1
  95. package/dist/docs/assets/chunks/{diagram-TYMM5635.J489G0Nd.js → diagram-TYMM5635.YIsbRH20.js} +1 -1
  96. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.BkW7tGfs.js → erDiagram-SMLLAGMA.B3bTCW_e.js} +1 -1
  97. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.jc9iWORD.js → flowDiagram-DWJPFMVM.M81hXIXZ.js} +1 -1
  98. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.B-UQfd9E.js → ganttDiagram-T4ZO3ILL.BKg7WY--.js} +1 -1
  99. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.DFzrTSlJ.js → gitGraphDiagram-UUTBAWPF.CLEMZgO3.js} +1 -1
  100. package/dist/docs/assets/chunks/{graph.C5IB6_e_.js → graph.DS38W_Q-.js} +1 -1
  101. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.DwF0-c8L.js → infoDiagram-42DDH7IO.BTiWTi82.js} +1 -1
  102. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.fBaTqzE7.js → ishikawaDiagram-UXIWVN3A.DcqY_KQL.js} +1 -1
  103. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CM8gDVJy.js → journeyDiagram-VCZTEJTY.0lQNZ40U.js} +1 -1
  104. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.YiD1p0LB.js → kanban-definition-6JOO6SKY.L5sKlf7X.js} +1 -1
  105. package/dist/docs/assets/chunks/{layout.6Um-DVJT.js → layout.7u4gFhQa.js} +1 -1
  106. package/dist/docs/assets/chunks/{linear.DcTeg4Hn.js → linear.D5v33SOb.js} +1 -1
  107. package/dist/docs/assets/chunks/{min.CIxkY8Fe.js → min.Dc9uCxf9.js} +1 -1
  108. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.D4QM_voR.js → mindmap-definition-QFDTVHPH.B56nGoB_.js} +1 -1
  109. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.nmB309G1.js → pieDiagram-DEJITSTG.Cba8e8lS.js} +1 -1
  110. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.D1HtZR3C.js → quadrantDiagram-34T5L4WZ.2YjBycHF.js} +1 -1
  111. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.CZgQWob-.js → requirementDiagram-MS252O5E.D4P5RqVI.js} +1 -1
  112. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.DtiBfU-P.js → sankeyDiagram-XADWPNL6.C0Hn8NUm.js} +1 -1
  113. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Cld4gDSt.js → sequenceDiagram-FGHM5R23.BZm7EaoT.js} +1 -1
  114. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.DatP823_.js → stateDiagram-FHFEXIEX.DcR4f3X2.js} +1 -1
  115. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.Bb4oMe0P.js +1 -0
  116. package/dist/docs/assets/chunks/{theme.D5jbBys7.js → theme.DvfKzyXq.js} +2 -2
  117. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.DwQLI2be.js → timeline-definition-GMOUNBTQ.CgDh96vg.js} +1 -1
  118. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.a5yMfnsa.js → vennDiagram-DHZGUBPP.B4fagbC8.js} +1 -1
  119. package/dist/docs/assets/chunks/{wardley-RL74JXVD.B-FXivgT.js → wardley-RL74JXVD.Ck68omim.js} +1 -1
  120. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.Dz--Opy3.js → wardleyDiagram-NUSXRM2D.DBUg0bvz.js} +1 -1
  121. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.Dl8w8TeT.js → xychartDiagram-5P7HB3ND.DnKSGQE1.js} +1 -1
  122. package/dist/docs/assets/{guides_hooks.md.Bfj0pK91.js → guides_hooks.md.B2XfGX50.js} +7 -3
  123. package/dist/docs/assets/{guides_mcp-oauth.md.BM_eFC0L.js → guides_mcp-oauth.md.Cxq2TxBB.js} +3 -3
  124. package/dist/docs/assets/{guides_mcp-oauth.md.BM_eFC0L.lean.js → guides_mcp-oauth.md.Cxq2TxBB.lean.js} +1 -1
  125. package/dist/docs/assets/guides_opentelemetry.md.D4wO7_8v.js +37 -0
  126. package/dist/docs/assets/guides_opentelemetry.md.D4wO7_8v.lean.js +1 -0
  127. package/dist/docs/assets/{guides_slack.md.Bn-WupSE.js → guides_slack.md.ClIyi7FI.js} +8 -3
  128. package/dist/docs/assets/{guides_slack.md.Bn-WupSE.lean.js → guides_slack.md.ClIyi7FI.lean.js} +1 -1
  129. package/dist/docs/assets/{reference_agent-config.md.IplwL25I.js → reference_agent-config.md.CZrbHOfT.js} +8 -4
  130. package/dist/docs/assets/{reference_agent-config.md.IplwL25I.lean.js → reference_agent-config.md.CZrbHOfT.lean.js} +1 -1
  131. package/dist/docs/assets/{reference_channels.md.Bxaa020x.js → reference_channels.md.CNNIS6K7.js} +1 -1
  132. package/dist/docs/assets/{reference_hooks.md.B1jq3oGl.js → reference_hooks.md.CROr0QgC.js} +13 -7
  133. package/dist/docs/assets/{reference_hooks.md.B1jq3oGl.lean.js → reference_hooks.md.CROr0QgC.lean.js} +1 -1
  134. package/dist/docs/assets/{reference_schedules.md.03Ryy9ca.js → reference_schedules.md.BqWnJES4.js} +3 -3
  135. package/dist/docs/assets/reference_sessions.md.Bi6lHttM.js +22 -0
  136. package/dist/docs/assets/reference_sessions.md.Bi6lHttM.lean.js +1 -0
  137. package/dist/docs/assets/{reference_skills.md.C2GWh7g8.js → reference_skills.md.Ckddg6KX.js} +3 -3
  138. package/dist/docs/assets/{reference_tools.md.-6pypsWt.js → reference_tools.md.Bo0UfT0a.js} +1 -1
  139. package/dist/docs/assets/{style.nMsabY-V.css → style.B9o0luvp.css} +1 -1
  140. package/dist/docs/building-with-agents.html +37 -37
  141. package/dist/docs/changelog.html +60 -0
  142. package/dist/docs/changelog.md +114 -0
  143. package/dist/docs/deployment.html +37 -37
  144. package/dist/docs/evals.html +37 -37
  145. package/dist/docs/guides/agent-to-agent.html +37 -37
  146. package/dist/docs/guides/bitbucket.html +37 -37
  147. package/dist/docs/guides/cloud-agents.html +37 -37
  148. package/dist/docs/guides/convert-automation.html +37 -37
  149. package/dist/docs/guides/export-grokbot.html +37 -37
  150. package/dist/docs/guides/github.html +37 -37
  151. package/dist/docs/guides/gitlab.html +37 -37
  152. package/dist/docs/guides/grokbot-agents.html +37 -37
  153. package/dist/docs/guides/hooks.html +45 -41
  154. package/dist/docs/guides/hooks.md +7 -3
  155. package/dist/docs/guides/improve.html +37 -37
  156. package/dist/docs/guides/jev.html +37 -37
  157. package/dist/docs/guides/mcp-oauth.html +39 -39
  158. package/dist/docs/guides/mcp-oauth.md +12 -0
  159. package/dist/docs/guides/migrate.html +37 -37
  160. package/dist/docs/guides/opentelemetry.html +62 -70
  161. package/dist/docs/guides/opentelemetry.md +149 -179
  162. package/dist/docs/guides/pagerduty.html +37 -37
  163. package/dist/docs/guides/slack.html +44 -39
  164. package/dist/docs/guides/slack.md +41 -0
  165. package/dist/docs/guides/webhooks.html +37 -37
  166. package/dist/docs/hashmap.json +1 -1
  167. package/dist/docs/hillclimbing.html +37 -37
  168. package/dist/docs/index.html +37 -37
  169. package/dist/docs/llms-full.txt +422 -193
  170. package/dist/docs/llms.txt +2 -1
  171. package/dist/docs/quickstart.html +37 -37
  172. package/dist/docs/reference/agent-config.html +44 -40
  173. package/dist/docs/reference/agent-config.md +30 -1
  174. package/dist/docs/reference/artifacts.html +37 -37
  175. package/dist/docs/reference/channels.html +38 -38
  176. package/dist/docs/reference/channels.md +5 -1
  177. package/dist/docs/reference/cli.html +37 -37
  178. package/dist/docs/reference/connections.html +37 -37
  179. package/dist/docs/reference/evals.html +37 -37
  180. package/dist/docs/reference/extensions.html +37 -37
  181. package/dist/docs/reference/hooks.html +49 -43
  182. package/dist/docs/reference/hooks.md +10 -5
  183. package/dist/docs/reference/http-api.html +37 -37
  184. package/dist/docs/reference/instructions.html +37 -37
  185. package/dist/docs/reference/memory.html +37 -37
  186. package/dist/docs/reference/playground.html +36 -36
  187. package/dist/docs/reference/project-layout.html +37 -37
  188. package/dist/docs/reference/prompt.html +37 -37
  189. package/dist/docs/reference/schedules.html +40 -40
  190. package/dist/docs/reference/sessions.html +58 -37
  191. package/dist/docs/reference/sessions.md +46 -1
  192. package/dist/docs/reference/skills.html +40 -40
  193. package/dist/docs/reference/subagents.html +37 -37
  194. package/dist/docs/reference/tools.html +39 -39
  195. package/dist/docs/reference/tools.md +3 -3
  196. package/dist/docs/templates/agentic-owners.html +37 -37
  197. package/dist/docs/templates/grokbot-agents.html +37 -37
  198. package/dist/docs/templates/security-reviewer.html +37 -37
  199. package/dist/docs/templates/thermo-quality-review.html +37 -37
  200. package/dist/docs/templates/thermo-review.html +37 -37
  201. package/dist/docs/templates/triage.html +37 -37
  202. package/dist/docs/troubleshooting.html +36 -36
  203. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  204. package/dist/extensions/cursor-cloud-agents/extension.js +15 -15
  205. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +4 -1
  206. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
  207. package/dist/extensions/cursor-cloud-agents/lib/backend.js +2 -6
  208. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +1 -1
  209. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts +1 -1
  210. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts.map +1 -1
  211. package/dist/extensions/cursor-cloud-agents/lib/inputs.js +1 -1
  212. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +1 -1
  213. package/dist/extensions/cursor-cloud-agents/tools/launch.js +1 -1
  214. package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
  215. package/dist/extensions/cursor-cloud-agents/tools/reply.js +1 -1
  216. package/dist/extensions/cursor-grokbot-agents/extension.d.ts.map +1 -1
  217. package/dist/extensions/cursor-grokbot-agents/extension.js +7 -3
  218. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +1 -1
  219. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +1 -1
  220. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts +1 -1
  221. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts.map +1 -1
  222. package/dist/extensions/cursor-grokbot-agents/lib/inputs.js +1 -1
  223. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +1 -1
  224. package/dist/extensions/cursor-grokbot-agents/tools/check.js +1 -1
  225. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +1 -1
  226. package/dist/extensions/cursor-grokbot-agents/tools/list.js +1 -1
  227. package/dist/extensions/improve/extension.js +1 -1
  228. package/dist/extensions/jev/extension.js +2 -2
  229. package/dist/extensions/jev/tools/evaluate.js +3 -3
  230. package/dist/extensions/slack-communication/extension.js +1 -1
  231. package/dist/extensions/slack-communication/tools/delete-message.js +1 -1
  232. package/dist/extensions/slack-communication/tools/edit-message.d.ts.map +1 -1
  233. package/dist/extensions/slack-communication/tools/edit-message.js +3 -6
  234. package/dist/extensions/slack-communication/tools/post-card.js +1 -1
  235. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  236. package/dist/extensions/slack-communication/tools/post-update.d.ts.map +1 -1
  237. package/dist/extensions/slack-communication/tools/post-update.js +3 -6
  238. package/dist/extensions/slack-communication/tools/react.js +1 -1
  239. package/dist/extensions/slack-communication/tools/set-status.js +1 -1
  240. package/dist/extensions.d.ts +1 -1
  241. package/dist/extensions.js +1 -1
  242. package/dist/filesystem.d.ts +26 -5
  243. package/dist/filesystem.d.ts.map +1 -1
  244. package/dist/filesystem.js +91 -18
  245. package/dist/index.d.ts +14 -11
  246. package/dist/index.d.ts.map +1 -1
  247. package/dist/index.js +8 -4
  248. package/dist/internal/as-of.d.ts +2 -0
  249. package/dist/internal/as-of.d.ts.map +1 -1
  250. package/dist/internal/as-of.js +2 -0
  251. package/dist/internal/builtin-tools/reminders.js +1 -1
  252. package/dist/internal/cli-deploy.d.ts.map +1 -1
  253. package/dist/internal/cli-deploy.js +18 -10
  254. package/dist/internal/continuation.d.ts +3 -0
  255. package/dist/internal/continuation.d.ts.map +1 -0
  256. package/dist/internal/continuation.js +1 -0
  257. package/dist/internal/conversation-mirror.d.ts +5 -0
  258. package/dist/internal/conversation-mirror.d.ts.map +1 -1
  259. package/dist/internal/conversation-mirror.js +12 -1
  260. package/dist/internal/convert-automation/convert-workflow.js +1 -1
  261. package/dist/internal/convert-grokbot/answers.d.ts.map +1 -1
  262. package/dist/internal/convert-grokbot/answers.js +10 -8
  263. package/dist/internal/convert-grokbot/recipe.d.ts +1 -1
  264. package/dist/internal/convert-grokbot/recipe.d.ts.map +1 -1
  265. package/dist/internal/convert-grokbot/recipe.js +1 -1
  266. package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
  267. package/dist/internal/cursor/account-mcp.js +2 -0
  268. package/dist/internal/cursor/backend-client.d.ts +8 -3
  269. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  270. package/dist/internal/cursor/backend-client.js +8 -3
  271. package/dist/internal/cursor/credentials.d.ts +2 -2
  272. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  273. package/dist/internal/cursor/credentials.js +1 -1
  274. package/dist/internal/cursor-account-mcp-auth.d.ts +6 -2
  275. package/dist/internal/cursor-account-mcp-auth.d.ts.map +1 -1
  276. package/dist/internal/cursor-account-mcp-auth.js +15 -6
  277. package/dist/internal/deferred-channel-session.d.ts +5 -4
  278. package/dist/internal/deferred-channel-session.d.ts.map +1 -1
  279. package/dist/internal/deferred-channel-session.js +6 -4
  280. package/dist/internal/deploy-client.d.ts +5 -0
  281. package/dist/internal/deploy-client.d.ts.map +1 -1
  282. package/dist/internal/deploy-client.js +3 -3
  283. package/dist/internal/deploy-manifest.js +2 -2
  284. package/dist/internal/describe-error.d.ts +2 -0
  285. package/dist/internal/describe-error.d.ts.map +1 -1
  286. package/dist/internal/describe-error.js +2 -0
  287. package/dist/internal/discovery/agent.d.ts.map +1 -1
  288. package/dist/internal/discovery/agent.js +29 -9
  289. package/dist/internal/discovery/context.d.ts.map +1 -1
  290. package/dist/internal/discovery/context.js +1 -2
  291. package/dist/internal/discovery/cursor-plugin.js +8 -8
  292. package/dist/internal/discovery/extensions.js +15 -8
  293. package/dist/internal/discovery/info.d.ts +2 -2
  294. package/dist/internal/discovery/info.d.ts.map +1 -1
  295. package/dist/internal/discovery/info.js +6 -9
  296. package/dist/internal/discovery/instrumentation.d.ts +10 -0
  297. package/dist/internal/discovery/instrumentation.d.ts.map +1 -0
  298. package/dist/internal/discovery/instrumentation.js +29 -0
  299. package/dist/internal/discovery/modules.d.ts.map +1 -1
  300. package/dist/internal/discovery/modules.js +4 -4
  301. package/dist/internal/discovery/project-public.d.ts +16 -0
  302. package/dist/internal/discovery/project-public.d.ts.map +1 -0
  303. package/dist/internal/discovery/project-public.js +54 -0
  304. package/dist/internal/discovery/project.d.ts.map +1 -1
  305. package/dist/internal/discovery/project.js +13 -3
  306. package/dist/internal/discovery/services.d.ts +5 -4
  307. package/dist/internal/discovery/services.d.ts.map +1 -1
  308. package/dist/internal/discovery/services.js +12 -6
  309. package/dist/internal/docs-site.d.ts +2 -5
  310. package/dist/internal/docs-site.d.ts.map +1 -1
  311. package/dist/internal/docs-site.js +2 -5
  312. package/dist/internal/event-mapper.d.ts.map +1 -1
  313. package/dist/internal/event-mapper.js +1 -0
  314. package/dist/internal/factory-resource-channel.d.ts +1 -1
  315. package/dist/internal/factory-resource-channel.d.ts.map +1 -1
  316. package/dist/internal/filesystem/nearest.d.ts +1 -0
  317. package/dist/internal/filesystem/nearest.d.ts.map +1 -1
  318. package/dist/internal/filesystem/nearest.js +1 -0
  319. package/dist/internal/filesystem/tools.d.ts.map +1 -1
  320. package/dist/internal/filesystem/tools.js +1 -1
  321. package/dist/internal/handleAgentServeTrigger.d.ts +10 -0
  322. package/dist/internal/handleAgentServeTrigger.d.ts.map +1 -1
  323. package/dist/internal/handleAgentServeTrigger.js +3 -0
  324. package/dist/internal/hmac-secret-values.d.ts +1 -1
  325. package/dist/internal/hmac-secret-values.d.ts.map +1 -1
  326. package/dist/internal/host-otel.d.ts +1 -1
  327. package/dist/internal/host-otel.d.ts.map +1 -1
  328. package/dist/internal/host-otel.js +5 -0
  329. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  330. package/dist/internal/hosted-delivery.js +6 -2
  331. package/dist/internal/http-channel.d.ts.map +1 -1
  332. package/dist/internal/http-channel.js +1 -0
  333. package/dist/internal/ids.d.ts +8 -0
  334. package/dist/internal/ids.d.ts.map +1 -1
  335. package/dist/internal/ids.js +20 -0
  336. package/dist/internal/init-scaffold.js +1 -1
  337. package/dist/internal/interview/agent-questions.d.ts +1 -1
  338. package/dist/internal/interview/agent-questions.d.ts.map +1 -1
  339. package/dist/internal/interview/agent-questions.js +1 -1
  340. package/dist/internal/interview/question.d.ts +2 -2
  341. package/dist/internal/interview/question.d.ts.map +1 -1
  342. package/dist/internal/interview/question.js +2 -2
  343. package/dist/internal/json-schema.d.ts.map +1 -1
  344. package/dist/internal/json-schema.js +3 -7
  345. package/dist/internal/mcp-endpoint.d.ts +16 -4
  346. package/dist/internal/mcp-endpoint.d.ts.map +1 -1
  347. package/dist/internal/mcp-endpoint.js +18 -6
  348. package/dist/internal/mcp-host.d.ts +9 -0
  349. package/dist/internal/mcp-host.d.ts.map +1 -1
  350. package/dist/internal/mcp-host.js +15 -0
  351. package/dist/internal/otel/collector.d.ts +5 -0
  352. package/dist/internal/otel/collector.d.ts.map +1 -1
  353. package/dist/internal/otel/collector.js +24 -5
  354. package/dist/internal/otel/config.d.ts +31 -21
  355. package/dist/internal/otel/config.d.ts.map +1 -1
  356. package/dist/internal/otel/config.js +121 -140
  357. package/dist/internal/otel/conversation-span-processor.d.ts +9 -0
  358. package/dist/internal/otel/conversation-span-processor.d.ts.map +1 -0
  359. package/dist/internal/otel/conversation-span-processor.js +34 -0
  360. package/dist/internal/otel/customer.d.ts +52 -0
  361. package/dist/internal/otel/customer.d.ts.map +1 -0
  362. package/dist/internal/otel/customer.js +727 -0
  363. package/dist/internal/otel/runtime.d.ts +12 -16
  364. package/dist/internal/otel/runtime.d.ts.map +1 -1
  365. package/dist/internal/otel/runtime.js +30 -234
  366. package/dist/internal/otel-env.d.ts +6 -0
  367. package/dist/internal/otel-env.d.ts.map +1 -0
  368. package/dist/internal/otel-env.js +5 -0
  369. package/dist/internal/reminder-runner.d.ts +9 -4
  370. package/dist/internal/reminder-runner.d.ts.map +1 -1
  371. package/dist/internal/reminder-runner.js +12 -10
  372. package/dist/internal/reminder-schedule.d.ts +1 -0
  373. package/dist/internal/reminder-schedule.d.ts.map +1 -1
  374. package/dist/internal/reminder-schedule.js +1 -0
  375. package/dist/internal/sdk-runner.d.ts +8 -0
  376. package/dist/internal/sdk-runner.d.ts.map +1 -1
  377. package/dist/internal/sdk-runner.js +190 -14
  378. package/dist/internal/server.d.ts +4 -1
  379. package/dist/internal/server.d.ts.map +1 -1
  380. package/dist/internal/server.js +25 -24
  381. package/dist/internal/session-engine.d.ts +35 -3
  382. package/dist/internal/session-engine.d.ts.map +1 -1
  383. package/dist/internal/session-engine.js +213 -41
  384. package/dist/internal/slack-provision-client.js +1 -1
  385. package/dist/internal/store-api-protocol.d.ts +1 -1
  386. package/dist/internal/store-api-protocol.d.ts.map +1 -1
  387. package/dist/internal/store-api-protocol.js +1 -1
  388. package/dist/internal/update-check.d.ts +2 -2
  389. package/dist/internal/update-check.d.ts.map +1 -1
  390. package/dist/internal/update-check.js +3 -3
  391. package/dist/internal/workspace.d.ts +10 -0
  392. package/dist/internal/workspace.d.ts.map +1 -1
  393. package/dist/internal/workspace.js +47 -1
  394. package/dist/internal/zod3-datetime.d.ts +12 -0
  395. package/dist/internal/zod3-datetime.d.ts.map +1 -0
  396. package/dist/internal/zod3-datetime.js +17 -0
  397. package/dist/otel-public.d.ts +2 -3
  398. package/dist/otel-public.d.ts.map +1 -1
  399. package/dist/otel-public.js +2 -2
  400. package/dist/otel.d.ts +3 -102
  401. package/dist/otel.d.ts.map +1 -1
  402. package/dist/otel.js +61 -97
  403. package/dist/playground/assets/cursor-icons-16-DfKNljMZ.woff2 +0 -0
  404. package/dist/playground/assets/index-B3_YohwW.js +62 -0
  405. package/dist/playground/assets/index-Cn3-adsJ.css +1 -0
  406. package/dist/playground/index.html +2 -2
  407. package/dist/public-deprecated.d.ts +36 -0
  408. package/dist/public-deprecated.d.ts.map +1 -0
  409. package/dist/public-deprecated.js +39 -0
  410. package/dist/tools.d.ts +3 -3
  411. package/dist/tools.d.ts.map +1 -1
  412. package/dist/tools.js +1 -1
  413. package/dist/types.d.ts +262 -97
  414. package/dist/types.d.ts.map +1 -1
  415. package/docs/changelog.md +119 -0
  416. package/docs/guides/hooks.md +7 -3
  417. package/docs/guides/mcp-oauth.md +12 -0
  418. package/docs/guides/opentelemetry.md +149 -184
  419. package/docs/guides/slack.md +41 -0
  420. package/docs/reference/agent-config.md +30 -1
  421. package/docs/reference/channels.md +5 -1
  422. package/docs/reference/hooks.md +10 -5
  423. package/docs/reference/sessions.md +46 -1
  424. package/docs/reference/tools.md +3 -3
  425. package/package.json +35 -8
  426. package/schemas/grokbot-answers.schema.json +11 -0
  427. package/skills/framework-map/SKILL.md +2 -1
  428. package/skills/otel/SKILL.md +28 -48
  429. package/templates/code-wiki/evals/wiki.eval.ts +2 -2
  430. package/dist/docs/assets/chunks/@localSearchIndexroot.oGqZumnJ.js +0 -1
  431. package/dist/docs/assets/chunks/channel.Dt4aweTm.js +0 -1
  432. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.DGUHZs6j.js +0 -1
  433. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.DGUHZs6j.js +0 -1
  434. package/dist/docs/assets/chunks/clone.DWf3k0Z0.js +0 -1
  435. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.C0571l4D.js +0 -1
  436. package/dist/docs/assets/guides_opentelemetry.md.DBQtp7_V.js +0 -45
  437. package/dist/docs/assets/guides_opentelemetry.md.DBQtp7_V.lean.js +0 -1
  438. package/dist/docs/assets/reference_sessions.md.C8FXuGwk.js +0 -1
  439. package/dist/docs/assets/reference_sessions.md.C8FXuGwk.lean.js +0 -1
  440. package/dist/playground/assets/cursor-icons-16-DmHBTm1-.woff2 +0 -0
  441. package/dist/playground/assets/index-BdMwybMt.css +0 -1
  442. package/dist/playground/assets/index-CHk6O92d.js +0 -62
  443. package/templates/grokbot-agents/.gitignore +0 -4
  444. package/templates/security-help/.gitignore +0 -4
  445. /package/dist/docs/assets/{guides_hooks.md.Bfj0pK91.lean.js → guides_hooks.md.B2XfGX50.lean.js} +0 -0
  446. /package/dist/docs/assets/{reference_channels.md.Bxaa020x.lean.js → reference_channels.md.CNNIS6K7.lean.js} +0 -0
  447. /package/dist/docs/assets/{reference_schedules.md.03Ryy9ca.lean.js → reference_schedules.md.BqWnJES4.lean.js} +0 -0
  448. /package/dist/docs/assets/{reference_skills.md.C2GWh7g8.lean.js → reference_skills.md.Ckddg6KX.lean.js} +0 -0
  449. /package/dist/docs/assets/{reference_tools.md.-6pypsWt.lean.js → reference_tools.md.Bo0UfT0a.lean.js} +0 -0
@@ -6,54 +6,54 @@
6
6
  <title>Host MCP OAuth | Bot Development Kit (BDK)</title>
7
7
  <meta name="description" content="Authorize a private MCP server locally, constrain its tools, and choose where its credentials live.">
8
8
  <meta name="generator" content="VitePress v1.6.4">
9
- <link rel="preload stylesheet" href="/docs/assets/style.nMsabY-V.css" as="style">
9
+ <link rel="preload stylesheet" href="/docs/assets/style.B9o0luvp.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.BjS1QEI4.js"></script>
12
+ <script type="module" src="/docs/assets/app.wA5xBBcd.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
14
  <link rel="modulepreload" href="/docs/assets/chunks/framework.BNw1pucY.js">
15
- <link rel="modulepreload" href="/docs/assets/chunks/theme.D5jbBys7.js">
15
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.DvfKzyXq.js">
16
16
  <link rel="modulepreload" href="/docs/assets/chunks/katex.DkKDou_j.js">
17
- <link rel="modulepreload" href="/docs/assets/chunks/dagre-KV5264BT.zU7Lu_xJ.js">
18
- <link rel="modulepreload" href="/docs/assets/chunks/cose-bilkent-S5V4N54A.BNbGESzN.js">
19
- <link rel="modulepreload" href="/docs/assets/chunks/c4Diagram-AHTNJAMY.jXJ1q70M.js">
20
- <link rel="modulepreload" href="/docs/assets/chunks/flowDiagram-DWJPFMVM.jc9iWORD.js">
21
- <link rel="modulepreload" href="/docs/assets/chunks/erDiagram-SMLLAGMA.BkW7tGfs.js">
22
- <link rel="modulepreload" href="/docs/assets/chunks/gitGraphDiagram-UUTBAWPF.DFzrTSlJ.js">
23
- <link rel="modulepreload" href="/docs/assets/chunks/ganttDiagram-T4ZO3ILL.B-UQfd9E.js">
24
- <link rel="modulepreload" href="/docs/assets/chunks/infoDiagram-42DDH7IO.DwF0-c8L.js">
25
- <link rel="modulepreload" href="/docs/assets/chunks/pieDiagram-DEJITSTG.nmB309G1.js">
26
- <link rel="modulepreload" href="/docs/assets/chunks/quadrantDiagram-34T5L4WZ.D1HtZR3C.js">
27
- <link rel="modulepreload" href="/docs/assets/chunks/xychartDiagram-5P7HB3ND.Dl8w8TeT.js">
28
- <link rel="modulepreload" href="/docs/assets/chunks/requirementDiagram-MS252O5E.CZgQWob-.js">
29
- <link rel="modulepreload" href="/docs/assets/chunks/sequenceDiagram-FGHM5R23.Cld4gDSt.js">
30
- <link rel="modulepreload" href="/docs/assets/chunks/classDiagram-6PBFFD2Q.DGUHZs6j.js">
31
- <link rel="modulepreload" href="/docs/assets/chunks/classDiagram-v2-HSJHXN6E.DGUHZs6j.js">
32
- <link rel="modulepreload" href="/docs/assets/chunks/stateDiagram-FHFEXIEX.DatP823_.js">
33
- <link rel="modulepreload" href="/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.C0571l4D.js">
34
- <link rel="modulepreload" href="/docs/assets/chunks/journeyDiagram-VCZTEJTY.CM8gDVJy.js">
35
- <link rel="modulepreload" href="/docs/assets/chunks/timeline-definition-GMOUNBTQ.DwQLI2be.js">
36
- <link rel="modulepreload" href="/docs/assets/chunks/mindmap-definition-QFDTVHPH.D4QM_voR.js">
37
- <link rel="modulepreload" href="/docs/assets/chunks/kanban-definition-6JOO6SKY.YiD1p0LB.js">
38
- <link rel="modulepreload" href="/docs/assets/chunks/sankeyDiagram-XADWPNL6.DtiBfU-P.js">
39
- <link rel="modulepreload" href="/docs/assets/chunks/diagram-TYMM5635.J489G0Nd.js">
40
- <link rel="modulepreload" href="/docs/assets/chunks/diagram-MMDJMWI5.CW7MvMlE.js">
41
- <link rel="modulepreload" href="/docs/assets/chunks/blockDiagram-DXYQGD6D.BVLV_voZ.js">
42
- <link rel="modulepreload" href="/docs/assets/chunks/diagram-5BDNPKRD.B9qOdE5h.js">
43
- <link rel="modulepreload" href="/docs/assets/chunks/architectureDiagram-Q4EWVU46.Dtb6Dqh6.js">
44
- <link rel="modulepreload" href="/docs/assets/chunks/ishikawaDiagram-UXIWVN3A.fBaTqzE7.js">
45
- <link rel="modulepreload" href="/docs/assets/chunks/vennDiagram-DHZGUBPP.a5yMfnsa.js">
46
- <link rel="modulepreload" href="/docs/assets/chunks/diagram-G4DWMVQ6.D8X-sf77.js">
47
- <link rel="modulepreload" href="/docs/assets/chunks/wardleyDiagram-NUSXRM2D.Dz--Opy3.js">
17
+ <link rel="modulepreload" href="/docs/assets/chunks/dagre-KV5264BT.BBXxGEaD.js">
18
+ <link rel="modulepreload" href="/docs/assets/chunks/cose-bilkent-S5V4N54A.DGpAcJ55.js">
19
+ <link rel="modulepreload" href="/docs/assets/chunks/c4Diagram-AHTNJAMY.DfkDHeB9.js">
20
+ <link rel="modulepreload" href="/docs/assets/chunks/flowDiagram-DWJPFMVM.M81hXIXZ.js">
21
+ <link rel="modulepreload" href="/docs/assets/chunks/erDiagram-SMLLAGMA.B3bTCW_e.js">
22
+ <link rel="modulepreload" href="/docs/assets/chunks/gitGraphDiagram-UUTBAWPF.CLEMZgO3.js">
23
+ <link rel="modulepreload" href="/docs/assets/chunks/ganttDiagram-T4ZO3ILL.BKg7WY--.js">
24
+ <link rel="modulepreload" href="/docs/assets/chunks/infoDiagram-42DDH7IO.BTiWTi82.js">
25
+ <link rel="modulepreload" href="/docs/assets/chunks/pieDiagram-DEJITSTG.Cba8e8lS.js">
26
+ <link rel="modulepreload" href="/docs/assets/chunks/quadrantDiagram-34T5L4WZ.2YjBycHF.js">
27
+ <link rel="modulepreload" href="/docs/assets/chunks/xychartDiagram-5P7HB3ND.DnKSGQE1.js">
28
+ <link rel="modulepreload" href="/docs/assets/chunks/requirementDiagram-MS252O5E.D4P5RqVI.js">
29
+ <link rel="modulepreload" href="/docs/assets/chunks/sequenceDiagram-FGHM5R23.BZm7EaoT.js">
30
+ <link rel="modulepreload" href="/docs/assets/chunks/classDiagram-6PBFFD2Q.DqByliAC.js">
31
+ <link rel="modulepreload" href="/docs/assets/chunks/classDiagram-v2-HSJHXN6E.DqByliAC.js">
32
+ <link rel="modulepreload" href="/docs/assets/chunks/stateDiagram-FHFEXIEX.DcR4f3X2.js">
33
+ <link rel="modulepreload" href="/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.Bb4oMe0P.js">
34
+ <link rel="modulepreload" href="/docs/assets/chunks/journeyDiagram-VCZTEJTY.0lQNZ40U.js">
35
+ <link rel="modulepreload" href="/docs/assets/chunks/timeline-definition-GMOUNBTQ.CgDh96vg.js">
36
+ <link rel="modulepreload" href="/docs/assets/chunks/mindmap-definition-QFDTVHPH.B56nGoB_.js">
37
+ <link rel="modulepreload" href="/docs/assets/chunks/kanban-definition-6JOO6SKY.L5sKlf7X.js">
38
+ <link rel="modulepreload" href="/docs/assets/chunks/sankeyDiagram-XADWPNL6.C0Hn8NUm.js">
39
+ <link rel="modulepreload" href="/docs/assets/chunks/diagram-TYMM5635.YIsbRH20.js">
40
+ <link rel="modulepreload" href="/docs/assets/chunks/diagram-MMDJMWI5.aHh4WGg9.js">
41
+ <link rel="modulepreload" href="/docs/assets/chunks/blockDiagram-DXYQGD6D.BrXMZRtK.js">
42
+ <link rel="modulepreload" href="/docs/assets/chunks/diagram-5BDNPKRD.EKqOwmK2.js">
43
+ <link rel="modulepreload" href="/docs/assets/chunks/architectureDiagram-Q4EWVU46.MfG0itQh.js">
44
+ <link rel="modulepreload" href="/docs/assets/chunks/ishikawaDiagram-UXIWVN3A.DcqY_KQL.js">
45
+ <link rel="modulepreload" href="/docs/assets/chunks/vennDiagram-DHZGUBPP.B4fagbC8.js">
46
+ <link rel="modulepreload" href="/docs/assets/chunks/diagram-G4DWMVQ6.CB8pdkoZ.js">
47
+ <link rel="modulepreload" href="/docs/assets/chunks/wardleyDiagram-NUSXRM2D.DBUg0bvz.js">
48
48
  <link rel="modulepreload" href="/docs/assets/chunks/virtual_mermaid-config.DDnGl6nM.js">
49
- <link rel="modulepreload" href="/docs/assets/guides_mcp-oauth.md.BM_eFC0L.lean.js">
49
+ <link rel="modulepreload" href="/docs/assets/guides_mcp-oauth.md.Cxq2TxBB.lean.js">
50
50
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
51
51
  <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
52
52
  <link rel="alternate" type="text/plain" href="/docs/llms.txt">
53
53
  <link rel="alternate" type="text/markdown" href="/docs/guides/mcp-oauth.md">
54
54
  </head>
55
55
  <body>
56
- <div id="app"><div class="Layout" data-v-f430d453><!--[--><!--]--><!--[--><span tabindex="-1" data-v-680db83d></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-680db83d>Skip to content</a><!--]--><!----><header class="VPNav" data-v-f430d453 data-v-ac9780a6><div class="VPNavBar" data-v-ac9780a6 data-v-dabff950><div class="wrapper" data-v-dabff950><div class="container" data-v-dabff950><div class="title" data-v-dabff950><div class="VPNavBarTitle has-sidebar" data-v-dabff950 data-v-1fdc3e33><a class="title" href="/docs/" data-v-1fdc3e33><!--[--><!--]--><!----><span data-v-1fdc3e33>Bot Development Kit (BDK)</span><!--[--><!--[--><!--[--><!--[--><span class="bdk-version" title="BDK 0.2.25 (@cursor/bdk package)" data-v-d89e5038>0.2.25</span><!--]--><!--]--><!--]--><!--]--></a></div></div><div class="content" data-v-dabff950><div class="content-body" data-v-dabff950><!--[--><!--]--><div class="VPNavBarSearch search" data-v-dabff950><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-dabff950 data-v-eea646b1><span id="main-nav-aria-label" class="visually-hidden" data-v-eea646b1> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/quickstart.html" tabindex="0" data-v-eea646b1 data-v-356b6b19><!--[--><span data-v-356b6b19>Quickstart</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/docs/guides/mcp-oauth.html" tabindex="0" data-v-eea646b1 data-v-356b6b19><!--[--><span data-v-356b6b19>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/guides/github.html" tabindex="0" data-v-eea646b1 data-v-356b6b19><!--[--><span data-v-356b6b19>Integrations</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/templates/security-reviewer.html" tabindex="0" data-v-eea646b1 data-v-356b6b19><!--[--><span data-v-356b6b19>Templates</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/reference/project-layout.html" tabindex="0" data-v-eea646b1 data-v-356b6b19><!--[--><span data-v-356b6b19>Reference</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-dabff950 data-v-bc95e225><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-bc95e225 data-v-d980e0ed data-v-18f4a150><span class="check" data-v-18f4a150><span class="icon" data-v-18f4a150><!--[--><span class="vpi-sun sun" data-v-d980e0ed></span><span class="vpi-moon moon" data-v-d980e0ed></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-dabff950 data-v-f342cad0 data-v-c62f596b><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-c62f596b><span class="vpi-more-horizontal icon" data-v-c62f596b></span></button><div class="menu" data-v-c62f596b><div class="VPMenu" data-v-c62f596b data-v-9eccc516><!----><!--[--><!--[--><!----><div class="group" data-v-f342cad0><div class="item appearance" data-v-f342cad0><p class="label" data-v-f342cad0>Appearance</p><div class="appearance-action" data-v-f342cad0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-f342cad0 data-v-d980e0ed data-v-18f4a150><span class="check" data-v-18f4a150><span class="icon" data-v-18f4a150><!--[--><span class="vpi-sun sun" data-v-d980e0ed></span><span class="vpi-moon moon" data-v-d980e0ed></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-dabff950 data-v-06592ead><span class="container" data-v-06592ead><span class="top" data-v-06592ead></span><span class="middle" data-v-06592ead></span><span class="bottom" data-v-06592ead></span></span></button></div></div></div></div><div class="divider" data-v-dabff950><div class="divider-line" data-v-dabff950></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-f430d453 data-v-2bfb3d4b><div class="container" data-v-2bfb3d4b><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-2bfb3d4b><span class="vpi-align-left menu-icon" data-v-2bfb3d4b></span><span class="menu-text" data-v-2bfb3d4b>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-2bfb3d4b data-v-993d5022><button data-v-993d5022>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-f430d453 data-v-4d843d7b><div class="curtain" data-v-4d843d7b></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4d843d7b><span class="visually-hidden" id="sidebar-aria-label" data-v-4d843d7b> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-1c552b11><section class="VPSidebarItem level-0" data-v-1c552b11 data-v-1cdea42a><div class="item" role="button" tabindex="0" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><h2 class="text" data-v-1cdea42a>Getting started</h2><!----></div><div class="items" data-v-1cdea42a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/quickstart.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Building your first agent</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-1c552b11><section class="VPSidebarItem level-0 collapsible" data-v-1c552b11 data-v-1cdea42a><div class="item" role="button" tabindex="0" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><h2 class="text" data-v-1cdea42a>Integrations</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-1cdea42a><span class="vpi-chevron-right caret-icon" data-v-1cdea42a></span></div></div><div class="items" data-v-1cdea42a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/github.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>GitHub</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/slack.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Slack</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/webhooks.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Webhooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/convert-automation.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Cursor Automations</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/opentelemetry.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>OpenTelemetry</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/gitlab.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>GitLab</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/bitbucket.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Bitbucket</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/pagerduty.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>PagerDuty</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-1c552b11><section class="VPSidebarItem level-0 collapsible" data-v-1c552b11 data-v-1cdea42a><div class="item" role="button" tabindex="0" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><h2 class="text" data-v-1cdea42a>Extensions</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-1cdea42a><span class="vpi-chevron-right caret-icon" data-v-1cdea42a></span></div></div><div class="items" data-v-1cdea42a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/extensions.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/cloud-agents.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Cloud agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/grokbot-agents.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Grok Bot agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/improve.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Self-improvement</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/jev.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Jev</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-1c552b11><section class="VPSidebarItem level-0 collapsible has-active" data-v-1c552b11 data-v-1cdea42a><div class="item" role="button" tabindex="0" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><h2 class="text" data-v-1cdea42a>Guides</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-1cdea42a><span class="vpi-chevron-right caret-icon" data-v-1cdea42a></span></div></div><div class="items" data-v-1cdea42a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/mcp-oauth.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>MCP</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/hooks.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/agent-to-agent.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Peer agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/deployment.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/export-grokbot.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Export a Grok Bot</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/migrate.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Early-alpha migration</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/evals.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/hillclimbing.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Hillclimbing</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/building-with-agents.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Build with a coding agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/troubleshooting.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Troubleshooting</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-1c552b11><section class="VPSidebarItem level-0 collapsible" data-v-1c552b11 data-v-1cdea42a><div class="item" role="button" tabindex="0" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><h2 class="text" data-v-1cdea42a>Templates</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-1cdea42a><span class="vpi-chevron-right caret-icon" data-v-1cdea42a></span></div></div><div class="items" data-v-1cdea42a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/templates/grokbot-agents.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Grok Bot agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/templates/security-reviewer.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Security reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/templates/thermo-review.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Thermo review</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/templates/thermo-quality-review.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Thermo quality review</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/templates/agentic-owners.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Agentic Approver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/templates/triage.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Triage agent</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-1c552b11><section class="VPSidebarItem level-0 collapsible" data-v-1c552b11 data-v-1cdea42a><div class="item" role="button" tabindex="0" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><h2 class="text" data-v-1cdea42a>Reference</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-1cdea42a><span class="vpi-chevron-right caret-icon" data-v-1cdea42a></span></div></div><div class="items" data-v-1cdea42a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/project-layout.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Project layout</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/agent-config.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Agent config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/instructions.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Instructions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/tools.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Tools</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/prompt.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>prompt</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/skills.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/connections.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>MCP Connections</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/subagents.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Subagents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/channels.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/schedules.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Schedules & reminders</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/hooks.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/memory.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Memory</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/evals.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/artifacts.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Artifacts</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/sessions.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Sessions & streaming</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/playground.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Playground</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/cli.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>CLI</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/http-api.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>HTTP API</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-f430d453 data-v-44f169b4><div class="VPDoc has-sidebar has-aside" data-v-44f169b4 data-v-2c214b72><!--[--><!--]--><div class="container" data-v-2c214b72><div class="aside" data-v-2c214b72><div class="aside-curtain" data-v-2c214b72></div><div class="aside-container" data-v-2c214b72><div class="aside-content" data-v-2c214b72><div class="VPDocAside" data-v-2c214b72 data-v-b6955c51><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-b6955c51 data-v-46e03482><div class="content" data-v-46e03482><div class="outline-marker" data-v-46e03482></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-46e03482>On this page</div><ul class="VPDocOutlineItem root" data-v-46e03482 data-v-1b25c5bc><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-b6955c51></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-2c214b72><div class="content-container" data-v-2c214b72><!--[--><!--]--><main class="main" data-v-2c214b72><div style="position:relative;" class="vp-doc _docs_guides_mcp-oauth" data-v-2c214b72><div><h1 id="connect-a-private-mcp-server-with-oauth" tabindex="-1">Connect a private MCP server with OAuth <a class="header-anchor" href="#connect-a-private-mcp-server-with-oauth" aria-label="Permalink to &quot;Connect a private MCP server with OAuth&quot;">​</a></h1><p>Host MCP OAuth lets a BDK process authorize a remote MCP server without putting tokens in the agent&#39;s source or workspace. Use it when the server speaks OAuth and its credentials should belong to the serve host instead of a person&#39;s Cursor account.</p><h2 id="use-a-private-mcp-tool-locally" tabindex="-1">Use a private MCP tool locally <a class="header-anchor" href="#use-a-private-mcp-tool-locally" aria-label="Permalink to &quot;Use a private MCP tool locally&quot;">​</a></h2><p>Declare the remote server, authorize it once in the browser, and start the agent. The next local turn can call the server&#39;s named tools with the credentials stored on that host.</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// bot/mcp-connections/inventory.ts</span></span>
56
+ <div id="app"><div class="Layout" data-v-738a160a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-a98c2453></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-a98c2453>Skip to content</a><!--]--><!----><header class="VPNav" data-v-738a160a data-v-76ad4059><div class="VPNavBar" data-v-76ad4059 data-v-6fc2afcb><div class="wrapper" data-v-6fc2afcb><div class="container" data-v-6fc2afcb><div class="title" data-v-6fc2afcb><div class="VPNavBarTitle has-sidebar" data-v-6fc2afcb data-v-9e6caa3f><a class="title" href="/docs/" data-v-9e6caa3f><!--[--><!--]--><!----><span data-v-9e6caa3f>Bot Development Kit (BDK)</span><!--[--><!--[--><!--[--><!--[--><span class="bdk-version" title="BDK 0.2.27 (@cursor/bdk package)" data-v-d89e5038>0.2.27</span><!--]--><!--]--><!--]--><!--]--></a></div></div><div class="content" data-v-6fc2afcb><div class="content-body" data-v-6fc2afcb><!--[--><!--]--><div class="VPNavBarSearch search" data-v-6fc2afcb><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-6fc2afcb data-v-78f72f99><span id="main-nav-aria-label" class="visually-hidden" data-v-78f72f99> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/quickstart.html" tabindex="0" data-v-78f72f99 data-v-a7790978><!--[--><span data-v-a7790978>Quickstart</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/docs/guides/mcp-oauth.html" tabindex="0" data-v-78f72f99 data-v-a7790978><!--[--><span data-v-a7790978>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/guides/github.html" tabindex="0" data-v-78f72f99 data-v-a7790978><!--[--><span data-v-a7790978>Integrations</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/templates/security-reviewer.html" tabindex="0" data-v-78f72f99 data-v-a7790978><!--[--><span data-v-a7790978>Templates</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/reference/project-layout.html" tabindex="0" data-v-78f72f99 data-v-a7790978><!--[--><span data-v-a7790978>Reference</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-6fc2afcb data-v-bf7c3d0f><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-bf7c3d0f data-v-e9e166e4 data-v-74f7b0ff><span class="check" data-v-74f7b0ff><span class="icon" data-v-74f7b0ff><!--[--><span class="vpi-sun sun" data-v-e9e166e4></span><span class="vpi-moon moon" data-v-e9e166e4></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-6fc2afcb data-v-799c9281 data-v-070c9767><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-070c9767><span class="vpi-more-horizontal icon" data-v-070c9767></span></button><div class="menu" data-v-070c9767><div class="VPMenu" data-v-070c9767 data-v-c05d27ee><!----><!--[--><!--[--><!----><div class="group" data-v-799c9281><div class="item appearance" data-v-799c9281><p class="label" data-v-799c9281>Appearance</p><div class="appearance-action" data-v-799c9281><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-799c9281 data-v-e9e166e4 data-v-74f7b0ff><span class="check" data-v-74f7b0ff><span class="icon" data-v-74f7b0ff><!--[--><span class="vpi-sun sun" data-v-e9e166e4></span><span class="vpi-moon moon" data-v-e9e166e4></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-6fc2afcb data-v-2caaf84e><span class="container" data-v-2caaf84e><span class="top" data-v-2caaf84e></span><span class="middle" data-v-2caaf84e></span><span class="bottom" data-v-2caaf84e></span></span></button></div></div></div></div><div class="divider" data-v-6fc2afcb><div class="divider-line" data-v-6fc2afcb></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-738a160a data-v-e0cbfd80><div class="container" data-v-e0cbfd80><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-e0cbfd80><span class="vpi-align-left menu-icon" data-v-e0cbfd80></span><span class="menu-text" data-v-e0cbfd80>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-e0cbfd80 data-v-36e0b8e9><button data-v-36e0b8e9>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-738a160a data-v-2859715e><div class="curtain" data-v-2859715e></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-2859715e><span class="visually-hidden" id="sidebar-aria-label" data-v-2859715e> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-8ed949fd><section class="VPSidebarItem level-0" data-v-8ed949fd data-v-84325fb7><div class="item" role="button" tabindex="0" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><h2 class="text" data-v-84325fb7>Getting started</h2><!----></div><div class="items" data-v-84325fb7><!--[--><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/changelog.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Changelog</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/quickstart.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Building your first agent</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-8ed949fd><section class="VPSidebarItem level-0 collapsible" data-v-8ed949fd data-v-84325fb7><div class="item" role="button" tabindex="0" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><h2 class="text" data-v-84325fb7>Integrations</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-84325fb7><span class="vpi-chevron-right caret-icon" data-v-84325fb7></span></div></div><div class="items" data-v-84325fb7><!--[--><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/github.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>GitHub</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/slack.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Slack</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/webhooks.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Webhooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/convert-automation.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Cursor Automations</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/opentelemetry.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>OpenTelemetry</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/gitlab.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>GitLab</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/bitbucket.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Bitbucket</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/pagerduty.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>PagerDuty</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-8ed949fd><section class="VPSidebarItem level-0 collapsible" data-v-8ed949fd data-v-84325fb7><div class="item" role="button" tabindex="0" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><h2 class="text" data-v-84325fb7>Extensions</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-84325fb7><span class="vpi-chevron-right caret-icon" data-v-84325fb7></span></div></div><div class="items" data-v-84325fb7><!--[--><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/extensions.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/cloud-agents.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Cloud agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/grokbot-agents.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Grok Bot agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/improve.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Self-improvement</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/jev.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Jev</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-8ed949fd><section class="VPSidebarItem level-0 collapsible has-active" data-v-8ed949fd data-v-84325fb7><div class="item" role="button" tabindex="0" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><h2 class="text" data-v-84325fb7>Guides</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-84325fb7><span class="vpi-chevron-right caret-icon" data-v-84325fb7></span></div></div><div class="items" data-v-84325fb7><!--[--><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/mcp-oauth.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>MCP</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/hooks.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/agent-to-agent.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Peer agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/deployment.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/export-grokbot.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Export a Grok Bot</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/guides/migrate.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Early-alpha migration</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/evals.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/hillclimbing.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Hillclimbing</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/building-with-agents.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Build with a coding agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/troubleshooting.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Troubleshooting</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-8ed949fd><section class="VPSidebarItem level-0 collapsible" data-v-8ed949fd data-v-84325fb7><div class="item" role="button" tabindex="0" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><h2 class="text" data-v-84325fb7>Templates</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-84325fb7><span class="vpi-chevron-right caret-icon" data-v-84325fb7></span></div></div><div class="items" data-v-84325fb7><!--[--><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/templates/grokbot-agents.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Grok Bot agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/templates/security-reviewer.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Security reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/templates/thermo-review.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Thermo review</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/templates/thermo-quality-review.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Thermo quality review</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/templates/agentic-owners.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Agentic Approver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/templates/triage.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Triage agent</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-8ed949fd><section class="VPSidebarItem level-0 collapsible" data-v-8ed949fd data-v-84325fb7><div class="item" role="button" tabindex="0" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><h2 class="text" data-v-84325fb7>Reference</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-84325fb7><span class="vpi-chevron-right caret-icon" data-v-84325fb7></span></div></div><div class="items" data-v-84325fb7><!--[--><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/project-layout.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Project layout</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/agent-config.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Agent config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/instructions.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Instructions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/tools.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Tools</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/prompt.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>prompt</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/skills.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/connections.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>MCP Connections</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/subagents.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Subagents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/channels.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/schedules.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Schedules & reminders</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/hooks.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/memory.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Memory</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/evals.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/artifacts.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Artifacts</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/sessions.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Sessions & streaming</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/playground.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>Playground</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/cli.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>CLI</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-84325fb7><div class="item" data-v-84325fb7><div class="indicator" data-v-84325fb7></div><a class="VPLink link link" href="/docs/reference/http-api.html" data-v-84325fb7><!--[--><p class="text" data-v-84325fb7>HTTP API</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-738a160a data-v-9f462cdf><div class="VPDoc has-sidebar has-aside" data-v-9f462cdf data-v-995f90b4><!--[--><!--]--><div class="container" data-v-995f90b4><div class="aside" data-v-995f90b4><div class="aside-curtain" data-v-995f90b4></div><div class="aside-container" data-v-995f90b4><div class="aside-content" data-v-995f90b4><div class="VPDocAside" data-v-995f90b4 data-v-10889960><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-10889960 data-v-afb61a88><div class="content" data-v-afb61a88><div class="outline-marker" data-v-afb61a88></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-afb61a88>On this page</div><ul class="VPDocOutlineItem root" data-v-afb61a88 data-v-0587367d><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-10889960></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-995f90b4><div class="content-container" data-v-995f90b4><!--[--><!--]--><main class="main" data-v-995f90b4><div style="position:relative;" class="vp-doc _docs_guides_mcp-oauth" data-v-995f90b4><div><h1 id="connect-a-private-mcp-server-with-oauth" tabindex="-1">Connect a private MCP server with OAuth <a class="header-anchor" href="#connect-a-private-mcp-server-with-oauth" aria-label="Permalink to &quot;Connect a private MCP server with OAuth&quot;">​</a></h1><p>Host MCP OAuth lets a BDK process authorize a remote MCP server without putting tokens in the agent&#39;s source or workspace. Use it when the server speaks OAuth and its credentials should belong to the serve host instead of a person&#39;s Cursor account.</p><h2 id="use-a-private-mcp-tool-locally" tabindex="-1">Use a private MCP tool locally <a class="header-anchor" href="#use-a-private-mcp-tool-locally" aria-label="Permalink to &quot;Use a private MCP tool locally&quot;">​</a></h2><p>Declare the remote server, authorize it once in the browser, and start the agent. The next local turn can call the server&#39;s named tools with the credentials stored on that host.</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// bot/mcp-connections/inventory.ts</span></span>
57
57
  <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { defineConnection } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;@cursor/bdk/connections&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
58
58
  <span class="line"></span>
59
59
  <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> defineConnection</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
@@ -62,7 +62,7 @@
62
62
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> advertiseTools: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
63
63
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span></code></pre></div><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>bdk mcp oauth inventory</span></span>
64
64
  <span class="line"><span>bdk run --dir . \</span></span>
65
- <span class="line"><span> --message &quot;Which east-coast warehouse has SKU-142 in stock?&quot;</span></span></code></pre></div><p>The filename is the connection name used by the CLI and <code>ctx.host.mcp</code>. Changing the server URL invalidates its saved authorization, so run <code>mcp oauth</code> again after moving the endpoint.</p><h2 id="connect-on-first-use" tabindex="-1">Connect on first use <a class="header-anchor" href="#connect-on-first-use" aria-label="Permalink to &quot;Connect on first use&quot;">​</a></h2><p>You can also let the first unauthenticated call ask for authorization. The turn parks and the playground shows <strong>Connect</strong>. Finish the browser flow, return to the playground, and confirm <strong>Connected</strong>; the same call retries and the turn continues without restarting the agent.</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>bdk serve --dir . --dev</span></span></code></pre></div><p>Connect authorizes the process that is running now.</p><h2 id="keep-privileged-tools-behind-a-wrapper" tabindex="-1">Keep privileged tools behind a wrapper <a class="header-anchor" href="#keep-privileged-tools-behind-a-wrapper" aria-label="Permalink to &quot;Keep privileged tools behind a wrapper&quot;">​</a></h2><p>Put a connection under <code>bot/host-connections/</code> when the model should not receive the MCP server&#39;s tools directly. A server tool can expose one constrained operation while <code>ctx.host.mcp</code> keeps the broader server on the host.</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// bot/host-connections/inventory.ts</span></span>
65
+ <span class="line"><span> --message &quot;Which east-coast warehouse has SKU-142 in stock?&quot;</span></span></code></pre></div><p>The filename is the connection name used by the CLI and <code>ctx.host.mcp</code>. Changing the server URL invalidates its saved authorization, so run <code>mcp oauth</code> again after moving the endpoint.</p><h2 id="connect-on-first-use" tabindex="-1">Connect on first use <a class="header-anchor" href="#connect-on-first-use" aria-label="Permalink to &quot;Connect on first use&quot;">​</a></h2><p>You can also let the first unauthenticated call ask for authorization. The turn parks and the playground shows <strong>Connect</strong>. Finish the browser flow, return to the playground, and confirm <strong>Connected</strong>; the same call retries and the turn continues without restarting the agent.</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>bdk serve --dir . --dev</span></span></code></pre></div><p>Connect authorizes the process that is running now.</p><p>A turn waits for Connect only when a person can click it:</p><ul><li>A playground or HTTP chat turn.</li><li>A Slack message, when the channel shows Connect. <code>slackChannel({ toolApprovals: true })</code> shows Connect, and so does <code>buildToolApprovalEvents</code> in <code>events</code>.</li></ul><p>The wait stops after 10 minutes, or when the turn is interrupted. Other turns do not wait. These are schedules, reminders, webhooks, evals, and Slack channels without Connect. A required connection fails the call with <code>Reconnect &lt;connection&gt;</code>. An <code>optional</code> connection is skipped, also in the playground. Authorize those connections ahead of time with <code>mcp oauth</code>.</p><h2 id="keep-privileged-tools-behind-a-wrapper" tabindex="-1">Keep privileged tools behind a wrapper <a class="header-anchor" href="#keep-privileged-tools-behind-a-wrapper" aria-label="Permalink to &quot;Keep privileged tools behind a wrapper&quot;">​</a></h2><p>Put a connection under <code>bot/host-connections/</code> when the model should not receive the MCP server&#39;s tools directly. A server tool can expose one constrained operation while <code>ctx.host.mcp</code> keeps the broader server on the host.</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// bot/host-connections/inventory.ts</span></span>
66
66
  <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { defineConnection } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;@cursor/bdk/connections&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
67
67
  <span class="line"></span>
68
68
  <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> defineConnection</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
@@ -90,8 +90,8 @@
90
90
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> stock: result.structuredContent </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">??</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
91
91
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> };</span></span>
92
92
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
93
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span></code></pre></div><p>The model sees <code>get_stock</code>, not the unrestricted inventory server. Use this shape when code should own an allowlist or another side-effect gate.</p><h2 id="use-an-oauth-server-from-a-hosted-agent" tabindex="-1">Use an OAuth server from a hosted agent <a class="header-anchor" href="#use-an-oauth-server-from-a-hosted-agent" aria-label="Permalink to &quot;Use an OAuth server from a hosted agent&quot;">​</a></h2><p>Tokens from <code>mcp oauth</code> stay in the CLI config directory of the machine that authorized them, so a hosted deployment doesn&#39;t receive them. For a Cursor-managed agent, add the server under MCP in the Cursor dashboard, reach it through a <a href="./../reference/connections.html#cursor-account-mcp-connection"><code>cursorAccount: true</code> connection</a>, and connect it from <strong>Deployed Agents</strong> in the <a href="https://cursor.com/dashboard" target="_blank" rel="noreferrer">dashboard</a>.</p><p>Anyone able to use that agent can reach the MCP capabilities you expose, so narrow the connection&#39;s <code>servers</code> list and keep privileged operations behind a host-side wrapper.</p><h2 id="choose-where-credentials-live" tabindex="-1">Choose where credentials live <a class="header-anchor" href="#choose-where-credentials-live" aria-label="Permalink to &quot;Choose where credentials live&quot;">​</a></h2><p>Use the credential shape that matches who should own access:</p><ul><li><p>Choose <code>cursorAccount: true</code> for connectors already authorized under MCP in the Cursor dashboard. Their tokens stay on the Cursor backend.</p></li><li><p>Choose <code>url</code> with <code>oauth: true</code> when the machine running <code>bdk serve</code> should hold OAuth credentials.</p></li><li><p>Choose <code>url</code> with static <code>headers</code> when the server uses an API key or bearer token instead of OAuth.</p></li></ul><p>Host OAuth and per-session <code>auth</code> are different identity models and cannot be combined on one connection. Use per-session auth when each caller needs a different downstream identity.</p><h2 id="related" tabindex="-1">Related <a class="header-anchor" href="#related" aria-label="Permalink to &quot;Related&quot;">​</a></h2><ul><li><a href="./../../skills/mcp-auth/SKILL.html"><code>skills/mcp-auth/SKILL.md</code></a>: the companion setup procedure for coding agents</li><li><a href="./../reference/connections.html">MCP connections</a>: transports, account connectors, per-session auth, and tool filtering</li><li><a href="./../reference/cli.html#mcp-oauth">CLI reference</a>: OAuth command flags and browser callback behavior</li><li><a href="./../deployment.html">Deployment</a>: hosted egress and secrets</li><li><a href="./../troubleshooting.html">Troubleshooting</a>: authorization symptoms and remedies</li></ul></div></div></main><footer class="VPDocFooter" data-v-2c214b72 data-v-a3a61b15><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-a3a61b15><span class="visually-hidden" id="doc-footer-aria-label" data-v-a3a61b15>Pager</span><div class="pager" data-v-a3a61b15><a class="VPLink link pager-link prev" href="/docs/guides/jev.html" data-v-a3a61b15><!--[--><span class="desc" data-v-a3a61b15>Previous page</span><span class="title" data-v-a3a61b15>Jev</span><!--]--></a></div><div class="pager" data-v-a3a61b15><a class="VPLink link pager-link next" href="/docs/guides/hooks.html" data-v-a3a61b15><!--[--><span class="desc" data-v-a3a61b15>Next page</span><span class="title" data-v-a3a61b15>Hooks</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
94
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"building-with-agents.md\":\"FZXrY8Nk\",\"deployment.md\":\"3MMWuPeV\",\"evals.md\":\"CHR34K1Y\",\"guides_agent-to-agent.md\":\"CwL5cwuE\",\"guides_bitbucket.md\":\"CKUayYtD\",\"guides_cloud-agents.md\":\"BzbzcOyj\",\"guides_convert-automation.md\":\"DMEX9nF-\",\"guides_export-grokbot.md\":\"qo5bxi4h\",\"guides_github.md\":\"TuNiZAOQ\",\"guides_gitlab.md\":\"CtNI4fSH\",\"guides_grokbot-agents.md\":\"BwAykJ7U\",\"guides_hooks.md\":\"Bfj0pK91\",\"guides_improve.md\":\"CZKVt1cT\",\"guides_jev.md\":\"D7XH4JH3\",\"guides_mcp-oauth.md\":\"BM_eFC0L\",\"guides_migrate.md\":\"CQlGaBKX\",\"guides_opentelemetry.md\":\"DBQtp7_V\",\"guides_pagerduty.md\":\"BHXMcMtx\",\"guides_slack.md\":\"Bn-WupSE\",\"guides_webhooks.md\":\"Cpdc3BDX\",\"hillclimbing.md\":\"Dxvd-0gT\",\"index.md\":\"CAnsLl8D\",\"quickstart.md\":\"D8JDfkKO\",\"reference_agent-config.md\":\"IplwL25I\",\"reference_artifacts.md\":\"DLV9MZES\",\"reference_channels.md\":\"Bxaa020x\",\"reference_cli.md\":\"1o_TqKdt\",\"reference_connections.md\":\"BJE2Zllp\",\"reference_evals.md\":\"Ccwp4x3o\",\"reference_extensions.md\":\"DKxTuCIw\",\"reference_hooks.md\":\"B1jq3oGl\",\"reference_http-api.md\":\"Dji-DD_Z\",\"reference_instructions.md\":\"BYMVxAkw\",\"reference_memory.md\":\"BwyJXYZe\",\"reference_playground.md\":\"q4MI-0td\",\"reference_project-layout.md\":\"mFcS8yDD\",\"reference_prompt.md\":\"DqPh71XN\",\"reference_schedules.md\":\"03Ryy9ca\",\"reference_sessions.md\":\"C8FXuGwk\",\"reference_skills.md\":\"C2GWh7g8\",\"reference_subagents.md\":\"ChNGh6HK\",\"reference_tools.md\":\"-6pypsWt\",\"templates_agentic-owners.md\":\"CTEnR0jp\",\"templates_grokbot-agents.md\":\"DgpPEs7B\",\"templates_security-reviewer.md\":\"Gh6EF9Us\",\"templates_thermo-quality-review.md\":\"B77UyTrX\",\"templates_thermo-review.md\":\"DRJ7mC5U\",\"templates_triage.md\":\"CNN6b0JZ\",\"troubleshooting.md\":\"DFnoTDlQ\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Bot Development Kit (BDK)\",\"description\":\"Build and serve bots and agents from versioned Markdown and TypeScript.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"sdkVersion\":\"0.2.25\",\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Integrations\",\"link\":\"/guides/github\"},{\"text\":\"Templates\",\"link\":\"/templates/security-reviewer\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Building your first agent\",\"link\":\"/quickstart\"}]},{\"text\":\"Integrations\",\"collapsed\":false,\"items\":[{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Webhooks\",\"link\":\"/guides/webhooks\"},{\"text\":\"Cursor Automations\",\"link\":\"/guides/convert-automation\"},{\"text\":\"OpenTelemetry\",\"link\":\"/guides/opentelemetry\"},{\"text\":\"GitLab\",\"link\":\"/guides/gitlab\"},{\"text\":\"Bitbucket\",\"link\":\"/guides/bitbucket\"},{\"text\":\"PagerDuty\",\"link\":\"/guides/pagerduty\"}]},{\"text\":\"Extensions\",\"collapsed\":false,\"items\":[{\"text\":\"Overview\",\"link\":\"/reference/extensions\"},{\"text\":\"Cloud agents\",\"link\":\"/guides/cloud-agents\"},{\"text\":\"Grok Bot agents\",\"link\":\"/guides/grokbot-agents\"},{\"text\":\"Self-improvement\",\"link\":\"/guides/improve\"},{\"text\":\"Jev\",\"link\":\"/guides/jev\"}]},{\"text\":\"Guides\",\"collapsed\":false,\"items\":[{\"text\":\"MCP\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Hooks\",\"link\":\"/guides/hooks\"},{\"text\":\"Peer agents\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Export a Grok Bot\",\"link\":\"/guides/export-grokbot\"},{\"text\":\"Early-alpha migration\",\"link\":\"/guides/migrate\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"},{\"text\":\"Build with a coding agent\",\"link\":\"/building-with-agents\"},{\"text\":\"Troubleshooting\",\"link\":\"/troubleshooting\"}]},{\"text\":\"Templates\",\"collapsed\":false,\"items\":[{\"text\":\"Grok Bot agents\",\"link\":\"/templates/grokbot-agents\"},{\"text\":\"Security reviewer\",\"link\":\"/templates/security-reviewer\"},{\"text\":\"Thermo review\",\"link\":\"/templates/thermo-review\"},{\"text\":\"Thermo quality review\",\"link\":\"/templates/thermo-quality-review\"},{\"text\":\"Agentic Approver\",\"link\":\"/templates/agentic-owners\"},{\"text\":\"Triage agent\",\"link\":\"/templates/triage\"}]},{\"text\":\"Reference\",\"collapsed\":false,\"items\":[{\"text\":\"Project layout\",\"link\":\"/reference/project-layout\"},{\"text\":\"Agent config\",\"link\":\"/reference/agent-config\"},{\"text\":\"Instructions\",\"link\":\"/reference/instructions\"},{\"text\":\"Tools\",\"link\":\"/reference/tools\"},{\"text\":\"prompt\",\"link\":\"/reference/prompt\"},{\"text\":\"Skills\",\"link\":\"/reference/skills\"},{\"text\":\"MCP Connections\",\"link\":\"/reference/connections\"},{\"text\":\"Subagents\",\"link\":\"/reference/subagents\"},{\"text\":\"Channels\",\"link\":\"/reference/channels\"},{\"text\":\"Schedules & reminders\",\"link\":\"/reference/schedules\"},{\"text\":\"Hooks\",\"link\":\"/reference/hooks\"},{\"text\":\"Memory\",\"link\":\"/reference/memory\"},{\"text\":\"Evals\",\"link\":\"/reference/evals\"},{\"text\":\"Artifacts\",\"link\":\"/reference/artifacts\"},{\"text\":\"Sessions & streaming\",\"link\":\"/reference/sessions\"},{\"text\":\"Playground\",\"link\":\"/reference/playground\"},{\"text\":\"CLI\",\"link\":\"/reference/cli\"},{\"text\":\"HTTP API\",\"link\":\"/reference/http-api\"}]}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
93
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span></code></pre></div><p>The model sees <code>get_stock</code>, not the unrestricted inventory server. Use this shape when code should own an allowlist or another side-effect gate.</p><h2 id="use-an-oauth-server-from-a-hosted-agent" tabindex="-1">Use an OAuth server from a hosted agent <a class="header-anchor" href="#use-an-oauth-server-from-a-hosted-agent" aria-label="Permalink to &quot;Use an OAuth server from a hosted agent&quot;">​</a></h2><p>Tokens from <code>mcp oauth</code> stay in the CLI config directory of the machine that authorized them, so a hosted deployment doesn&#39;t receive them. For a Cursor-managed agent, add the server under MCP in the Cursor dashboard, reach it through a <a href="./../reference/connections.html#cursor-account-mcp-connection"><code>cursorAccount: true</code> connection</a>, and connect it from <strong>Deployed Agents</strong> in the <a href="https://cursor.com/dashboard" target="_blank" rel="noreferrer">dashboard</a>.</p><p>Anyone able to use that agent can reach the MCP capabilities you expose, so narrow the connection&#39;s <code>servers</code> list and keep privileged operations behind a host-side wrapper.</p><h2 id="choose-where-credentials-live" tabindex="-1">Choose where credentials live <a class="header-anchor" href="#choose-where-credentials-live" aria-label="Permalink to &quot;Choose where credentials live&quot;">​</a></h2><p>Use the credential shape that matches who should own access:</p><ul><li><p>Choose <code>cursorAccount: true</code> for connectors already authorized under MCP in the Cursor dashboard. Their tokens stay on the Cursor backend.</p></li><li><p>Choose <code>url</code> with <code>oauth: true</code> when the machine running <code>bdk serve</code> should hold OAuth credentials.</p></li><li><p>Choose <code>url</code> with static <code>headers</code> when the server uses an API key or bearer token instead of OAuth.</p></li></ul><p>Host OAuth and per-session <code>auth</code> are different identity models and cannot be combined on one connection. Use per-session auth when each caller needs a different downstream identity.</p><h2 id="related" tabindex="-1">Related <a class="header-anchor" href="#related" aria-label="Permalink to &quot;Related&quot;">​</a></h2><ul><li><a href="./../../skills/mcp-auth/SKILL.html"><code>skills/mcp-auth/SKILL.md</code></a>: the companion setup procedure for coding agents</li><li><a href="./../reference/connections.html">MCP connections</a>: transports, account connectors, per-session auth, and tool filtering</li><li><a href="./../reference/cli.html#mcp-oauth">CLI reference</a>: OAuth command flags and browser callback behavior</li><li><a href="./../deployment.html">Deployment</a>: hosted egress and secrets</li><li><a href="./../troubleshooting.html">Troubleshooting</a>: authorization symptoms and remedies</li></ul></div></div></main><footer class="VPDocFooter" data-v-995f90b4 data-v-8edf72db><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-8edf72db><span class="visually-hidden" id="doc-footer-aria-label" data-v-8edf72db>Pager</span><div class="pager" data-v-8edf72db><a class="VPLink link pager-link prev" href="/docs/guides/jev.html" data-v-8edf72db><!--[--><span class="desc" data-v-8edf72db>Previous page</span><span class="title" data-v-8edf72db>Jev</span><!--]--></a></div><div class="pager" data-v-8edf72db><a class="VPLink link pager-link next" href="/docs/guides/hooks.html" data-v-8edf72db><!--[--><span class="desc" data-v-8edf72db>Next page</span><span class="title" data-v-8edf72db>Hooks</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
94
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"building-with-agents.md\":\"FZXrY8Nk\",\"changelog.md\":\"BvHRIiMH\",\"deployment.md\":\"3MMWuPeV\",\"evals.md\":\"CHR34K1Y\",\"guides_agent-to-agent.md\":\"CwL5cwuE\",\"guides_bitbucket.md\":\"CKUayYtD\",\"guides_cloud-agents.md\":\"BzbzcOyj\",\"guides_convert-automation.md\":\"DMEX9nF-\",\"guides_export-grokbot.md\":\"qo5bxi4h\",\"guides_github.md\":\"TuNiZAOQ\",\"guides_gitlab.md\":\"CtNI4fSH\",\"guides_grokbot-agents.md\":\"BwAykJ7U\",\"guides_hooks.md\":\"B2XfGX50\",\"guides_improve.md\":\"CZKVt1cT\",\"guides_jev.md\":\"D7XH4JH3\",\"guides_mcp-oauth.md\":\"Cxq2TxBB\",\"guides_migrate.md\":\"CQlGaBKX\",\"guides_opentelemetry.md\":\"D4wO7_8v\",\"guides_pagerduty.md\":\"BHXMcMtx\",\"guides_slack.md\":\"ClIyi7FI\",\"guides_webhooks.md\":\"Cpdc3BDX\",\"hillclimbing.md\":\"Dxvd-0gT\",\"index.md\":\"CAnsLl8D\",\"quickstart.md\":\"D8JDfkKO\",\"reference_agent-config.md\":\"CZrbHOfT\",\"reference_artifacts.md\":\"DLV9MZES\",\"reference_channels.md\":\"CNNIS6K7\",\"reference_cli.md\":\"1o_TqKdt\",\"reference_connections.md\":\"BJE2Zllp\",\"reference_evals.md\":\"Ccwp4x3o\",\"reference_extensions.md\":\"DKxTuCIw\",\"reference_hooks.md\":\"CROr0QgC\",\"reference_http-api.md\":\"Dji-DD_Z\",\"reference_instructions.md\":\"BYMVxAkw\",\"reference_memory.md\":\"BwyJXYZe\",\"reference_playground.md\":\"q4MI-0td\",\"reference_project-layout.md\":\"mFcS8yDD\",\"reference_prompt.md\":\"DqPh71XN\",\"reference_schedules.md\":\"BqWnJES4\",\"reference_sessions.md\":\"Bi6lHttM\",\"reference_skills.md\":\"Ckddg6KX\",\"reference_subagents.md\":\"ChNGh6HK\",\"reference_tools.md\":\"Bo0UfT0a\",\"templates_agentic-owners.md\":\"CTEnR0jp\",\"templates_grokbot-agents.md\":\"DgpPEs7B\",\"templates_security-reviewer.md\":\"Gh6EF9Us\",\"templates_thermo-quality-review.md\":\"B77UyTrX\",\"templates_thermo-review.md\":\"DRJ7mC5U\",\"templates_triage.md\":\"CNN6b0JZ\",\"troubleshooting.md\":\"DFnoTDlQ\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Bot Development Kit (BDK)\",\"description\":\"Build and serve bots and agents from versioned Markdown and TypeScript.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"sdkVersion\":\"0.2.27\",\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Integrations\",\"link\":\"/guides/github\"},{\"text\":\"Templates\",\"link\":\"/templates/security-reviewer\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Changelog\",\"link\":\"/changelog\"},{\"text\":\"Building your first agent\",\"link\":\"/quickstart\"}]},{\"text\":\"Integrations\",\"collapsed\":false,\"items\":[{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Webhooks\",\"link\":\"/guides/webhooks\"},{\"text\":\"Cursor Automations\",\"link\":\"/guides/convert-automation\"},{\"text\":\"OpenTelemetry\",\"link\":\"/guides/opentelemetry\"},{\"text\":\"GitLab\",\"link\":\"/guides/gitlab\"},{\"text\":\"Bitbucket\",\"link\":\"/guides/bitbucket\"},{\"text\":\"PagerDuty\",\"link\":\"/guides/pagerduty\"}]},{\"text\":\"Extensions\",\"collapsed\":false,\"items\":[{\"text\":\"Overview\",\"link\":\"/reference/extensions\"},{\"text\":\"Cloud agents\",\"link\":\"/guides/cloud-agents\"},{\"text\":\"Grok Bot agents\",\"link\":\"/guides/grokbot-agents\"},{\"text\":\"Self-improvement\",\"link\":\"/guides/improve\"},{\"text\":\"Jev\",\"link\":\"/guides/jev\"}]},{\"text\":\"Guides\",\"collapsed\":false,\"items\":[{\"text\":\"MCP\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Hooks\",\"link\":\"/guides/hooks\"},{\"text\":\"Peer agents\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Export a Grok Bot\",\"link\":\"/guides/export-grokbot\"},{\"text\":\"Early-alpha migration\",\"link\":\"/guides/migrate\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"},{\"text\":\"Build with a coding agent\",\"link\":\"/building-with-agents\"},{\"text\":\"Troubleshooting\",\"link\":\"/troubleshooting\"}]},{\"text\":\"Templates\",\"collapsed\":false,\"items\":[{\"text\":\"Grok Bot agents\",\"link\":\"/templates/grokbot-agents\"},{\"text\":\"Security reviewer\",\"link\":\"/templates/security-reviewer\"},{\"text\":\"Thermo review\",\"link\":\"/templates/thermo-review\"},{\"text\":\"Thermo quality review\",\"link\":\"/templates/thermo-quality-review\"},{\"text\":\"Agentic Approver\",\"link\":\"/templates/agentic-owners\"},{\"text\":\"Triage agent\",\"link\":\"/templates/triage\"}]},{\"text\":\"Reference\",\"collapsed\":false,\"items\":[{\"text\":\"Project layout\",\"link\":\"/reference/project-layout\"},{\"text\":\"Agent config\",\"link\":\"/reference/agent-config\"},{\"text\":\"Instructions\",\"link\":\"/reference/instructions\"},{\"text\":\"Tools\",\"link\":\"/reference/tools\"},{\"text\":\"prompt\",\"link\":\"/reference/prompt\"},{\"text\":\"Skills\",\"link\":\"/reference/skills\"},{\"text\":\"MCP Connections\",\"link\":\"/reference/connections\"},{\"text\":\"Subagents\",\"link\":\"/reference/subagents\"},{\"text\":\"Channels\",\"link\":\"/reference/channels\"},{\"text\":\"Schedules & reminders\",\"link\":\"/reference/schedules\"},{\"text\":\"Hooks\",\"link\":\"/reference/hooks\"},{\"text\":\"Memory\",\"link\":\"/reference/memory\"},{\"text\":\"Evals\",\"link\":\"/reference/evals\"},{\"text\":\"Artifacts\",\"link\":\"/reference/artifacts\"},{\"text\":\"Sessions & streaming\",\"link\":\"/reference/sessions\"},{\"text\":\"Playground\",\"link\":\"/reference/playground\"},{\"text\":\"CLI\",\"link\":\"/reference/cli\"},{\"text\":\"HTTP API\",\"link\":\"/reference/http-api\"}]}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
95
95
 
96
96
  </body>
97
97
  </html>
@@ -45,6 +45,18 @@ bdk serve --dir . --dev
45
45
 
46
46
  Connect authorizes the process that is running now.
47
47
 
48
+ A turn waits for Connect only when a person can click it:
49
+
50
+ - A playground or HTTP chat turn.
51
+ - A Slack message, when the channel shows Connect. `slackChannel({ toolApprovals: true })` shows
52
+ Connect, and so does `buildToolApprovalEvents` in `events`.
53
+
54
+ The wait stops after 10 minutes, or when the turn is interrupted. Other
55
+ turns do not wait. These are schedules, reminders, webhooks, evals, and
56
+ Slack channels without Connect. A required connection fails the call with
57
+ `Reconnect <connection>`. An `optional` connection is skipped, also in the
58
+ playground. Authorize those connections ahead of time with `mcp oauth`.
59
+
48
60
  ## Keep privileged tools behind a wrapper
49
61
 
50
62
  Put a connection under `bot/host-connections/` when the model should