@1claw/mcp 0.60.0 → 0.63.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. package/README.md +41 -2
  2. package/dist/client/admin.d.ts +96 -0
  3. package/dist/client/admin.d.ts.map +1 -0
  4. package/dist/client/admin.js +67 -0
  5. package/dist/client/admin.js.map +1 -0
  6. package/dist/client/approvals.d.ts +52 -0
  7. package/dist/client/approvals.d.ts.map +1 -0
  8. package/dist/client/approvals.js +40 -0
  9. package/dist/client/approvals.js.map +1 -0
  10. package/dist/client/automations.d.ts +15 -0
  11. package/dist/client/automations.d.ts.map +1 -0
  12. package/dist/client/automations.js +21 -0
  13. package/dist/client/automations.js.map +1 -0
  14. package/dist/client/cards.d.ts +20 -0
  15. package/dist/client/cards.d.ts.map +1 -0
  16. package/dist/client/cards.js +23 -0
  17. package/dist/client/cards.js.map +1 -0
  18. package/dist/client/chat.d.ts +26 -0
  19. package/dist/client/chat.d.ts.map +1 -0
  20. package/dist/client/chat.js +31 -0
  21. package/dist/client/chat.js.map +1 -0
  22. package/dist/client/core.d.ts +96 -0
  23. package/dist/client/core.d.ts.map +1 -0
  24. package/dist/client/core.js +281 -0
  25. package/dist/client/core.js.map +1 -0
  26. package/dist/client/delegation.d.ts +17 -0
  27. package/dist/client/delegation.d.ts.map +1 -0
  28. package/dist/client/delegation.js +18 -0
  29. package/dist/client/delegation.js.map +1 -0
  30. package/dist/client/directory.d.ts +18 -0
  31. package/dist/client/directory.d.ts.map +1 -0
  32. package/dist/client/directory.js +37 -0
  33. package/dist/client/directory.js.map +1 -0
  34. package/dist/client/error.d.ts +7 -0
  35. package/dist/client/error.d.ts.map +1 -0
  36. package/dist/client/error.js +12 -0
  37. package/dist/client/error.js.map +1 -0
  38. package/dist/client/execute.d.ts +37 -0
  39. package/dist/client/execute.d.ts.map +1 -0
  40. package/dist/client/execute.js +57 -0
  41. package/dist/client/execute.js.map +1 -0
  42. package/dist/client/index.d.ts +44 -0
  43. package/dist/client/index.d.ts.map +1 -0
  44. package/dist/client/index.js +40 -0
  45. package/dist/client/index.js.map +1 -0
  46. package/dist/client/intents.d.ts +143 -0
  47. package/dist/client/intents.d.ts.map +1 -0
  48. package/dist/client/intents.js +106 -0
  49. package/dist/client/intents.js.map +1 -0
  50. package/dist/client/memory.d.ts +18 -0
  51. package/dist/client/memory.d.ts.map +1 -0
  52. package/dist/client/memory.js +24 -0
  53. package/dist/client/memory.js.map +1 -0
  54. package/dist/client/platform.d.ts +157 -0
  55. package/dist/client/platform.d.ts.map +1 -0
  56. package/dist/client/platform.js +211 -0
  57. package/dist/client/platform.js.map +1 -0
  58. package/dist/client/runtimes.d.ts +15 -0
  59. package/dist/client/runtimes.d.ts.map +1 -0
  60. package/dist/client/runtimes.js +19 -0
  61. package/dist/client/runtimes.js.map +1 -0
  62. package/dist/client/secrets.d.ts +41 -0
  63. package/dist/client/secrets.d.ts.map +1 -0
  64. package/dist/client/secrets.js +68 -0
  65. package/dist/client/secrets.js.map +1 -0
  66. package/dist/client/treasury.d.ts +19 -0
  67. package/dist/client/treasury.d.ts.map +1 -0
  68. package/dist/client/treasury.js +16 -0
  69. package/dist/client/treasury.js.map +1 -0
  70. package/dist/client/vault-facade.d.ts +14 -0
  71. package/dist/client/vault-facade.d.ts.map +1 -0
  72. package/dist/client/vault-facade.js +24 -0
  73. package/dist/client/vault-facade.js.map +1 -0
  74. package/dist/client.d.ts +5 -635
  75. package/dist/client.d.ts.map +1 -1
  76. package/dist/client.js +3 -891
  77. package/dist/client.js.map +1 -1
  78. package/dist/core/server.d.ts +27 -0
  79. package/dist/core/server.d.ts.map +1 -0
  80. package/dist/core/server.js +594 -0
  81. package/dist/core/server.js.map +1 -0
  82. package/dist/core/session.d.ts +79 -0
  83. package/dist/core/session.d.ts.map +1 -0
  84. package/dist/core/session.js +205 -0
  85. package/dist/core/session.js.map +1 -0
  86. package/dist/index.d.ts +5 -1
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +11 -750
  89. package/dist/index.js.map +1 -1
  90. package/dist/security/index.d.ts +7 -1
  91. package/dist/security/index.d.ts.map +1 -1
  92. package/dist/security/index.js +26 -11
  93. package/dist/security/index.js.map +1 -1
  94. package/dist/tools/cancel_automation_run.d.ts +1 -1
  95. package/dist/tools/cancel_automation_run.d.ts.map +1 -1
  96. package/dist/tools/cancel_automation_run.js +1 -1
  97. package/dist/tools/cancel_automation_run.js.map +1 -1
  98. package/dist/tools/create_agent_automation.d.ts +1 -1
  99. package/dist/tools/create_agent_automation.d.ts.map +1 -1
  100. package/dist/tools/create_agent_automation.js +1 -1
  101. package/dist/tools/create_agent_automation.js.map +1 -1
  102. package/dist/tools/create_binding.d.ts +3 -3
  103. package/dist/tools/create_binding.d.ts.map +1 -1
  104. package/dist/tools/create_binding.js +1 -1
  105. package/dist/tools/create_binding.js.map +1 -1
  106. package/dist/tools/create_channel.d.ts +3 -3
  107. package/dist/tools/create_channel.d.ts.map +1 -1
  108. package/dist/tools/create_channel.js +1 -1
  109. package/dist/tools/create_channel.js.map +1 -1
  110. package/dist/tools/create_sub_org.d.ts +1 -1
  111. package/dist/tools/create_sub_org.d.ts.map +1 -1
  112. package/dist/tools/create_sub_org.js +1 -1
  113. package/dist/tools/create_sub_org.js.map +1 -1
  114. package/dist/tools/delegate_task.d.ts +1 -1
  115. package/dist/tools/delegate_task.d.ts.map +1 -1
  116. package/dist/tools/delegate_task.js +1 -1
  117. package/dist/tools/delegate_task.js.map +1 -1
  118. package/dist/tools/delegation.d.ts +1 -1
  119. package/dist/tools/delegation.d.ts.map +1 -1
  120. package/dist/tools/delegation.js +1 -1
  121. package/dist/tools/delegation.js.map +1 -1
  122. package/dist/tools/delete_memory.d.ts +3 -3
  123. package/dist/tools/delete_memory.d.ts.map +1 -1
  124. package/dist/tools/delete_memory.js +1 -1
  125. package/dist/tools/delete_memory.js.map +1 -1
  126. package/dist/tools/delete_secret.d.ts +1 -1
  127. package/dist/tools/delete_secret.d.ts.map +1 -1
  128. package/dist/tools/delete_secret.js +1 -1
  129. package/dist/tools/delete_secret.js.map +1 -1
  130. package/dist/tools/describe_secret.d.ts +1 -1
  131. package/dist/tools/describe_secret.d.ts.map +1 -1
  132. package/dist/tools/describe_secret.js +1 -1
  133. package/dist/tools/describe_secret.js.map +1 -1
  134. package/dist/tools/directory_jobs.d.ts +61 -0
  135. package/dist/tools/directory_jobs.d.ts.map +1 -0
  136. package/dist/tools/directory_jobs.js +77 -0
  137. package/dist/tools/directory_jobs.js.map +1 -0
  138. package/dist/tools/env.d.ts +43 -0
  139. package/dist/tools/env.d.ts.map +1 -0
  140. package/dist/tools/env.js +62 -0
  141. package/dist/tools/env.js.map +1 -0
  142. package/dist/tools/execute_http.d.ts +1 -1
  143. package/dist/tools/execute_http.d.ts.map +1 -1
  144. package/dist/tools/execute_http.js +1 -1
  145. package/dist/tools/execute_http.js.map +1 -1
  146. package/dist/tools/execute_intent.d.ts +3 -3
  147. package/dist/tools/execute_intent.d.ts.map +1 -1
  148. package/dist/tools/execute_intent.js +1 -1
  149. package/dist/tools/execute_intent.js.map +1 -1
  150. package/dist/tools/get_approval.d.ts +1 -1
  151. package/dist/tools/get_approval.d.ts.map +1 -1
  152. package/dist/tools/get_approval.js +1 -1
  153. package/dist/tools/get_approval.js.map +1 -1
  154. package/dist/tools/get_approval_status.d.ts +1 -1
  155. package/dist/tools/get_approval_status.d.ts.map +1 -1
  156. package/dist/tools/get_approval_status.js +1 -1
  157. package/dist/tools/get_approval_status.js.map +1 -1
  158. package/dist/tools/get_memory.d.ts +3 -3
  159. package/dist/tools/get_memory.d.ts.map +1 -1
  160. package/dist/tools/get_memory.js +1 -1
  161. package/dist/tools/get_memory.js.map +1 -1
  162. package/dist/tools/get_peer_context.d.ts +1 -1
  163. package/dist/tools/get_peer_context.d.ts.map +1 -1
  164. package/dist/tools/get_peer_context.js +1 -1
  165. package/dist/tools/get_peer_context.js.map +1 -1
  166. package/dist/tools/get_secret.d.ts +1 -1
  167. package/dist/tools/get_secret.d.ts.map +1 -1
  168. package/dist/tools/get_secret.js +1 -1
  169. package/dist/tools/get_secret.js.map +1 -1
  170. package/dist/tools/get_signing_key_balance.d.ts +1 -1
  171. package/dist/tools/get_signing_key_balance.d.ts.map +1 -1
  172. package/dist/tools/get_signing_key_balance.js +1 -1
  173. package/dist/tools/get_signing_key_balance.js.map +1 -1
  174. package/dist/tools/get_transaction.d.ts +2 -2
  175. package/dist/tools/get_transaction.d.ts.map +1 -1
  176. package/dist/tools/get_transaction.js +1 -1
  177. package/dist/tools/get_transaction.js.map +1 -1
  178. package/dist/tools/import_signing_key.d.ts +1 -1
  179. package/dist/tools/import_signing_key.d.ts.map +1 -1
  180. package/dist/tools/import_signing_key.js +1 -1
  181. package/dist/tools/import_signing_key.js.map +1 -1
  182. package/dist/tools/import_smart_account.d.ts +1 -1
  183. package/dist/tools/import_smart_account.d.ts.map +1 -1
  184. package/dist/tools/import_smart_account.js +1 -1
  185. package/dist/tools/import_smart_account.js.map +1 -1
  186. package/dist/tools/lease_bankr_key.d.ts +1 -1
  187. package/dist/tools/lease_bankr_key.d.ts.map +1 -1
  188. package/dist/tools/lease_bankr_key.js +1 -1
  189. package/dist/tools/lease_bankr_key.js.map +1 -1
  190. package/dist/tools/list_approvals.d.ts +1 -1
  191. package/dist/tools/list_approvals.d.ts.map +1 -1
  192. package/dist/tools/list_approvals.js +1 -1
  193. package/dist/tools/list_approvals.js.map +1 -1
  194. package/dist/tools/list_automation_presets.d.ts +1 -1
  195. package/dist/tools/list_automation_presets.d.ts.map +1 -1
  196. package/dist/tools/list_automation_presets.js +1 -1
  197. package/dist/tools/list_automation_presets.js.map +1 -1
  198. package/dist/tools/list_automations.d.ts +1 -1
  199. package/dist/tools/list_automations.d.ts.map +1 -1
  200. package/dist/tools/list_automations.js +1 -1
  201. package/dist/tools/list_automations.js.map +1 -1
  202. package/dist/tools/list_bindings.d.ts +1 -1
  203. package/dist/tools/list_bindings.d.ts.map +1 -1
  204. package/dist/tools/list_bindings.js +1 -1
  205. package/dist/tools/list_bindings.js.map +1 -1
  206. package/dist/tools/list_cards.d.ts +3 -3
  207. package/dist/tools/list_cards.d.ts.map +1 -1
  208. package/dist/tools/list_cards.js +1 -1
  209. package/dist/tools/list_cards.js.map +1 -1
  210. package/dist/tools/list_channels.d.ts +1 -1
  211. package/dist/tools/list_channels.d.ts.map +1 -1
  212. package/dist/tools/list_channels.js +1 -1
  213. package/dist/tools/list_channels.js.map +1 -1
  214. package/dist/tools/list_chat_conversations.d.ts +1 -1
  215. package/dist/tools/list_chat_conversations.d.ts.map +1 -1
  216. package/dist/tools/list_chat_conversations.js +1 -1
  217. package/dist/tools/list_chat_conversations.js.map +1 -1
  218. package/dist/tools/list_connector_presets.d.ts +1 -1
  219. package/dist/tools/list_connector_presets.d.ts.map +1 -1
  220. package/dist/tools/list_connector_presets.js +1 -1
  221. package/dist/tools/list_connector_presets.js.map +1 -1
  222. package/dist/tools/list_executions.d.ts +1 -1
  223. package/dist/tools/list_executions.d.ts.map +1 -1
  224. package/dist/tools/list_executions.js +1 -1
  225. package/dist/tools/list_executions.js.map +1 -1
  226. package/dist/tools/list_installed_connectors.d.ts +1 -1
  227. package/dist/tools/list_installed_connectors.d.ts.map +1 -1
  228. package/dist/tools/list_installed_connectors.js +1 -1
  229. package/dist/tools/list_installed_connectors.js.map +1 -1
  230. package/dist/tools/list_memory.d.ts +1 -1
  231. package/dist/tools/list_memory.d.ts.map +1 -1
  232. package/dist/tools/list_memory.js +1 -1
  233. package/dist/tools/list_memory.js.map +1 -1
  234. package/dist/tools/list_notification_targets.d.ts +1 -1
  235. package/dist/tools/list_notification_targets.d.ts.map +1 -1
  236. package/dist/tools/list_notification_targets.js +1 -1
  237. package/dist/tools/list_notification_targets.js.map +1 -1
  238. package/dist/tools/list_oauth_connections.d.ts +1 -1
  239. package/dist/tools/list_oauth_connections.d.ts.map +1 -1
  240. package/dist/tools/list_oauth_connections.js +1 -1
  241. package/dist/tools/list_oauth_connections.js.map +1 -1
  242. package/dist/tools/list_oauth_providers.d.ts +1 -1
  243. package/dist/tools/list_oauth_providers.d.ts.map +1 -1
  244. package/dist/tools/list_oauth_providers.js +1 -1
  245. package/dist/tools/list_oauth_providers.js.map +1 -1
  246. package/dist/tools/list_runtimes.d.ts +1 -1
  247. package/dist/tools/list_runtimes.d.ts.map +1 -1
  248. package/dist/tools/list_runtimes.js +1 -1
  249. package/dist/tools/list_runtimes.js.map +1 -1
  250. package/dist/tools/list_signing_keys.d.ts +1 -1
  251. package/dist/tools/list_signing_keys.d.ts.map +1 -1
  252. package/dist/tools/list_signing_keys.js +1 -1
  253. package/dist/tools/list_signing_keys.js.map +1 -1
  254. package/dist/tools/list_transactions.d.ts +1 -1
  255. package/dist/tools/list_transactions.d.ts.map +1 -1
  256. package/dist/tools/list_transactions.js +1 -1
  257. package/dist/tools/list_transactions.js.map +1 -1
  258. package/dist/tools/manage_runtime.d.ts +1 -1
  259. package/dist/tools/manage_runtime.d.ts.map +1 -1
  260. package/dist/tools/manage_runtime.js +1 -1
  261. package/dist/tools/manage_runtime.js.map +1 -1
  262. package/dist/tools/oauth_revoke_consent.d.ts +1 -1
  263. package/dist/tools/oauth_revoke_consent.d.ts.map +1 -1
  264. package/dist/tools/oauth_revoke_consent.js +1 -1
  265. package/dist/tools/oauth_revoke_consent.js.map +1 -1
  266. package/dist/tools/oauth_revoke_token.d.ts +1 -1
  267. package/dist/tools/oauth_revoke_token.d.ts.map +1 -1
  268. package/dist/tools/oauth_revoke_token.js +1 -1
  269. package/dist/tools/oauth_revoke_token.js.map +1 -1
  270. package/dist/tools/order_card.d.ts +1 -1
  271. package/dist/tools/order_card.d.ts.map +1 -1
  272. package/dist/tools/order_card.js +1 -1
  273. package/dist/tools/order_card.js.map +1 -1
  274. package/dist/tools/platform_app_stats.d.ts +1 -1
  275. package/dist/tools/platform_app_stats.d.ts.map +1 -1
  276. package/dist/tools/platform_app_stats.js +1 -1
  277. package/dist/tools/platform_app_stats.js.map +1 -1
  278. package/dist/tools/platform_bootstrap_user.d.ts +1 -1
  279. package/dist/tools/platform_bootstrap_user.d.ts.map +1 -1
  280. package/dist/tools/platform_bootstrap_user.js +1 -1
  281. package/dist/tools/platform_bootstrap_user.js.map +1 -1
  282. package/dist/tools/platform_create_app.d.ts +1 -1
  283. package/dist/tools/platform_create_app.d.ts.map +1 -1
  284. package/dist/tools/platform_create_app.js +1 -1
  285. package/dist/tools/platform_create_app.js.map +1 -1
  286. package/dist/tools/platform_create_template.d.ts +1 -1
  287. package/dist/tools/platform_create_template.d.ts.map +1 -1
  288. package/dist/tools/platform_create_template.js +1 -1
  289. package/dist/tools/platform_create_template.js.map +1 -1
  290. package/dist/tools/platform_expansion.d.ts +80 -16
  291. package/dist/tools/platform_expansion.d.ts.map +1 -1
  292. package/dist/tools/platform_expansion.js +86 -1
  293. package/dist/tools/platform_expansion.js.map +1 -1
  294. package/dist/tools/platform_fleet.d.ts +6 -6
  295. package/dist/tools/platform_grant_access.d.ts +1 -1
  296. package/dist/tools/platform_grant_access.d.ts.map +1 -1
  297. package/dist/tools/platform_grant_access.js +1 -1
  298. package/dist/tools/platform_grant_access.js.map +1 -1
  299. package/dist/tools/platform_reissue_claim.d.ts +1 -1
  300. package/dist/tools/platform_reissue_claim.d.ts.map +1 -1
  301. package/dist/tools/platform_reissue_claim.js +1 -1
  302. package/dist/tools/platform_reissue_claim.js.map +1 -1
  303. package/dist/tools/platform_rotate_key.d.ts +1 -1
  304. package/dist/tools/platform_rotate_key.d.ts.map +1 -1
  305. package/dist/tools/platform_rotate_key.js +1 -1
  306. package/dist/tools/platform_rotate_key.js.map +1 -1
  307. package/dist/tools/platform_rotate_webhook_secret.d.ts +1 -1
  308. package/dist/tools/platform_rotate_webhook_secret.d.ts.map +1 -1
  309. package/dist/tools/platform_rotate_webhook_secret.js +1 -1
  310. package/dist/tools/platform_rotate_webhook_secret.js.map +1 -1
  311. package/dist/tools/provision_signing_key.d.ts +1 -1
  312. package/dist/tools/provision_signing_key.d.ts.map +1 -1
  313. package/dist/tools/provision_signing_key.js +1 -1
  314. package/dist/tools/provision_signing_key.js.map +1 -1
  315. package/dist/tools/put_memory.d.ts +3 -3
  316. package/dist/tools/put_memory.d.ts.map +1 -1
  317. package/dist/tools/put_memory.js +1 -1
  318. package/dist/tools/put_memory.js.map +1 -1
  319. package/dist/tools/request_approval.d.ts +3 -3
  320. package/dist/tools/request_approval.d.ts.map +1 -1
  321. package/dist/tools/request_approval.js +1 -1
  322. package/dist/tools/request_approval.js.map +1 -1
  323. package/dist/tools/runtime_logs.d.ts +1 -1
  324. package/dist/tools/runtime_logs.d.ts.map +1 -1
  325. package/dist/tools/runtime_logs.js +1 -1
  326. package/dist/tools/runtime_logs.js.map +1 -1
  327. package/dist/tools/runtime_status.d.ts +1 -1
  328. package/dist/tools/runtime_status.d.ts.map +1 -1
  329. package/dist/tools/runtime_status.js +1 -1
  330. package/dist/tools/runtime_status.js.map +1 -1
  331. package/dist/tools/safe_accounts.js +1 -1
  332. package/dist/tools/safe_accounts.js.map +1 -1
  333. package/dist/tools/search_memory.d.ts +1 -1
  334. package/dist/tools/search_memory.d.ts.map +1 -1
  335. package/dist/tools/search_memory.js +1 -1
  336. package/dist/tools/search_memory.js.map +1 -1
  337. package/dist/tools/secret_versions.d.ts +73 -0
  338. package/dist/tools/secret_versions.d.ts.map +1 -0
  339. package/dist/tools/secret_versions.js +52 -0
  340. package/dist/tools/secret_versions.js.map +1 -0
  341. package/dist/tools/send_channel_message.d.ts +3 -3
  342. package/dist/tools/send_channel_message.d.ts.map +1 -1
  343. package/dist/tools/send_channel_message.js +1 -1
  344. package/dist/tools/send_channel_message.js.map +1 -1
  345. package/dist/tools/send_chat_message.d.ts +3 -3
  346. package/dist/tools/send_chat_message.d.ts.map +1 -1
  347. package/dist/tools/send_chat_message.js +1 -1
  348. package/dist/tools/send_chat_message.js.map +1 -1
  349. package/dist/tools/sign_digest.d.ts +1 -1
  350. package/dist/tools/sign_digest.d.ts.map +1 -1
  351. package/dist/tools/sign_digest.js +1 -1
  352. package/dist/tools/sign_digest.js.map +1 -1
  353. package/dist/tools/sign_message.d.ts +1 -1
  354. package/dist/tools/sign_message.d.ts.map +1 -1
  355. package/dist/tools/sign_message.js +1 -1
  356. package/dist/tools/sign_message.js.map +1 -1
  357. package/dist/tools/sign_transaction.d.ts +7 -7
  358. package/dist/tools/sign_transaction.d.ts.map +1 -1
  359. package/dist/tools/sign_transaction.js +1 -1
  360. package/dist/tools/sign_transaction.js.map +1 -1
  361. package/dist/tools/sign_typed_data.d.ts +1 -1
  362. package/dist/tools/sign_typed_data.d.ts.map +1 -1
  363. package/dist/tools/sign_typed_data.js +1 -1
  364. package/dist/tools/sign_typed_data.js.map +1 -1
  365. package/dist/tools/simulate_bundle.d.ts +13 -13
  366. package/dist/tools/simulate_bundle.d.ts.map +1 -1
  367. package/dist/tools/simulate_bundle.js +1 -1
  368. package/dist/tools/simulate_bundle.js.map +1 -1
  369. package/dist/tools/simulate_transaction.d.ts +5 -5
  370. package/dist/tools/simulate_transaction.d.ts.map +1 -1
  371. package/dist/tools/simulate_transaction.js +1 -1
  372. package/dist/tools/simulate_transaction.js.map +1 -1
  373. package/dist/tools/submit_transaction.d.ts +7 -7
  374. package/dist/tools/submit_transaction.d.ts.map +1 -1
  375. package/dist/tools/submit_transaction.js +1 -1
  376. package/dist/tools/submit_transaction.js.map +1 -1
  377. package/dist/tools/test_binding.d.ts +1 -1
  378. package/dist/tools/test_binding.d.ts.map +1 -1
  379. package/dist/tools/test_binding.js +1 -1
  380. package/dist/tools/test_binding.js.map +1 -1
  381. package/dist/tools/treasury_sign_proposal.d.ts +1 -1
  382. package/dist/tools/trigger_automation.d.ts +1 -1
  383. package/dist/tools/trigger_automation.d.ts.map +1 -1
  384. package/dist/tools/trigger_automation.js +1 -1
  385. package/dist/tools/trigger_automation.js.map +1 -1
  386. package/dist/toolsets/admin.d.ts +4 -0
  387. package/dist/toolsets/admin.d.ts.map +1 -0
  388. package/dist/toolsets/admin.js +40 -0
  389. package/dist/toolsets/admin.js.map +1 -0
  390. package/dist/toolsets/approvals.d.ts +4 -0
  391. package/dist/toolsets/approvals.d.ts.map +1 -0
  392. package/dist/toolsets/approvals.js +18 -0
  393. package/dist/toolsets/approvals.js.map +1 -0
  394. package/dist/toolsets/automations.d.ts +4 -0
  395. package/dist/toolsets/automations.d.ts.map +1 -0
  396. package/dist/toolsets/automations.js +18 -0
  397. package/dist/toolsets/automations.js.map +1 -0
  398. package/dist/toolsets/cards.d.ts +4 -0
  399. package/dist/toolsets/cards.d.ts.map +1 -0
  400. package/dist/toolsets/cards.js +15 -0
  401. package/dist/toolsets/cards.js.map +1 -0
  402. package/dist/toolsets/channels.d.ts +4 -0
  403. package/dist/toolsets/channels.d.ts.map +1 -0
  404. package/dist/toolsets/channels.js +14 -0
  405. package/dist/toolsets/channels.js.map +1 -0
  406. package/dist/toolsets/chat.d.ts +4 -0
  407. package/dist/toolsets/chat.d.ts.map +1 -0
  408. package/dist/toolsets/chat.js +12 -0
  409. package/dist/toolsets/chat.js.map +1 -0
  410. package/dist/toolsets/delegation.d.ts +4 -0
  411. package/dist/toolsets/delegation.d.ts.map +1 -0
  412. package/dist/toolsets/delegation.js +16 -0
  413. package/dist/toolsets/delegation.js.map +1 -0
  414. package/dist/toolsets/directory.d.ts +4 -0
  415. package/dist/toolsets/directory.d.ts.map +1 -0
  416. package/dist/toolsets/directory.js +14 -0
  417. package/dist/toolsets/directory.js.map +1 -0
  418. package/dist/toolsets/execute.d.ts +4 -0
  419. package/dist/toolsets/execute.d.ts.map +1 -0
  420. package/dist/toolsets/execute.js +22 -0
  421. package/dist/toolsets/execute.js.map +1 -0
  422. package/dist/toolsets/index.d.ts +9 -0
  423. package/dist/toolsets/index.d.ts.map +1 -0
  424. package/dist/toolsets/index.js +40 -0
  425. package/dist/toolsets/index.js.map +1 -0
  426. package/dist/toolsets/intents.d.ts +4 -0
  427. package/dist/toolsets/intents.d.ts.map +1 -0
  428. package/dist/toolsets/intents.js +43 -0
  429. package/dist/toolsets/intents.js.map +1 -0
  430. package/dist/toolsets/memory.d.ts +4 -0
  431. package/dist/toolsets/memory.d.ts.map +1 -0
  432. package/dist/toolsets/memory.js +20 -0
  433. package/dist/toolsets/memory.js.map +1 -0
  434. package/dist/toolsets/notification.d.ts +4 -0
  435. package/dist/toolsets/notification.d.ts.map +1 -0
  436. package/dist/toolsets/notification.js +10 -0
  437. package/dist/toolsets/notification.js.map +1 -0
  438. package/dist/toolsets/platform.d.ts +4 -0
  439. package/dist/toolsets/platform.d.ts.map +1 -0
  440. package/dist/toolsets/platform.js +71 -0
  441. package/dist/toolsets/platform.js.map +1 -0
  442. package/dist/toolsets/runtimes.d.ts +4 -0
  443. package/dist/toolsets/runtimes.d.ts.map +1 -0
  444. package/dist/toolsets/runtimes.js +16 -0
  445. package/dist/toolsets/runtimes.js.map +1 -0
  446. package/dist/toolsets/secret-tools.d.ts +9 -0
  447. package/dist/toolsets/secret-tools.d.ts.map +1 -0
  448. package/dist/toolsets/secret-tools.js +9 -0
  449. package/dist/toolsets/secret-tools.js.map +1 -0
  450. package/dist/toolsets/treasury.d.ts +4 -0
  451. package/dist/toolsets/treasury.d.ts.map +1 -0
  452. package/dist/toolsets/treasury.js +14 -0
  453. package/dist/toolsets/treasury.js.map +1 -0
  454. package/dist/toolsets/types.d.ts +25 -0
  455. package/dist/toolsets/types.d.ts.map +1 -0
  456. package/dist/toolsets/types.js +2 -0
  457. package/dist/toolsets/types.js.map +1 -0
  458. package/dist/toolsets/vault.d.ts +4 -0
  459. package/dist/toolsets/vault.d.ts.map +1 -0
  460. package/dist/toolsets/vault.js +41 -0
  461. package/dist/toolsets/vault.js.map +1 -0
  462. package/dist/toolsets.d.ts +95 -0
  463. package/dist/toolsets.d.ts.map +1 -0
  464. package/dist/toolsets.js +217 -0
  465. package/dist/toolsets.js.map +1 -0
  466. package/package.json +4 -2
@@ -0,0 +1,594 @@
1
+ /**
2
+ * Server bootstrap shared by the umbrella package (`index.ts`, every
3
+ * toolset) and the split packages (`packages/vault`, `packages/guard`).
4
+ * Which toolset modules and which client class a server gets are the
5
+ * entrypoint's decision; nothing here imports a domain.
6
+ */
7
+ import { createHash } from "node:crypto";
8
+ import { FastMCP, UserError } from "fastmcp";
9
+ import { z } from "zod";
10
+ import { OneClawApiError } from "../client/error.js";
11
+ import { inspectContentTool } from "../tools/inspect_content.js";
12
+ import { inspectInput, inspectOutput, isSecurityEnabled, registerSecret, isSecretRedactionEnabled } from "../security/index.js";
13
+ import { isLocalDaemonMode, createLocalClient } from "../local-client.js";
14
+ import { proxyRequestTool } from "../tools/proxy_request.js";
15
+ import { clientForSession, installClientFactory, resolveEntitlements, attachEntitlements, refreshEntitlementsIfStale, describeSession, } from "./session.js";
16
+ import { installToolsets, toolsetOf, toolVisible, resolveToolsets, unknownEntitlements, TOOLSET_IDS, } from "../toolsets.js";
17
+ /** Build, configure and start the server. Resolves once it is listening. */
18
+ export async function startServer(cfg) {
19
+ installToolsets(cfg.modules);
20
+ installClientFactory(cfg.createClient);
21
+ const baseUrl = process.env.ONECLAW_BASE_URL ?? "https://api.1claw.co";
22
+ const transport = process.env.MCP_TRANSPORT ?? "stdio";
23
+ const port = parseInt(process.env.PORT ?? "8080", 10);
24
+ // When true, only security-inspection tools are registered (no vault credentials needed).
25
+ const localOnly = cfg.localOnly === true ||
26
+ process.env.ONECLAW_LOCAL_ONLY === "true" ||
27
+ process.env.ONECLAW_LOCAL_ONLY === "1";
28
+ /**
29
+ * Credential for the stdio process, read from process.env. Re-read each
30
+ * invocation so vault ID is not frozen at startup (C-MPC-VAULT); the client
31
+ * built from it is cached per distinct credential so the ocv_ exchange
32
+ * happens once per process, not once per call.
33
+ */
34
+ function stdioCredentialFromEnv() {
35
+ const vaultId = process.env.ONECLAW_VAULT_ID;
36
+ const agentId = process.env.ONECLAW_AGENT_ID;
37
+ const agentApiKey = process.env.ONECLAW_AGENT_API_KEY;
38
+ const token = process.env.ONECLAW_AGENT_TOKEN;
39
+ if (agentApiKey) {
40
+ return {
41
+ agentApiKey,
42
+ agentId: agentId || undefined,
43
+ vaultId: vaultId || undefined,
44
+ runtimeId: process.env.ONECLAW_RUNTIME_ID || undefined,
45
+ };
46
+ }
47
+ if (token) {
48
+ if (!vaultId) {
49
+ throw new UserError("ONECLAW_VAULT_ID is required when using ONECLAW_AGENT_TOKEN (static JWT).");
50
+ }
51
+ return { token, vaultId, runtimeId: process.env.ONECLAW_RUNTIME_ID || undefined };
52
+ }
53
+ throw new UserError("Authentication required. Set ONECLAW_AGENT_API_KEY or ONECLAW_AGENT_TOKEN + ONECLAW_VAULT_ID.");
54
+ }
55
+ let stdioSession;
56
+ /** The stdio process's session — one per distinct env credential. */
57
+ function stdioSessionFromEnv() {
58
+ const cred = stdioCredentialFromEnv();
59
+ const key = JSON.stringify(cred);
60
+ if (stdioSession && stdioSession.key === key)
61
+ return stdioSession.session;
62
+ // A changed env means a new identity; entitlements are re-resolved lazily
63
+ // by the TTL path. Start from the startup snapshot when there is one.
64
+ const ent = stdioSession?.session.entitlements ?? unknownEntitlements("failed");
65
+ const session = attachEntitlements(cred, ent, process.env.ONECLAW_MCP_TOOLSETS, stdioSession ? 0 : Date.now());
66
+ stdioSession = { key, session };
67
+ return session;
68
+ }
69
+ if (transport === "stdio" && !localOnly && !isLocalDaemonMode()) {
70
+ const agentApiKey = process.env.ONECLAW_AGENT_API_KEY;
71
+ const token = process.env.ONECLAW_AGENT_TOKEN;
72
+ if (!agentApiKey && !token) {
73
+ console.error("Authentication required. Set one of:\n" +
74
+ " ONECLAW_AGENT_API_KEY (simplest, auto-discovers agent ID and vault)\n" +
75
+ " ONECLAW_AGENT_ID + ONECLAW_AGENT_API_KEY (explicit agent ID)\n" +
76
+ " ONECLAW_AGENT_TOKEN + ONECLAW_VAULT_ID (static JWT, expires)\n" +
77
+ " ONECLAW_LOCAL_ONLY=true (security tools only, no vault needed)\n" +
78
+ " ONECLAW_LOCAL_VAULT=true (local daemon mode, no cloud auth needed)");
79
+ process.exit(1);
80
+ }
81
+ if (!agentApiKey && token && !process.env.ONECLAW_VAULT_ID) {
82
+ console.error("ONECLAW_VAULT_ID is required when using ONECLAW_AGENT_TOKEN (static JWT).");
83
+ process.exit(1);
84
+ }
85
+ }
86
+ /** The session a tool call runs under: the hosted one, or the stdio process's. */
87
+ function resolveSession(session) {
88
+ if (session)
89
+ return session;
90
+ if (transport === "stdio" && !localOnly) {
91
+ return stdioSessionFromEnv();
92
+ }
93
+ throw new UserError("Not authenticated. Provide Authorization header (Bearer <ocv_api_key> or Bearer <jwt>).");
94
+ }
95
+ function resolveClient(session) {
96
+ return clientForSession(resolveSession(session), baseUrl);
97
+ }
98
+ const serverOpts = {
99
+ name: cfg.name,
100
+ version: cfg.version,
101
+ health: { enabled: true, path: "/health" },
102
+ instructions: cfg.instructions ??
103
+ "Tools are grouped into toolsets and only the toolsets this session is entitled to are listed " +
104
+ `(${TOOLSET_IDS.filter((t) => t !== "local" && t !== "platform").join(", ")}). ` +
105
+ "The vault, approvals and inspect toolsets are always on for an agent; intents, execute, cards, " +
106
+ "memory, channels and directory appear when the agent's flags enable them; treasury, delegation, chat, " +
107
+ "automations, runtimes and notification are opt-in via the X-1Claw-Toolsets header " +
108
+ "(or ONECLAW_MCP_TOOLSETS over stdio). Entitlements are re-checked periodically and after a 403, and " +
109
+ "the list is refreshed via notifications/tools/list_changed. If a tool you expect is missing, the " +
110
+ "agent is not entitled to it — check the agent's settings in the 1Claw dashboard.",
111
+ };
112
+ if (transport === "httpStream") {
113
+ // The HTTP layer (mcp-proxy) calls `authenticate` on EVERY POST, not once
114
+ // per MCP session, and swaps the result into the session via
115
+ // `updateAuth`. Without memoisation that is a key exchange + vault probe
116
+ // + profile GET per tool call, and a fresh SessionAuth object each time
117
+ // (so nothing keyed on it could ever be reused). Admissions are cached by
118
+ // credential for ADMISSION_TTL_MS and the *same* SessionAuth object is
119
+ // handed back, which is what makes the per-session client cache and the
120
+ // entitlement snapshot actually per session.
121
+ const ADMISSION_TTL_MS = 10 * 60 * 1000;
122
+ const ADMISSION_IDLE_MS = 60 * 60 * 1000;
123
+ const admissions = new Map();
124
+ const admissionSweep = setInterval(() => {
125
+ const now = Date.now();
126
+ for (const [k, a] of admissions)
127
+ if (now - a.lastSeen > ADMISSION_IDLE_MS)
128
+ admissions.delete(k);
129
+ }, 5 * 60 * 1000);
130
+ if (typeof admissionSweep === "object" && "unref" in admissionSweep)
131
+ admissionSweep.unref();
132
+ const admissionKey = (...parts) => createHash("sha256").update(parts.join("\u0000")).digest("hex");
133
+ const authenticateUncached = async (request, existing) => {
134
+ const auth = (request.headers["authorization"] ?? "");
135
+ const credential = auth.replace(/^Bearer\s+/i, "").trim();
136
+ const vaultIdHeader = (request.headers["x-vault-id"] ?? "");
137
+ const agentIdHeader = (request.headers["x-agent-id"] ?? "");
138
+ const runtimeIdHeader = (request.headers["x-1claw-runtime-id"] ??
139
+ request.headers["X-1Claw-Runtime-Id"] ??
140
+ "");
141
+ const toolsetHeader = (request.headers["x-1claw-toolsets"] ?? "");
142
+ // Resolve entitlements once, at admission. `canAccess` on every tool
143
+ // reads the snapshot synchronously; the TTL/403 paths refresh it.
144
+ // A re-validation of a cached admission keeps the existing object.
145
+ const admit = async (cred) => {
146
+ if (existing)
147
+ return existing;
148
+ const client = clientForSession(cred, baseUrl);
149
+ const ent = await resolveEntitlements(client, {
150
+ warn: (m) => console.warn(`[1claw-mcp] ${m}`),
151
+ });
152
+ const session = attachEntitlements(cred, ent, toolsetHeader || undefined);
153
+ console.log(`[1claw-mcp] session admitted: ${describeSession(session)}`);
154
+ return session;
155
+ };
156
+ const runtimeIdFromJwtPayload = (token) => {
157
+ try {
158
+ const parts = token.split(".");
159
+ if (parts.length !== 3)
160
+ return undefined;
161
+ const payload = JSON.parse(Buffer.from(parts[1].replace(/-/g, "+").replace(/_/g, "/"), "base64").toString());
162
+ return typeof payload.runtime_id === "string" &&
163
+ payload.runtime_id.length > 0
164
+ ? payload.runtime_id
165
+ : undefined;
166
+ }
167
+ catch {
168
+ return undefined;
169
+ }
170
+ };
171
+ const vaultAuthHeaders = (token, runtimeId) => {
172
+ const headers = {
173
+ Authorization: `Bearer ${token}`,
174
+ };
175
+ if (runtimeId) {
176
+ headers["X-1Claw-Runtime-Id"] = runtimeId;
177
+ }
178
+ return headers;
179
+ };
180
+ if (!credential)
181
+ throw new Error("Missing Authorization header (Bearer <ocv_api_key> or Bearer <jwt>)");
182
+ // SEC-005: Only accept agent API keys (ocv_). Reject human and platform keys.
183
+ if (credential.startsWith("1ck_")) {
184
+ throw new Error("MCP server only accepts agent API keys (ocv_). Human API keys (1ck_) should use the SDK or dashboard.");
185
+ }
186
+ if (credential.startsWith("plt_")) {
187
+ throw new Error("MCP server only accepts agent API keys (ocv_). Platform API keys (plt_) should use the SDK.");
188
+ }
189
+ // ── API key path: exchange for JWT, auto-discover vault ──
190
+ if (credential.startsWith("ocv_")) {
191
+ const body = { api_key: credential };
192
+ if (agentIdHeader)
193
+ body.agent_id = agentIdHeader;
194
+ const tokenRes = await fetch(`${baseUrl}/v1/auth/agent-token`, {
195
+ method: "POST",
196
+ headers: { "Content-Type": "application/json" },
197
+ body: JSON.stringify(body),
198
+ });
199
+ if (!tokenRes.ok) {
200
+ const status = tokenRes.status;
201
+ let detail = `HTTP ${status}`;
202
+ try {
203
+ const errBody = await tokenRes.json();
204
+ if (errBody.detail)
205
+ detail = errBody.detail;
206
+ }
207
+ catch { /* use default */ }
208
+ throw new Error(`Agent API key auth failed: ${detail}`);
209
+ }
210
+ const data = await tokenRes.json();
211
+ const resolvedVaultId = vaultIdHeader ||
212
+ (data.vault_ids && data.vault_ids.length === 1
213
+ ? data.vault_ids[0]
214
+ : "");
215
+ if (resolvedVaultId && data.access_token) {
216
+ const checkRes = await fetch(`${baseUrl}/v1/vaults/${resolvedVaultId}`, {
217
+ headers: vaultAuthHeaders(data.access_token, runtimeIdHeader || undefined),
218
+ });
219
+ if (!checkRes.ok && checkRes.status === 404) {
220
+ throw new Error(`Vault ${resolvedVaultId} not found`);
221
+ }
222
+ }
223
+ return admit({
224
+ agentApiKey: credential,
225
+ agentId: data.agent_id || agentIdHeader || undefined,
226
+ vaultId: resolvedVaultId || undefined,
227
+ runtimeId: runtimeIdHeader || undefined,
228
+ });
229
+ }
230
+ // ── JWT path (legacy): static token, requires X-Vault-ID ──
231
+ if (!vaultIdHeader)
232
+ throw new Error("Missing X-Vault-ID header (required when using a JWT; use an ocv_ API key instead for auto-discovery)");
233
+ // SEC-005: Verify the JWT belongs to an agent (sub starts with "agent:")
234
+ try {
235
+ const parts = credential.split(".");
236
+ if (parts.length === 3) {
237
+ const payload = JSON.parse(Buffer.from(parts[1].replace(/-/g, "+").replace(/_/g, "/"), "base64").toString());
238
+ if (payload.sub && typeof payload.sub === "string" && !payload.sub.startsWith("agent:")) {
239
+ throw new Error("MCP server only accepts agent JWTs. This token belongs to a non-agent principal.");
240
+ }
241
+ }
242
+ }
243
+ catch (e) {
244
+ if (e instanceof Error && e.message.includes("MCP server only accepts"))
245
+ throw e;
246
+ }
247
+ // H-9: Validate token against the vault API (not just pass-through).
248
+ const runtimeId = runtimeIdHeader || runtimeIdFromJwtPayload(credential) || undefined;
249
+ const validationRes = await fetch(`${baseUrl}/v1/vaults/${vaultIdHeader}`, {
250
+ headers: vaultAuthHeaders(credential, runtimeId),
251
+ });
252
+ if (!validationRes.ok) {
253
+ const status = validationRes.status;
254
+ if (status === 401) {
255
+ throw new Error("Invalid or expired Bearer token");
256
+ }
257
+ if (status === 403) {
258
+ throw new Error("X-Vault-ID is not accessible with this token (vault binding mismatch)");
259
+ }
260
+ if (status === 404) {
261
+ throw new Error(`Vault ${vaultIdHeader} not found`);
262
+ }
263
+ throw new Error(`Token validation failed (HTTP ${status})`);
264
+ }
265
+ return admit({ token: credential, vaultId: vaultIdHeader, runtimeId });
266
+ };
267
+ serverOpts.authenticate = async (request) => {
268
+ const h = (name) => (request.headers[name] ?? "");
269
+ const key = admissionKey(h("authorization"), h("x-vault-id"), h("x-agent-id"), h("x-1claw-runtime-id"), h("x-1claw-toolsets"));
270
+ const now = Date.now();
271
+ const hit = admissions.get(key);
272
+ if (hit && now - hit.validatedAt < ADMISSION_TTL_MS) {
273
+ hit.lastSeen = now;
274
+ return hit.session;
275
+ }
276
+ try {
277
+ // Past the TTL the credential is proven again (exchange + vault
278
+ // probe) but the session object — client, entitlements — survives.
279
+ const session = await authenticateUncached(request, hit?.session);
280
+ admissions.set(key, { session, validatedAt: now, lastSeen: now });
281
+ return session;
282
+ }
283
+ catch (err) {
284
+ admissions.delete(key);
285
+ throw err;
286
+ }
287
+ };
288
+ }
289
+ const server = new FastMCP(serverOpts);
290
+ // ── Session admission for stdio ─────────────────────
291
+ // Hosted sessions are filtered per session via `canAccess`; stdio has no
292
+ // auth object for FastMCP to filter on, so the toolset is decided once here
293
+ // and only the visible tools are registered. Restart to pick up flag changes.
294
+ let stdioVisible;
295
+ if (transport === "stdio" && !localOnly && !isLocalDaemonMode()) {
296
+ const session = stdioSessionFromEnv();
297
+ const ent = await resolveEntitlements(clientForSession(session, baseUrl), {
298
+ warn: (m) => console.error(`[1claw-mcp] ${m}`),
299
+ });
300
+ attachEntitlements(session, ent, process.env.ONECLAW_MCP_TOOLSETS);
301
+ console.error(`[1claw-mcp] ${describeSession(session)}`);
302
+ stdioVisible = (name) => toolVisible(name, session.toolsets, session.entitlements);
303
+ }
304
+ /** Every tool handed to `server.addTool`, in order — needed to re-filter a session. */
305
+ const registeredTools = [];
306
+ function addTool(tool) {
307
+ registeredTools.push(tool);
308
+ server.addTool(tool);
309
+ }
310
+ /** Toolset selection for a session that somehow reached a tool without one. */
311
+ function sessionToolsets(auth) {
312
+ if (auth.toolsets && auth.entitlements)
313
+ return { toolsets: auth.toolsets, entitlements: auth.entitlements };
314
+ const entitlements = unknownEntitlements("failed");
315
+ return { toolsets: resolveToolsets(entitlements), entitlements };
316
+ }
317
+ /**
318
+ * Tell one session its tool list changed. FastMCP re-applies `canAccess`
319
+ * against the session's (now mutated) auth and sends
320
+ * `notifications/tools/list_changed`. Falls back to a server-wide
321
+ * rebroadcast when the session can't be found.
322
+ */
323
+ function notifyToolsChanged(sessionId) {
324
+ const target = sessionId
325
+ ? server.sessions.find((s) => s.sessionId === sessionId)
326
+ : undefined;
327
+ if (target) {
328
+ target.toolsListChanged(registeredTools);
329
+ }
330
+ else {
331
+ // No-op removal: FastMCP re-filters every session and notifies each.
332
+ server.removeTool("__entitlements_refresh__");
333
+ }
334
+ }
335
+ /**
336
+ * Re-resolve a session's entitlements when stale (or forced after a 403).
337
+ * Returns true when the visible tool list changed, having already notified.
338
+ */
339
+ async function refreshSession(session, sessionId, force, log) {
340
+ const changed = await refreshEntitlementsIfStale(session, clientForSession(session, baseUrl), {
341
+ force,
342
+ warn: (m) => log(`[1claw-mcp] ${m}`),
343
+ });
344
+ if (changed) {
345
+ log(`[1claw-mcp] entitlements changed: ${describeSession(session)}`);
346
+ if (transport === "httpStream")
347
+ notifyToolsChanged(sessionId);
348
+ }
349
+ return changed;
350
+ }
351
+ function registerTool(factory) {
352
+ const proto = factory(cfg.createClient({ baseUrl, token: "", vaultId: "" }));
353
+ // Fails loudly for a tool nobody assigned to a toolset.
354
+ toolsetOf(proto.name);
355
+ if (stdioVisible && !stdioVisible(proto.name))
356
+ return;
357
+ addTool({
358
+ name: proto.name,
359
+ description: proto.description,
360
+ parameters: proto.parameters,
361
+ canAccess: (auth) => {
362
+ const { toolsets, entitlements } = sessionToolsets(auth);
363
+ return toolVisible(proto.name, toolsets, entitlements);
364
+ },
365
+ execute: async (args, context) => {
366
+ const session = resolveSession(context.session);
367
+ // Hosted sessions outlive the flags they were admitted with.
368
+ await refreshSession(session, context.sessionId, false, context.log.warn);
369
+ if (!toolVisible(proto.name, session.toolsets, session.entitlements)) {
370
+ throw new UserError(`Tool '${proto.name}' is not available to this session (toolset ` +
371
+ `'${toolsetOf(proto.name)}' not entitled). Refresh the tool list.`);
372
+ }
373
+ // SEC-004: secret matching is scoped per agent so two agents on one
374
+ // vault never share a redaction bucket. Vault-scoped is the
375
+ // degraded state, logged so it is visible.
376
+ const sessionScope = session.entitlements.agentId ??
377
+ ("agentId" in session ? session.agentId : undefined) ??
378
+ session.vaultId;
379
+ if (sessionScope && sessionScope === session.vaultId && !session.entitlements.agentId) {
380
+ context.log.warn(`[1claw-mcp] secret scope degraded to vault ${session.vaultId}: agent id unknown`);
381
+ }
382
+ // Security inspection of input
383
+ if (isSecurityEnabled()) {
384
+ const inputCheck = inspectInput(proto.name, args, sessionScope);
385
+ if (!inputCheck.passed) {
386
+ const threat = inputCheck.threats[0];
387
+ context.log.info(`[SECURITY] Blocked ${proto.name}: ${threat?.type} (${threat?.pattern})`);
388
+ throw new UserError(`Security check failed: ${threat?.type} detected`);
389
+ }
390
+ if (inputCheck.threats.length > 0) {
391
+ context.log.info(`[SECURITY] Warnings for ${proto.name}: ${inputCheck.threats.map(t => t.pattern).join(", ")}`);
392
+ }
393
+ }
394
+ const client = clientForSession(session, baseUrl);
395
+ const tool = factory(client);
396
+ let result;
397
+ try {
398
+ result = await tool.execute(args, context);
399
+ }
400
+ catch (err) {
401
+ // The vault said no to something we thought was entitled:
402
+ // re-resolve now rather than waiting out the TTL.
403
+ if (err instanceof OneClawApiError && err.status === 403) {
404
+ await refreshSession(session, context.sessionId, true, context.log.warn).catch(() => false);
405
+ }
406
+ throw err;
407
+ }
408
+ // Track secret values for redaction and exfiltration protection
409
+ if (isSecretRedactionEnabled()) {
410
+ if (proto.name === "get_secret") {
411
+ try {
412
+ const parsed = JSON.parse(result);
413
+ if (parsed.value && parsed.path)
414
+ registerSecret(parsed.path, parsed.value, sessionScope);
415
+ }
416
+ catch { /* not JSON — skip */ }
417
+ }
418
+ if (proto.name === "get_env_bundle") {
419
+ try {
420
+ const env = JSON.parse(result);
421
+ for (const [key, val] of Object.entries(env)) {
422
+ if (typeof val === "string")
423
+ registerSecret(`env:${key}`, val, sessionScope);
424
+ }
425
+ }
426
+ catch { /* not JSON — skip */ }
427
+ }
428
+ if (proto.name === "resolve_env") {
429
+ try {
430
+ const parsed = JSON.parse(result);
431
+ for (const [key, val] of Object.entries(parsed.vars ?? {})) {
432
+ if (typeof val === "string")
433
+ registerSecret(`env:${key}`, val, sessionScope);
434
+ }
435
+ }
436
+ catch { /* not JSON — skip */ }
437
+ }
438
+ }
439
+ // Security inspection of output (redacts secrets, detects PII, logs threats)
440
+ if (isSecurityEnabled()) {
441
+ const outputCheck = inspectOutput(proto.name, result, sessionScope);
442
+ if (outputCheck.threats.length > 0) {
443
+ context.log.info(`[SECURITY] Output warnings for ${proto.name}: ${outputCheck.threats.map(t => t.pattern).join(", ")}`);
444
+ }
445
+ if (outputCheck.redacted) {
446
+ context.log.info(`[SECURITY] Redacted secret values from ${proto.name} output`);
447
+ return outputCheck.redacted;
448
+ }
449
+ }
450
+ return result;
451
+ },
452
+ });
453
+ }
454
+ // ── Security-only tools (always available, including local-only mode) ─
455
+ {
456
+ const tool = inspectContentTool();
457
+ toolsetOf(tool.name);
458
+ addTool({
459
+ name: tool.name,
460
+ description: tool.description,
461
+ parameters: tool.parameters,
462
+ execute: async (args, context) => {
463
+ return tool.execute(args, context);
464
+ },
465
+ });
466
+ }
467
+ // ── Local daemon tools (available when ONECLAW_LOCAL_VAULT=true) ──
468
+ if (isLocalDaemonMode()) {
469
+ const localClient = createLocalClient();
470
+ const proxyTool = proxyRequestTool(localClient);
471
+ server.addTool({
472
+ name: proxyTool.name,
473
+ description: proxyTool.description,
474
+ parameters: proxyTool.parameters,
475
+ execute: async (args, context) => {
476
+ return proxyTool.execute(args, context);
477
+ },
478
+ });
479
+ // In local mode, list_secrets uses the daemon (shows names only, no values)
480
+ server.addTool({
481
+ name: "list_secrets",
482
+ description: "List secret names in the local vault. Values are never exposed. " +
483
+ "Use proxy_request to make API calls with secrets injected.",
484
+ parameters: z.object({}),
485
+ execute: async (_args, { log }) => {
486
+ const result = await localClient.listSecrets();
487
+ log.info(`Listed ${result.secrets.length} local secrets`);
488
+ return JSON.stringify(result.secrets);
489
+ },
490
+ });
491
+ }
492
+ // ── Vault tools (require credentials — skipped in local-only mode) ─
493
+ // Each toolset module under src/toolsets/ owns its tool list; registration
494
+ // walks them in order. `canAccess` / the stdio filter decide visibility.
495
+ if (!localOnly && !isLocalDaemonMode()) {
496
+ for (const module of cfg.modules) {
497
+ for (const factory of module.tools)
498
+ registerTool(factory);
499
+ }
500
+ }
501
+ // ── Resource: browsable secret listing ───────────────
502
+ if (!localOnly) {
503
+ server.addResource({
504
+ uri: "vault://secrets",
505
+ name: "Vault secrets",
506
+ description: "Browsable listing of all secret paths in the configured vault (metadata only, no values).",
507
+ mimeType: "application/json",
508
+ async load(auth) {
509
+ // Same gate as list_secrets: resources are not filtered by canAccess.
510
+ const session = resolveSession(auth);
511
+ if (!toolVisible("list_secrets", session.toolsets, session.entitlements)) {
512
+ throw new UserError("vault://secrets is not available to this session (vault toolset not entitled).");
513
+ }
514
+ const client = resolveClient(auth);
515
+ const data = await client.listSecrets();
516
+ return {
517
+ text: JSON.stringify(data.secrets.map((s) => ({
518
+ path: s.path,
519
+ type: s.type,
520
+ version: s.version,
521
+ expires_at: s.expires_at,
522
+ })), null, 2),
523
+ };
524
+ },
525
+ });
526
+ } // end if (!localOnly) — resource
527
+ // ── Rate limiting (httpStream only) ──────────────────
528
+ if (transport === "httpStream") {
529
+ const RATE_LIMIT_WINDOW_MS = 60_000;
530
+ const RATE_LIMIT_MAX = 60;
531
+ const hits = new Map();
532
+ // Periodic sweep to prevent unbounded growth
533
+ const sweepTimer = setInterval(() => {
534
+ const now = Date.now();
535
+ for (const [ip, bucket] of hits) {
536
+ if (now >= bucket.resetAt)
537
+ hits.delete(ip);
538
+ }
539
+ }, RATE_LIMIT_WINDOW_MS);
540
+ if (typeof sweepTimer === "object" && "unref" in sweepTimer) {
541
+ sweepTimer.unref();
542
+ }
543
+ const app = server.getApp();
544
+ app.get("/.well-known/oauth-protected-resource", (c) => {
545
+ const resource = process.env.ONECLAW_MCP_RESOURCE_URL ??
546
+ `${process.env.ONECLAW_PUBLIC_MCP_URL ?? "https://mcp.1claw.co"}/mcp`;
547
+ return c.json({
548
+ resource,
549
+ authorization_servers: [
550
+ process.env.ONECLAW_BASE_URL ?? "https://api.1claw.co",
551
+ ],
552
+ bearer_methods_supported: ["header"],
553
+ scopes_supported: ["openid", "profile", "email"],
554
+ });
555
+ });
556
+ app.use("*", async (c, next) => {
557
+ // L2: Use rightmost XFF entry (closest to the trusted edge proxy)
558
+ const xff = c.req.header("x-forwarded-for");
559
+ const ip = (xff ? xff.split(",").pop()?.trim() : undefined) ||
560
+ c.req.header("x-real-ip") ||
561
+ "unknown";
562
+ const now = Date.now();
563
+ let bucket = hits.get(ip);
564
+ if (!bucket || now >= bucket.resetAt) {
565
+ bucket = { count: 0, resetAt: now + RATE_LIMIT_WINDOW_MS };
566
+ hits.set(ip, bucket);
567
+ }
568
+ bucket.count++;
569
+ c.header("RateLimit-Limit", String(RATE_LIMIT_MAX));
570
+ c.header("RateLimit-Remaining", String(Math.max(0, RATE_LIMIT_MAX - bucket.count)));
571
+ c.header("RateLimit-Reset", String(Math.ceil(bucket.resetAt / 1000)));
572
+ if (bucket.count > RATE_LIMIT_MAX) {
573
+ return c.json({ error: "Too many requests, please try again later." }, 429);
574
+ }
575
+ await next();
576
+ });
577
+ }
578
+ // ── Start ────────────────────────────────────────────
579
+ if (transport === "httpStream") {
580
+ await server.start({
581
+ transportType: "httpStream",
582
+ httpStream: { port, host: process.env.ONECLAW_MCP_HOST ?? "0.0.0.0" },
583
+ });
584
+ console.log(`${cfg.name} MCP server listening on port ${port} (HTTP streaming)${localOnly ? " [local-only mode]" : ""}`);
585
+ }
586
+ else {
587
+ await server.start({ transportType: "stdio" });
588
+ if (localOnly) {
589
+ console.error(`${cfg.name} MCP server started in local-only mode (security tools only, no vault credentials required)`);
590
+ }
591
+ }
592
+ return { server };
593
+ }
594
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/core/server.ts"],"names":[],"mappings":"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"}