@tool-bridge/server 0.21.1 → 0.23.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 (178) hide show
  1. package/dist/admin.js +170 -0
  2. package/dist/airtable-VMQVXLHK.js +790 -0
  3. package/dist/{alt_text_generator_ai-W7O34SNG.js → alt_text_generator_ai-FTWY4RU4.js} +12 -11
  4. package/dist/{amap-VOX4T2AW.js → amap-OK5VBHYC.js} +221 -220
  5. package/dist/anthropic-S67AZFZ3.js +203 -0
  6. package/dist/apify-ZE6MYQI3.js +248 -0
  7. package/dist/brave_search-TG2M2KOD.js +302 -0
  8. package/dist/chunk-2JNAI4OC.js +161 -0
  9. package/dist/{chunk-KMTT3I6D.js → chunk-4XJPN3DY.js} +19392 -26136
  10. package/dist/chunk-5ICRY3VU.js +8432 -0
  11. package/dist/chunk-7CTWGTDU.js +302 -0
  12. package/dist/chunk-BADVCN6K.js +378 -0
  13. package/dist/{chunk-XYBU3WZH.js → chunk-TDAWLMDE.js} +3 -3
  14. package/dist/chunk-U7PTOA3U.js +7320 -0
  15. package/dist/{chunk-E6JCVKW6.js → chunk-VWRUGUSU.js} +3 -3
  16. package/dist/{chunk-ATK45BXV.js → chunk-WJHG6OK7.js} +4 -2
  17. package/dist/circleci-3L3WJVSK.js +389 -0
  18. package/dist/clerk-EZPF2V7T.js +1019 -0
  19. package/dist/cohere-U27DPO64.js +185 -0
  20. package/dist/{confluence-B3EWPZVE.js → confluence-G2KL6ERH.js} +105 -104
  21. package/dist/{convertapi-EUWSQYPF.js → convertapi-L4CLJ2M3.js} +32 -31
  22. package/dist/{currencyapi-KVTIK3GL.js → currencyapi-YPYXG7YY.js} +71 -71
  23. package/dist/deepseek-6HT6WF3M.js +210 -0
  24. package/dist/docker_hub-LPE3PCVB.js +933 -0
  25. package/dist/dropbox-V56ABHTA.js +1305 -0
  26. package/dist/dub-6OKQ7MHT.js +680 -0
  27. package/dist/e2b-JS2U2QFU.js +278 -0
  28. package/dist/exa-DPWVYXSP.js +332 -0
  29. package/dist/{fal_ai-23E7JPNT.js → fal_ai-DK6Y27ZF.js} +81 -80
  30. package/dist/{feishu-7QRIDUV6.js → feishu-K7EGSRF3.js} +528 -572
  31. package/dist/{feishu_custom_bot-TJ4K7QNJ.js → feishu_custom_bot-2JUGFYNG.js} +57 -53
  32. package/dist/figma-FT5I7ITD.js +777 -0
  33. package/dist/firehydrant-EIKLKHX2.js +563 -0
  34. package/dist/{fixer-BWON27UO.js → fixer-U5QXIAKD.js} +34 -33
  35. package/dist/fly-T3JYFZ2M.js +469 -0
  36. package/dist/{front-QCGXYEDJ.js → front-D72MGVOR.js} +104 -104
  37. package/dist/geocodio-BOTD5TI5.js +213 -0
  38. package/dist/ghost-KYP7SZGB.js +338 -0
  39. package/dist/github-AGMZT3VY.js +5421 -0
  40. package/dist/gmail-BLJNJOBG.js +1887 -0
  41. package/dist/googlecalendar-GTHWNCF6.js +2524 -0
  42. package/dist/{googledocs-BUHL4J2H.js → googledocs-6EEDMEBQ.js} +341 -340
  43. package/dist/{grafana-GLU2DWF2.js → grafana-GMW6EKSQ.js} +221 -220
  44. package/dist/graphhopper-6OLGBDGB.js +325 -0
  45. package/dist/index.d.ts +1132 -332
  46. package/dist/index.js +31 -14
  47. package/dist/{ip2proxy-EZ64Y4ZH.js → ip2proxy-4QN42E6T.js} +28 -27
  48. package/dist/ipgeolocation_io-SK4XKDA2.js +315 -0
  49. package/dist/ipqualityscore-6ANBPXKT.js +279 -0
  50. package/dist/{jina_ai-EFBHTBXL.js → jina_ai-IHPSVRM5.js} +23 -23
  51. package/dist/{jira-HQSHAA5K.js → jira-46KKM4LC.js} +118 -117
  52. package/dist/langsmith-JZA345I5.js +593 -0
  53. package/dist/lemlist-43IV7DK6.js +289 -0
  54. package/dist/{linear-K7RYFYAD.js → linear-5LFH7XNL.js} +327 -326
  55. package/dist/logsnag-5RMYAHIL.js +150 -0
  56. package/dist/main.js +57 -280
  57. package/dist/{mattermost-S2BRCWLQ.js → mattermost-XFL6SHGG.js} +59 -58
  58. package/dist/mem0-NYO4DTP6.js +544 -0
  59. package/dist/memos-37MPQOLV.js +744 -0
  60. package/dist/{metabase-MMSEPCOF.js → metabase-KYBKZFMG.js} +90 -89
  61. package/dist/mistral_ai-6PL3K4PM.js +1196 -0
  62. package/dist/{mother_duck-H7PCQNZ2.js → mother_duck-2NH7W5M5.js} +94 -93
  63. package/dist/ngrok-UO6CDYCA.js +356 -0
  64. package/dist/{notes-PFMKRO33.js → notes-I3P32WP4.js} +11 -9
  65. package/dist/notion-BEAJFUOE.js +940 -0
  66. package/dist/open_exchange_rates-CMF62JB4.js +215 -0
  67. package/dist/openai-IHOMKVND.js +800 -0
  68. package/dist/opengraph_io-ZQ2FGLHX.js +362 -0
  69. package/dist/openrouter-HXLW3NR5.js +441 -0
  70. package/dist/outline-ELCP4NEU.js +599 -0
  71. package/dist/paddle-O77LALVN.js +454 -0
  72. package/dist/perplexity-JCU654QV.js +220 -0
  73. package/dist/pinecone-W5W4LRKL.js +571 -0
  74. package/dist/{pipedrive-Y2O7QGFF.js → pipedrive-ITMJLLPZ.js} +99 -98
  75. package/dist/polar-R33XU4L3.js +395 -0
  76. package/dist/posthog-JVNTOLTV.js +3464 -0
  77. package/dist/postmark-6SBG7HWV.js +427 -0
  78. package/dist/{prerender-MENYM2TY.js → prerender-GPNKTNFC.js} +31 -30
  79. package/dist/{pubmed-GOXUVVH5.js → pubmed-UP6ZEEIH.js} +239 -238
  80. package/dist/{railway-V2SID4WV.js → railway-KWEWXHTY.js} +118 -117
  81. package/dist/readwise-BLATSMC3.js +470 -0
  82. package/dist/render-QYRVIXII.js +461 -0
  83. package/dist/{replicate-756MXPYX.js → replicate-JYTWH4NF.js} +81 -80
  84. package/dist/{resend-ZKH3BTBI.js → resend-L5N75SZM.js} +20 -16
  85. package/dist/rootly-MHCPEQ26.js +336 -0
  86. package/dist/{scrapfly-NSRHFDIQ.js → scrapfly-PTPGYSJM.js} +62 -61
  87. package/dist/{scrapingbee-OQHLAVEY.js → scrapingbee-JN6UH5PY.js} +56 -56
  88. package/dist/{screenshot_fyi-DVWG3AXC.js → screenshot_fyi-4QRVSV55.js} +16 -16
  89. package/dist/semantic_scholar-LRSWA2GE.js +611 -0
  90. package/dist/{sentry-546MNDJG.js → sentry-2G6PF5W6.js} +208 -207
  91. package/dist/{shodan-C3OON3Z3.js → shodan-WKKPP5C6.js} +62 -61
  92. package/dist/shopify-64YDK5T2.js +610 -0
  93. package/dist/stripe-QAIGGOTF.js +585 -0
  94. package/dist/{supabase-U2SL4D63.js → supabase-WHTGR6ND.js} +245 -244
  95. package/dist/tavily-QIXCDDWO.js +326 -0
  96. package/dist/telegram-E6G7CWI6.js +1767 -0
  97. package/dist/{telnyx-CXQ4EZUX.js → telnyx-ZDVVS7PK.js} +57 -56
  98. package/dist/todoist-DMYF3G7J.js +664 -0
  99. package/dist/trello-HY2RYIRP.js +1080 -0
  100. package/dist/turso-HAQWMGRP.js +416 -0
  101. package/dist/{twilio-4PDBJKWX.js → twilio-MLXYPHJE.js} +70 -69
  102. package/dist/umami-DZHBLPVG.js +389 -0
  103. package/dist/unsplash-GS2OPXKE.js +351 -0
  104. package/dist/{upstash_redis-G4LQBYHA.js → upstash_redis-XMXWTNAJ.js} +51 -50
  105. package/dist/uptimerobot-TF5WRZ4G.js +483 -0
  106. package/dist/v2ex-2BVXAPDF.js +667 -0
  107. package/dist/vercel-YMJGQYJE.js +1076 -0
  108. package/dist/{wolfram_alpha_api-3G4PUJWB.js → wolfram_alpha_api-I56SXWFZ.js} +36 -35
  109. package/dist/wordpress-R7TDFZ2P.js +812 -0
  110. package/dist/workos-HDNHWVMS.js +664 -0
  111. package/dist/zhihu-LX6AGGDS.js +254 -0
  112. package/package.json +18 -9
  113. package/dist/airtable-LLZDFN7M.js +0 -789
  114. package/dist/anthropic-G23NN3X5.js +0 -202
  115. package/dist/apify-Y3SS734K.js +0 -247
  116. package/dist/brave_search-ZC7OAPSZ.js +0 -301
  117. package/dist/chunk-R6P4XAE5.js +0 -248
  118. package/dist/chunk-U7B6DS2O.js +0 -977
  119. package/dist/chunk-UZM2RXZH.js +0 -23436
  120. package/dist/circleci-3BAX5FCG.js +0 -388
  121. package/dist/clerk-6LEM6TNU.js +0 -1019
  122. package/dist/cloudflare_dns-KINYTJUD.js +0 -588
  123. package/dist/cohere-XCJ5AJ6B.js +0 -185
  124. package/dist/deepseek-PC5YGNC5.js +0 -209
  125. package/dist/docker_hub-C3MA5FU6.js +0 -932
  126. package/dist/dropbox-XBV7Z2IR.js +0 -1304
  127. package/dist/dub-LDOFG3HC.js +0 -679
  128. package/dist/e2b-JMCPSVBW.js +0 -277
  129. package/dist/exa-RAK7O7RD.js +0 -331
  130. package/dist/figma-E6IX5DTH.js +0 -773
  131. package/dist/firehydrant-ZBLPQREE.js +0 -562
  132. package/dist/fly-ZH3HFCZJ.js +0 -468
  133. package/dist/geocodio-YGNI7DA4.js +0 -212
  134. package/dist/ghost-EVSGKH2Q.js +0 -337
  135. package/dist/github-MA2BGRCJ.js +0 -5420
  136. package/dist/gmail-E5E6AADE.js +0 -1886
  137. package/dist/googlecalendar-BTLFPXTD.js +0 -2523
  138. package/dist/graphhopper-WSMB3TCD.js +0 -324
  139. package/dist/ipgeolocation_io-AA7HAS22.js +0 -315
  140. package/dist/ipqualityscore-BHJXVTJT.js +0 -277
  141. package/dist/langsmith-5W6SCT6F.js +0 -592
  142. package/dist/lemlist-HJWH6UMK.js +0 -288
  143. package/dist/logsnag-4KFOHL37.js +0 -150
  144. package/dist/mem0-CAW43CIC.js +0 -543
  145. package/dist/memos-TWEGPKFM.js +0 -740
  146. package/dist/mistral_ai-64BGZQHP.js +0 -1195
  147. package/dist/ngrok-GQCUGZKJ.js +0 -356
  148. package/dist/notion-DQWZWP4N.js +0 -936
  149. package/dist/open_exchange_rates-QMMD735E.js +0 -214
  150. package/dist/openai-W6PX32NZ.js +0 -799
  151. package/dist/opengraph_io-HNDBXYNW.js +0 -361
  152. package/dist/openrouter-JJYMEAUL.js +0 -437
  153. package/dist/outline-MCBNQZYY.js +0 -595
  154. package/dist/paddle-D2SKLUDN.js +0 -453
  155. package/dist/perplexity-XIFMKUAE.js +0 -219
  156. package/dist/pinecone-HUFTALV2.js +0 -570
  157. package/dist/polar-TYTOMOSR.js +0 -394
  158. package/dist/posthog-43JAR3VW.js +0 -3463
  159. package/dist/postmark-KL2QJYSG.js +0 -426
  160. package/dist/readwise-CI4GIMMJ.js +0 -469
  161. package/dist/render-SUBJ6YRZ.js +0 -460
  162. package/dist/rootly-CD2LJHPI.js +0 -336
  163. package/dist/semantic_scholar-T4A252KW.js +0 -610
  164. package/dist/shopify-Y2HN2MCQ.js +0 -609
  165. package/dist/stripe-VE3CD3AY.js +0 -584
  166. package/dist/tavily-KCZHK6HE.js +0 -326
  167. package/dist/telegram-3URFBCMY.js +0 -1766
  168. package/dist/todoist-HNPWNYTD.js +0 -663
  169. package/dist/trello-3W2MIXRP.js +0 -1079
  170. package/dist/turso-2EQF7C2Z.js +0 -415
  171. package/dist/umami-5REN7TGP.js +0 -388
  172. package/dist/unsplash-EIXL424F.js +0 -350
  173. package/dist/uptimerobot-KNJ3EYLY.js +0 -482
  174. package/dist/v2ex-RHJ234PZ.js +0 -666
  175. package/dist/vercel-AS6NCIC7.js +0 -1075
  176. package/dist/wordpress-KNDAAUV7.js +0 -811
  177. package/dist/workos-R6UITSJ7.js +0 -663
  178. package/dist/zhihu-AGK4HILK.js +0 -253
package/dist/main.js CHANGED
@@ -1,290 +1,67 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- configFromEnv,
4
- createTbServer
5
- } from "./chunk-KMTT3I6D.js";
6
- import "./chunk-R6P4XAE5.js";
7
- import "./chunk-U7B6DS2O.js";
8
- import "./chunk-UZM2RXZH.js";
3
+ createManagedServer
4
+ } from "./chunk-4XJPN3DY.js";
5
+ import "./chunk-U7PTOA3U.js";
6
+ import {
7
+ package_default
8
+ } from "./chunk-7CTWGTDU.js";
9
+ import "./chunk-2JNAI4OC.js";
10
+ import "./chunk-BADVCN6K.js";
11
+ import "./chunk-5ICRY3VU.js";
9
12
  import "./chunk-U67V476Y.js";
10
13
 
11
- // ../plugins/src/registry.generated.ts
12
- var BUILTIN_PLUGIN_LOADERS = {
13
- airtable: () => import("./airtable-LLZDFN7M.js"),
14
- alt_text_generator_ai: () => import("./alt_text_generator_ai-W7O34SNG.js"),
15
- amap: () => import("./amap-VOX4T2AW.js"),
16
- anthropic: () => import("./anthropic-G23NN3X5.js"),
17
- apify: () => import("./apify-Y3SS734K.js"),
18
- brave_search: () => import("./brave_search-ZC7OAPSZ.js"),
19
- circleci: () => import("./circleci-3BAX5FCG.js"),
20
- clerk: () => import("./clerk-6LEM6TNU.js"),
21
- cloudflare_dns: () => import("./cloudflare_dns-KINYTJUD.js"),
22
- cohere: () => import("./cohere-XCJ5AJ6B.js"),
23
- confluence: () => import("./confluence-B3EWPZVE.js"),
24
- convertapi: () => import("./convertapi-EUWSQYPF.js"),
25
- currencyapi: () => import("./currencyapi-KVTIK3GL.js"),
26
- deepseek: () => import("./deepseek-PC5YGNC5.js"),
27
- docker_hub: () => import("./docker_hub-C3MA5FU6.js"),
28
- dropbox: () => import("./dropbox-XBV7Z2IR.js"),
29
- dub: () => import("./dub-LDOFG3HC.js"),
30
- e2b: () => import("./e2b-JMCPSVBW.js"),
31
- exa: () => import("./exa-RAK7O7RD.js"),
32
- fal_ai: () => import("./fal_ai-23E7JPNT.js"),
33
- feishu: () => import("./feishu-7QRIDUV6.js"),
34
- feishu_custom_bot: () => import("./feishu_custom_bot-TJ4K7QNJ.js"),
35
- figma: () => import("./figma-E6IX5DTH.js"),
36
- firehydrant: () => import("./firehydrant-ZBLPQREE.js"),
37
- fixer: () => import("./fixer-BWON27UO.js"),
38
- fly: () => import("./fly-ZH3HFCZJ.js"),
39
- front: () => import("./front-QCGXYEDJ.js"),
40
- geocodio: () => import("./geocodio-YGNI7DA4.js"),
41
- ghost: () => import("./ghost-EVSGKH2Q.js"),
42
- github: () => import("./github-MA2BGRCJ.js"),
43
- gmail: () => import("./gmail-E5E6AADE.js"),
44
- googlecalendar: () => import("./googlecalendar-BTLFPXTD.js"),
45
- googledocs: () => import("./googledocs-BUHL4J2H.js"),
46
- grafana: () => import("./grafana-GLU2DWF2.js"),
47
- graphhopper: () => import("./graphhopper-WSMB3TCD.js"),
48
- ip2proxy: () => import("./ip2proxy-EZ64Y4ZH.js"),
49
- ipgeolocation_io: () => import("./ipgeolocation_io-AA7HAS22.js"),
50
- ipqualityscore: () => import("./ipqualityscore-BHJXVTJT.js"),
51
- jina_ai: () => import("./jina_ai-EFBHTBXL.js"),
52
- jira: () => import("./jira-HQSHAA5K.js"),
53
- langsmith: () => import("./langsmith-5W6SCT6F.js"),
54
- lemlist: () => import("./lemlist-HJWH6UMK.js"),
55
- linear: () => import("./linear-K7RYFYAD.js"),
56
- logsnag: () => import("./logsnag-4KFOHL37.js"),
57
- mattermost: () => import("./mattermost-S2BRCWLQ.js"),
58
- mem0: () => import("./mem0-CAW43CIC.js"),
59
- memos: () => import("./memos-TWEGPKFM.js"),
60
- metabase: () => import("./metabase-MMSEPCOF.js"),
61
- mistral_ai: () => import("./mistral_ai-64BGZQHP.js"),
62
- mother_duck: () => import("./mother_duck-H7PCQNZ2.js"),
63
- ngrok: () => import("./ngrok-GQCUGZKJ.js"),
64
- notes: () => import("./notes-PFMKRO33.js"),
65
- notion: () => import("./notion-DQWZWP4N.js"),
66
- open_exchange_rates: () => import("./open_exchange_rates-QMMD735E.js"),
67
- openai: () => import("./openai-W6PX32NZ.js"),
68
- opengraph_io: () => import("./opengraph_io-HNDBXYNW.js"),
69
- openrouter: () => import("./openrouter-JJYMEAUL.js"),
70
- outline: () => import("./outline-MCBNQZYY.js"),
71
- paddle: () => import("./paddle-D2SKLUDN.js"),
72
- perplexity: () => import("./perplexity-XIFMKUAE.js"),
73
- pinecone: () => import("./pinecone-HUFTALV2.js"),
74
- pipedrive: () => import("./pipedrive-Y2O7QGFF.js"),
75
- polar: () => import("./polar-TYTOMOSR.js"),
76
- posthog: () => import("./posthog-43JAR3VW.js"),
77
- postmark: () => import("./postmark-KL2QJYSG.js"),
78
- prerender: () => import("./prerender-MENYM2TY.js"),
79
- pubmed: () => import("./pubmed-GOXUVVH5.js"),
80
- railway: () => import("./railway-V2SID4WV.js"),
81
- readwise: () => import("./readwise-CI4GIMMJ.js"),
82
- render: () => import("./render-SUBJ6YRZ.js"),
83
- replicate: () => import("./replicate-756MXPYX.js"),
84
- resend: () => import("./resend-ZKH3BTBI.js"),
85
- rootly: () => import("./rootly-CD2LJHPI.js"),
86
- scrapfly: () => import("./scrapfly-NSRHFDIQ.js"),
87
- scrapingbee: () => import("./scrapingbee-OQHLAVEY.js"),
88
- screenshot_fyi: () => import("./screenshot_fyi-DVWG3AXC.js"),
89
- semantic_scholar: () => import("./semantic_scholar-T4A252KW.js"),
90
- sentry: () => import("./sentry-546MNDJG.js"),
91
- shodan: () => import("./shodan-C3OON3Z3.js"),
92
- shopify: () => import("./shopify-Y2HN2MCQ.js"),
93
- stripe: () => import("./stripe-VE3CD3AY.js"),
94
- supabase: () => import("./supabase-U2SL4D63.js"),
95
- tavily: () => import("./tavily-KCZHK6HE.js"),
96
- telegram: () => import("./telegram-3URFBCMY.js"),
97
- telnyx: () => import("./telnyx-CXQ4EZUX.js"),
98
- todoist: () => import("./todoist-HNPWNYTD.js"),
99
- trello: () => import("./trello-3W2MIXRP.js"),
100
- turso: () => import("./turso-2EQF7C2Z.js"),
101
- twilio: () => import("./twilio-4PDBJKWX.js"),
102
- umami: () => import("./umami-5REN7TGP.js"),
103
- unsplash: () => import("./unsplash-EIXL424F.js"),
104
- upstash_redis: () => import("./upstash_redis-G4LQBYHA.js"),
105
- uptimerobot: () => import("./uptimerobot-KNJ3EYLY.js"),
106
- v2ex: () => import("./v2ex-RHJ234PZ.js"),
107
- vercel: () => import("./vercel-AS6NCIC7.js"),
108
- wolfram_alpha_api: () => import("./wolfram_alpha_api-3G4PUJWB.js"),
109
- wordpress: () => import("./wordpress-KNDAAUV7.js"),
110
- workos: () => import("./workos-R6UITSJ7.js"),
111
- zhihu: () => import("./zhihu-AGK4HILK.js")
112
- };
113
-
114
- // ../plugins/src/catalog.generated.ts
115
- var BUILTIN_CATALOG = {
116
- "airtable": { "id": "airtable", "kind": "builtin", "endpoint": "binding:airtable", "digest": "3b265733401d838278c60a4e0863bab72308f422c77179a6a0021a37bad937b4", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_bases", "description": "Airtable", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
117
- "alt_text_generator_ai": { "id": "alt_text_generator_ai", "kind": "builtin", "endpoint": "binding:alt_text_generator_ai", "digest": "8a5729befa9c41311e76d792c011f895dbdfe3147e8aca5ce14d28f99c667dcf", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "Alt Text Generator AI", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
118
- "amap": { "id": "amap", "kind": "builtin", "endpoint": "binding:amap", "digest": "969f51fc792c12eaa139214aa137c032ffea3ec101e70559349525d27c55abf2", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "AMap (\u9AD8\u5FB7\u5730\u56FE)", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
119
- "anthropic": { "id": "anthropic", "kind": "builtin", "endpoint": "binding:anthropic", "digest": "d21d35b89dab5a7785ec828f94aa1c22e1f3079079adbac4cdd13a8251defe46", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_models", "description": "Anthropic", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
120
- "apify": { "id": "apify", "kind": "builtin", "endpoint": "binding:apify", "digest": "5b445bd762af7faad4b00ae119997d2c15ae4fa054d1c9f8c5a3af3f691d308d", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_current_user", "description": "Apify", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
121
- "brave_search": { "id": "brave_search", "kind": "builtin", "endpoint": "binding:brave_search", "digest": "a522db46c6b1064b95fa7d0d7b72e2d663453bdc62772003a28c9158ee4f7977", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "Brave Search", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
122
- "circleci": { "id": "circleci", "kind": "builtin", "endpoint": "binding:circleci", "digest": "e94e41cd9aa088eb5d932e1f121a559d2c7583c0b74d357fec5e2206408fdfe6", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_current_user", "description": "CircleCI", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
123
- "clerk": { "id": "clerk", "kind": "builtin", "endpoint": "binding:clerk", "digest": "40084bbd7dbbcdee438fd29109809340d8b2291ff1887e7152675cb5bceb4392", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "count_users", "description": "Clerk", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
124
- "cloudflare_dns": { "id": "cloudflare_dns", "kind": "builtin", "endpoint": "binding:cloudflare_dns", "digest": "f4f8d06d489a25913341ec378d3531698faf61809c8720c7efcfe6e238355a31", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_zones", "description": "Cloudflare DNS", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
125
- "cohere": { "id": "cohere", "kind": "builtin", "endpoint": "binding:cohere", "digest": "701fa1f5fae84105ce9cbbe58c060e017f3720a215da3900de0ab5be867d214c", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "Cohere", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
126
- "confluence": { "id": "confluence", "kind": "builtin", "endpoint": "binding:confluence", "digest": "6841794f6d3632b5b7ab969ccfb627e583e53f0f4efcc9dadb1940e4880b2b17", "describe": { "exports": [{ "credentialFields": [{ "description": "Atlassian API token,\u5F53 Basic \u8BA4\u8BC1\u7684\u5BC6\u7801;\u5728 https://id.atlassian.com/manage-profile/security/api-tokens \u521B\u5EFA", "key": "apiKey", "label": "API Token", "required": true, "secret": true }, { "description": "Atlassian \u8D26\u53F7\u90AE\u7BB1,\u5F53 Basic \u8BA4\u8BC1\u7684\u7528\u6237\u540D", "key": "email", "label": "Atlassian Email", "required": true, "secret": false }, { "description": "Confluence Cloud \u7AD9\u70B9\u5730\u5740(https://<site>.atlassian.net);\u53EA\u63A5\u53D7 https \u7684 atlassian.net \u7AD9\u70B9", "key": "siteUrl", "label": "Confluence Site URL", "required": true, "secret": false }], "credentialProbe": "list_spaces", "description": "Confluence", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
127
- "convertapi": { "id": "convertapi", "kind": "builtin", "endpoint": "binding:convertapi", "digest": "99800537444dbf85a3179a92e5fcd1ee78b512897d13c93c9e30384b21acccbd", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "ConvertAPI", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
128
- "currencyapi": { "id": "currencyapi", "kind": "builtin", "endpoint": "binding:currencyapi", "digest": "34ee6542f2f9913484379882037f97790ebe166be905ebd3569956ea35ecb2b7", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_api_status", "description": "currencyapi", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
129
- "deepseek": { "id": "deepseek", "kind": "builtin", "endpoint": "binding:deepseek", "digest": "0f89091072621d589a3ead1c9370ad741283b7e15c91ed427611a27071118cae", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_models", "description": "DeepSeek", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
130
- "docker_hub": { "id": "docker_hub", "kind": "builtin", "endpoint": "binding:docker_hub", "digest": "2b16be828ca8564b89ac9812fdc0e39695b4ab8bfd21cf83049f88afd6203039", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "Docker Hub", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
131
- "dropbox": { "id": "dropbox", "kind": "builtin", "endpoint": "binding:dropbox", "digest": "72dd800cc8b896ed8b5c8f006aa6eeac1f7dd174f825a082718c5da3a6bf55fc", "describe": { "exports": [{ "description": "Dropbox", "id": "actions", "oauth": { "authorizationParams": { "token_access_type": "offline" }, "authorizationUrl": "https://www.dropbox.com/oauth2/authorize", "clientAuth": "client_secret_post", "scopes": ["account_info.read", "files.metadata.read", "files.content.read", "files.content.write", "sharing.read", "sharing.write"], "tokenUrl": "https://api.dropboxapi.com/oauth2/token" }, "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
132
- "dub": { "id": "dub", "kind": "builtin", "endpoint": "binding:dub", "digest": "08a5916fa278b857b8c38bcfe28cc0437fe954bd45199b26e3ab1f828db3b7e3", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "count_links", "description": "Dub", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
133
- "e2b": { "id": "e2b", "kind": "builtin", "endpoint": "binding:e2b", "digest": "d41b5e3349c221c290a15a1d8cb435c919000ed359bc5cf2ae99dfca5987ccb4", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_sandboxes", "description": "E2B", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
134
- "exa": { "id": "exa", "kind": "builtin", "endpoint": "binding:exa", "digest": "8e0688929d7fb6510713e7ed8b01901f44f48adac4fc4326d62a9cfcaa4cad0e", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "Exa", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
135
- "fal_ai": { "id": "fal_ai", "kind": "builtin", "endpoint": "binding:fal_ai", "digest": "8509e5558f54a0a58fca101f15f677adc13b654b2432d0fc16d01d075c2b87c1", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_models", "description": "fal.ai", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
136
- "feishu": { "id": "feishu", "kind": "builtin", "endpoint": "binding:feishu", "digest": "224a0a5487c8d19d8883d6beb4df06c1443c13803b9e9779bcceb8ecc70d25db", "describe": { "exports": [{ "credentialFields": [{ "description": "\u98DE\u4E66\u81EA\u5EFA\u5E94\u7528\u7684 app_id(\u5F00\u653E\u5E73\u53F0\u300C\u51ED\u8BC1\u4E0E\u57FA\u7840\u4FE1\u606F\u300D\u9875)", "key": "app_id", "label": "App ID", "required": true }, { "description": "\u98DE\u4E66\u81EA\u5EFA\u5E94\u7528\u7684 app_secret,\u7528\u4E8E\u6362\u53D1 tenant_access_token", "key": "app_secret", "label": "App Secret", "required": true, "secret": true }], "description": "Feishu actions (docs, wiki, messaging) via the official MCP upstream", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
137
- "feishu_custom_bot": { "id": "feishu_custom_bot", "kind": "builtin", "endpoint": "binding:feishu_custom_bot", "digest": "dc3d222f176e7f818463873ddb1f7c9246f45b801cd9550bc22235c7f84fb5e8", "describe": { "exports": [{ "credentialFields": [{ "description": "\u7FA4\u673A\u5668\u4EBA\u7684 webhook \u5730\u5740(https://open.feishu.cn/open-apis/bot/v2/hook/<token>)\u6216\u5176 token", "key": "webhook", "label": "Webhook", "required": true, "secret": true }, { "description": "\u7FA4\u673A\u5668\u4EBA\u5F00\u542F\u300C\u7B7E\u540D\u6821\u9A8C\u300D\u65F6\u7684\u5BC6\u94A5;\u672A\u5F00\u542F\u5219\u7559\u7A7A", "key": "signingSecret", "label": "Signing Secret", "required": false, "secret": true }], "description": "Feishu Custom Bot", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
138
- "figma": { "id": "figma", "kind": "builtin", "endpoint": "binding:figma", "digest": "9eeb11093b548485002122c444282820396abb88e538a554b2c8abc758d3c79d", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_current_user", "description": "Figma", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
139
- "firehydrant": { "id": "firehydrant", "kind": "builtin", "endpoint": "binding:firehydrant", "digest": "72d143849f8796e3545c0cad7f399c4af824650e9a6b9df0ca1e17a12c1e2be3", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_incidents", "description": "FireHydrant", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
140
- "fixer": { "id": "fixer", "kind": "builtin", "endpoint": "binding:fixer", "digest": "94a4fd282f2cf64496b9fa5eec469b37cc2584298e5f95a241f8f1abc2000a00", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_supported_symbols", "description": "Fixer", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
141
- "fly": { "id": "fly", "kind": "builtin", "endpoint": "binding:fly", "digest": "30bcf0348db20dbea079c09f1d14a7eddf82d95a571fc4dc4bd475b6666a0329", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "Fly.io", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
142
- "front": { "id": "front", "kind": "builtin", "endpoint": "binding:front", "digest": "42d12620f0cc3d5896f49dbd51bb1226aa23b207e696b737e392acd8a06a33d2", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_teammates", "description": "Front", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
143
- "geocodio": { "id": "geocodio", "kind": "builtin", "endpoint": "binding:geocodio", "digest": "0b863c1670af7bd3ca622d780ca359c09c17a73383b8b32a83b1d233a5dbf5e3", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "Geocodio", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
144
- "ghost": { "id": "ghost", "kind": "builtin", "endpoint": "binding:ghost", "digest": "66da97186043b03ebb1f9efd95f43c30c5b6bb3e745243ea0de5e7c457ec3f88", "describe": { "exports": [{ "credentialFields": [{ "description": "Ghost Content API key,\u4F5C\u4E3A key query \u53C2\u6570\u53D1\u9001;\u5728 Ghost Admin \u7684 Settings > Advanced > Integrations \u91CC\u521B\u5EFA\u6216\u67E5\u770B", "key": "apiKey", "label": "Content API Key", "required": true, "secret": true }, { "description": "Ghost \u7AD9\u70B9\u7684\u516C\u5F00\u5730\u5740(https://example.ghost.io),\u4E0D\u8981\u5E26 API \u8DEF\u5F84;\u5FC5\u987B\u662F\u516C\u7F51\u53EF\u8FBE\u5730\u5740,\u79C1\u6709\u7F51\u6BB5\u4F1A\u88AB\u51FA\u7AD9\u7B56\u7565\u62E6\u4E0B", "key": "siteUrl", "label": "Site URL", "required": true, "secret": false }], "credentialProbe": "read_settings", "description": "Ghost (Content API)", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
145
- "github": { "id": "github", "kind": "builtin", "endpoint": "binding:github", "digest": "f8083b708876dde13851215c44142328e2a062e1221db430d784d8c343c94859", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_current_user", "description": "GitHub", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
146
- "gmail": { "id": "gmail", "kind": "builtin", "endpoint": "binding:gmail", "digest": "214cef1630ea8689786a396c5c3b3c46b3d12c5e678e348eba4c84279e8b3aa5", "describe": { "exports": [{ "description": "Gmail", "id": "actions", "oauth": { "authorizationParams": { "access_type": "offline", "prompt": "consent" }, "authorizationUrl": "https://accounts.google.com/o/oauth2/v2/auth", "clientAuth": "client_secret_post", "scopes": ["https://www.googleapis.com/auth/gmail.readonly", "https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/gmail.compose", "https://www.googleapis.com/auth/gmail.send", "https://www.googleapis.com/auth/gmail.labels", "https://www.googleapis.com/auth/gmail.settings.basic"], "tokenUrl": "https://oauth2.googleapis.com/token" }, "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
147
- "googlecalendar": { "id": "googlecalendar", "kind": "builtin", "endpoint": "binding:googlecalendar", "digest": "b81f98cb6a856f5898414769ae362f35c2149cee41f945516516bf39df108149", "describe": { "exports": [{ "description": "Google Calendar", "id": "actions", "oauth": { "authorizationParams": { "access_type": "offline", "prompt": "consent" }, "authorizationUrl": "https://accounts.google.com/o/oauth2/v2/auth", "clientAuth": "client_secret_post", "scopes": ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly", "https://www.googleapis.com/auth/calendar.events", "https://www.googleapis.com/auth/calendar.calendars", "https://www.googleapis.com/auth/calendar.calendarlist", "https://www.googleapis.com/auth/calendar.settings.readonly", "https://www.googleapis.com/auth/calendar.acls", "https://www.googleapis.com/auth/calendar.acls.readonly"], "tokenUrl": "https://oauth2.googleapis.com/token" }, "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
148
- "googledocs": { "id": "googledocs", "kind": "builtin", "endpoint": "binding:googledocs", "digest": "339e51f24366682b6d9c284c995083479f1d798e3059bef067c03582c4be515b", "describe": { "exports": [{ "description": "Google Docs", "id": "actions", "oauth": { "authorizationParams": { "access_type": "offline", "prompt": "consent" }, "authorizationUrl": "https://accounts.google.com/o/oauth2/v2/auth", "clientAuth": "client_secret_post", "scopes": ["https://www.googleapis.com/auth/documents.readonly", "https://www.googleapis.com/auth/documents", "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/spreadsheets.readonly"], "tokenUrl": "https://oauth2.googleapis.com/token" }, "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
149
- "grafana": { "id": "grafana", "kind": "builtin", "endpoint": "binding:grafana", "digest": "5d72cdcc14e570b96aafc8c9c8cd86ab6884fc3b35c97086233e9a7762f7fb7b", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "search_dashboards", "description": "Grafana", "id": "actions", "mountConfigFields": [{ "description": "Grafana \u5B9E\u4F8B\u6839\u5730\u5740(Cloud \u6216\u81EA\u5EFA),\u5982 https://x.grafana.net", "key": "baseUrl", "label": "\u5B9E\u4F8B\u5730\u5740", "required": true }], "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
150
- "graphhopper": { "id": "graphhopper", "kind": "builtin", "endpoint": "binding:graphhopper", "digest": "c5ce9dfe18ae83eb526e00719409e33c545cf40a18621b512c57b7d2b5b737a2", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_profiles", "description": "GraphHopper", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
151
- "ip2proxy": { "id": "ip2proxy", "kind": "builtin", "endpoint": "binding:ip2proxy", "digest": "1f48a0ce4fe542f8ec9f82c5e0ad78c1dc3a3f3c60c43f8b34f4a670ce39e0f4", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "IP2Proxy", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
152
- "ipgeolocation_io": { "id": "ipgeolocation_io", "kind": "builtin", "endpoint": "binding:ipgeolocation_io", "digest": "d272dbde54771d318139773a66b2549430b707a4e8fd3f808494faf174074946", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_timezone", "description": "IPGeolocation.io", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
153
- "ipqualityscore": { "id": "ipqualityscore", "kind": "builtin", "endpoint": "binding:ipqualityscore", "digest": "55c8fedb364a96a7d2b46b4a46f454fe4c846cdca8c02e2917fb5c0fe15e5ca5", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "IPQualityScore", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
154
- "jina_ai": { "id": "jina_ai", "kind": "builtin", "endpoint": "binding:jina_ai", "digest": "7c13a5f2c17b07ce9755b12620799ff388a7ffb5bbdd2a54a19f5dbc28258745", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "Jina AI", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
155
- "jira": { "id": "jira", "kind": "builtin", "endpoint": "binding:jira", "digest": "6f47c22d5ec5746bad0ea75b2e3782c69955654410045d7fd6bbc3bfb102f377", "describe": { "exports": [{ "credentialFields": [{ "description": "Jira Data Center / Server \u5B9E\u4F8B\u7684\u6839\u5730\u5740(https://jira.example.com,\u5E26\u90E8\u7F72\u4E0A\u4E0B\u6587\u8DEF\u5F84\u4E5F\u53EF\u4EE5),\u4E0D\u8981\u5E26 API \u8DEF\u5F84;\u5FC5\u987B\u662F\u516C\u7F51\u53EF\u8FBE\u5730\u5740,\u79C1\u6709\u7F51\u6BB5\u4F1A\u88AB\u51FA\u7AD9\u7B56\u7565\u62E6\u4E0B", "key": "baseUrl", "label": "Instance URL", "required": true, "secret": false }, { "description": "Jira Data Center / Server \u7684\u4E2A\u4EBA\u8BBF\u95EE\u4EE4\u724C,\u4EE5 Bearer \u53D1\u9001", "key": "personalAccessToken", "label": "Personal access token", "required": true, "secret": true }], "credentialProbe": "list_projects", "description": "Jira (Data Center / Server)", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
156
- "langsmith": { "id": "langsmith", "kind": "builtin", "endpoint": "binding:langsmith", "digest": "a712ad2bca06d56d7ce69c122f04b92047b207df354505078c28815e2a858748", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_workspaces", "description": "LangSmith", "id": "actions", "mountConfigFields": [{ "description": "us\u3001eu\u3001apac \u6216 aws_us \u4E4B\u4E00;\u7559\u7A7A\u7528 us", "key": "region", "label": "\u533A\u57DF" }, { "description": "\u9650\u5B9A\u5230\u67D0\u4E2A workspace;\u7559\u7A7A\u7528\u51ED\u8BC1\u7684\u9ED8\u8BA4 workspace", "key": "workspaceId", "label": "Workspace ID" }], "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
157
- "lemlist": { "id": "lemlist", "kind": "builtin", "endpoint": "binding:lemlist", "digest": "b7f5097942974316156aba2b5df7e97c47e7445be3edaa4ae5d244cdb2f6a210", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_team", "description": "lemlist", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
158
- "linear": { "id": "linear", "kind": "builtin", "endpoint": "binding:linear", "digest": "beefa8236021f27980c503d7bd14b55c9177a6fc0ea4aaed8d901bf80b53dd49", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_current_user", "description": "Linear", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
159
- "logsnag": { "id": "logsnag", "kind": "builtin", "endpoint": "binding:logsnag", "digest": "94c93ac0361f98f94b4a399f7731a64687377cf7b0996765d33e8132e4949863", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "LogSnag", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
160
- "mattermost": { "id": "mattermost", "kind": "builtin", "endpoint": "binding:mattermost", "digest": "9dd2d1f677f4be7effa67da9c6714a1c3738d831325b10de40c6eb117ec385c1", "describe": { "exports": [{ "credentialFields": [{ "description": "Mattermost \u4E2A\u4EBA\u8BBF\u95EE\u4EE4\u724C,\u4EE5 Bearer \u53D1\u9001;\u5728\u8D26\u53F7\u8BBE\u7F6E\u7684 Security \u2192 Personal Access Tokens \u91CC\u521B\u5EFA", "key": "apiKey", "label": "Personal access token", "required": true, "secret": true }, { "description": "Mattermost \u5B9E\u4F8B\u7684\u6839\u5730\u5740(https://mattermost.example.com,\u5E26 /api/v4 \u540E\u7F00\u4E5F\u80FD\u8BC6\u522B);\u5FC5\u987B\u662F https \u7684\u516C\u7F51\u53EF\u8FBE\u5730\u5740,\u79C1\u6709\u7F51\u6BB5\u4F1A\u88AB\u51FA\u7AD9\u7B56\u7565\u62E6\u4E0B", "key": "instanceUrl", "label": "Instance URL", "required": true, "secret": false }], "credentialProbe": "get_current_user", "description": "Mattermost", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
161
- "mem0": { "id": "mem0", "kind": "builtin", "endpoint": "binding:mem0", "digest": "002acac1a89227ae1a2c55efa37166993dc612d9708984d69731b0ab74e23f29", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_events", "description": "Mem0", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
162
- "memos": { "id": "memos", "kind": "builtin", "endpoint": "binding:memos", "digest": "04d2f63d0845548c40da44fdcdd65584b27fcd6867e61dca3196c6f929cfe985", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_current_user", "description": "Memos", "id": "actions", "mountConfigFields": [{ "description": "\u4F60\u7684 Memos \u5B9E\u4F8B\u5730\u5740,\u5982 https://memos.example.com", "key": "baseUrl", "label": "\u5B9E\u4F8B\u5730\u5740", "required": true }], "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
163
- "metabase": { "id": "metabase", "kind": "builtin", "endpoint": "binding:metabase", "digest": "a430bf949686c10cd8fd2f18bea9936c422ea9217570d9aef37c78cfe193b151", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_current_user", "description": "Metabase", "id": "actions", "mountConfigFields": [{ "description": "\u4F60\u7684 Metabase \u5B9E\u4F8B\u5730\u5740,\u5982 https://x.metabaseapp.com", "key": "instanceUrl", "label": "\u5B9E\u4F8B\u5730\u5740", "required": true }], "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
164
- "mistral_ai": { "id": "mistral_ai", "kind": "builtin", "endpoint": "binding:mistral_ai", "digest": "46ca7e0ed09de8b7c80730ff78a7ffbf624a2337bf661ec753638667030990b6", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_models", "description": "Mistral AI", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
165
- "mother_duck": { "id": "mother_duck", "kind": "builtin", "endpoint": "binding:mother_duck", "digest": "425d1a138d8862726e8fe7bff98bea5f7207000848425bfe95c664a1dbb1b1f7", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_active_accounts", "description": "MotherDuck", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
166
- "ngrok": { "id": "ngrok", "kind": "builtin", "endpoint": "binding:ngrok", "digest": "7feebecdc804652788668f3481923a684c458704488790ef1937c3dbd1081b99", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_endpoints", "description": "ngrok", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
167
- "notes": { "id": "notes", "kind": "builtin", "endpoint": "binding:notes", "digest": "be320be526e0d038b7e692f555867d5e6d96470063d82b0a683d679dbb2ad568", "describe": { "exports": [{ "auth": { "kind": "none" }, "description": "\u8BB0\u4E8B\u672C\u52A8\u4F5C", "id": "actions", "mountConfigFields": [{ "description": "\u4E24\u4E2A export \u4F7F\u7528\u76F8\u540C\u503C\u5373\u53EF\u5171\u4EAB\u7B14\u8BB0;\u4E0D\u540C\u503C\u5F7C\u6B64\u9694\u79BB", "key": "workspace", "label": "Workspace" }], "profile": "tools/v1" }, { "auth": { "kind": "none" }, "capabilities": ["search"], "description": "\u7B14\u8BB0\u5185\u5BB9\u9762(append-only:\u53EF\u8BFB\u53EF\u5199,\u4E0D\u53EF\u6539\u4E0D\u53EF\u5220)", "id": "notes", "methods": ["list", "get", "write", "search"], "mountConfigFields": [{ "description": "\u4E24\u4E2A export \u4F7F\u7528\u76F8\u540C\u503C\u5373\u53EF\u5171\u4EAB\u7B14\u8BB0;\u4E0D\u540C\u503C\u5F7C\u6B64\u9694\u79BB", "key": "workspace", "label": "Workspace" }], "profile": "context/v1" }], "protocolVersion": "plugin/v2" } },
168
- "notion": { "id": "notion", "kind": "builtin", "endpoint": "binding:notion", "digest": "cd17bcce1c85bcd82fe0b0b5567cb7db5e2ed85fca3d6832c934b553816d95dd", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "Notion", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
169
- "open_exchange_rates": { "id": "open_exchange_rates", "kind": "builtin", "endpoint": "binding:open_exchange_rates", "digest": "e3d43586c8bc8ec542cd6cb5db4c686d0d6ea5a94c5ccfe6b9060f174c8ce14c", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_latest_rates", "description": "Open Exchange Rates", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
170
- "openai": { "id": "openai", "kind": "builtin", "endpoint": "binding:openai", "digest": "64b67925c50ce76e7f8068d4fa3fe6879100fb275e0904e2bf86191a6d2bc6ab", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_models", "description": "OpenAI", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
171
- "opengraph_io": { "id": "opengraph_io", "kind": "builtin", "endpoint": "binding:opengraph_io", "digest": "4a2a690bd79d2e6beed8854b8186ee88a26915591eeb4ae0894943a4b40e9f68", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "OpenGraph.io", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
172
- "openrouter": { "id": "openrouter", "kind": "builtin", "endpoint": "binding:openrouter", "digest": "46482b2b2e3151de3e4046b2c7e339e11d0b214c1ad4639c336fd89cd069c787", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_current_key", "description": "OpenRouter", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
173
- "outline": { "id": "outline", "kind": "builtin", "endpoint": "binding:outline", "digest": "3177e132b0e170f8247dfc9cd00cc4d6796677ef6a5f2e7a401917c7c3e5731c", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_collections", "description": "Outline", "id": "actions", "mountConfigFields": [{ "description": "\u81EA\u5EFA Outline \u7684\u6839\u5730\u5740;\u7559\u7A7A\u7528\u4E91\u7AEF app.getoutline.com", "key": "baseUrl", "label": "\u5B9E\u4F8B\u5730\u5740" }], "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
174
- "paddle": { "id": "paddle", "kind": "builtin", "endpoint": "binding:paddle", "digest": "4901c5455baec856f10e193915847cb9b23318024315ecf22eba213b53838b37", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_products", "description": "Paddle", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
175
- "perplexity": { "id": "perplexity", "kind": "builtin", "endpoint": "binding:perplexity", "digest": "39c8b91c09a1d1ce5d11312d50679cd5cac6bd149fb1bc72f1b4cad286907fd0", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_models", "description": "Perplexity", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
176
- "pinecone": { "id": "pinecone", "kind": "builtin", "endpoint": "binding:pinecone", "digest": "fa669ef8b8e8a65ab9b1fdc46c2a3ea22f8c20a04f06a9f8cebd0b40c37ba359", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_indexes", "description": "Pinecone", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
177
- "pipedrive": { "id": "pipedrive", "kind": "builtin", "endpoint": "binding:pipedrive", "digest": "6d75a172c459b656e8b2fd3d40ccfbeb50f9a334fbd7d69b587d43268a74e182", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_pipelines", "description": "Pipedrive", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
178
- "polar": { "id": "polar", "kind": "builtin", "endpoint": "binding:polar", "digest": "523b6a7b57b5f31e9f69541165cad09a22d3faaf35ab1a51d259430d9b2bb3f4", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_organizations", "description": "Polar", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
179
- "posthog": { "id": "posthog", "kind": "builtin", "endpoint": "binding:posthog", "digest": "1c4d4352ea7041cfced6f2fbc6e11685df852a7e71ba0dc5ae2cb0dae058d730", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_current_user", "description": "PostHog", "id": "actions", "mountConfigFields": [{ "description": "\u4F8B\u5982 https://us.posthog.com\u3001https://eu.posthog.com \u6216\u81EA\u6258\u7BA1\u5730\u5740", "key": "baseUrl", "label": "PostHog API URL", "required": true }, { "description": "\u53EF\u9009;\u9700\u8981\u6309\u7EC4\u7EC7\u8303\u56F4\u8C03\u7528\u7684\u63A5\u53E3\u4F1A\u4F7F\u7528\u5B83", "key": "organizationId", "label": "Organization ID" }], "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
180
- "postmark": { "id": "postmark", "kind": "builtin", "endpoint": "binding:postmark", "digest": "60968dfacee48617dbc8d5a37defe656740e1daf0deb4ec077df59e94debdd30", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_server", "description": "Postmark", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
181
- "prerender": { "id": "prerender", "kind": "builtin", "endpoint": "binding:prerender", "digest": "02030ef9e35b7bb60f109a19a342c3e911dd5f344157edece1f66472f0c4827f", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_cache_clear_status", "description": "Prerender", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
182
- "pubmed": { "id": "pubmed", "kind": "builtin", "endpoint": "binding:pubmed", "digest": "e69d69e32522d832864a97d1f3e80de69a1218d7c2f1e8ad694cb0c971bfbc50", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "PubMed", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
183
- "railway": { "id": "railway", "kind": "builtin", "endpoint": "binding:railway", "digest": "50a711842134ab3fd835fd0ba38dc3d92f47f269e39e677737b5c3f32dd60921", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_projects", "description": "Railway", "id": "actions", "mountConfigFields": [{ "description": "\u9650\u5B9A list_projects \u7684\u5DE5\u4F5C\u533A;\u7559\u7A7A\u7528\u8D26\u6237\u9ED8\u8BA4", "key": "workspaceId", "label": "Workspace ID" }], "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
184
- "readwise": { "id": "readwise", "kind": "builtin", "endpoint": "binding:readwise", "digest": "38f4c5124adfea92234848dc7a3bc7603d638ba390bd1a8468f9af666198814b", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_books", "description": "Readwise", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
185
- "render": { "id": "render", "kind": "builtin", "endpoint": "binding:render", "digest": "dd22e7000b5641de2d51671dcf80711a6c8f1c34a8e2d4bb5e97813d2410ec7a", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_current_user", "description": "Render", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
186
- "replicate": { "id": "replicate", "kind": "builtin", "endpoint": "binding:replicate", "digest": "8b56305da24dec728896ff2d4d47f4c53d62744df5c2f14be3cb15acb0aaf2a2", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_account", "description": "Replicate", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
187
- "resend": { "id": "resend", "kind": "builtin", "endpoint": "binding:resend", "digest": "556353884901f6b00b7f204fe9b154ee4746ed4580aecd183e5b47c6146946f6", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "Resend", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
188
- "rootly": { "id": "rootly", "kind": "builtin", "endpoint": "binding:rootly", "digest": "26dcc13f5c42f028afad92032998a89a6fc8ba10637daa21271266a4754ec4e8", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_current_user", "description": "Rootly", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
189
- "scrapfly": { "id": "scrapfly", "kind": "builtin", "endpoint": "binding:scrapfly", "digest": "ae7d9dd572ea667ad13ae77b3e85fc7ad38fdaa87bb4ad271c5d119d68607855", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "Scrapfly", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
190
- "scrapingbee": { "id": "scrapingbee", "kind": "builtin", "endpoint": "binding:scrapingbee", "digest": "3c30eeb37f120b74aae7b3eb06feb5b72ec1dc0cd161b9bc0cdc86e1b1190a23", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_usage_stats", "description": "ScrapingBee", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
191
- "screenshot_fyi": { "id": "screenshot_fyi", "kind": "builtin", "endpoint": "binding:screenshot_fyi", "digest": "b48d690b4e7d09e3abf0500022c59376763a6edefb7964b01e3e490219a6e766", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "screenshot.fyi", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
192
- "semantic_scholar": { "id": "semantic_scholar", "kind": "builtin", "endpoint": "binding:semantic_scholar", "digest": "758366c1355c4f2332c4de598f403fa3d95753c5648070c96b8452c3c1640bbe", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "Semantic Scholar", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
193
- "sentry": { "id": "sentry", "kind": "builtin", "endpoint": "binding:sentry", "digest": "823829cd31fe447ac0f69939034775177988290484541fb19412190adabacf0d", "describe": { "exports": [{ "description": "Sentry", "id": "actions", "oauth": { "authorizationUrl": "https://sentry.io/oauth/authorize/", "scopes": ["org:read", "project:read", "project:releases", "event:read", "event:write"], "tokenUrl": "https://sentry.io/oauth/token/" }, "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
194
- "shodan": { "id": "shodan", "kind": "builtin", "endpoint": "binding:shodan", "digest": "759337674d05ce10b981975afc09968c1afbbca46c8a39e3b6a13231d70d7f36", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_api_info", "description": "Shodan", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
195
- "shopify": { "id": "shopify", "kind": "builtin", "endpoint": "binding:shopify", "digest": "0aa27eb0883dcef053bfc7531bb06da3dc7836c90fa986b8ca5639ff9941d5b4", "describe": { "exports": [{ "credentialFields": [{ "description": "Shopify Admin API access token(shpat_...),\u8D70 X-Shopify-Access-Token \u5934;\u5728\u81EA\u5EFA\u5E94\u7528\u7684 API \u51ED\u636E\u9875\u83B7\u53D6", "key": "apiKey", "label": "Admin API access token", "required": true, "secret": true }, { "description": "\u5E97\u94FA\u7684 myshopify.com \u57DF\u540D(\u5982 acme.myshopify.com);\u540E\u53F0\u5730\u5740\u4E5F\u63A5\u53D7,\u4F1A\u53D6\u5176\u4E3B\u673A\u540D", "key": "shopDomain", "label": "Shop domain", "required": true, "secret": false }], "credentialProbe": "get_shop", "description": "Shopify REST Admin (Legacy)", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
196
- "stripe": { "id": "stripe", "kind": "builtin", "endpoint": "binding:stripe", "digest": "9018856070c05e2689890e5886cd156c20c7f510208e5c2edaff53b8c4d147fe", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "Stripe", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
197
- "supabase": { "id": "supabase", "kind": "builtin", "endpoint": "binding:supabase", "digest": "02deae19647566cc1099ed7a5b674be807f827e0928492e5df6a36d41a3a3b1d", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_organizations", "description": "Supabase (Management API)", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
198
- "tavily": { "id": "tavily", "kind": "builtin", "endpoint": "binding:tavily", "digest": "f05ce101c469e105652f43dc1b8037457b331f1da49c20c654f6380c48924c79", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_usage", "description": "Tavily", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
199
- "telegram": { "id": "telegram", "kind": "builtin", "endpoint": "binding:telegram", "digest": "e6caaaa5891f3b1dedee318e9e11cc96991867f9d8875af42898717d27bcf350", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_me", "description": "Telegram Bot", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
200
- "telnyx": { "id": "telnyx", "kind": "builtin", "endpoint": "binding:telnyx", "digest": "e6b61e04e711fc38d456f0e273773f76f0d9cd0831a9e71dc448612d9850c0f6", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "Telnyx", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
201
- "todoist": { "id": "todoist", "kind": "builtin", "endpoint": "binding:todoist", "digest": "b89bcc3334745446428725ab286f795fd8d9ccab9b0b52dbf07aa5d2b79db8dc", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_current_user", "description": "Todoist", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
202
- "trello": { "id": "trello", "kind": "builtin", "endpoint": "binding:trello", "digest": "676b6dff40210538a1820d3550c94b6665f4243de319fddad8f23d727fb61e52", "describe": { "exports": [{ "credentialFields": [{ "description": "https://trello.com/power-ups/admin \u4E0A Key \u4E00\u680F\u7684\u503C(\u4E0D\u662F API Secret,\u4E5F\u4E0D\u662F Atlassian API token)", "key": "apiKey", "label": "API Key", "required": true, "secret": true }, { "description": "\u5728\u540C\u4E00\u9875\u9762 API Key \u65C1\u8FB9\u7684 Token \u94FE\u63A5\u91CC\u751F\u6210(\u4E0E API Secret \u4E0D\u662F\u4E00\u56DE\u4E8B)", "key": "apiToken", "label": "API Token", "required": true, "secret": true }], "credentialProbe": "get_member", "description": "Trello", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
203
- "turso": { "id": "turso", "kind": "builtin", "endpoint": "binding:turso", "digest": "682b9f70af7cbddd89cd42ad227b644aab981755999c890a54648fe30351e06b", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_organizations", "description": "Turso", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
204
- "twilio": { "id": "twilio", "kind": "builtin", "endpoint": "binding:twilio", "digest": "4051deed82c9c9370b6f68f7c79b65b1f2908188c44a2a6fca2480143a97acfe", "describe": { "exports": [{ "credentialFields": [{ "description": "Twilio Account SID(AC \u5F00\u5934),\u4F5C\u4E3A\u8D26\u6237\u6807\u8BC6\u62FC\u8FDB API \u8DEF\u5F84;\u89C1 https://www.twilio.com/console \u7684 Account Info", "key": "accountSid", "label": "Account SID", "required": true, "secret": false }, { "description": "Twilio Auth Token,\u4E0E accountSid \u4E00\u8D77\u4EE5 HTTP Basic \u53D1\u9001(\u4E0D\u662F Bearer);\u53EF\u5728 https://www.twilio.com/console \u67E5\u770B\u6216\u8F6E\u6362", "key": "authToken", "label": "Auth Token", "required": true, "secret": true }], "credentialProbe": "get_account", "description": "Twilio", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
205
- "umami": { "id": "umami", "kind": "builtin", "endpoint": "binding:umami", "digest": "e11b334e6e8240613386d68023d0b9857228af232916beb220ed1266f55722e3", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_current_user", "description": "Umami", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
206
- "unsplash": { "id": "unsplash", "kind": "builtin", "endpoint": "binding:unsplash", "digest": "731e99c30556c4eb779432c5179891db141eae21f9079d49504ceeecd3c98501", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_photos", "description": "Unsplash", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
207
- "upstash_redis": { "id": "upstash_redis", "kind": "builtin", "endpoint": "binding:upstash_redis", "digest": "366629557a6a9833fb47a72efddb27840f02ee13c26ee262ede25dcc978ba915", "describe": { "exports": [{ "credentialFields": [{ "description": "Upstash \u63A7\u5236\u53F0\u91CC\u90A3\u4E2A\u6570\u636E\u5E93\u7684 HTTPS REST \u5730\u5740(https://<db>.upstash.io);\u53EA\u63A5\u53D7\u5B98\u65B9 upstash.io \u7AEF\u70B9", "key": "restUrl", "label": "REST URL", "required": true, "secret": false }, { "description": "\u4EE5 Bearer \u53D1\u9001\u7684 Upstash REST \u4EE4\u724C\u3002\u53EA\u8BFB\u4EE4\u724C\u80FD\u8DD1 get/exists/ttl,\u4F46 scan \u4E0E\u6240\u6709\u5199\u64CD\u4F5C\u8981\u6807\u51C6\u4EE4\u724C", "key": "restToken", "label": "REST Token", "required": true, "secret": true }], "description": "Upstash Redis", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
208
- "uptimerobot": { "id": "uptimerobot", "kind": "builtin", "endpoint": "binding:uptimerobot", "digest": "9b9c33799a5f57c2e15fae79c512fc2e6e2a4fbfdd20d8b05bbe626bbeb5696f", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_account_details", "description": "UptimeRobot", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
209
- "v2ex": { "id": "v2ex", "kind": "builtin", "endpoint": "binding:v2ex", "digest": "4c0011b589c32d5c82e8cc1d4a7d6fb09e7e5831e19b331d4951d42039f18b86", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_current_member", "description": "V2EX", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
210
- "vercel": { "id": "vercel", "kind": "builtin", "endpoint": "binding:vercel", "digest": "592112ae466b01b0f41b2f9c91cb6085b45a98b8967c2c4ecad3aeed0b526853", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "get_auth_user", "description": "Vercel", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
211
- "wolfram_alpha_api": { "id": "wolfram_alpha_api", "kind": "builtin", "endpoint": "binding:wolfram_alpha_api", "digest": "7a77df4c4de08c9242c789f4da7ac700373a57822c6fcb1331a77eee7324dcc1", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "Wolfram|Alpha", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
212
- "wordpress": { "id": "wordpress", "kind": "builtin", "endpoint": "binding:wordpress", "digest": "2827ca153cb20ad1c2c37dcb367e02dae41314bd6be779d25ccb988ae2b7eb15", "describe": { "exports": [{ "credentialFields": [{ "description": "WordPress \u5E94\u7528\u5BC6\u7801,\u4F5C\u4E3A HTTP Basic \u8BA4\u8BC1\u7684\u5BC6\u7801\u53D1\u9001;\u5728 WordPress \u540E\u53F0\u7684 Users > Profile > Application Passwords \u91CC\u521B\u5EFA", "key": "apiKey", "label": "Application Password", "required": true, "secret": true }, { "description": "WordPress \u7AD9\u70B9\u7684\u6839\u5730\u5740(https://example.com,\u5B50\u76EE\u5F55\u5B89\u88C5\u5199\u5230\u5B50\u76EE\u5F55);\u5E26 /wp-json \u6216 /wp-json/wp/v2 \u540E\u7F00\u4E5F\u8BA4\u3002\u5FC5\u987B\u662F https \u7684\u516C\u7F51\u5730\u5740,\u79C1\u6709\u7F51\u6BB5\u4F1A\u88AB\u51FA\u7AD9\u7B56\u7565\u62E6\u4E0B", "key": "siteUrl", "label": "Site URL", "required": true, "secret": false }, { "description": "\u4E0E\u5E94\u7528\u5BC6\u7801\u914D\u5BF9\u7684 WordPress \u7528\u6237\u540D,\u4F5C\u4E3A HTTP Basic \u8BA4\u8BC1\u7684\u7528\u6237\u540D\u53D1\u9001", "key": "username", "label": "Username", "required": true, "secret": false }], "credentialProbe": "get_current_user", "description": "WordPress (REST API v2)", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
213
- "workos": { "id": "workos", "kind": "builtin", "endpoint": "binding:workos", "digest": "6c08e1c19414a2ca25a9b7f8147c5c446d946900bac4ee5ed8a76ddd64b6f202", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "credentialProbe": "list_organizations", "description": "WorkOS", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
214
- "zhihu": { "id": "zhihu", "kind": "builtin", "endpoint": "binding:zhihu", "digest": "18005d6af695c3f1a191866268a8395fd1c3de8d83c7b3046512c35e87db5ff9", "describe": { "exports": [{ "auth": { "kind": "single", "required": true }, "description": "Zhihu", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } }
215
- };
216
-
217
- // ../plugins/src/registry.ts
218
- var BUILTIN_PLUGIN_ENV_KEYS = [
219
- // feishu:官方 MCP / 换发端点的 override(测试用)与工具白名单。
220
- "FEISHU_ALLOWED_TOOLS",
221
- "FEISHU_AUTH_URL",
222
- "FEISHU_MCP_URL"
223
- ];
224
- function narrowPluginEnv(env) {
225
- const narrowed = {};
226
- if (env.PLUGIN_TOKEN !== void 0) narrowed.PLUGIN_TOKEN = env.PLUGIN_TOKEN;
227
- for (const key of BUILTIN_PLUGIN_ENV_KEYS) {
228
- const value = env[key];
229
- if (value !== void 0) narrowed[key] = value;
230
- }
231
- return narrowed;
232
- }
233
- function builtinPluginBindings(env, opts = {}) {
234
- const names = opts.include ?? Object.keys(BUILTIN_PLUGIN_LOADERS);
235
- const pluginEnv = { ...narrowPluginEnv(env), TB_PLUGIN_IN_PROCESS: true };
236
- const bindings = /* @__PURE__ */ new Map();
237
- for (const name of names) {
238
- const loader = BUILTIN_PLUGIN_LOADERS[name];
239
- if (loader === void 0) throw new Error(`unknown builtin plugin '${name}'`);
240
- let loaded;
241
- bindings.set(name, async (request) => {
242
- loaded ??= loader();
243
- const mod = await loaded;
244
- return await mod.default.fetch(request, pluginEnv);
245
- });
246
- }
247
- return bindings;
248
- }
249
-
250
14
  // src/main.ts
251
- var config = configFromEnv(process.env);
252
- var server = createTbServer({
253
- ...config,
254
- pluginBindings: config.pluginBindings ?? builtinPluginBindings(process.env),
255
- pluginCatalog: config.pluginCatalog ?? BUILTIN_CATALOG
15
+ import { existsSync } from "fs";
16
+ import { Command } from "commander";
17
+ var program = new Command("tool-bridge-server").version(package_default.version).description(
18
+ "Node self-hosted service with protected setup and PostgreSQL configuration"
19
+ ).option(
20
+ "--directory <path>",
21
+ "Protected bootstrap directory",
22
+ process.env.TB_BOOTSTRAP_DIR ?? "/data/bootstrap"
23
+ ).option(
24
+ "--port <number>",
25
+ "Listening port (otherwise managed bootstrap port)",
26
+ process.env.PORT
27
+ ).action(async (opts) => {
28
+ const port = opts.port === void 0 ? void 0 : Number(opts.port);
29
+ if (port !== void 0 && (!Number.isInteger(port) || port < 1 || port > 65535))
30
+ throw new Error("port must be a valid TCP port");
31
+ const server = await createManagedServer({
32
+ directory: opts.directory,
33
+ ...existsSync("/app/dashboard/index.html") ? { uiDir: "/app/dashboard" } : {},
34
+ ...port === void 0 ? {} : { port }
35
+ });
36
+ try {
37
+ const started = await server.start();
38
+ console.log(
39
+ JSON.stringify({ event: "tool_bridge_listening", port: started.port })
40
+ );
41
+ } catch {
42
+ console.error(JSON.stringify({ event: "tool_bridge_start_failed" }));
43
+ await server.close();
44
+ process.exitCode = 1;
45
+ return;
46
+ }
47
+ let stopping = false;
48
+ const shutdown = () => {
49
+ if (stopping) return;
50
+ stopping = true;
51
+ console.log(JSON.stringify({ event: "tool_bridge_draining" }));
52
+ void server.shutdown().then(
53
+ () => process.exit(0),
54
+ () => process.exit(1)
55
+ );
56
+ };
57
+ process.on("SIGINT", shutdown);
58
+ process.on("SIGTERM", shutdown);
256
59
  });
257
- var port;
258
60
  try {
259
- ;
260
- ({ port } = await server.start());
261
- } catch (err) {
262
- const detail = err instanceof Error ? err.message : String(err);
263
- console.error(`[tool-bridge] refusing to start: ${detail}`);
61
+ await program.parseAsync();
62
+ } catch {
264
63
  console.error(
265
- "[tool-bridge] set TB_BOOTSTRAP_ADMIN_SK to a secret Admin SK before first boot, or set TB_ALLOW_INSECURE_BOOTSTRAP=true for local/dev (generates a random Admin SK and prints it once)."
64
+ "Service could not start; check the protected bootstrap directory and listening port."
266
65
  );
267
- await server.close().catch(() => {
268
- });
269
- process.exit(1);
66
+ process.exitCode = 1;
270
67
  }
271
- console.log(`[tool-bridge] listening on http://${config.host}:${port} (data: ${config.dataDir})`);
272
- var shuttingDown = false;
273
- var shutdown = (signal) => {
274
- if (shuttingDown) return;
275
- shuttingDown = true;
276
- console.log(`[tool-bridge] ${signal} received, draining`);
277
- server.startDraining();
278
- const doClose = () => {
279
- console.log(`[tool-bridge] shutting down`);
280
- server.close().then(() => process.exit(0)).catch((err) => {
281
- console.error("[tool-bridge] shutdown error", err);
282
- process.exit(1);
283
- });
284
- };
285
- const drainSec = config.shutdownDrainSec ?? 0;
286
- if (drainSec > 0) setTimeout(doClose, drainSec * 1e3);
287
- else doClose();
288
- };
289
- process.on("SIGINT", () => shutdown("SIGINT"));
290
- process.on("SIGTERM", () => shutdown("SIGTERM"));