@cursor/july 0.1.113 → 0.1.114

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 (229) hide show
  1. package/dist/docs/404.html +2 -2
  2. package/dist/docs/assets/{app.CAeK13eM.js → app.BqkJwOZ-.js} +4 -4
  3. package/dist/docs/assets/chunks/@localSearchIndexroot.BnSgidYE.js +1 -0
  4. package/dist/docs/assets/chunks/{VPLocalSearchBox.C9LbPHod.js → VPLocalSearchBox.BJAi2KiV.js} +1 -1
  5. package/dist/docs/assets/chunks/{arc.CmMq2zmS.js → arc.BZpXTgvV.js} +1 -1
  6. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CCXB8Uj5.js → architectureDiagram-Q4EWVU46.WYI-7F-Y.js} +1 -1
  7. package/dist/docs/assets/chunks/{baseUniq.CyQo6eLe.js → baseUniq.CZaUPpg0.js} +1 -1
  8. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.JYq6w91N.js → blockDiagram-DXYQGD6D.D6UES2pD.js} +1 -1
  9. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.BRV8GPJJ.js → c4Diagram-AHTNJAMY.cwebIe4i.js} +1 -1
  10. package/dist/docs/assets/chunks/channel.DdM5EfNW.js +1 -0
  11. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.Bv4ooYQR.js → chunk-4BX2VUAB.fVyFnjxg.js} +1 -1
  12. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.t4JtKPcj.js → chunk-4TB4RGXK.BanufG1c.js} +1 -1
  13. package/dist/docs/assets/chunks/{chunk-55IACEB6.34lCHj9Y.js → chunk-55IACEB6.VaSMz5-2.js} +1 -1
  14. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.BSwrPNrt.js → chunk-EDXVE4YY.CN2diZOM.js} +1 -1
  15. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.Beeun-R-.js → chunk-FMBD7UC4.g4ivypu3.js} +1 -1
  16. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.BUUFUcJc.js → chunk-OYMX7WX6.GZXKn9JJ.js} +1 -1
  17. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.B2XjHzN_.js → chunk-QZHKN3VN.itXxJZCd.js} +1 -1
  18. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.CLYG8znk.js → chunk-YZCP3GAM.-rw2GfvX.js} +1 -1
  19. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CjfGHeg2.js +1 -0
  20. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CjfGHeg2.js +1 -0
  21. package/dist/docs/assets/chunks/clone.wSOICb_f.js +1 -0
  22. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.DVEa6fZp.js → cose-bilkent-S5V4N54A.CmaI5br0.js} +1 -1
  23. package/dist/docs/assets/chunks/{dagre-KV5264BT.C9PZQK-S.js → dagre-KV5264BT.4wY9S4Kt.js} +1 -1
  24. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DoN0uv3Y.js → diagram-5BDNPKRD.Pc3c0u9W.js} +1 -1
  25. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.Czv3duqx.js → diagram-G4DWMVQ6.CYrWz-nj.js} +1 -1
  26. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.BinJ5kWb.js → diagram-MMDJMWI5.Bgj5hukb.js} +1 -1
  27. package/dist/docs/assets/chunks/{diagram-TYMM5635.DW326M4K.js → diagram-TYMM5635.DGMEXalS.js} +1 -1
  28. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.U2pR_OA7.js → erDiagram-SMLLAGMA.GepTV9Im.js} +1 -1
  29. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.ByWJXeYK.js → flowDiagram-DWJPFMVM.DVKywg3j.js} +1 -1
  30. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.OquF0Rtg.js → ganttDiagram-T4ZO3ILL.C7qt9Mlo.js} +1 -1
  31. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.Bpn01P7X.js → gitGraphDiagram-UUTBAWPF.U30_r82P.js} +1 -1
  32. package/dist/docs/assets/chunks/{graph.CNRB6ETL.js → graph.CyyMyAWv.js} +1 -1
  33. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.CqhknMWi.js → infoDiagram-42DDH7IO.Dn9ACW3y.js} +1 -1
  34. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.C6xpR2af.js → ishikawaDiagram-UXIWVN3A.DlIdIGOA.js} +1 -1
  35. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.Cg5f7oB3.js → journeyDiagram-VCZTEJTY.DZj4vy4E.js} +1 -1
  36. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.Cx9YTwlU.js → kanban-definition-6JOO6SKY.Dl63eMUV.js} +1 -1
  37. package/dist/docs/assets/chunks/{layout.ljS-wFtK.js → layout.BLHZLWPH.js} +1 -1
  38. package/dist/docs/assets/chunks/{linear.jSxNrsFC.js → linear.aXKGKaNw.js} +1 -1
  39. package/dist/docs/assets/chunks/{min.Cum8AlQw.js → min.zWnFcpcc.js} +1 -1
  40. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.BLiysLpe.js → mindmap-definition-QFDTVHPH.Qs4MQBea.js} +1 -1
  41. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.BoIDyuKF.js → pieDiagram-DEJITSTG.BmPHgsk7.js} +1 -1
  42. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DLkpDytR.js → quadrantDiagram-34T5L4WZ.D5MQ3gwA.js} +1 -1
  43. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DqTVqSu2.js → requirementDiagram-MS252O5E.CkdUFrO7.js} +1 -1
  44. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.CG_6FF7j.js → sankeyDiagram-XADWPNL6.KZrljrAV.js} +1 -1
  45. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.BIp9602K.js → sequenceDiagram-FGHM5R23.XMoEW-Lx.js} +1 -1
  46. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.COSXsD9I.js → stateDiagram-FHFEXIEX.BmTzePLj.js} +1 -1
  47. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.Cu5X28zZ.js +1 -0
  48. package/dist/docs/assets/chunks/{theme.CXJ7PNwy.js → theme.BfQzpxsg.js} +2 -2
  49. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.CXdVqkLq.js → timeline-definition-GMOUNBTQ.Dug0oamp.js} +1 -1
  50. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CZxGuc4r.js → vennDiagram-DHZGUBPP.BOTHrEFu.js} +1 -1
  51. package/dist/docs/assets/chunks/{wardley-RL74JXVD.3oVgfqQk.js → wardley-RL74JXVD.DXy2i1LS.js} +1 -1
  52. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.6_irCgGJ.js → wardleyDiagram-NUSXRM2D.CoXKdfi6.js} +1 -1
  53. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.TRPe92m3.js → xychartDiagram-5P7HB3ND.DXoSCjAW.js} +1 -1
  54. package/dist/docs/assets/{deployment.md.D2jQZuFx.js → deployment.md.D2YX7u_I.js} +1 -1
  55. package/dist/docs/assets/{guides_agent-to-agent.md.CD4T5FIl.js → guides_agent-to-agent.md.C6kPY8nu.js} +2 -2
  56. package/dist/docs/assets/{guides_cloud-agents.md.Cp1O3u-X.js → guides_cloud-agents.md.BPJqTZjT.js} +1 -1
  57. package/dist/docs/assets/{guides_grokbot-agents.md.CMhZNdEU.js → guides_grokbot-agents.md.CzV715v8.js} +1 -1
  58. package/dist/docs/assets/guides_hooks.md.BT9GLwEp.js +50 -0
  59. package/dist/docs/assets/guides_hooks.md.BT9GLwEp.lean.js +1 -0
  60. package/dist/docs/assets/{guides_jev.md.F5fAkkfN.js → guides_jev.md.DeSCqMaO.js} +6 -44
  61. package/dist/docs/assets/guides_jev.md.DeSCqMaO.lean.js +1 -0
  62. package/dist/docs/assets/reference_agent-config.md.BRxAlnRy.js +36 -0
  63. package/dist/docs/assets/{reference_agent-config.md.DGPyw7ms.lean.js → reference_agent-config.md.BRxAlnRy.lean.js} +1 -1
  64. package/dist/docs/assets/reference_artifacts.md.KRX0sAdt.js +18 -0
  65. package/dist/docs/assets/reference_artifacts.md.KRX0sAdt.lean.js +1 -0
  66. package/dist/docs/assets/reference_channels.md.DZr14vm7.js +23 -0
  67. package/dist/docs/assets/reference_channels.md.DZr14vm7.lean.js +1 -0
  68. package/dist/docs/assets/{reference_connections.md.Je9dMsdd.js → reference_connections.md.DJGUCxrr.js} +18 -30
  69. package/dist/docs/assets/{reference_connections.md.Je9dMsdd.lean.js → reference_connections.md.DJGUCxrr.lean.js} +1 -1
  70. package/dist/docs/assets/{reference_evals.md.DNJzM_yf.js → reference_evals.md.C6umwNC6.js} +6 -7
  71. package/dist/docs/assets/reference_evals.md.C6umwNC6.lean.js +1 -0
  72. package/dist/docs/assets/{reference_extensions.md.Cv5aLCz_.js → reference_extensions.md.DbNYu-DP.js} +3 -3
  73. package/dist/docs/assets/{reference_extensions.md.Cv5aLCz_.lean.js → reference_extensions.md.DbNYu-DP.lean.js} +1 -1
  74. package/dist/docs/assets/reference_hooks.md.BfOkhTU0.js +45 -0
  75. package/dist/docs/assets/{reference_hooks.md.B7uzNENk.lean.js → reference_hooks.md.BfOkhTU0.lean.js} +1 -1
  76. package/dist/docs/assets/reference_http-api.md.DdwtBeCj.js +11 -0
  77. package/dist/docs/assets/{reference_http-api.md.CduHavZ2.lean.js → reference_http-api.md.DdwtBeCj.lean.js} +1 -1
  78. package/dist/docs/assets/reference_instructions.md.B2mcIzT6.js +14 -0
  79. package/dist/docs/assets/reference_instructions.md.B2mcIzT6.lean.js +1 -0
  80. package/dist/docs/assets/reference_playground.md.CyrQD_n3.js +1 -0
  81. package/dist/docs/assets/reference_playground.md.CyrQD_n3.lean.js +1 -0
  82. package/dist/docs/assets/reference_project-layout.md.BEMzxAkq.js +19 -0
  83. package/dist/docs/assets/{reference_project-layout.md.BGhgpy9V.lean.js → reference_project-layout.md.BEMzxAkq.lean.js} +1 -1
  84. package/dist/docs/assets/reference_prompt.md.BFrqjHFL.js +9 -0
  85. package/dist/docs/assets/reference_prompt.md.BFrqjHFL.lean.js +1 -0
  86. package/dist/docs/assets/reference_schedules.md.BB9N3tRR.js +47 -0
  87. package/dist/docs/assets/reference_schedules.md.BB9N3tRR.lean.js +1 -0
  88. package/dist/docs/assets/reference_sessions.md.BBp-GIt-.js +1 -0
  89. package/dist/docs/assets/{reference_sessions.md.1_6Vyv7x.lean.js → reference_sessions.md.BBp-GIt-.lean.js} +1 -1
  90. package/dist/docs/assets/reference_skills.md.BVmi3UJ_.js +15 -0
  91. package/dist/docs/assets/{reference_skills.md.DjQkRefx.lean.js → reference_skills.md.BVmi3UJ_.lean.js} +1 -1
  92. package/dist/docs/assets/reference_subagents.md.DRoRy2Uj.js +10 -0
  93. package/dist/docs/assets/{reference_subagents.md.Dl16gcBj.lean.js → reference_subagents.md.DRoRy2Uj.lean.js} +1 -1
  94. package/dist/docs/assets/{reference_tools.md.B1dH1lpa.js → reference_tools.md.CgocLDX1.js} +9 -6
  95. package/dist/docs/assets/{reference_tools.md.B1dH1lpa.lean.js → reference_tools.md.CgocLDX1.lean.js} +1 -1
  96. package/dist/docs/assets/troubleshooting.md.HY95rCCz.js +1 -0
  97. package/dist/docs/building-with-agents.html +35 -35
  98. package/dist/docs/deployment.html +37 -37
  99. package/dist/docs/deployment.md +1 -1
  100. package/dist/docs/evals.html +35 -35
  101. package/dist/docs/guides/agent-to-agent.html +38 -38
  102. package/dist/docs/guides/agent-to-agent.md +11 -12
  103. package/dist/docs/guides/bitbucket.html +35 -35
  104. package/dist/docs/guides/cloud-agents.html +36 -36
  105. package/dist/docs/guides/cloud-agents.md +1 -1
  106. package/dist/docs/guides/convert-automation.html +35 -35
  107. package/dist/docs/guides/github.html +35 -35
  108. package/dist/docs/guides/gitlab.html +35 -35
  109. package/dist/docs/guides/grokbot-agents.html +37 -37
  110. package/dist/docs/guides/grokbot-agents.md +1 -1
  111. package/dist/docs/guides/hooks.html +109 -0
  112. package/dist/docs/guides/hooks.md +111 -0
  113. package/dist/docs/guides/improve.html +35 -35
  114. package/dist/docs/guides/jev.html +42 -80
  115. package/dist/docs/guides/jev.md +22 -79
  116. package/dist/docs/guides/mcp-oauth.html +36 -36
  117. package/dist/docs/guides/opentelemetry.html +35 -35
  118. package/dist/docs/guides/slack.html +35 -35
  119. package/dist/docs/guides/webhooks.html +35 -35
  120. package/dist/docs/hashmap.json +1 -1
  121. package/dist/docs/hillclimbing.html +35 -35
  122. package/dist/docs/index.html +35 -35
  123. package/dist/docs/llms-full.txt +993 -1303
  124. package/dist/docs/llms.txt +8 -7
  125. package/dist/docs/quickstart.html +35 -35
  126. package/dist/docs/reference/agent-config.html +42 -46
  127. package/dist/docs/reference/agent-config.md +48 -81
  128. package/dist/docs/reference/artifacts.html +39 -40
  129. package/dist/docs/reference/artifacts.md +71 -70
  130. package/dist/docs/reference/channels.html +41 -61
  131. package/dist/docs/reference/channels.md +134 -201
  132. package/dist/docs/reference/cli.html +35 -35
  133. package/dist/docs/reference/connections.html +54 -66
  134. package/dist/docs/reference/connections.md +92 -128
  135. package/dist/docs/reference/evals.html +42 -43
  136. package/dist/docs/reference/evals.md +42 -50
  137. package/dist/docs/reference/extensions.html +38 -38
  138. package/dist/docs/reference/extensions.md +9 -13
  139. package/dist/docs/reference/hooks.html +39 -67
  140. package/dist/docs/reference/hooks.md +72 -146
  141. package/dist/docs/reference/http-api.html +39 -39
  142. package/dist/docs/reference/http-api.md +137 -161
  143. package/dist/docs/reference/instructions.html +39 -39
  144. package/dist/docs/reference/instructions.md +21 -36
  145. package/dist/docs/reference/playground.html +36 -36
  146. package/dist/docs/reference/playground.md +26 -43
  147. package/dist/docs/reference/project-layout.html +38 -38
  148. package/dist/docs/reference/project-layout.md +12 -17
  149. package/dist/docs/reference/prompt.html +42 -42
  150. package/dist/docs/reference/prompt.md +18 -13
  151. package/dist/docs/reference/schedules.html +56 -91
  152. package/dist/docs/reference/schedules.md +52 -99
  153. package/dist/docs/reference/sessions.html +36 -36
  154. package/dist/docs/reference/sessions.md +36 -40
  155. package/dist/docs/reference/skills.html +38 -38
  156. package/dist/docs/reference/skills.md +15 -26
  157. package/dist/docs/reference/subagents.html +38 -38
  158. package/dist/docs/reference/subagents.md +20 -30
  159. package/dist/docs/reference/tools.html +44 -41
  160. package/dist/docs/reference/tools.md +45 -64
  161. package/dist/docs/templates/agentic-owners.html +35 -35
  162. package/dist/docs/templates/pr-autofixer.html +35 -35
  163. package/dist/docs/templates/security-reviewer.html +35 -35
  164. package/dist/docs/templates/thermo-quality-review.html +35 -35
  165. package/dist/docs/templates/thermo-review.html +35 -35
  166. package/dist/docs/templates/triage.html +35 -35
  167. package/dist/docs/troubleshooting.html +36 -36
  168. package/dist/docs/troubleshooting.md +1 -1
  169. package/dist/playground/assets/{index-DSMAewbx.css → index-C61EWMBK.css} +1 -1
  170. package/dist/playground/index.html +2 -2
  171. package/docs/deployment.md +1 -1
  172. package/docs/guides/agent-to-agent.md +11 -12
  173. package/docs/guides/cloud-agents.md +1 -1
  174. package/docs/guides/grokbot-agents.md +1 -1
  175. package/docs/guides/hooks.md +116 -0
  176. package/docs/guides/jev.md +23 -80
  177. package/docs/reference/agent-config.md +48 -81
  178. package/docs/reference/artifacts.md +72 -71
  179. package/docs/reference/channels.md +135 -202
  180. package/docs/reference/connections.md +93 -129
  181. package/docs/reference/evals.md +43 -51
  182. package/docs/reference/extensions.md +9 -13
  183. package/docs/reference/hooks.md +72 -146
  184. package/docs/reference/http-api.md +137 -161
  185. package/docs/reference/instructions.md +22 -37
  186. package/docs/reference/playground.md +26 -43
  187. package/docs/reference/project-layout.md +12 -17
  188. package/docs/reference/prompt.md +20 -15
  189. package/docs/reference/schedules.md +52 -99
  190. package/docs/reference/sessions.md +36 -40
  191. package/docs/reference/skills.md +15 -26
  192. package/docs/reference/subagents.md +20 -30
  193. package/docs/reference/tools.md +45 -64
  194. package/docs/troubleshooting.md +1 -1
  195. package/package.json +1 -1
  196. package/dist/docs/assets/chunks/@localSearchIndexroot.Ck9E52Ls.js +0 -1
  197. package/dist/docs/assets/chunks/channel.BHiYmnZ4.js +0 -1
  198. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.Degh8l90.js +0 -1
  199. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.Degh8l90.js +0 -1
  200. package/dist/docs/assets/chunks/clone.BIywbczV.js +0 -1
  201. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.qrxrbFsX.js +0 -1
  202. package/dist/docs/assets/guides_jev.md.F5fAkkfN.lean.js +0 -1
  203. package/dist/docs/assets/reference_agent-config.md.DGPyw7ms.js +0 -40
  204. package/dist/docs/assets/reference_artifacts.md.Bu_4HmsD.js +0 -19
  205. package/dist/docs/assets/reference_artifacts.md.Bu_4HmsD.lean.js +0 -1
  206. package/dist/docs/assets/reference_channels.md.nFWbzAic.js +0 -43
  207. package/dist/docs/assets/reference_channels.md.nFWbzAic.lean.js +0 -1
  208. package/dist/docs/assets/reference_evals.md.DNJzM_yf.lean.js +0 -1
  209. package/dist/docs/assets/reference_hooks.md.B7uzNENk.js +0 -73
  210. package/dist/docs/assets/reference_http-api.md.CduHavZ2.js +0 -11
  211. package/dist/docs/assets/reference_instructions.md.CU1My5My.js +0 -14
  212. package/dist/docs/assets/reference_instructions.md.CU1My5My.lean.js +0 -1
  213. package/dist/docs/assets/reference_playground.md.Ch2d0Iqi.js +0 -1
  214. package/dist/docs/assets/reference_playground.md.Ch2d0Iqi.lean.js +0 -1
  215. package/dist/docs/assets/reference_project-layout.md.BGhgpy9V.js +0 -19
  216. package/dist/docs/assets/reference_prompt.md.Ccp0R53H.js +0 -1
  217. package/dist/docs/assets/reference_prompt.md.Ccp0R53H.lean.js +0 -1
  218. package/dist/docs/assets/reference_schedules.md.B2Nm6FaD.js +0 -82
  219. package/dist/docs/assets/reference_schedules.md.B2Nm6FaD.lean.js +0 -1
  220. package/dist/docs/assets/reference_sessions.md.1_6Vyv7x.js +0 -1
  221. package/dist/docs/assets/reference_skills.md.DjQkRefx.js +0 -15
  222. package/dist/docs/assets/reference_subagents.md.Dl16gcBj.js +0 -10
  223. package/dist/docs/assets/troubleshooting.md.mnfFG2Em.js +0 -1
  224. /package/dist/docs/assets/{deployment.md.D2jQZuFx.lean.js → deployment.md.D2YX7u_I.lean.js} +0 -0
  225. /package/dist/docs/assets/{guides_agent-to-agent.md.CD4T5FIl.lean.js → guides_agent-to-agent.md.C6kPY8nu.lean.js} +0 -0
  226. /package/dist/docs/assets/{guides_cloud-agents.md.Cp1O3u-X.lean.js → guides_cloud-agents.md.BPJqTZjT.lean.js} +0 -0
  227. /package/dist/docs/assets/{guides_grokbot-agents.md.CMhZNdEU.lean.js → guides_grokbot-agents.md.CzV715v8.lean.js} +0 -0
  228. /package/dist/docs/assets/{troubleshooting.md.mnfFG2Em.lean.js → troubleshooting.md.HY95rCCz.lean.js} +0 -0
  229. /package/dist/playground/assets/{index-De_lpFxE.js → index-CrMWlgUU.js} +0 -0
@@ -1,21 +1,20 @@
1
1
  ---
2
- title: "MCP Connections"
2
+ title: "MCP connections"
3
3
  description: "Pull in tools from MCP servers: remote, stdio, the signed-in Cursor account's connectors, and peer agents."
4
4
  ---
5
5
 
6
- # MCP Connections
6
+ # MCP connections
7
7
 
8
- An MCP connection gives the agent tools from an MCP server. One file per
9
- server under `agent/mcp-connections/`, and the filename becomes the server
10
- name the model sees. An MCP connection default-exports `defineConnection`
11
- from `@cursor/july/connections`, and the transport comes in
12
- four shapes: remote HTTP, local stdio, the signed-in Cursor account's
13
- connectors, and peer agents on the same host.
8
+ An MCP connection gives the agent tools from an MCP server. Define one
9
+ file per server under `agent/mcp-connections/`; the filename becomes the
10
+ server name. Default-export `defineConnection` from
11
+ `@cursor/july/connections`. The transport is remote HTTP, local stdio,
12
+ the signed-in Cursor account's connectors, or a peer agent on the same
13
+ host.
14
14
 
15
- Put a server in `agent/host-connections/` when host tools should call it
16
- and the model should not. Same `defineConnection` shape. `agent-sdk mcp
17
- oauth` still works. The playground and the turn's MCP servers never see
18
- those files.
15
+ Put a server in `agent/host-connections/` when only host tools should
16
+ call it. Host connections use the same `defineConnection` shape and
17
+ support `agent-sdk mcp oauth`; the model and playground don't see them.
19
18
 
20
19
  ## Remote MCP server
21
20
 
@@ -37,8 +36,7 @@ Tokens come from env vars. Never hardcode them in the file.
37
36
  For servers that speak OAuth, set `oauth: true` and authorize with the
38
37
  CLI or mid-run Connect. Tokens live in `mcp-auth.json` under the CLI
39
38
  config directory. `--store` copies them onto the deployment as
40
- `MCP_OAUTH_<NAME>_*` secrets. Hosted Connect lets the current
41
- process retry.
39
+ `MCP_OAUTH_<NAME>_*` secrets.
42
40
 
43
41
  ```ts
44
42
  export default defineConnection({
@@ -50,24 +48,17 @@ export default defineConnection({
50
48
  ```bash
51
49
  agent-sdk mcp oauth inventory # browser PKCE → local mcp-auth.json
52
50
  agent-sdk mcp oauth inventory --store # also upsert deployment secrets
53
- # Hosted Connect retries this process. Self-hosted stays file-only.
54
51
  ```
55
52
 
56
53
  Full walkthrough: [Host MCP OAuth](../guides/mcp-oauth.md). Companion
57
54
  skill: [`skills/mcp-auth/SKILL.md`](../../skills/mcp-auth/SKILL.md).
58
55
 
59
- Account MCP (`cursorAccount: true`) is the right choice for connectors
60
- already linked in the Cursor dashboard. Omit `servers` (or pass `"*"`)
61
- to forward every connected connector. If the model should call those
62
- tools by name on local turns, set `advertiseTools: true`.
56
+ ## Per-session auth
63
57
 
64
- ## Per-session auth (`auth`)
65
-
66
- For http/sse connections whose credential depends on **who the session is
67
- for** (a multi-tenant agent asserting the tenant it is acting for),
68
- declare an `auth` callback instead of static headers. It runs host-side
69
- at turn-build time with the session's `SessionInfo` and returns headers
70
- merged over the static ones:
58
+ For http/sse connections whose credential depends on who the session is
59
+ for, declare an `auth` callback instead of static headers. It runs
60
+ host-side with the session's `SessionInfo` and returns headers merged
61
+ over the static ones:
71
62
 
72
63
  ```ts
73
64
  export default defineConnection({
@@ -75,39 +66,31 @@ export default defineConnection({
75
66
  auth: async (session) => ({
76
67
  headers: { Authorization: `Bearer ${await grantFor(session)}` },
77
68
  }),
78
- advertiseTools: true, // optional — named tools instead of meta-tools
69
+ advertiseTools: true,
79
70
  });
80
71
  ```
81
72
 
82
- The callback is evaluated on **every local turn**, including reminder
83
- fires and post-restart follow-ups, so the identity always comes from the
84
- session itself, never from state parked in memory. The model never sees a
85
- tenant parameter and can never choose the tenant. A callback that throws
86
- fails the turn: a turn never silently runs without the connection's
87
- identity. Local runtime only; cloud turns are refused. `host.mcp` calls
88
- from server tools keep the static headers only. Not combinable with
89
- `oauth: true`; the host OAuth provider owns the Authorization header.
73
+ The identity always comes from the session itself, never from a tenant
74
+ parameter the model could invent. A callback that throws fails the
75
+ turn; a cloud turn with `auth` is refused instead of running without
76
+ that identity. `host.mcp` calls from server tools keep the static
77
+ headers only. You can't combine `auth` with `oauth: true`.
90
78
 
91
79
  Derive the identity from durable session facts: `session.auth`,
92
- `session.id`, or your channel's own session state. Do **not** key it off
93
- `session.continuationKey`: the HTTP channel rotates the continuation key
94
- after every accepted follow-up, so a tenant mapping keyed on it silently
95
- breaks mid-conversation. (Channels that mint stable, parseable tokens by
96
- design are the exception.)
97
-
98
- `auth` works attached or advertised. Advertised connections open
99
- per-operation clients with the evaluated headers. Attached connections
100
- ride the turn's SDK `mcpServers`, passed on **every send** rather than
101
- pinned on the cached per-session agent handle, so a rotated credential is
102
- live on the very next turn. A stateful stdio server cannot share a
103
- process with an attached `auth` connection. Advertise the auth
104
- connection instead.
105
-
106
- ## Advertise a connection's tools by name (`advertiseTools`) {#advertise-tools}
107
-
108
- Set `advertiseTools: true` when the model should call an MCP server's tools
109
- by name. The Agent SDK preserves each tool's name, description, input and
110
- output schemas, and MCP annotations.
80
+ `session.id`, or your channel's own session state. Do not key it off
81
+ `session.continuationKey`. The HTTP channel rotates that key after every
82
+ accepted follow-up, so a tenant mapping keyed on it breaks
83
+ mid-conversation.
84
+
85
+ `auth` works attached or advertised. Advertise the auth connection
86
+ instead of attaching it next to a stateful stdio server.
87
+
88
+ ## Advertise tools {#advertise-tools}
89
+
90
+ Set `advertiseTools: true` when the model should call an MCP server's
91
+ tools by name. The Agent SDK preserves each tool's description, input
92
+ and output schemas, and MCP annotations. Exposed names normalize invalid
93
+ characters and add numeric suffixes to avoid collisions.
111
94
 
112
95
  ```ts
113
96
  export default defineConnection({
@@ -117,20 +100,22 @@ export default defineConnection({
117
100
  });
118
101
  ```
119
102
 
120
- A listing failure, invalid tool name, or name collision fails the turn.
121
- Advertised tools follow the same runtime support as server tools. They cannot
122
- be called through the direct tool API.
103
+ A listing or authentication failure fails the turn by default. Set
104
+ `optional: true` to omit an unavailable connection instead. Advertised
105
+ tools follow the same runtime support as server tools, and [direct tool
106
+ calls](./tools.md#call-a-tool-without-a-model-turn) use the same names.
123
107
 
124
- In a dry-run session, MCP tools marked read-only run normally. Tools marked
125
- as writes are stubbed. Tools without effect annotations are unavailable.
108
+ In a dry-run session, MCP tools marked read-only run normally. Tools
109
+ marked as writes are stubbed. Tools without effect annotations are
110
+ unavailable.
126
111
 
127
- ## Restrict which tools a connection serves
112
+ ## Filter connection tools
128
113
 
129
114
  Use `tools` the same way you allowlist harness tools on the agent. When
130
115
  set, the connection serves only those names. Use `disallowedTools` to
131
- drop names instead. The two combine as deny-wins, same as the Cursor
132
- SDK. The model and `host.mcp` only see what remains. On a model-visible
133
- connection, set `advertiseTools: true` so the raw server is not attached.
116
+ drop names instead. The two combine as deny-wins. The model and
117
+ `host.mcp` only see what remains. A model-visible filter requires
118
+ `advertiseTools: true`.
134
119
 
135
120
  ```ts
136
121
  export default defineConnection({
@@ -138,7 +123,9 @@ export default defineConnection({
138
123
  advertiseTools: true,
139
124
  tools: ["search_skus", "get_stock"],
140
125
  });
126
+ ```
141
127
 
128
+ ```ts
142
129
  export default defineConnection({
143
130
  url: "https://mcp.example.com/inventory",
144
131
  advertiseTools: true,
@@ -147,9 +134,9 @@ export default defineConnection({
147
134
  ```
148
135
 
149
136
  Names are the server's `tools/list` names. Unknown names are omitted. A
150
- filter that matches nothing on the server fails the turn. Combine with
151
- `effects: "read"` to keep only the listed tools the server classifies as
152
- reads.
137
+ filter that matches nothing on the server fails the turn unless
138
+ `optional: true`. Combine with `effects: "read"` to keep only the listed
139
+ tools the server classifies as reads.
153
140
 
154
141
  A list of names is an allowlist. An object of handlers authors TypeScript
155
142
  tools. On `host-connections/`, a name list restricts `host.mcp` without
@@ -167,12 +154,8 @@ export default defineConnection({
167
154
  });
168
155
  ```
169
156
 
170
- This suits small purpose-built servers, like a `units` converter
171
- shipped next to the agent.
172
-
173
- To run TypeScript in the agent environment (including a repo-less cloud
174
- VM), author the tools on the connection instead. The Agent SDK packages
175
- them as stdio MCP. You write `execute`. The Agent SDK speaks the protocol.
157
+ To run TypeScript in the agent environment, including a repo-less cloud
158
+ VM, author the tools on the connection instead. You write `execute`:
176
159
 
177
160
  ```ts
178
161
  export default defineConnection({
@@ -190,12 +173,12 @@ export default defineConnection({
190
173
  ## Cursor account MCP connection
191
174
 
192
175
  `{ cursorAccount: true }` forwards the MCP connectors the signed-in
193
- Cursor account already authorized (dashboard → MCP): Linear, Notion,
194
- Slack, and the rest. You don't configure tokens. Every tool runs on the
176
+ Cursor account already authorized (dashboard → MCP), such as Linear,
177
+ Notion, and Slack. You don't configure tokens. Every tool runs on the
195
178
  Cursor backend with the account's stored OAuth credentials, so raw
196
- tokens never reach the serve host, session workspaces, or traces.
179
+ tokens never reach the serving host, session workspaces, or traces.
197
180
 
198
- By default the agent gets **every** connected HTTP/SSE connector on the
181
+ By default the agent gets every connected HTTP/SSE connector on the
199
182
  account. Pass `servers: "*"` (or `["*"]`) for the same all-connectors
200
183
  behavior in an explicit form. Pass a name list when you want a smaller
201
184
  set.
@@ -206,12 +189,9 @@ export default defineConnection({
206
189
  cursorAccount: true,
207
190
  advertiseTools: true,
208
191
  });
209
- // same, spelled out:
210
- export default defineConnection({
211
- cursorAccount: true,
212
- servers: "*",
213
- advertiseTools: true,
214
- });
192
+ ```
193
+
194
+ ```ts
215
195
  // only Linear:
216
196
  export default defineConnection({
217
197
  cursorAccount: true,
@@ -222,17 +202,15 @@ export default defineConnection({
222
202
 
223
203
  Name the file `account.ts`. `cursor.ts` collides with the IDE `cursor`
224
204
  MCP namespace. `advertiseTools: true` puts connector tools on local
225
- turns by name. Without it they sit behind harness meta-tools.
205
+ turns by name.
226
206
 
227
207
  The host must be signed in (`agent-sdk login`, `CURSOR_API_KEY`, or
228
- `CURSOR_SERVICE_ACCOUNT_KEY`).
229
- `serve` fails fast at startup otherwise, and logs each connector's live
230
- status (`connected`, `needsAuth`, `error`) as it starts.
208
+ `CURSOR_SERVICE_ACCOUNT_KEY`). `serve` fails at startup otherwise.
231
209
 
232
210
  Filtered account connections work on managed cloud deployments. A
233
- self-hosted cloud agent with a concrete `servers` list needs `--public-url`.
234
- Serve fails instead of ignoring the filter. Use a `{ command }` connection
235
- for stdio servers.
211
+ self-hosted cloud agent with a concrete `servers` list needs
212
+ `--public-url`. Serve fails instead of ignoring the filter. Use a
213
+ `{ command }` connection for stdio servers.
236
214
 
237
215
  > [!CAUTION]
238
216
  > Whoever can talk to the agent can drive these connectors, because they
@@ -242,11 +220,11 @@ for stdio servers.
242
220
  > for example an SSO proxy or the hosted alias token). Prefer
243
221
  > `--bearer-token` on shared hosts.
244
222
 
245
- ## Peer MCP connection
223
+ ## Peer MCP connection {#peer-mcp-connection}
246
224
 
247
225
  `{ agent: "<slug>" }` addresses another agent mounted on the same serve
248
- host. The model gets the peer's `ask` and `check` (and `call_tool`)
249
- tools and can delegate work to it:
226
+ host. The model gets the peer's `ask` and `check` tools, plus
227
+ `call_tool` when the peer has server tools, and can delegate work to it:
250
228
 
251
229
  ```ts
252
230
  export default defineConnection({
@@ -258,48 +236,34 @@ export default defineConnection({
258
236
  Unknown slugs and self-references fail `serve` at startup. Walkthrough:
259
237
  [Peer agents](../guides/agent-to-agent.md#delegate-a-question-to-a-specialist).
260
238
 
261
- ## Every model-visible MCP connection is available in three places
262
-
263
- A file under `agent/mcp-connections/` serves three consumers. Host
264
- connections skip the first one.
265
-
266
- 1. **Cursor agent:** Attached connections ride SDK `mcpServers` behind
267
- harness MCP meta-tools. Set `advertiseTools: true` so local turns see
268
- named tools.
269
- 2. **Server tools:** Deterministic host code composes MCP calls
270
- through `ctx.host.mcp`:
271
-
272
- ```ts
273
- export default defineTool({
274
- description: "Search Linear issues.",
275
- inputSchema: z.object({ query: z.string() }),
276
- async execute({ query }, ctx) {
277
- return ctx.host.mcp.callTool("linear", "list_issues", { query });
278
- },
279
- });
280
- ```
239
+ ## Call MCP from host code
281
240
 
282
- 3. **Channel and schedule handlers:** Webhooks hit MCP servers with no
283
- model turn at all, through `args.host.mcp`:
241
+ A file under `agent/mcp-connections/` is available to the Cursor agent,
242
+ to server tools through `ctx.host.mcp`, and to channel and schedule
243
+ handlers through `args.host.mcp`. Host connections skip the model.
284
244
 
285
- ```ts
286
- POST("/sync", {
287
- bodySchema: z.object({}),
288
- handler: async (_req, { host }) => {
289
- const result = await host.mcp.callTool("linear", "list_issues", {});
290
- return Response.json(result);
291
- },
292
- });
293
- ```
294
-
295
- The host registry is small: `host.mcp.names()` lists MCP connection names,
296
- and `listTools(name)` / `callTool(name, tool, args)` open the client
297
- lazily on first use.
245
+ ```ts
246
+ // agent/tools/search_linear.ts
247
+ import { defineTool } from "@cursor/july/tools";
248
+ import { z } from "zod";
249
+
250
+ export default defineTool({
251
+ description: "Search Linear issues.",
252
+ inputSchema: z.object({ query: z.string() }),
253
+ async execute({ query }, ctx) {
254
+ return ctx.host.mcp.callTool("linear", "list_issues", { query });
255
+ },
256
+ });
257
+ ```
298
258
 
299
- ## What's next
259
+ `host.mcp.names()` lists connection names.
260
+ `listTools(name)` / `callTool(name, tool, args)` call into a named
261
+ connection.
300
262
 
301
- Continue with these pages:
263
+ ## Related
302
264
 
303
265
  - [Host MCP OAuth](../guides/mcp-oauth.md): `mcp oauth`, Connect, `--store`
304
266
  - [Tools](./tools.md): authored tools that wrap MCP connections
305
267
  - [Webhooks](../guides/webhooks.md): calling MCP connections from handlers
268
+ - [Peer agents](../guides/agent-to-agent.md): when a specialist is its
269
+ own agent
@@ -1,15 +1,17 @@
1
1
  ---
2
2
  title: "Evals"
3
- description: "Reference for eval discovery, cases, assertions, judges, configuration, fixtures, reporters, and runner output."
3
+ description: "Define eval cases, drive turns, assert trajectories, and interpret results."
4
4
  ---
5
5
 
6
- # Evals reference
6
+ # Evals
7
7
 
8
- This page is the complete authoring and runner contract for
9
- `@cursor/july/evals`. Start with the [Evals guide](../evals.md) for the
10
- workflow and first regression case.
8
+ Evals run fixed cases against an agent and record whether its turns,
9
+ tools, events, and output meet a contract. Files under the project-root
10
+ `evals/` directory define cases with `@cursor/july/evals`; the runner
11
+ discovers their IDs, executes them, and reports every assertion. See the
12
+ [Evals guide](../evals.md) for the regression workflow.
11
13
 
12
- ## Discovery and case IDs
14
+ ## Eval discovery and case IDs
13
15
 
14
16
  Eval files live under the project-root `evals/` directory and end in
15
17
  `.eval.ts` or `.eval.js`. The path under that directory becomes the
@@ -48,15 +50,15 @@ Those cases are `prs/checkout` and `prs/search` when the file is
48
50
  `evals/prs.eval.ts`. Case IDs must be unique single path segments.
49
51
 
50
52
  A file can also export an array of `defineEval` calls. The runner names
51
- them with zero-padded indexes such as `sql/0000`. Use named `cases` for
52
- handwritten scenarios and arrays for loaded datasets.
53
+ them with zero-padded indexes such as `sql/0000`. Named `cases` give
54
+ handwritten scenarios stable IDs; arrays fit loaded datasets.
53
55
 
54
56
  `iterations` repeats one datapoint from 1 to 100 times. For
55
57
  `iterations: 3`, `weather/nyc` expands to `weather/nyc/1`,
56
58
  `weather/nyc/2`, and `weather/nyc/3`; selecting `weather/nyc` runs all
57
59
  three.
58
60
 
59
- ## Configuration
61
+ ## Eval configuration
60
62
 
61
63
  Every running suite needs `evals/evals.config.ts` with
62
64
  `maxConcurrency`:
@@ -77,38 +79,39 @@ export default defineEvalConfig({
77
79
  | `timeoutMs` | Per-case timeout; case/file, CLI, then config precedence |
78
80
  | `judge` | Default model for `t.judge` |
79
81
  | `reporters` | Objects notified as cases and runs complete |
80
- | `maxPlaygroundRuns` | Number of server-side batches kept in playground history |
82
+ | `maxPlaygroundRuns` | Number of server-side batches kept in playground history; defaults to 20 |
81
83
 
82
84
  A case can override `description`, `tags`, `timeoutMs`, `iterations`,
83
85
  `judge`, `reporters`, and `metadata`. Case metadata merges over
84
86
  file-level metadata; case reporters add to the file's reporters.
85
87
 
86
- ## Drive turns with `t.send`
88
+ ## Send turns in a case
87
89
 
88
90
  `await t.send(message, options?)` runs one turn and waits until it
89
91
  finishes, fails, or parks for approval. Several sends in one test share
90
92
  the session.
91
93
 
92
94
  The returned turn exposes its assistant `message`, `sessionId`,
93
- `events`, ordered `toolCalls`, `ok`, and turn `index`. Assertions on the
94
- turn inspect only that turn; assertions on `t` inspect the whole run.
95
- Useful run values include `t.reply`, `t.events`, `t.turns`,
96
- `t.sessionId`, and the timeout `t.signal`.
95
+ `events`, ordered `toolCalls`, `ok`, and one-based `index`. Assertions
96
+ on the turn inspect only that turn; assertions on `t` inspect the whole
97
+ case. Run values include `t.reply`, `t.events`, `t.turns`,
98
+ `t.sessionId`, `t.iteration`, `t.iterations`, and the timeout
99
+ `t.signal`.
97
100
 
98
101
  These options apply on the first send because they shape the session:
99
102
 
100
103
  | Option | Contract |
101
104
  | --- | --- |
102
105
  | `workspaceFiles` | Relative path-to-content map seeded into the session workspace |
103
- | `workspaceDir` | Absolute local harness working directory |
106
+ | `workspaceDir` | Absolute working directory for a new local session |
104
107
  | `cloud` | Cloud session options merged over the agent's static cloud config |
105
108
 
106
- Use `turn.expectOk()` when later test steps depend on that turn
107
- succeeding.
109
+ Use `turn.expectOk()` when later test steps depend on the turn
110
+ succeeding. It throws when the turn failed.
108
111
 
109
112
  ## Trajectory assertions
110
113
 
111
- Assertions record failures and let the test continue, so one case
114
+ Assertions record failures without stopping the test, so one case
112
115
  reports every violated contract.
113
116
 
114
117
  | Assertion | Checks |
@@ -231,53 +234,43 @@ export default rows.map(row =>
231
234
  );
232
235
  ```
233
236
 
234
- Materialize API-backed evidence before running a large suite. Commit
235
- the exact payload, diff, or metadata revision and seed it with
236
- `workspaceFiles`.
237
-
238
237
  ## Reporters and results
239
238
 
240
239
  Built-in reporters include `JUnit({ filePath, suiteName? })` and
241
240
  `Artifacts({ dir })`. Custom reporters can expose `onRunStart`,
242
- `onEvalComplete`, and `onRunComplete`. Reporter errors are logged and
243
- do not change the eval verdict.
241
+ `onEvalComplete`, and `onRunComplete`.
244
242
 
245
- JSON output contains run totals plus one result per case. A result can
246
- include the case ID, verdict, assertions, session ID, inputs, tool
247
- calls, metrics, logs, duration, metadata, tags, final text, and error or
248
- skip details.
243
+ JSON output contains run totals and one result per case. Results include
244
+ the case ID, verdict, assertions, session ID, inputs, final text, tools,
245
+ tool calls, metrics, logs, duration, metadata, tags, and any error or
246
+ skip reason.
249
247
 
250
- ## CLI selection and artifacts
248
+ ## Select cases
251
249
 
252
250
  ```bash
253
251
  agent-sdk eval --dir . --list
254
252
  agent-sdk eval --dir .
255
253
  agent-sdk eval --dir . builds/checkout
256
254
  agent-sdk eval --dir . --tag smoke
257
- agent-sdk eval --dir . --verbose
258
255
  ```
259
256
 
260
257
  ID filters match an exact ID and its descendants. Repeated IDs use OR;
261
258
  repeated tags use OR. When both are present, a case must match both
262
259
  groups.
263
260
 
264
- The local runner starts an ephemeral server. Default artifacts go under
265
- `evals/<stamp>/` in the project state directory and include
261
+ ## Inspect run artifacts
262
+
263
+ Default run artifacts go under `evals/<stamp>/` in the project state
264
+ directory and include
266
265
  `summary.json`, `results.jsonl`, and `evals/<case-id>.json`.
267
266
  `--artifacts <dir>` chooses another destination; `--no-artifacts`
268
267
  disables them. This location is independent of `--state-root`.
269
268
 
270
- Model and judge turns resolve credentials in this order:
271
- `CURSOR_API_KEY`, `CURSOR_API_KEY_FILE`,
272
- `CURSOR_SERVICE_ACCOUNT_KEY`, then `agent-sdk login`. Listing cases
273
- needs no credential.
274
-
275
- ## Playground and hosted runs
269
+ ## Run evals against a server
276
270
 
277
- The playground **Evals** view starts batches on its running server and
278
- keeps their sessions in the normal session list. `--url` targets a
279
- named running server; `--prod --slug <slug>` targets a hosted
280
- deployment.
271
+ The playground **Evals** view starts batches on its running server.
272
+ `--url` targets a named running server, and `--prod --slug <slug>`
273
+ targets a hosted deployment.
281
274
 
282
275
  ```bash
283
276
  agent-sdk eval --prod --slug vulnerability-scanner --tag smoke
@@ -285,14 +278,13 @@ agent-sdk eval status <eval-id> --prod --slug vulnerability-scanner
285
278
  agent-sdk eval cancel <eval-id> --prod --slug vulnerability-scanner
286
279
  ```
287
280
 
288
- Server-side batches use the target server's discovered evals and store
289
- results in its playground history. Local-only reporter and concurrency
290
- flags do not apply to `--url` or `--prod` runs.
281
+ Server-side batches use the target's discovered cases and return an eval
282
+ ID for `status` or `cancel`. Local reporter and concurrency flags don't
283
+ apply to `--url` or `--prod` runs.
291
284
 
292
285
  ## Related
293
286
 
294
- - [Evals guide](../evals.md): author and run a regression workflow
295
- - [CLI reference](./cli.md#eval): every runner flag
296
- - [Sessions](./sessions.md): event vocabulary used by trajectory checks
297
- - [Artifacts](./artifacts.md): durable outputs asserted by
298
- `taggedArtifact`
287
+ - [Evals guide](../evals.md)
288
+ - [CLI reference](./cli.md#eval)
289
+ - [Sessions](./sessions.md)
290
+ - [Artifacts](./artifacts.md)
@@ -35,10 +35,10 @@ The extension validates its configuration while the project loads.
35
35
  Missing or mistyped settings fail `agent-sdk validate` before a turn
36
36
  can call the contributed code.
37
37
 
38
- Extension instructions are appended to the agent's prompt. The root
39
- agent still needs its own `agent/instructions.md`.
38
+ Extension instructions are appended to the root agent's instructions.
39
+ The root agent still needs its own `agent/instructions.md`.
40
40
 
41
- ## See what the extension added
41
+ ## Inspect a mount
42
42
 
43
43
  Run discovery after mounting or upgrading an extension:
44
44
 
@@ -126,18 +126,14 @@ server. OAuth-backed plugin servers use
126
126
  [Host MCP OAuth](../guides/mcp-oauth.md); transport and tool-filter
127
127
  details live in [MCP connections](./connections.md).
128
128
 
129
- ## What an extension can contain
129
+ ## Extension contents
130
130
 
131
- Share capabilities that can safely join another agent under a
132
- namespace:
131
+ | Ships under the namespace | Ignored |
132
+ | --- | --- |
133
+ | Instructions, tools, skills, MCP and host connections | `agent.ts`, storage, OpenTelemetry |
134
+ | Hooks, channels, schedules, and subagents | Playground code, custom sandbox backends |
135
+ | Artifact kinds and workspace seed files | Nested extensions |
133
136
 
134
- - Instructions, tools, skills, MCP and host connections
135
- - Hooks, channels, schedules, and subagents
136
- - Artifact kinds and local workspace seed files
137
-
138
- Agent-wide configuration does not compose through a mount.
139
- `agent.ts`, storage, OpenTelemetry, playground code, custom sandbox
140
- backends, and nested extensions are ignored in an extension package;
141
137
  `agent-sdk validate` reports unsupported paths.
142
138
 
143
139
  ## Build an extension