@cursor/july 0.1.37 → 0.1.39

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 (122) hide show
  1. package/README.md +3 -1
  2. package/dist/bin/agent-serve.js +0 -0
  3. package/dist/channels/slack/api.d.ts +5 -0
  4. package/dist/channels/slack/api.d.ts.map +1 -1
  5. package/dist/channels/slack/api.js +57 -18
  6. package/dist/channels/slack/constants.d.ts +2 -0
  7. package/dist/channels/slack/constants.d.ts.map +1 -1
  8. package/dist/channels/slack/constants.js +2 -0
  9. package/dist/channels/slack/post-update-delivery.d.ts +85 -0
  10. package/dist/channels/slack/post-update-delivery.d.ts.map +1 -0
  11. package/dist/connections.d.ts +14 -2
  12. package/dist/connections.d.ts.map +1 -1
  13. package/dist/connections.js +13 -1
  14. package/dist/docs/404.html +3 -3
  15. package/dist/docs/ab.html +6 -6
  16. package/dist/docs/assets/{app.Bu9SRvZ9.js → app.BQ8Hihdf.js} +1 -1
  17. package/dist/docs/assets/chunks/@localSearchIndexroot.B-VTH4As.js +1 -0
  18. package/dist/docs/assets/chunks/{VPLocalSearchBox.D9u9czHO.js → VPLocalSearchBox.BBCr8Yuy.js} +2 -2
  19. package/dist/docs/assets/chunks/theme.CK_NiGC-.js +2 -0
  20. package/dist/docs/assets/{example-agents_weather-agent.md.CrGZ0SqR.js → example-agents_weather-agent.md.DC3lINjo.js} +5 -6
  21. package/dist/docs/assets/{reference_connections.md.DGqAsFXb.js → reference_connections.md.CSQiNzre.js} +11 -2
  22. package/dist/docs/assets/{reference_connections.md.DGqAsFXb.lean.js → reference_connections.md.CSQiNzre.lean.js} +1 -1
  23. package/dist/docs/assets/{style.Bj-IXa5W.css → style.CK3hwt6q.css} +1 -1
  24. package/dist/docs/building-with-agents.html +6 -6
  25. package/dist/docs/concepts.html +6 -6
  26. package/dist/docs/deployment.html +6 -6
  27. package/dist/docs/evals.html +6 -6
  28. package/dist/docs/example-agents/approval-buddy.html +6 -6
  29. package/dist/docs/example-agents/benny.html +6 -6
  30. package/dist/docs/example-agents/bugbot.html +6 -6
  31. package/dist/docs/example-agents/codebase-wiki.html +6 -6
  32. package/dist/docs/example-agents/codeowners-review.html +6 -6
  33. package/dist/docs/example-agents/concierge.html +6 -6
  34. package/dist/docs/example-agents/fsd.html +6 -6
  35. package/dist/docs/example-agents/index.html +6 -6
  36. package/dist/docs/example-agents/knowledge-base.html +6 -6
  37. package/dist/docs/example-agents/oncall.html +6 -6
  38. package/dist/docs/example-agents/security-reviewer.html +6 -6
  39. package/dist/docs/example-agents/slack-agent.html +6 -6
  40. package/dist/docs/example-agents/weather-agent.html +10 -11
  41. package/dist/docs/guides/agent-to-agent.html +6 -6
  42. package/dist/docs/guides/cloud-runtime.html +6 -6
  43. package/dist/docs/guides/github.html +6 -6
  44. package/dist/docs/guides/human-in-the-loop.html +6 -6
  45. package/dist/docs/guides/mcp-oauth.html +6 -6
  46. package/dist/docs/guides/slack.html +6 -6
  47. package/dist/docs/guides/webhooks.html +6 -6
  48. package/dist/docs/hashmap.json +1 -1
  49. package/dist/docs/hillclimbing.html +6 -6
  50. package/dist/docs/index.html +6 -6
  51. package/dist/docs/quickstart.html +6 -6
  52. package/dist/docs/reference/agent-config.html +6 -6
  53. package/dist/docs/reference/artifacts.html +6 -6
  54. package/dist/docs/reference/channels.html +6 -6
  55. package/dist/docs/reference/cli.html +6 -6
  56. package/dist/docs/reference/connections.html +17 -8
  57. package/dist/docs/reference/hooks.html +6 -6
  58. package/dist/docs/reference/http-api.html +6 -6
  59. package/dist/docs/reference/instructions.html +6 -6
  60. package/dist/docs/reference/playground.html +5 -5
  61. package/dist/docs/reference/project-layout.html +6 -6
  62. package/dist/docs/reference/prompt.html +6 -6
  63. package/dist/docs/reference/schedules.html +6 -6
  64. package/dist/docs/reference/sessions.html +6 -6
  65. package/dist/docs/reference/skills.html +6 -6
  66. package/dist/docs/reference/subagents.html +6 -6
  67. package/dist/docs/reference/tools.html +6 -6
  68. package/dist/docs/scaffolding-agents.html +5 -5
  69. package/dist/docs/storage.html +6 -6
  70. package/dist/docs/troubleshooting.html +5 -5
  71. package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
  72. package/dist/files-backends/cursor-hosted.js +13 -2
  73. package/dist/internal/discovery.d.ts.map +1 -1
  74. package/dist/internal/discovery.js +95 -2
  75. package/dist/internal/framework-storage-selection.d.ts +37 -0
  76. package/dist/internal/framework-storage-selection.d.ts.map +1 -0
  77. package/dist/internal/framework-storage-selection.js +35 -0
  78. package/dist/internal/inline-stdio-define-stub.d.ts +3 -0
  79. package/dist/internal/inline-stdio-define-stub.d.ts.map +1 -0
  80. package/dist/internal/inline-stdio-define-stub.js +4 -0
  81. package/dist/internal/inline-stdio-mcp.d.ts +32 -0
  82. package/dist/internal/inline-stdio-mcp.d.ts.map +1 -0
  83. package/dist/internal/inline-stdio-mcp.js +180 -0
  84. package/dist/internal/json-dir-store.d.ts +32 -0
  85. package/dist/internal/json-dir-store.d.ts.map +1 -0
  86. package/dist/internal/package-inline-stdio.d.ts +12 -0
  87. package/dist/internal/package-inline-stdio.d.ts.map +1 -0
  88. package/dist/internal/package-inline-stdio.js +109 -0
  89. package/dist/internal/persistence-coordinator.d.ts +127 -0
  90. package/dist/internal/persistence-coordinator.d.ts.map +1 -0
  91. package/dist/internal/session-engine.d.ts.map +1 -1
  92. package/dist/internal/session-engine.js +9 -2
  93. package/dist/multi-tenant.d.ts +80 -0
  94. package/dist/multi-tenant.d.ts.map +1 -0
  95. package/dist/multi-tenant.js +69 -0
  96. package/dist/persistence.d.ts +184 -0
  97. package/dist/persistence.d.ts.map +1 -0
  98. package/dist/playground/assets/index-BRhBbnd4.css +1 -0
  99. package/dist/playground/assets/{index-DRtusTV1.js → index-_2WKw9a-.js} +43 -43
  100. package/dist/playground/index.html +2 -2
  101. package/dist/types.d.ts +20 -1
  102. package/dist/types.d.ts.map +1 -1
  103. package/dist/types.js +4 -0
  104. package/docs/example-agents/weather-agent.md +25 -22
  105. package/docs/reference/connections.md +17 -0
  106. package/package.json +3 -1
  107. package/skills/framework-map/SKILL.md +1 -1
  108. package/src/channels/slack/api.ts +72 -20
  109. package/src/channels/slack/constants.ts +2 -0
  110. package/src/connections.ts +18 -1
  111. package/src/files-backends/cursor-hosted.ts +13 -2
  112. package/src/internal/discovery.ts +111 -1
  113. package/src/internal/framework-storage-selection.ts +45 -0
  114. package/src/internal/inline-stdio-define-stub.ts +4 -0
  115. package/src/internal/inline-stdio-mcp.ts +229 -0
  116. package/src/internal/package-inline-stdio.ts +121 -0
  117. package/src/internal/session-engine.ts +9 -2
  118. package/src/types.ts +27 -0
  119. package/dist/docs/assets/chunks/@localSearchIndexroot.pVFW7oJd.js +0 -1
  120. package/dist/docs/assets/chunks/theme.Bc61GzOf.js +0 -2
  121. package/dist/playground/assets/index-DZp6n4bv.css +0 -1
  122. /package/dist/docs/assets/{example-agents_weather-agent.md.CrGZ0SqR.lean.js → example-agents_weather-agent.md.DC3lINjo.lean.js} +0 -0
@@ -6,19 +6,19 @@
6
6
  <title>Build your first PR approver | Agent SDK</title>
7
7
  <meta name="description" content="Create an agent that reviews pull requests by complexity, approves the safe ones, and wakes from GitHub webhooks.">
8
8
  <meta name="generator" content="VitePress v1.6.4">
9
- <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
9
+ <link rel="preload stylesheet" href="/docs/assets/style.CK3hwt6q.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.Bu9SRvZ9.js"></script>
12
+ <script type="module" src="/docs/assets/app.BQ8Hihdf.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.Bc61GzOf.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.CK_NiGC-.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/quickstart.md.C_b6ESpD.lean.js">
17
17
  <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>
18
18
  <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
19
19
  </head>
20
20
  <body>
21
- <div id="app"><div class="Layout" data-v-05085060><!--[--><!--]--><!--[--><span tabindex="-1" data-v-30dc752a></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-30dc752a>Skip to content</a><!--]--><!----><header class="VPNav" data-v-05085060 data-v-cbe59881><div class="VPNavBar" data-v-cbe59881 data-v-dd8a1864><div class="wrapper" data-v-dd8a1864><div class="container" data-v-dd8a1864><div class="title" data-v-dd8a1864><div class="VPNavBarTitle has-sidebar" data-v-dd8a1864 data-v-f9346b2b><a class="title" href="/docs/" data-v-f9346b2b><!--[--><!--]--><!----><span data-v-f9346b2b>Agent SDK</span><!--[--><!--]--></a></div></div><div class="content" data-v-dd8a1864><div class="content-body" data-v-dd8a1864><!--[--><!--]--><div class="VPNavBarSearch search" data-v-dd8a1864><!--[--><!----><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-dd8a1864 data-v-7ed6e5ac><span id="main-nav-aria-label" class="visually-hidden" data-v-7ed6e5ac> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/docs/quickstart.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Quickstart</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/guides/webhooks.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/example-agents/" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/reference/project-layout.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Reference</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-dd8a1864 data-v-2b2b395e><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-2b2b395e data-v-182deabf data-v-2562b538><span class="check" data-v-2562b538><span class="icon" data-v-2562b538><!--[--><span class="vpi-sun sun" data-v-182deabf></span><span class="vpi-moon moon" data-v-182deabf></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-dd8a1864 data-v-f3b584b7 data-v-82133de6><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-82133de6><span class="vpi-more-horizontal icon" data-v-82133de6></span></button><div class="menu" data-v-82133de6><div class="VPMenu" data-v-82133de6 data-v-759c9e19><!----><!--[--><!--[--><!----><div class="group" data-v-f3b584b7><div class="item appearance" data-v-f3b584b7><p class="label" data-v-f3b584b7>Appearance</p><div class="appearance-action" data-v-f3b584b7><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-f3b584b7 data-v-182deabf data-v-2562b538><span class="check" data-v-2562b538><span class="icon" data-v-2562b538><!--[--><span class="vpi-sun sun" data-v-182deabf></span><span class="vpi-moon moon" data-v-182deabf></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-dd8a1864 data-v-ab07e844><span class="container" data-v-ab07e844><span class="top" data-v-ab07e844></span><span class="middle" data-v-ab07e844></span><span class="bottom" data-v-ab07e844></span></span></button></div></div></div></div><div class="divider" data-v-dd8a1864><div class="divider-line" data-v-dd8a1864></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-05085060 data-v-826b8761><div class="container" data-v-826b8761><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-826b8761><span class="vpi-align-left menu-icon" data-v-826b8761></span><span class="menu-text" data-v-826b8761>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-826b8761 data-v-01af9e73><button data-v-01af9e73>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-05085060 data-v-5cd5b4d8><div class="curtain" data-v-5cd5b4d8></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-5cd5b4d8><span class="visually-hidden" id="sidebar-aria-label" data-v-5cd5b4d8> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0 has-active" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Getting started</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/quickstart.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Quickstart</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/scaffolding-agents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Scaffold an agent with Cursor</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/concepts.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Concepts</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Improving agents</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/building-with-agents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Building agents with agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/evals.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/ab.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Live A/B metrics</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/storage.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Storage</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/hillclimbing.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Hillclimbing</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Guides</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/webhooks.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Webhooks & custom channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/github.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>GitHub</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/slack.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Slack</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/human-in-the-loop.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Human-in-the-loop approvals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/agent-to-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Agent-to-agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/mcp-oauth.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Host MCP OAuth</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/cloud-runtime.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Cloud runtime</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Example agents</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Choose an example</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/weather-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Weather agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/slack-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Slack agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/concierge.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Concierge</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/benny.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Playbook router</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/oncall.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Alert investigator</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/bugbot.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>PR evidence reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/approval-buddy.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Approval Buddy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/security-reviewer.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Security Reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/fsd.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Remote PR coordinator</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/knowledge-base.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Knowledge base</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/codebase-wiki.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Codebase wiki</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/codeowners-review.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Codeowners review</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Operating</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/deployment.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/troubleshooting.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Fix common problems</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0 collapsible" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Reference</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b6893b1b><span class="vpi-chevron-right caret-icon" data-v-b6893b1b></span></div></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/project-layout.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Project layout</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/agent-config.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Agent config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/instructions.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Instructions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/tools.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Tools</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/prompt.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>prompt</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/skills.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/connections.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>MCP Connections</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/subagents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Subagents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/channels.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/schedules.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Schedules & reminders</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/hooks.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/artifacts.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Artifacts</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/sessions.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Sessions & streaming</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/playground.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Playground</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/cli.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>CLI</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/http-api.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>HTTP API</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-05085060 data-v-8eedf2ac><div class="VPDoc has-sidebar has-aside" data-v-8eedf2ac data-v-53b9fda6><!--[--><!--]--><div class="container" data-v-53b9fda6><div class="aside" data-v-53b9fda6><div class="aside-curtain" data-v-53b9fda6></div><div class="aside-container" data-v-53b9fda6><div class="aside-content" data-v-53b9fda6><div class="VPDocAside" data-v-53b9fda6 data-v-e448ecab><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-e448ecab data-v-b0b42374><div class="content" data-v-b0b42374><div class="outline-marker" data-v-b0b42374></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-b0b42374>On this page</div><ul class="VPDocOutlineItem root" data-v-b0b42374 data-v-ae03bd52><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-e448ecab></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-53b9fda6><div class="content-container" data-v-53b9fda6><!--[--><!--]--><main class="main" data-v-53b9fda6><div style="position:relative;" class="vp-doc _docs_quickstart" data-v-53b9fda6><div><h1 id="build-your-first-pr-approver" tabindex="-1">Build your first PR approver <a class="header-anchor" href="#build-your-first-pr-approver" aria-label="Permalink to &quot;Build your first PR approver&quot;">​</a></h1><p>Build an agent that reviews GitHub pull requests. It fetches the diff, rates the change&#39;s complexity in plain TypeScript, approves the safe ones, and flags the rest for a human. Then wire it to GitHub webhooks and watch a pull request wake it.</p><p>The split is the point of the exercise: deterministic policy lives in typed tools, judgment lives in the model, and every decision is inspectable in the playground.</p><h2 id="prerequisites" tabindex="-1">Prerequisites <a class="header-anchor" href="#prerequisites" aria-label="Permalink to &quot;Prerequisites&quot;">​</a></h2><p>You need:</p><ul><li>Node 22.13 or newer. Bun isn&#39;t supported.</li><li>The <code>agent-sdk</code> CLI. <code>npx @cursor/july init ./pr-approver</code> bootstraps it with no prior install: <code>init</code> scaffolds the project, runs <code>npm install</code>, and offers a Cursor sign-in, after which <code>npx agent-sdk</code> resolves from the project&#39;s own dependencies. See <a href="./README.html#run-the-cli">Run the CLI</a> for other setups, such as a monorepo source checkout.</li><li>A Cursor credential for model turns. Sign in once:</li></ul><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> login</span></span></code></pre></div><p>You can also set <code>CURSOR_API_KEY</code> instead of signing in.</p><ul><li>A GitHub credential. <code>gh auth login</code> is enough, or set <code>GITHUB_TOKEN</code>. The tools you write resolve either one automatically. Reading pull requests works on any public repo; posting reviews needs write access to the repo you review.</li></ul><h2 id="first-run-in-10-minutes" tabindex="-1">First run in 10 minutes <a class="header-anchor" href="#first-run-in-10-minutes" aria-label="Permalink to &quot;First run in 10 minutes&quot;">​</a></h2><p>Want a working agent before the full tutorial? Four commands get you there:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> init</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ./pr-approver</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # scaffold + npm install + sign-in offer</span></span>
21
+ <div id="app"><div class="Layout" data-v-41df81ff><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c792f8ce></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c792f8ce>Skip to content</a><!--]--><!----><header class="VPNav" data-v-41df81ff data-v-ecf0170c><div class="VPNavBar" data-v-ecf0170c data-v-74fc79fd><div class="wrapper" data-v-74fc79fd><div class="container" data-v-74fc79fd><div class="title" data-v-74fc79fd><div class="VPNavBarTitle has-sidebar" data-v-74fc79fd data-v-38e78292><a class="title" href="/docs/" data-v-38e78292><!--[--><!--]--><!----><span data-v-38e78292>Agent SDK</span><!--[--><!--]--></a></div></div><div class="content" data-v-74fc79fd><div class="content-body" data-v-74fc79fd><!--[--><!--]--><div class="VPNavBarSearch search" data-v-74fc79fd><!--[--><!----><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-74fc79fd data-v-6bcb02d4><span id="main-nav-aria-label" class="visually-hidden" data-v-6bcb02d4> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/docs/quickstart.html" tabindex="0" data-v-6bcb02d4 data-v-40a52867><!--[--><span data-v-40a52867>Quickstart</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/guides/webhooks.html" tabindex="0" data-v-6bcb02d4 data-v-40a52867><!--[--><span data-v-40a52867>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/example-agents/" tabindex="0" data-v-6bcb02d4 data-v-40a52867><!--[--><span data-v-40a52867>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/reference/project-layout.html" tabindex="0" data-v-6bcb02d4 data-v-40a52867><!--[--><span data-v-40a52867>Reference</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-74fc79fd data-v-106703d3><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-106703d3 data-v-2881b93b data-v-5009fed8><span class="check" data-v-5009fed8><span class="icon" data-v-5009fed8><!--[--><span class="vpi-sun sun" data-v-2881b93b></span><span class="vpi-moon moon" data-v-2881b93b></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-74fc79fd data-v-53eccc99 data-v-f6ef69a3><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-f6ef69a3><span class="vpi-more-horizontal icon" data-v-f6ef69a3></span></button><div class="menu" data-v-f6ef69a3><div class="VPMenu" data-v-f6ef69a3 data-v-00ea3a5e><!----><!--[--><!--[--><!----><div class="group" data-v-53eccc99><div class="item appearance" data-v-53eccc99><p class="label" data-v-53eccc99>Appearance</p><div class="appearance-action" data-v-53eccc99><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-53eccc99 data-v-2881b93b data-v-5009fed8><span class="check" data-v-5009fed8><span class="icon" data-v-5009fed8><!--[--><span class="vpi-sun sun" data-v-2881b93b></span><span class="vpi-moon moon" data-v-2881b93b></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-74fc79fd data-v-1d6d00d8><span class="container" data-v-1d6d00d8><span class="top" data-v-1d6d00d8></span><span class="middle" data-v-1d6d00d8></span><span class="bottom" data-v-1d6d00d8></span></span></button></div></div></div></div><div class="divider" data-v-74fc79fd><div class="divider-line" data-v-74fc79fd></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-41df81ff data-v-fac38a7d><div class="container" data-v-fac38a7d><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-fac38a7d><span class="vpi-align-left menu-icon" data-v-fac38a7d></span><span class="menu-text" data-v-fac38a7d>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-fac38a7d data-v-3829176f><button data-v-3829176f>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-41df81ff data-v-78b202de><div class="curtain" data-v-78b202de></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-78b202de><span class="visually-hidden" id="sidebar-aria-label" data-v-78b202de> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-9195cb0b><section class="VPSidebarItem level-0 has-active" data-v-9195cb0b data-v-29a50a33><div class="item" role="button" tabindex="0" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><h2 class="text" data-v-29a50a33>Getting started</h2><!----></div><div class="items" data-v-29a50a33><!--[--><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/quickstart.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Quickstart</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/scaffolding-agents.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Scaffold an agent with Cursor</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/concepts.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Concepts</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-9195cb0b><section class="VPSidebarItem level-0" data-v-9195cb0b data-v-29a50a33><div class="item" role="button" tabindex="0" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><h2 class="text" data-v-29a50a33>Improving agents</h2><!----></div><div class="items" data-v-29a50a33><!--[--><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/building-with-agents.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Building agents with agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/evals.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/ab.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Live A/B metrics</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/storage.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Storage</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/hillclimbing.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Hillclimbing</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-9195cb0b><section class="VPSidebarItem level-0" data-v-9195cb0b data-v-29a50a33><div class="item" role="button" tabindex="0" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><h2 class="text" data-v-29a50a33>Guides</h2><!----></div><div class="items" data-v-29a50a33><!--[--><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/guides/webhooks.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Webhooks & custom channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/guides/github.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>GitHub</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/guides/slack.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Slack</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/guides/human-in-the-loop.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Human-in-the-loop approvals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/guides/agent-to-agent.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Agent-to-agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/guides/mcp-oauth.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Host MCP OAuth</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/guides/cloud-runtime.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Cloud runtime</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-9195cb0b><section class="VPSidebarItem level-0" data-v-9195cb0b data-v-29a50a33><div class="item" role="button" tabindex="0" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><h2 class="text" data-v-29a50a33>Example agents</h2><!----></div><div class="items" data-v-29a50a33><!--[--><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Choose an example</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/weather-agent.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Weather agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/slack-agent.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Slack agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/concierge.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Concierge</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/benny.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Playbook router</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/oncall.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Alert investigator</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/bugbot.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>PR evidence reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/approval-buddy.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Approval Buddy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/security-reviewer.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Security Reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/fsd.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Remote PR coordinator</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/knowledge-base.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Knowledge base</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/codebase-wiki.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Codebase wiki</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/codeowners-review.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Codeowners review</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-9195cb0b><section class="VPSidebarItem level-0" data-v-9195cb0b data-v-29a50a33><div class="item" role="button" tabindex="0" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><h2 class="text" data-v-29a50a33>Operating</h2><!----></div><div class="items" data-v-29a50a33><!--[--><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/deployment.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/troubleshooting.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Fix common problems</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-9195cb0b><section class="VPSidebarItem level-0 collapsible" data-v-9195cb0b data-v-29a50a33><div class="item" role="button" tabindex="0" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><h2 class="text" data-v-29a50a33>Reference</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-29a50a33><span class="vpi-chevron-right caret-icon" data-v-29a50a33></span></div></div><div class="items" data-v-29a50a33><!--[--><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/project-layout.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Project layout</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/agent-config.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Agent config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/instructions.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Instructions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/tools.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Tools</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/prompt.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>prompt</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/skills.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/connections.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>MCP Connections</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/subagents.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Subagents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/channels.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/schedules.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Schedules & reminders</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/hooks.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/artifacts.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Artifacts</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/sessions.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Sessions & streaming</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/playground.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Playground</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/cli.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>CLI</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/http-api.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>HTTP API</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-41df81ff data-v-9d9adfa7><div class="VPDoc has-sidebar has-aside" data-v-9d9adfa7 data-v-d5d7ccd1><!--[--><!--]--><div class="container" data-v-d5d7ccd1><div class="aside" data-v-d5d7ccd1><div class="aside-curtain" data-v-d5d7ccd1></div><div class="aside-container" data-v-d5d7ccd1><div class="aside-content" data-v-d5d7ccd1><div class="VPDocAside" data-v-d5d7ccd1 data-v-83378aaf><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-83378aaf data-v-5d36b21a><div class="content" data-v-5d36b21a><div class="outline-marker" data-v-5d36b21a></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-5d36b21a>On this page</div><ul class="VPDocOutlineItem root" data-v-5d36b21a data-v-537d09da><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-83378aaf></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-d5d7ccd1><div class="content-container" data-v-d5d7ccd1><!--[--><!--]--><main class="main" data-v-d5d7ccd1><div style="position:relative;" class="vp-doc _docs_quickstart" data-v-d5d7ccd1><div><h1 id="build-your-first-pr-approver" tabindex="-1">Build your first PR approver <a class="header-anchor" href="#build-your-first-pr-approver" aria-label="Permalink to &quot;Build your first PR approver&quot;">​</a></h1><p>Build an agent that reviews GitHub pull requests. It fetches the diff, rates the change&#39;s complexity in plain TypeScript, approves the safe ones, and flags the rest for a human. Then wire it to GitHub webhooks and watch a pull request wake it.</p><p>The split is the point of the exercise: deterministic policy lives in typed tools, judgment lives in the model, and every decision is inspectable in the playground.</p><h2 id="prerequisites" tabindex="-1">Prerequisites <a class="header-anchor" href="#prerequisites" aria-label="Permalink to &quot;Prerequisites&quot;">​</a></h2><p>You need:</p><ul><li>Node 22.13 or newer. Bun isn&#39;t supported.</li><li>The <code>agent-sdk</code> CLI. <code>npx @cursor/july init ./pr-approver</code> bootstraps it with no prior install: <code>init</code> scaffolds the project, runs <code>npm install</code>, and offers a Cursor sign-in, after which <code>npx agent-sdk</code> resolves from the project&#39;s own dependencies. See <a href="./README.html#run-the-cli">Run the CLI</a> for other setups, such as a monorepo source checkout.</li><li>A Cursor credential for model turns. Sign in once:</li></ul><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> login</span></span></code></pre></div><p>You can also set <code>CURSOR_API_KEY</code> instead of signing in.</p><ul><li>A GitHub credential. <code>gh auth login</code> is enough, or set <code>GITHUB_TOKEN</code>. The tools you write resolve either one automatically. Reading pull requests works on any public repo; posting reviews needs write access to the repo you review.</li></ul><h2 id="first-run-in-10-minutes" tabindex="-1">First run in 10 minutes <a class="header-anchor" href="#first-run-in-10-minutes" aria-label="Permalink to &quot;First run in 10 minutes&quot;">​</a></h2><p>Want a working agent before the full tutorial? Four commands get you there:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> init</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ./pr-approver</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # scaffold + npm install + sign-in offer</span></span>
22
22
  <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pr-approver</span></span>
23
23
  <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dev</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # serve, and print the playground URL</span></span></code></pre></div><p>Open the playground URL and chat with the scaffold. Then, in a second terminal (<code>dev</code> keeps running), run one turn from the command line:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> .</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --message</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;Introduce yourself in one sentence.&quot;</span></span></code></pre></div><p>That&#39;s the whole loop: files become an agent, <code>dev</code> serves it, and <code>run</code> exercises it. The rest of this page turns that scaffold into a real PR approver.</p><h2 id="scaffolding-agents" tabindex="-1">Scaffolding Agents <a class="header-anchor" href="#scaffolding-agents" aria-label="Permalink to &quot;Scaffolding Agents&quot;">​</a></h2><p>Have Cursor read <a href="./../skills/create-agent/SKILL.html"><code>skills/create-agent/SKILL.md</code></a> and describe what you want:</p><blockquote><p>Build me a PR approver for the playground. Start with one tool that inspects a pull request and guide me through the remaining decisions.</p></blockquote><p>Cursor asks for missing choices, shows you the plan, then builds and verifies the agent. Continue below to do the same by hand.</p><p>See <a href="./scaffolding-agents.html">Scaffold an agent with Cursor</a> for the full guided workflow.</p><h2 id="create-your-project" tabindex="-1">Create your project <a class="header-anchor" href="#create-your-project" aria-label="Permalink to &quot;Create your project&quot;">​</a></h2><p>Start with the built-in scaffold:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> init</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ./pr-approver</span></span>
24
24
  <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pr-approver</span></span>
@@ -224,8 +224,8 @@
224
224
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># second terminal:</span></span>
225
225
  <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agent-sdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> github</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> replay</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://github.com/acme/checkout/pull/42</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \</span></span>
226
226
  <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> .</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --action</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> opened</span></span></code></pre></div><p>The replay prints the delivery, and the serve terminal shows the wake:</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>[agent-sdk] replaying acme/checkout#42 (pull_request) → 1 channel</span></span>
227
- <span class="line"><span>[agent-sdk] pull_request.opened → pr-approver/github 200</span></span></code></pre></div><p>The agent runs the same inspect-then-submit loop, unprompted this time. Replay the same PR again and the channel resumes that PR&#39;s session instead of starting a new one: each pull request keeps one running conversation.</p><h2 id="open-the-playground" tabindex="-1">Open the playground <a class="header-anchor" href="#open-the-playground" aria-label="Permalink to &quot;Open the playground&quot;">​</a></h2><p>Keep <code>agent-sdk dev</code> running and open the playground URL it printed. The webhook session is in the session list, titled <code>Review acme/checkout#42</code>, with the trigger message, both tool calls, and the verdict laid out. Start a new chat there and ask for another review to watch a turn stream live.</p><h2 id="go-live" tabindex="-1">Go live <a class="header-anchor" href="#go-live" aria-label="Permalink to &quot;Go live&quot;">​</a></h2><p>Replay is for development. For real deliveries, serve with <code>--cursor-events --repo owner/repo</code> to pull events for repositories connected to Cursor with no public URL, or run <code>agent-sdk github forward</code> to relay webhooks to your dev server. The <a href="./guides/github.html">GitHub guide</a> compares the options. In production, give the host GitHub App credentials so reviews post as your app&#39;s bot identity instead of a personal account.</p><h2 id="where-to-go-next" tabindex="-1">Where to go next <a class="header-anchor" href="#where-to-go-next" aria-label="Permalink to &quot;Where to go next&quot;">​</a></h2><ul><li><a href="./../examples/approval-buddy/"><code>examples/approval-buddy</code></a>: the production-shaped sibling, with commit statuses, review subagents, and a deterministic stamp policy</li><li><a href="./evals.html">Evals</a>: freeze these two PRs as regression checks so prompt changes can&#39;t flip a verdict</li><li><a href="./reference/tools.html">Tools</a>: more on typed tools, approvals, and direct calls</li><li><a href="./guides/github.html">GitHub</a>: fixtures, forwarding, and pulling events from Cursor</li><li><a href="./building-with-agents.html">Building agents with agents</a>: have a coding agent extend the project for you</li></ul></div></div></main><footer class="VPDocFooter" data-v-53b9fda6 data-v-3958cc3f><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-3958cc3f><span class="visually-hidden" id="doc-footer-aria-label" data-v-3958cc3f>Pager</span><div class="pager" data-v-3958cc3f><a class="VPLink link pager-link prev" href="/docs/" data-v-3958cc3f><!--[--><span class="desc" data-v-3958cc3f>Previous page</span><span class="title" data-v-3958cc3f>Overview</span><!--]--></a></div><div class="pager" data-v-3958cc3f><a class="VPLink link pager-link next" href="/docs/scaffolding-agents.html" data-v-3958cc3f><!--[--><span class="desc" data-v-3958cc3f>Next page</span><span class="title" data-v-3958cc3f>Scaffold an agent with Cursor</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
228
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"ab.md\":\"6cLOW7--\",\"building-with-agents.md\":\"txrcGU2B\",\"concepts.md\":\"CqOsxbMU\",\"deployment.md\":\"CuK5SNjN\",\"evals.md\":\"BQXI3rXy\",\"example-agents_approval-buddy.md\":\"CIiZ9coo\",\"example-agents_benny.md\":\"l7JTmm8X\",\"example-agents_bugbot.md\":\"Dp5JqHSQ\",\"example-agents_codebase-wiki.md\":\"D-lteFf0\",\"example-agents_codeowners-review.md\":\"BU2ZXLf-\",\"example-agents_concierge.md\":\"DA2al_NK\",\"example-agents_fsd.md\":\"DPz9ezO4\",\"example-agents_index.md\":\"DgGBwckv\",\"example-agents_knowledge-base.md\":\"IneynQSR\",\"example-agents_oncall.md\":\"ZE0n6ZFN\",\"example-agents_security-reviewer.md\":\"Dkf1gyo6\",\"example-agents_slack-agent.md\":\"06jQXTAI\",\"example-agents_weather-agent.md\":\"CrGZ0SqR\",\"guides_agent-to-agent.md\":\"Bmbxy-FA\",\"guides_cloud-runtime.md\":\"V5igN4Sq\",\"guides_github.md\":\"R2QlpR75\",\"guides_human-in-the-loop.md\":\"BWvT7UqY\",\"guides_mcp-oauth.md\":\"C7G7IykG\",\"guides_slack.md\":\"zriQpU_9\",\"guides_webhooks.md\":\"BERuBSJW\",\"hillclimbing.md\":\"yXqdlv2R\",\"index.md\":\"CmhptOmN\",\"quickstart.md\":\"C_b6ESpD\",\"reference_agent-config.md\":\"CRmkoxd6\",\"reference_artifacts.md\":\"BGG4bZo-\",\"reference_channels.md\":\"BIabFUAI\",\"reference_cli.md\":\"Byvrg8eu\",\"reference_connections.md\":\"DGqAsFXb\",\"reference_hooks.md\":\"BGDw4VLm\",\"reference_http-api.md\":\"DGrw_wOu\",\"reference_instructions.md\":\"CgoV-YEb\",\"reference_playground.md\":\"CPZhfYaO\",\"reference_project-layout.md\":\"_XdeMahr\",\"reference_prompt.md\":\"BaiweQxE\",\"reference_schedules.md\":\"gmfYzf_I\",\"reference_sessions.md\":\"DBVFi2Sx\",\"reference_skills.md\":\"B_jHN7JL\",\"reference_subagents.md\":\"DSrGLIuB\",\"reference_tools.md\":\"lSrsTxYJ\",\"scaffolding-agents.md\":\"mkc3B_ZW\",\"storage.md\":\"mQDtIULc\",\"troubleshooting.md\":\"B5RVX_tL\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Agent SDK\",\"description\":\"Filesystem-first framework for building and serving Cursor agents.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/webhooks\"},{\"text\":\"Examples\",\"link\":\"/example-agents/\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Scaffold an agent with Cursor\",\"link\":\"/scaffolding-agents\"},{\"text\":\"Concepts\",\"link\":\"/concepts\"}]},{\"text\":\"Improving agents\",\"items\":[{\"text\":\"Building agents with agents\",\"link\":\"/building-with-agents\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Live A/B metrics\",\"link\":\"/ab\"},{\"text\":\"Storage\",\"link\":\"/storage\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"}]},{\"text\":\"Guides\",\"items\":[{\"text\":\"Webhooks & custom channels\",\"link\":\"/guides/webhooks\"},{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Human-in-the-loop approvals\",\"link\":\"/guides/human-in-the-loop\"},{\"text\":\"Agent-to-agent\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Host MCP OAuth\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Cloud runtime\",\"link\":\"/guides/cloud-runtime\"}]},{\"text\":\"Example agents\",\"items\":[{\"text\":\"Choose an example\",\"link\":\"/example-agents/\"},{\"text\":\"Weather agent\",\"link\":\"/example-agents/weather-agent\"},{\"text\":\"Slack agent\",\"link\":\"/example-agents/slack-agent\"},{\"text\":\"Concierge\",\"link\":\"/example-agents/concierge\"},{\"text\":\"Playbook router\",\"link\":\"/example-agents/benny\"},{\"text\":\"Alert investigator\",\"link\":\"/example-agents/oncall\"},{\"text\":\"PR evidence reviewer\",\"link\":\"/example-agents/bugbot\"},{\"text\":\"Approval Buddy\",\"link\":\"/example-agents/approval-buddy\"},{\"text\":\"Security Reviewer\",\"link\":\"/example-agents/security-reviewer\"},{\"text\":\"Remote PR coordinator\",\"link\":\"/example-agents/fsd\"},{\"text\":\"Knowledge base\",\"link\":\"/example-agents/knowledge-base\"},{\"text\":\"Codebase wiki\",\"link\":\"/example-agents/codebase-wiki\"},{\"text\":\"Codeowners review\",\"link\":\"/example-agents/codeowners-review\"}]},{\"text\":\"Operating\",\"items\":[{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Fix common problems\",\"link\":\"/troubleshooting\"}]},{\"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\":\"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>
227
+ <span class="line"><span>[agent-sdk] pull_request.opened → pr-approver/github 200</span></span></code></pre></div><p>The agent runs the same inspect-then-submit loop, unprompted this time. Replay the same PR again and the channel resumes that PR&#39;s session instead of starting a new one: each pull request keeps one running conversation.</p><h2 id="open-the-playground" tabindex="-1">Open the playground <a class="header-anchor" href="#open-the-playground" aria-label="Permalink to &quot;Open the playground&quot;">​</a></h2><p>Keep <code>agent-sdk dev</code> running and open the playground URL it printed. The webhook session is in the session list, titled <code>Review acme/checkout#42</code>, with the trigger message, both tool calls, and the verdict laid out. Start a new chat there and ask for another review to watch a turn stream live.</p><h2 id="go-live" tabindex="-1">Go live <a class="header-anchor" href="#go-live" aria-label="Permalink to &quot;Go live&quot;">​</a></h2><p>Replay is for development. For real deliveries, serve with <code>--cursor-events --repo owner/repo</code> to pull events for repositories connected to Cursor with no public URL, or run <code>agent-sdk github forward</code> to relay webhooks to your dev server. The <a href="./guides/github.html">GitHub guide</a> compares the options. In production, give the host GitHub App credentials so reviews post as your app&#39;s bot identity instead of a personal account.</p><h2 id="where-to-go-next" tabindex="-1">Where to go next <a class="header-anchor" href="#where-to-go-next" aria-label="Permalink to &quot;Where to go next&quot;">​</a></h2><ul><li><a href="./../examples/approval-buddy/"><code>examples/approval-buddy</code></a>: the production-shaped sibling, with commit statuses, review subagents, and a deterministic stamp policy</li><li><a href="./evals.html">Evals</a>: freeze these two PRs as regression checks so prompt changes can&#39;t flip a verdict</li><li><a href="./reference/tools.html">Tools</a>: more on typed tools, approvals, and direct calls</li><li><a href="./guides/github.html">GitHub</a>: fixtures, forwarding, and pulling events from Cursor</li><li><a href="./building-with-agents.html">Building agents with agents</a>: have a coding agent extend the project for you</li></ul></div></div></main><footer class="VPDocFooter" data-v-d5d7ccd1 data-v-a5908b0f><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-a5908b0f><span class="visually-hidden" id="doc-footer-aria-label" data-v-a5908b0f>Pager</span><div class="pager" data-v-a5908b0f><a class="VPLink link pager-link prev" href="/docs/" data-v-a5908b0f><!--[--><span class="desc" data-v-a5908b0f>Previous page</span><span class="title" data-v-a5908b0f>Overview</span><!--]--></a></div><div class="pager" data-v-a5908b0f><a class="VPLink link pager-link next" href="/docs/scaffolding-agents.html" data-v-a5908b0f><!--[--><span class="desc" data-v-a5908b0f>Next page</span><span class="title" data-v-a5908b0f>Scaffold an agent with Cursor</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
228
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"ab.md\":\"6cLOW7--\",\"building-with-agents.md\":\"txrcGU2B\",\"concepts.md\":\"CqOsxbMU\",\"deployment.md\":\"CuK5SNjN\",\"evals.md\":\"BQXI3rXy\",\"example-agents_approval-buddy.md\":\"CIiZ9coo\",\"example-agents_benny.md\":\"l7JTmm8X\",\"example-agents_bugbot.md\":\"Dp5JqHSQ\",\"example-agents_codebase-wiki.md\":\"D-lteFf0\",\"example-agents_codeowners-review.md\":\"BU2ZXLf-\",\"example-agents_concierge.md\":\"DA2al_NK\",\"example-agents_fsd.md\":\"DPz9ezO4\",\"example-agents_index.md\":\"DgGBwckv\",\"example-agents_knowledge-base.md\":\"IneynQSR\",\"example-agents_oncall.md\":\"ZE0n6ZFN\",\"example-agents_security-reviewer.md\":\"Dkf1gyo6\",\"example-agents_slack-agent.md\":\"06jQXTAI\",\"example-agents_weather-agent.md\":\"DC3lINjo\",\"guides_agent-to-agent.md\":\"Bmbxy-FA\",\"guides_cloud-runtime.md\":\"V5igN4Sq\",\"guides_github.md\":\"R2QlpR75\",\"guides_human-in-the-loop.md\":\"BWvT7UqY\",\"guides_mcp-oauth.md\":\"C7G7IykG\",\"guides_slack.md\":\"zriQpU_9\",\"guides_webhooks.md\":\"BERuBSJW\",\"hillclimbing.md\":\"yXqdlv2R\",\"index.md\":\"CmhptOmN\",\"quickstart.md\":\"C_b6ESpD\",\"reference_agent-config.md\":\"CRmkoxd6\",\"reference_artifacts.md\":\"BGG4bZo-\",\"reference_channels.md\":\"BIabFUAI\",\"reference_cli.md\":\"Byvrg8eu\",\"reference_connections.md\":\"CSQiNzre\",\"reference_hooks.md\":\"BGDw4VLm\",\"reference_http-api.md\":\"DGrw_wOu\",\"reference_instructions.md\":\"CgoV-YEb\",\"reference_playground.md\":\"CPZhfYaO\",\"reference_project-layout.md\":\"_XdeMahr\",\"reference_prompt.md\":\"BaiweQxE\",\"reference_schedules.md\":\"gmfYzf_I\",\"reference_sessions.md\":\"DBVFi2Sx\",\"reference_skills.md\":\"B_jHN7JL\",\"reference_subagents.md\":\"DSrGLIuB\",\"reference_tools.md\":\"lSrsTxYJ\",\"scaffolding-agents.md\":\"mkc3B_ZW\",\"storage.md\":\"mQDtIULc\",\"troubleshooting.md\":\"B5RVX_tL\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Agent SDK\",\"description\":\"Filesystem-first framework for building and serving Cursor agents.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/webhooks\"},{\"text\":\"Examples\",\"link\":\"/example-agents/\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Scaffold an agent with Cursor\",\"link\":\"/scaffolding-agents\"},{\"text\":\"Concepts\",\"link\":\"/concepts\"}]},{\"text\":\"Improving agents\",\"items\":[{\"text\":\"Building agents with agents\",\"link\":\"/building-with-agents\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Live A/B metrics\",\"link\":\"/ab\"},{\"text\":\"Storage\",\"link\":\"/storage\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"}]},{\"text\":\"Guides\",\"items\":[{\"text\":\"Webhooks & custom channels\",\"link\":\"/guides/webhooks\"},{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Human-in-the-loop approvals\",\"link\":\"/guides/human-in-the-loop\"},{\"text\":\"Agent-to-agent\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Host MCP OAuth\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Cloud runtime\",\"link\":\"/guides/cloud-runtime\"}]},{\"text\":\"Example agents\",\"items\":[{\"text\":\"Choose an example\",\"link\":\"/example-agents/\"},{\"text\":\"Weather agent\",\"link\":\"/example-agents/weather-agent\"},{\"text\":\"Slack agent\",\"link\":\"/example-agents/slack-agent\"},{\"text\":\"Concierge\",\"link\":\"/example-agents/concierge\"},{\"text\":\"Playbook router\",\"link\":\"/example-agents/benny\"},{\"text\":\"Alert investigator\",\"link\":\"/example-agents/oncall\"},{\"text\":\"PR evidence reviewer\",\"link\":\"/example-agents/bugbot\"},{\"text\":\"Approval Buddy\",\"link\":\"/example-agents/approval-buddy\"},{\"text\":\"Security Reviewer\",\"link\":\"/example-agents/security-reviewer\"},{\"text\":\"Remote PR coordinator\",\"link\":\"/example-agents/fsd\"},{\"text\":\"Knowledge base\",\"link\":\"/example-agents/knowledge-base\"},{\"text\":\"Codebase wiki\",\"link\":\"/example-agents/codebase-wiki\"},{\"text\":\"Codeowners review\",\"link\":\"/example-agents/codeowners-review\"}]},{\"text\":\"Operating\",\"items\":[{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Fix common problems\",\"link\":\"/troubleshooting\"}]},{\"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\":\"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>
229
229
 
230
230
  </body>
231
231
  </html>
@@ -6,19 +6,19 @@
6
6
  <title>Agent config | Agent SDK</title>
7
7
  <meta name="description" content="defineAgent at agent/agent.ts: the model, the local and cloud runtimes, and serving programmatically.">
8
8
  <meta name="generator" content="VitePress v1.6.4">
9
- <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
9
+ <link rel="preload stylesheet" href="/docs/assets/style.CK3hwt6q.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.Bu9SRvZ9.js"></script>
12
+ <script type="module" src="/docs/assets/app.BQ8Hihdf.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.Bc61GzOf.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.CK_NiGC-.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/reference_agent-config.md.CRmkoxd6.lean.js">
17
17
  <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>
18
18
  <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
19
19
  </head>
20
20
  <body>
21
- <div id="app"><div class="Layout" data-v-05085060><!--[--><!--]--><!--[--><span tabindex="-1" data-v-30dc752a></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-30dc752a>Skip to content</a><!--]--><!----><header class="VPNav" data-v-05085060 data-v-cbe59881><div class="VPNavBar" data-v-cbe59881 data-v-dd8a1864><div class="wrapper" data-v-dd8a1864><div class="container" data-v-dd8a1864><div class="title" data-v-dd8a1864><div class="VPNavBarTitle has-sidebar" data-v-dd8a1864 data-v-f9346b2b><a class="title" href="/docs/" data-v-f9346b2b><!--[--><!--]--><!----><span data-v-f9346b2b>Agent SDK</span><!--[--><!--]--></a></div></div><div class="content" data-v-dd8a1864><div class="content-body" data-v-dd8a1864><!--[--><!--]--><div class="VPNavBarSearch search" data-v-dd8a1864><!--[--><!----><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-dd8a1864 data-v-7ed6e5ac><span id="main-nav-aria-label" class="visually-hidden" data-v-7ed6e5ac> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/quickstart.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Quickstart</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/guides/webhooks.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/example-agents/" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/reference/project-layout.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Reference</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-dd8a1864 data-v-2b2b395e><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-2b2b395e data-v-182deabf data-v-2562b538><span class="check" data-v-2562b538><span class="icon" data-v-2562b538><!--[--><span class="vpi-sun sun" data-v-182deabf></span><span class="vpi-moon moon" data-v-182deabf></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-dd8a1864 data-v-f3b584b7 data-v-82133de6><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-82133de6><span class="vpi-more-horizontal icon" data-v-82133de6></span></button><div class="menu" data-v-82133de6><div class="VPMenu" data-v-82133de6 data-v-759c9e19><!----><!--[--><!--[--><!----><div class="group" data-v-f3b584b7><div class="item appearance" data-v-f3b584b7><p class="label" data-v-f3b584b7>Appearance</p><div class="appearance-action" data-v-f3b584b7><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-f3b584b7 data-v-182deabf data-v-2562b538><span class="check" data-v-2562b538><span class="icon" data-v-2562b538><!--[--><span class="vpi-sun sun" data-v-182deabf></span><span class="vpi-moon moon" data-v-182deabf></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-dd8a1864 data-v-ab07e844><span class="container" data-v-ab07e844><span class="top" data-v-ab07e844></span><span class="middle" data-v-ab07e844></span><span class="bottom" data-v-ab07e844></span></span></button></div></div></div></div><div class="divider" data-v-dd8a1864><div class="divider-line" data-v-dd8a1864></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-05085060 data-v-826b8761><div class="container" data-v-826b8761><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-826b8761><span class="vpi-align-left menu-icon" data-v-826b8761></span><span class="menu-text" data-v-826b8761>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-826b8761 data-v-01af9e73><button data-v-01af9e73>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-05085060 data-v-5cd5b4d8><div class="curtain" data-v-5cd5b4d8></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-5cd5b4d8><span class="visually-hidden" id="sidebar-aria-label" data-v-5cd5b4d8> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Getting started</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/quickstart.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Quickstart</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/scaffolding-agents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Scaffold an agent with Cursor</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/concepts.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Concepts</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Improving agents</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/building-with-agents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Building agents with agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/evals.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/ab.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Live A/B metrics</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/storage.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Storage</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/hillclimbing.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Hillclimbing</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Guides</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/webhooks.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Webhooks & custom channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/github.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>GitHub</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/slack.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Slack</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/human-in-the-loop.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Human-in-the-loop approvals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/agent-to-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Agent-to-agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/mcp-oauth.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Host MCP OAuth</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/cloud-runtime.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Cloud runtime</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Example agents</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Choose an example</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/weather-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Weather agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/slack-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Slack agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/concierge.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Concierge</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/benny.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Playbook router</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/oncall.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Alert investigator</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/bugbot.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>PR evidence reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/approval-buddy.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Approval Buddy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/security-reviewer.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Security Reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/fsd.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Remote PR coordinator</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/knowledge-base.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Knowledge base</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/codebase-wiki.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Codebase wiki</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/codeowners-review.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Codeowners review</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Operating</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/deployment.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/troubleshooting.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Fix common problems</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0 collapsible has-active" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Reference</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b6893b1b><span class="vpi-chevron-right caret-icon" data-v-b6893b1b></span></div></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/project-layout.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Project layout</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/agent-config.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Agent config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/instructions.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Instructions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/tools.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Tools</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/prompt.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>prompt</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/skills.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/connections.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>MCP Connections</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/subagents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Subagents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/channels.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/schedules.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Schedules & reminders</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/hooks.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/artifacts.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Artifacts</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/sessions.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Sessions & streaming</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/playground.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Playground</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/cli.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>CLI</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/http-api.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>HTTP API</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-05085060 data-v-8eedf2ac><div class="VPDoc has-sidebar has-aside" data-v-8eedf2ac data-v-53b9fda6><!--[--><!--]--><div class="container" data-v-53b9fda6><div class="aside" data-v-53b9fda6><div class="aside-curtain" data-v-53b9fda6></div><div class="aside-container" data-v-53b9fda6><div class="aside-content" data-v-53b9fda6><div class="VPDocAside" data-v-53b9fda6 data-v-e448ecab><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-e448ecab data-v-b0b42374><div class="content" data-v-b0b42374><div class="outline-marker" data-v-b0b42374></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-b0b42374>On this page</div><ul class="VPDocOutlineItem root" data-v-b0b42374 data-v-ae03bd52><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-e448ecab></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-53b9fda6><div class="content-container" data-v-53b9fda6><!--[--><!--]--><main class="main" data-v-53b9fda6><div style="position:relative;" class="vp-doc _docs_reference_agent-config" data-v-53b9fda6><div><h1 id="agent-config-agent-agent-ts" tabindex="-1">Agent config (<code>agent/agent.ts</code>) <a class="header-anchor" href="#agent-config-agent-agent-ts" aria-label="Permalink to &quot;Agent config (`agent/agent.ts`)&quot;">​</a></h1><p><code>agent/agent.ts</code> default-exports <code>defineAgent(config)</code>: which model runs the agent, where turns execute, and runtime-specific defaults. Everything is optional on the root agent.</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:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { defineAgent } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;@cursor/july&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
21
+ <div id="app"><div class="Layout" data-v-41df81ff><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c792f8ce></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c792f8ce>Skip to content</a><!--]--><!----><header class="VPNav" data-v-41df81ff data-v-ecf0170c><div class="VPNavBar" data-v-ecf0170c data-v-74fc79fd><div class="wrapper" data-v-74fc79fd><div class="container" data-v-74fc79fd><div class="title" data-v-74fc79fd><div class="VPNavBarTitle has-sidebar" data-v-74fc79fd data-v-38e78292><a class="title" href="/docs/" data-v-38e78292><!--[--><!--]--><!----><span data-v-38e78292>Agent SDK</span><!--[--><!--]--></a></div></div><div class="content" data-v-74fc79fd><div class="content-body" data-v-74fc79fd><!--[--><!--]--><div class="VPNavBarSearch search" data-v-74fc79fd><!--[--><!----><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-74fc79fd data-v-6bcb02d4><span id="main-nav-aria-label" class="visually-hidden" data-v-6bcb02d4> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/quickstart.html" tabindex="0" data-v-6bcb02d4 data-v-40a52867><!--[--><span data-v-40a52867>Quickstart</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/guides/webhooks.html" tabindex="0" data-v-6bcb02d4 data-v-40a52867><!--[--><span data-v-40a52867>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/example-agents/" tabindex="0" data-v-6bcb02d4 data-v-40a52867><!--[--><span data-v-40a52867>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/reference/project-layout.html" tabindex="0" data-v-6bcb02d4 data-v-40a52867><!--[--><span data-v-40a52867>Reference</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-74fc79fd data-v-106703d3><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-106703d3 data-v-2881b93b data-v-5009fed8><span class="check" data-v-5009fed8><span class="icon" data-v-5009fed8><!--[--><span class="vpi-sun sun" data-v-2881b93b></span><span class="vpi-moon moon" data-v-2881b93b></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-74fc79fd data-v-53eccc99 data-v-f6ef69a3><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-f6ef69a3><span class="vpi-more-horizontal icon" data-v-f6ef69a3></span></button><div class="menu" data-v-f6ef69a3><div class="VPMenu" data-v-f6ef69a3 data-v-00ea3a5e><!----><!--[--><!--[--><!----><div class="group" data-v-53eccc99><div class="item appearance" data-v-53eccc99><p class="label" data-v-53eccc99>Appearance</p><div class="appearance-action" data-v-53eccc99><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-53eccc99 data-v-2881b93b data-v-5009fed8><span class="check" data-v-5009fed8><span class="icon" data-v-5009fed8><!--[--><span class="vpi-sun sun" data-v-2881b93b></span><span class="vpi-moon moon" data-v-2881b93b></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-74fc79fd data-v-1d6d00d8><span class="container" data-v-1d6d00d8><span class="top" data-v-1d6d00d8></span><span class="middle" data-v-1d6d00d8></span><span class="bottom" data-v-1d6d00d8></span></span></button></div></div></div></div><div class="divider" data-v-74fc79fd><div class="divider-line" data-v-74fc79fd></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-41df81ff data-v-fac38a7d><div class="container" data-v-fac38a7d><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-fac38a7d><span class="vpi-align-left menu-icon" data-v-fac38a7d></span><span class="menu-text" data-v-fac38a7d>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-fac38a7d data-v-3829176f><button data-v-3829176f>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-41df81ff data-v-78b202de><div class="curtain" data-v-78b202de></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-78b202de><span class="visually-hidden" id="sidebar-aria-label" data-v-78b202de> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-9195cb0b><section class="VPSidebarItem level-0" data-v-9195cb0b data-v-29a50a33><div class="item" role="button" tabindex="0" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><h2 class="text" data-v-29a50a33>Getting started</h2><!----></div><div class="items" data-v-29a50a33><!--[--><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/quickstart.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Quickstart</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/scaffolding-agents.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Scaffold an agent with Cursor</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/concepts.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Concepts</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-9195cb0b><section class="VPSidebarItem level-0" data-v-9195cb0b data-v-29a50a33><div class="item" role="button" tabindex="0" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><h2 class="text" data-v-29a50a33>Improving agents</h2><!----></div><div class="items" data-v-29a50a33><!--[--><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/building-with-agents.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Building agents with agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/evals.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/ab.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Live A/B metrics</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/storage.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Storage</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/hillclimbing.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Hillclimbing</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-9195cb0b><section class="VPSidebarItem level-0" data-v-9195cb0b data-v-29a50a33><div class="item" role="button" tabindex="0" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><h2 class="text" data-v-29a50a33>Guides</h2><!----></div><div class="items" data-v-29a50a33><!--[--><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/guides/webhooks.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Webhooks & custom channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/guides/github.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>GitHub</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/guides/slack.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Slack</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/guides/human-in-the-loop.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Human-in-the-loop approvals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/guides/agent-to-agent.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Agent-to-agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/guides/mcp-oauth.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Host MCP OAuth</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/guides/cloud-runtime.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Cloud runtime</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-9195cb0b><section class="VPSidebarItem level-0" data-v-9195cb0b data-v-29a50a33><div class="item" role="button" tabindex="0" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><h2 class="text" data-v-29a50a33>Example agents</h2><!----></div><div class="items" data-v-29a50a33><!--[--><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Choose an example</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/weather-agent.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Weather agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/slack-agent.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Slack agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/concierge.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Concierge</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/benny.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Playbook router</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/oncall.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Alert investigator</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/bugbot.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>PR evidence reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/approval-buddy.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Approval Buddy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/security-reviewer.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Security Reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/fsd.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Remote PR coordinator</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/knowledge-base.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Knowledge base</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/codebase-wiki.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Codebase wiki</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/example-agents/codeowners-review.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Codeowners review</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-9195cb0b><section class="VPSidebarItem level-0" data-v-9195cb0b data-v-29a50a33><div class="item" role="button" tabindex="0" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><h2 class="text" data-v-29a50a33>Operating</h2><!----></div><div class="items" data-v-29a50a33><!--[--><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/deployment.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/troubleshooting.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Fix common problems</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-9195cb0b><section class="VPSidebarItem level-0 collapsible has-active" data-v-9195cb0b data-v-29a50a33><div class="item" role="button" tabindex="0" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><h2 class="text" data-v-29a50a33>Reference</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-29a50a33><span class="vpi-chevron-right caret-icon" data-v-29a50a33></span></div></div><div class="items" data-v-29a50a33><!--[--><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/project-layout.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Project layout</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/agent-config.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Agent config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/instructions.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Instructions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/tools.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Tools</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/prompt.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>prompt</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/skills.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/connections.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>MCP Connections</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/subagents.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Subagents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/channels.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/schedules.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Schedules & reminders</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/hooks.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/artifacts.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Artifacts</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/sessions.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Sessions & streaming</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/playground.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>Playground</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/cli.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>CLI</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-29a50a33><div class="item" data-v-29a50a33><div class="indicator" data-v-29a50a33></div><a class="VPLink link link" href="/docs/reference/http-api.html" data-v-29a50a33><!--[--><p class="text" data-v-29a50a33>HTTP API</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-41df81ff data-v-9d9adfa7><div class="VPDoc has-sidebar has-aside" data-v-9d9adfa7 data-v-d5d7ccd1><!--[--><!--]--><div class="container" data-v-d5d7ccd1><div class="aside" data-v-d5d7ccd1><div class="aside-curtain" data-v-d5d7ccd1></div><div class="aside-container" data-v-d5d7ccd1><div class="aside-content" data-v-d5d7ccd1><div class="VPDocAside" data-v-d5d7ccd1 data-v-83378aaf><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-83378aaf data-v-5d36b21a><div class="content" data-v-5d36b21a><div class="outline-marker" data-v-5d36b21a></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-5d36b21a>On this page</div><ul class="VPDocOutlineItem root" data-v-5d36b21a data-v-537d09da><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-83378aaf></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-d5d7ccd1><div class="content-container" data-v-d5d7ccd1><!--[--><!--]--><main class="main" data-v-d5d7ccd1><div style="position:relative;" class="vp-doc _docs_reference_agent-config" data-v-d5d7ccd1><div><h1 id="agent-config-agent-agent-ts" tabindex="-1">Agent config (<code>agent/agent.ts</code>) <a class="header-anchor" href="#agent-config-agent-agent-ts" aria-label="Permalink to &quot;Agent config (`agent/agent.ts`)&quot;">​</a></h1><p><code>agent/agent.ts</code> default-exports <code>defineAgent(config)</code>: which model runs the agent, where turns execute, and runtime-specific defaults. Everything is optional on the root agent.</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:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { defineAgent } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;@cursor/july&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
22
22
  <span class="line"></span>
23
23
  <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;"> defineAgent</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
24
24
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> model: {</span></span>
@@ -53,8 +53,8 @@
53
53
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span>
54
54
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">`listening on ${</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">handle</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">.</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">url</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}`</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
55
55
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// handle.callTool(...), handle.dispatchSchedule(&quot;heartbeat&quot;),</span></span>
56
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// handle.createReminder(...), handle.project, await handle.close()</span></span></code></pre></div><p><code>ServeOptions</code> mirrors the CLI flags: <code>port</code>, <code>host</code>, <code>dev</code>, <code>stateRoot</code>, <code>apiKey</code>, <code>schedules</code>, <code>reminders</code>, <code>noControlPlane</code>, <code>playground</code>, <code>docs</code>, <code>authToken</code> (the <code>--bearer-token</code> equivalent), <code>allowAnonymous</code>, <code>allowAnonymousCursorGithub</code>, <code>allowAnonymousCursorAccountMcp</code>, <code>cursorGithubProxy</code>, <code>publicUrl</code>, <code>cloudToolsUrl</code>, <code>cursorEvents</code>, and <code>logger</code>. <code>serve()</code> additionally accepts <code>discovery</code> (project-loading options) and <code>mode: &quot;single&quot; | &quot;multi&quot;</code>. The Cursor credential resolves in one order everywhere: explicit <code>apiKey</code>, then <code>CURSOR_API_KEY</code>, then the key stored by <code>agent-sdk login</code>.</p><h2 id="what-s-next" tabindex="-1">What&#39;s next <a class="header-anchor" href="#what-s-next" aria-label="Permalink to &quot;What&#39;s next&quot;">​</a></h2><p>Continue with these pages:</p><ul><li><a href="./instructions.html">Instructions</a>: the required half of a minimal agent</li><li><a href="./../guides/cloud-runtime.html">Cloud runtime</a>: when and how to leave the host</li><li><a href="./cli.html">CLI</a>: the flags <code>ServeOptions</code> mirrors</li></ul></div></div></main><footer class="VPDocFooter" data-v-53b9fda6 data-v-3958cc3f><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-3958cc3f><span class="visually-hidden" id="doc-footer-aria-label" data-v-3958cc3f>Pager</span><div class="pager" data-v-3958cc3f><a class="VPLink link pager-link prev" href="/docs/reference/project-layout.html" data-v-3958cc3f><!--[--><span class="desc" data-v-3958cc3f>Previous page</span><span class="title" data-v-3958cc3f>Project layout</span><!--]--></a></div><div class="pager" data-v-3958cc3f><a class="VPLink link pager-link next" href="/docs/reference/instructions.html" data-v-3958cc3f><!--[--><span class="desc" data-v-3958cc3f>Next page</span><span class="title" data-v-3958cc3f>Instructions</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
57
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"ab.md\":\"6cLOW7--\",\"building-with-agents.md\":\"txrcGU2B\",\"concepts.md\":\"CqOsxbMU\",\"deployment.md\":\"CuK5SNjN\",\"evals.md\":\"BQXI3rXy\",\"example-agents_approval-buddy.md\":\"CIiZ9coo\",\"example-agents_benny.md\":\"l7JTmm8X\",\"example-agents_bugbot.md\":\"Dp5JqHSQ\",\"example-agents_codebase-wiki.md\":\"D-lteFf0\",\"example-agents_codeowners-review.md\":\"BU2ZXLf-\",\"example-agents_concierge.md\":\"DA2al_NK\",\"example-agents_fsd.md\":\"DPz9ezO4\",\"example-agents_index.md\":\"DgGBwckv\",\"example-agents_knowledge-base.md\":\"IneynQSR\",\"example-agents_oncall.md\":\"ZE0n6ZFN\",\"example-agents_security-reviewer.md\":\"Dkf1gyo6\",\"example-agents_slack-agent.md\":\"06jQXTAI\",\"example-agents_weather-agent.md\":\"CrGZ0SqR\",\"guides_agent-to-agent.md\":\"Bmbxy-FA\",\"guides_cloud-runtime.md\":\"V5igN4Sq\",\"guides_github.md\":\"R2QlpR75\",\"guides_human-in-the-loop.md\":\"BWvT7UqY\",\"guides_mcp-oauth.md\":\"C7G7IykG\",\"guides_slack.md\":\"zriQpU_9\",\"guides_webhooks.md\":\"BERuBSJW\",\"hillclimbing.md\":\"yXqdlv2R\",\"index.md\":\"CmhptOmN\",\"quickstart.md\":\"C_b6ESpD\",\"reference_agent-config.md\":\"CRmkoxd6\",\"reference_artifacts.md\":\"BGG4bZo-\",\"reference_channels.md\":\"BIabFUAI\",\"reference_cli.md\":\"Byvrg8eu\",\"reference_connections.md\":\"DGqAsFXb\",\"reference_hooks.md\":\"BGDw4VLm\",\"reference_http-api.md\":\"DGrw_wOu\",\"reference_instructions.md\":\"CgoV-YEb\",\"reference_playground.md\":\"CPZhfYaO\",\"reference_project-layout.md\":\"_XdeMahr\",\"reference_prompt.md\":\"BaiweQxE\",\"reference_schedules.md\":\"gmfYzf_I\",\"reference_sessions.md\":\"DBVFi2Sx\",\"reference_skills.md\":\"B_jHN7JL\",\"reference_subagents.md\":\"DSrGLIuB\",\"reference_tools.md\":\"lSrsTxYJ\",\"scaffolding-agents.md\":\"mkc3B_ZW\",\"storage.md\":\"mQDtIULc\",\"troubleshooting.md\":\"B5RVX_tL\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Agent SDK\",\"description\":\"Filesystem-first framework for building and serving Cursor agents.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/webhooks\"},{\"text\":\"Examples\",\"link\":\"/example-agents/\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Scaffold an agent with Cursor\",\"link\":\"/scaffolding-agents\"},{\"text\":\"Concepts\",\"link\":\"/concepts\"}]},{\"text\":\"Improving agents\",\"items\":[{\"text\":\"Building agents with agents\",\"link\":\"/building-with-agents\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Live A/B metrics\",\"link\":\"/ab\"},{\"text\":\"Storage\",\"link\":\"/storage\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"}]},{\"text\":\"Guides\",\"items\":[{\"text\":\"Webhooks & custom channels\",\"link\":\"/guides/webhooks\"},{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Human-in-the-loop approvals\",\"link\":\"/guides/human-in-the-loop\"},{\"text\":\"Agent-to-agent\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Host MCP OAuth\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Cloud runtime\",\"link\":\"/guides/cloud-runtime\"}]},{\"text\":\"Example agents\",\"items\":[{\"text\":\"Choose an example\",\"link\":\"/example-agents/\"},{\"text\":\"Weather agent\",\"link\":\"/example-agents/weather-agent\"},{\"text\":\"Slack agent\",\"link\":\"/example-agents/slack-agent\"},{\"text\":\"Concierge\",\"link\":\"/example-agents/concierge\"},{\"text\":\"Playbook router\",\"link\":\"/example-agents/benny\"},{\"text\":\"Alert investigator\",\"link\":\"/example-agents/oncall\"},{\"text\":\"PR evidence reviewer\",\"link\":\"/example-agents/bugbot\"},{\"text\":\"Approval Buddy\",\"link\":\"/example-agents/approval-buddy\"},{\"text\":\"Security Reviewer\",\"link\":\"/example-agents/security-reviewer\"},{\"text\":\"Remote PR coordinator\",\"link\":\"/example-agents/fsd\"},{\"text\":\"Knowledge base\",\"link\":\"/example-agents/knowledge-base\"},{\"text\":\"Codebase wiki\",\"link\":\"/example-agents/codebase-wiki\"},{\"text\":\"Codeowners review\",\"link\":\"/example-agents/codeowners-review\"}]},{\"text\":\"Operating\",\"items\":[{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Fix common problems\",\"link\":\"/troubleshooting\"}]},{\"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\":\"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>
56
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// handle.createReminder(...), handle.project, await handle.close()</span></span></code></pre></div><p><code>ServeOptions</code> mirrors the CLI flags: <code>port</code>, <code>host</code>, <code>dev</code>, <code>stateRoot</code>, <code>apiKey</code>, <code>schedules</code>, <code>reminders</code>, <code>noControlPlane</code>, <code>playground</code>, <code>docs</code>, <code>authToken</code> (the <code>--bearer-token</code> equivalent), <code>allowAnonymous</code>, <code>allowAnonymousCursorGithub</code>, <code>allowAnonymousCursorAccountMcp</code>, <code>cursorGithubProxy</code>, <code>publicUrl</code>, <code>cloudToolsUrl</code>, <code>cursorEvents</code>, and <code>logger</code>. <code>serve()</code> additionally accepts <code>discovery</code> (project-loading options) and <code>mode: &quot;single&quot; | &quot;multi&quot;</code>. The Cursor credential resolves in one order everywhere: explicit <code>apiKey</code>, then <code>CURSOR_API_KEY</code>, then the key stored by <code>agent-sdk login</code>.</p><h2 id="what-s-next" tabindex="-1">What&#39;s next <a class="header-anchor" href="#what-s-next" aria-label="Permalink to &quot;What&#39;s next&quot;">​</a></h2><p>Continue with these pages:</p><ul><li><a href="./instructions.html">Instructions</a>: the required half of a minimal agent</li><li><a href="./../guides/cloud-runtime.html">Cloud runtime</a>: when and how to leave the host</li><li><a href="./cli.html">CLI</a>: the flags <code>ServeOptions</code> mirrors</li></ul></div></div></main><footer class="VPDocFooter" data-v-d5d7ccd1 data-v-a5908b0f><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-a5908b0f><span class="visually-hidden" id="doc-footer-aria-label" data-v-a5908b0f>Pager</span><div class="pager" data-v-a5908b0f><a class="VPLink link pager-link prev" href="/docs/reference/project-layout.html" data-v-a5908b0f><!--[--><span class="desc" data-v-a5908b0f>Previous page</span><span class="title" data-v-a5908b0f>Project layout</span><!--]--></a></div><div class="pager" data-v-a5908b0f><a class="VPLink link pager-link next" href="/docs/reference/instructions.html" data-v-a5908b0f><!--[--><span class="desc" data-v-a5908b0f>Next page</span><span class="title" data-v-a5908b0f>Instructions</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
57
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"ab.md\":\"6cLOW7--\",\"building-with-agents.md\":\"txrcGU2B\",\"concepts.md\":\"CqOsxbMU\",\"deployment.md\":\"CuK5SNjN\",\"evals.md\":\"BQXI3rXy\",\"example-agents_approval-buddy.md\":\"CIiZ9coo\",\"example-agents_benny.md\":\"l7JTmm8X\",\"example-agents_bugbot.md\":\"Dp5JqHSQ\",\"example-agents_codebase-wiki.md\":\"D-lteFf0\",\"example-agents_codeowners-review.md\":\"BU2ZXLf-\",\"example-agents_concierge.md\":\"DA2al_NK\",\"example-agents_fsd.md\":\"DPz9ezO4\",\"example-agents_index.md\":\"DgGBwckv\",\"example-agents_knowledge-base.md\":\"IneynQSR\",\"example-agents_oncall.md\":\"ZE0n6ZFN\",\"example-agents_security-reviewer.md\":\"Dkf1gyo6\",\"example-agents_slack-agent.md\":\"06jQXTAI\",\"example-agents_weather-agent.md\":\"DC3lINjo\",\"guides_agent-to-agent.md\":\"Bmbxy-FA\",\"guides_cloud-runtime.md\":\"V5igN4Sq\",\"guides_github.md\":\"R2QlpR75\",\"guides_human-in-the-loop.md\":\"BWvT7UqY\",\"guides_mcp-oauth.md\":\"C7G7IykG\",\"guides_slack.md\":\"zriQpU_9\",\"guides_webhooks.md\":\"BERuBSJW\",\"hillclimbing.md\":\"yXqdlv2R\",\"index.md\":\"CmhptOmN\",\"quickstart.md\":\"C_b6ESpD\",\"reference_agent-config.md\":\"CRmkoxd6\",\"reference_artifacts.md\":\"BGG4bZo-\",\"reference_channels.md\":\"BIabFUAI\",\"reference_cli.md\":\"Byvrg8eu\",\"reference_connections.md\":\"CSQiNzre\",\"reference_hooks.md\":\"BGDw4VLm\",\"reference_http-api.md\":\"DGrw_wOu\",\"reference_instructions.md\":\"CgoV-YEb\",\"reference_playground.md\":\"CPZhfYaO\",\"reference_project-layout.md\":\"_XdeMahr\",\"reference_prompt.md\":\"BaiweQxE\",\"reference_schedules.md\":\"gmfYzf_I\",\"reference_sessions.md\":\"DBVFi2Sx\",\"reference_skills.md\":\"B_jHN7JL\",\"reference_subagents.md\":\"DSrGLIuB\",\"reference_tools.md\":\"lSrsTxYJ\",\"scaffolding-agents.md\":\"mkc3B_ZW\",\"storage.md\":\"mQDtIULc\",\"troubleshooting.md\":\"B5RVX_tL\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Agent SDK\",\"description\":\"Filesystem-first framework for building and serving Cursor agents.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/webhooks\"},{\"text\":\"Examples\",\"link\":\"/example-agents/\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Scaffold an agent with Cursor\",\"link\":\"/scaffolding-agents\"},{\"text\":\"Concepts\",\"link\":\"/concepts\"}]},{\"text\":\"Improving agents\",\"items\":[{\"text\":\"Building agents with agents\",\"link\":\"/building-with-agents\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Live A/B metrics\",\"link\":\"/ab\"},{\"text\":\"Storage\",\"link\":\"/storage\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"}]},{\"text\":\"Guides\",\"items\":[{\"text\":\"Webhooks & custom channels\",\"link\":\"/guides/webhooks\"},{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Human-in-the-loop approvals\",\"link\":\"/guides/human-in-the-loop\"},{\"text\":\"Agent-to-agent\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Host MCP OAuth\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Cloud runtime\",\"link\":\"/guides/cloud-runtime\"}]},{\"text\":\"Example agents\",\"items\":[{\"text\":\"Choose an example\",\"link\":\"/example-agents/\"},{\"text\":\"Weather agent\",\"link\":\"/example-agents/weather-agent\"},{\"text\":\"Slack agent\",\"link\":\"/example-agents/slack-agent\"},{\"text\":\"Concierge\",\"link\":\"/example-agents/concierge\"},{\"text\":\"Playbook router\",\"link\":\"/example-agents/benny\"},{\"text\":\"Alert investigator\",\"link\":\"/example-agents/oncall\"},{\"text\":\"PR evidence reviewer\",\"link\":\"/example-agents/bugbot\"},{\"text\":\"Approval Buddy\",\"link\":\"/example-agents/approval-buddy\"},{\"text\":\"Security Reviewer\",\"link\":\"/example-agents/security-reviewer\"},{\"text\":\"Remote PR coordinator\",\"link\":\"/example-agents/fsd\"},{\"text\":\"Knowledge base\",\"link\":\"/example-agents/knowledge-base\"},{\"text\":\"Codebase wiki\",\"link\":\"/example-agents/codebase-wiki\"},{\"text\":\"Codeowners review\",\"link\":\"/example-agents/codeowners-review\"}]},{\"text\":\"Operating\",\"items\":[{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Fix common problems\",\"link\":\"/troubleshooting\"}]},{\"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\":\"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>
58
58
 
59
59
  </body>
60
60
  </html>