@tool-bridge/server 0.1.1 → 0.3.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 (107) hide show
  1. package/dist/airtable-V6446SVY.js +792 -0
  2. package/dist/alt_text_generator_ai-HV7JZPDT.js +72 -0
  3. package/dist/amap-TTTVB6WS.js +755 -0
  4. package/dist/anthropic-JH3RA363.js +224 -0
  5. package/dist/apify-ETNN7ITU.js +262 -0
  6. package/dist/brave_search-3DDR2MMB.js +322 -0
  7. package/dist/chunk-CSJEZHQO.js +252 -0
  8. package/dist/chunk-JLTYA2B3.js +20121 -0
  9. package/dist/chunk-K7FVSFUX.js +333 -0
  10. package/dist/{chunk-MQEYFCJB.js → chunk-KGYJEEBI.js} +2770 -21574
  11. package/dist/circleci-MX3TX3HC.js +409 -0
  12. package/dist/clerk-MRPORVF4.js +1036 -0
  13. package/dist/cloudflare_dns-OWP7DD7L.js +605 -0
  14. package/dist/cohere-GPECP66S.js +197 -0
  15. package/dist/confluence-BN7LZ6BC.js +436 -0
  16. package/dist/convertapi-SBEOFOFQ.js +161 -0
  17. package/dist/currencyapi-P2YY7Y7P.js +306 -0
  18. package/dist/deepseek-MWB3NYIN.js +205 -0
  19. package/dist/docker_hub-3JSCIGQ3.js +946 -0
  20. package/dist/dropbox-RFIBDAXO.js +1308 -0
  21. package/dist/dub-YVP57ELQ.js +706 -0
  22. package/dist/e2b-NFSUHTZR.js +305 -0
  23. package/dist/exa-KTDY6IV3.js +360 -0
  24. package/dist/fal_ai-OCUENLNQ.js +405 -0
  25. package/dist/feishu-5CWBQ7E5.js +225 -0
  26. package/dist/feishu_custom_bot-ZJR22OK6.js +240 -0
  27. package/dist/figma-YULGANSA.js +798 -0
  28. package/dist/firehydrant-2V6YSYAP.js +573 -0
  29. package/dist/fixer-LTCDB3CJ.js +171 -0
  30. package/dist/fly-IXPKMAML.js +478 -0
  31. package/dist/front-KRFB4M5X.js +379 -0
  32. package/dist/geocodio-VVURKYHQ.js +236 -0
  33. package/dist/ghost-6J2RIOUB.js +341 -0
  34. package/dist/github-5Z6KQRYH.js +5410 -0
  35. package/dist/gmail-KU4NZ7VA.js +1894 -0
  36. package/dist/googlecalendar-X44DFFXG.js +2539 -0
  37. package/dist/googledocs-WSGLPKSF.js +1322 -0
  38. package/dist/grafana-4PKSSDXY.js +817 -0
  39. package/dist/graphhopper-DF65ZNGK.js +336 -0
  40. package/dist/index.d.ts +181 -2
  41. package/dist/index.js +2 -1
  42. package/dist/ip2proxy-UCAQ5P2J.js +118 -0
  43. package/dist/ipgeolocation_io-UX6FCA2S.js +333 -0
  44. package/dist/ipqualityscore-MKTRXIZJ.js +287 -0
  45. package/dist/jina_ai-MRHPCSV5.js +119 -0
  46. package/dist/jira-EG7ZPOIW.js +627 -0
  47. package/dist/langsmith-FNO3RCOZ.js +597 -0
  48. package/dist/lemlist-SN6BJHSG.js +298 -0
  49. package/dist/linear-H3VU4PSD.js +2163 -0
  50. package/dist/logsnag-OY2JJT2H.js +167 -0
  51. package/dist/main.js +246 -2
  52. package/dist/mattermost-C5SQ7PGD.js +320 -0
  53. package/dist/mem0-LMLE5BFC.js +567 -0
  54. package/dist/memos-UWFAMBZC.js +781 -0
  55. package/dist/metabase-SRYDSDJ6.js +365 -0
  56. package/dist/mistral_ai-YNIJ7VDM.js +1195 -0
  57. package/dist/mother_duck-CPGOFEXE.js +322 -0
  58. package/dist/ngrok-CDJFBSOM.js +375 -0
  59. package/dist/notes-DIVFH3P3.js +109 -0
  60. package/dist/notion-HGDKS4HK.js +945 -0
  61. package/dist/open_exchange_rates-COHHYJDD.js +216 -0
  62. package/dist/openai-4TRT66GW.js +795 -0
  63. package/dist/opengraph_io-YKVW4PXI.js +377 -0
  64. package/dist/openrouter-6CV7B7V5.js +444 -0
  65. package/dist/outline-YWDUK5F7.js +604 -0
  66. package/dist/paddle-MEU7HWDZ.js +464 -0
  67. package/dist/perplexity-MRQUDBIC.js +238 -0
  68. package/dist/pinecone-JI7X2TAF.js +599 -0
  69. package/dist/pipedrive-6JQPAW23.js +453 -0
  70. package/dist/polar-7BF56CMC.js +400 -0
  71. package/dist/posthog-YPU5ADEN.js +3462 -0
  72. package/dist/postmark-BEU5OFKU.js +441 -0
  73. package/dist/prerender-UT5GOOZH.js +180 -0
  74. package/dist/pubmed-3SGOE24Q.js +1052 -0
  75. package/dist/railway-CEK4GLRQ.js +452 -0
  76. package/dist/readwise-DXQUQU67.js +482 -0
  77. package/dist/render-7TGAU5AW.js +473 -0
  78. package/dist/replicate-VICFSQ5A.js +347 -0
  79. package/dist/resend-3E76WK3O.js +100 -0
  80. package/dist/rootly-36GY46BY.js +345 -0
  81. package/dist/scrapfly-VDVUYAHX.js +289 -0
  82. package/dist/scrapingbee-3KTPMAVY.js +247 -0
  83. package/dist/screenshot_fyi-LKG62C3J.js +116 -0
  84. package/dist/semantic_scholar-4WREECYO.js +626 -0
  85. package/dist/sentry-HUQTGXOV.js +1139 -0
  86. package/dist/shodan-SGRKU4KS.js +303 -0
  87. package/dist/shopify-YCZ4L5HT.js +620 -0
  88. package/dist/stripe-OEBKMELB.js +583 -0
  89. package/dist/supabase-I3DBY7L4.js +937 -0
  90. package/dist/tavily-B2YHCNRD.js +349 -0
  91. package/dist/telegram-2VYJELZX.js +1773 -0
  92. package/dist/telnyx-HHXD3CXL.js +237 -0
  93. package/dist/todoist-PHFDEEIS.js +672 -0
  94. package/dist/trello-WUSAK6YN.js +1091 -0
  95. package/dist/turso-FW56U2B3.js +432 -0
  96. package/dist/twilio-M5JI7XHA.js +321 -0
  97. package/dist/umami-HAYODRC4.js +411 -0
  98. package/dist/unsplash-EDPTNEHJ.js +364 -0
  99. package/dist/upstash_redis-GC2CLIWD.js +299 -0
  100. package/dist/uptimerobot-XMSNYLIT.js +481 -0
  101. package/dist/v2ex-KU4ECD65.js +672 -0
  102. package/dist/vercel-THPCEFHW.js +1096 -0
  103. package/dist/wolfram_alpha_api-WHHTH4GU.js +212 -0
  104. package/dist/wordpress-O6TQEQNF.js +822 -0
  105. package/dist/workos-A3VHHWI3.js +681 -0
  106. package/dist/zhihu-BJAI64YJ.js +273 -0
  107. package/package.json +5 -4
@@ -0,0 +1,167 @@
1
+ import {
2
+ createProviderPlugin,
3
+ guardedFetch,
4
+ requireApiKey,
5
+ upstreamError
6
+ } from "./chunk-CSJEZHQO.js";
7
+ import "./chunk-K7FVSFUX.js";
8
+ import {
9
+ external_exports
10
+ } from "./chunk-JLTYA2B3.js";
11
+ import "./chunk-MLKGABMK.js";
12
+
13
+ // ../plugins/src/logsnag/api.ts
14
+ var SERVICE = "logsnag";
15
+ var API_BASE = "https://api.logsnag.com/v1";
16
+ async function readPayload(response) {
17
+ const text2 = await response.text().catch(() => "");
18
+ if (text2 === "") return void 0;
19
+ if (response.headers.get("content-type")?.includes("json") !== true) return text2;
20
+ try {
21
+ return JSON.parse(text2);
22
+ } catch {
23
+ return text2;
24
+ }
25
+ }
26
+ function text(value) {
27
+ if (typeof value !== "string") return void 0;
28
+ return value.trim() || void 0;
29
+ }
30
+ function errorMessage(payload, status) {
31
+ const direct = text(payload);
32
+ if (direct !== void 0) return direct;
33
+ if (typeof payload === "object" && payload !== null && !Array.isArray(payload)) {
34
+ const record = payload;
35
+ for (const key of ["message", "error", "detail"]) {
36
+ const value = text(record[key]);
37
+ if (value !== void 0) return value;
38
+ }
39
+ }
40
+ return `LogSnag request failed with ${status}`;
41
+ }
42
+ async function request(path, method, body, ctx) {
43
+ const response = await guardedFetch(`${API_BASE}/${path}`, {
44
+ method,
45
+ headers: {
46
+ "accept": "application/json",
47
+ "authorization": `Bearer ${requireApiKey(ctx, SERVICE)}`,
48
+ "content-type": "application/json"
49
+ },
50
+ body: JSON.stringify(body)
51
+ });
52
+ const payload = await readPayload(response);
53
+ if (!response.ok) {
54
+ throw upstreamError(response.status, errorMessage(payload, response.status));
55
+ }
56
+ return { ok: true, status: response.status, ...payload === void 0 ? {} : { payload } };
57
+ }
58
+ async function publishEvent(input, ctx) {
59
+ return request("log", "POST", input, ctx);
60
+ }
61
+ async function identifyUser(input, ctx) {
62
+ return request("identify", "POST", input, ctx);
63
+ }
64
+ async function publishInsight(input, ctx) {
65
+ return request("insight", "POST", input, ctx);
66
+ }
67
+ async function mutateInsight(input, ctx) {
68
+ return request("insight", "PATCH", input, ctx);
69
+ }
70
+
71
+ // ../plugins/src/logsnag/schema.ts
72
+ var publishEventInput = external_exports.strictObject({
73
+ project: external_exports.string().min(1).describe("The LogSnag project name."),
74
+ channel: external_exports.string().min(1).describe("The LogSnag channel name."),
75
+ event: external_exports.string().min(1).describe("The event name."),
76
+ description: external_exports.string().describe("The optional event description.").optional(),
77
+ icon: external_exports.string().describe("The optional emoji or emoji shortcode shown with the event.").optional(),
78
+ notify: external_exports.boolean().describe("Whether LogSnag should send a push notification.").optional(),
79
+ tags: external_exports.record(external_exports.string(), external_exports.union([external_exports.string().describe("A string value."), external_exports.number().describe("A numeric value."), external_exports.boolean().describe("A boolean value.")]).describe("A string, number, or boolean value accepted by LogSnag.")).describe("A LogSnag key-value object.").optional(),
80
+ parser: external_exports.enum(["markdown", "text"]).describe("The parser LogSnag should apply to the description.").optional(),
81
+ user_id: external_exports.string().describe("The optional user identifier associated with the event.").optional(),
82
+ timestamp: external_exports.number().describe("The optional Unix timestamp in seconds for historical events.").optional()
83
+ }).describe("The payload for publishing a LogSnag event.");
84
+ var publishEventOutput = external_exports.strictObject({
85
+ ok: external_exports.boolean().describe("Whether LogSnag accepted the request."),
86
+ status: external_exports.int().describe("The upstream HTTP status code returned by LogSnag."),
87
+ payload: external_exports.unknown().describe("The parsed JSON response body returned by LogSnag, when present.").optional()
88
+ }).describe("The result returned after LogSnag accepts the request.");
89
+ var identifyUserInput = external_exports.strictObject({
90
+ project: external_exports.string().min(1).describe("The LogSnag project name."),
91
+ user_id: external_exports.string().min(1).describe("The user identifier to update."),
92
+ properties: external_exports.record(external_exports.string(), external_exports.union([external_exports.string().describe("A string value."), external_exports.number().describe("A numeric value."), external_exports.boolean().describe("A boolean value.")]).describe("A string, number, or boolean value accepted by LogSnag.")).describe("A LogSnag key-value object.")
93
+ }).describe("The payload for updating a LogSnag user profile.");
94
+ var identifyUserOutput = external_exports.strictObject({
95
+ ok: external_exports.boolean().describe("Whether LogSnag accepted the request."),
96
+ status: external_exports.int().describe("The upstream HTTP status code returned by LogSnag."),
97
+ payload: external_exports.unknown().describe("The parsed JSON response body returned by LogSnag, when present.").optional()
98
+ }).describe("The result returned after LogSnag accepts the request.");
99
+ var publishInsightInput = external_exports.strictObject({
100
+ project: external_exports.string().min(1).describe("The LogSnag project name."),
101
+ title: external_exports.string().min(1).describe("The insight title."),
102
+ value: external_exports.union([external_exports.string().describe("A string insight value."), external_exports.number().describe("A numeric insight value.")]).describe("The insight value."),
103
+ icon: external_exports.string().describe("The optional emoji or emoji shortcode shown with the insight.").optional()
104
+ }).describe("The payload for publishing a LogSnag insight value.");
105
+ var publishInsightOutput = external_exports.strictObject({
106
+ ok: external_exports.boolean().describe("Whether LogSnag accepted the request."),
107
+ status: external_exports.int().describe("The upstream HTTP status code returned by LogSnag."),
108
+ payload: external_exports.unknown().describe("The parsed JSON response body returned by LogSnag, when present.").optional()
109
+ }).describe("The result returned after LogSnag accepts the request.");
110
+ var mutateInsightInput = external_exports.strictObject({
111
+ project: external_exports.string().min(1).describe("The LogSnag project name."),
112
+ title: external_exports.string().min(1).describe("The insight title."),
113
+ value: external_exports.strictObject({
114
+ $inc: external_exports.number().describe("The numeric amount to increment or decrement the insight value by.")
115
+ }).describe("The LogSnag mutation object."),
116
+ icon: external_exports.string().describe("The optional emoji or emoji shortcode shown with the insight.").optional()
117
+ }).describe("The payload for mutating a numeric LogSnag insight.");
118
+ var mutateInsightOutput = external_exports.strictObject({
119
+ ok: external_exports.boolean().describe("Whether LogSnag accepted the request."),
120
+ status: external_exports.int().describe("The upstream HTTP status code returned by LogSnag."),
121
+ payload: external_exports.unknown().describe("The parsed JSON response body returned by LogSnag, when present.").optional()
122
+ }).describe("The result returned after LogSnag accepts the request.");
123
+ var logsnagActions = {
124
+ publish_event: {
125
+ description: "Publish an event to a LogSnag project channel.",
126
+ effect: "write",
127
+ inputSchema: publishEventInput,
128
+ outputSchema: external_exports.toJSONSchema(publishEventOutput, { io: "output", unrepresentable: "any" })
129
+ },
130
+ identify_user: {
131
+ description: "Add or update key-value properties on a LogSnag user profile.",
132
+ effect: "read",
133
+ inputSchema: identifyUserInput,
134
+ outputSchema: external_exports.toJSONSchema(identifyUserOutput, { io: "output", unrepresentable: "any" })
135
+ },
136
+ publish_insight: {
137
+ description: "Publish the latest value for a LogSnag real-time insight.",
138
+ effect: "write",
139
+ inputSchema: publishInsightInput,
140
+ outputSchema: external_exports.toJSONSchema(publishInsightOutput, { io: "output", unrepresentable: "any" })
141
+ },
142
+ mutate_insight: {
143
+ description: "Increment or decrement an existing numeric LogSnag insight.",
144
+ effect: "write",
145
+ inputSchema: mutateInsightInput,
146
+ outputSchema: external_exports.toJSONSchema(mutateInsightOutput, { io: "output", unrepresentable: "any" })
147
+ }
148
+ };
149
+
150
+ // ../plugins/src/logsnag/index.ts
151
+ function createLogsnagPlugin() {
152
+ return createProviderPlugin({
153
+ description: "LogSnag",
154
+ actions: logsnagActions,
155
+ handlers: {
156
+ publish_event: publishEvent,
157
+ identify_user: identifyUser,
158
+ publish_insight: publishInsight,
159
+ mutate_insight: mutateInsight
160
+ }
161
+ });
162
+ }
163
+ var logsnag_default = createLogsnagPlugin();
164
+ export {
165
+ createLogsnagPlugin,
166
+ logsnag_default as default
167
+ };
package/dist/main.js CHANGED
@@ -2,12 +2,256 @@
2
2
  import {
3
3
  configFromEnv,
4
4
  createTbServer
5
- } from "./chunk-MQEYFCJB.js";
5
+ } from "./chunk-KGYJEEBI.js";
6
+ import "./chunk-JLTYA2B3.js";
6
7
  import "./chunk-MLKGABMK.js";
7
8
 
9
+ // ../plugins/src/registry.generated.ts
10
+ var BUILTIN_PLUGIN_LOADERS = {
11
+ airtable: () => import("./airtable-V6446SVY.js"),
12
+ alt_text_generator_ai: () => import("./alt_text_generator_ai-HV7JZPDT.js"),
13
+ amap: () => import("./amap-TTTVB6WS.js"),
14
+ anthropic: () => import("./anthropic-JH3RA363.js"),
15
+ apify: () => import("./apify-ETNN7ITU.js"),
16
+ brave_search: () => import("./brave_search-3DDR2MMB.js"),
17
+ circleci: () => import("./circleci-MX3TX3HC.js"),
18
+ clerk: () => import("./clerk-MRPORVF4.js"),
19
+ cloudflare_dns: () => import("./cloudflare_dns-OWP7DD7L.js"),
20
+ cohere: () => import("./cohere-GPECP66S.js"),
21
+ confluence: () => import("./confluence-BN7LZ6BC.js"),
22
+ convertapi: () => import("./convertapi-SBEOFOFQ.js"),
23
+ currencyapi: () => import("./currencyapi-P2YY7Y7P.js"),
24
+ deepseek: () => import("./deepseek-MWB3NYIN.js"),
25
+ docker_hub: () => import("./docker_hub-3JSCIGQ3.js"),
26
+ dropbox: () => import("./dropbox-RFIBDAXO.js"),
27
+ dub: () => import("./dub-YVP57ELQ.js"),
28
+ e2b: () => import("./e2b-NFSUHTZR.js"),
29
+ exa: () => import("./exa-KTDY6IV3.js"),
30
+ fal_ai: () => import("./fal_ai-OCUENLNQ.js"),
31
+ feishu: () => import("./feishu-5CWBQ7E5.js"),
32
+ feishu_custom_bot: () => import("./feishu_custom_bot-ZJR22OK6.js"),
33
+ figma: () => import("./figma-YULGANSA.js"),
34
+ firehydrant: () => import("./firehydrant-2V6YSYAP.js"),
35
+ fixer: () => import("./fixer-LTCDB3CJ.js"),
36
+ fly: () => import("./fly-IXPKMAML.js"),
37
+ front: () => import("./front-KRFB4M5X.js"),
38
+ geocodio: () => import("./geocodio-VVURKYHQ.js"),
39
+ ghost: () => import("./ghost-6J2RIOUB.js"),
40
+ github: () => import("./github-5Z6KQRYH.js"),
41
+ gmail: () => import("./gmail-KU4NZ7VA.js"),
42
+ googlecalendar: () => import("./googlecalendar-X44DFFXG.js"),
43
+ googledocs: () => import("./googledocs-WSGLPKSF.js"),
44
+ grafana: () => import("./grafana-4PKSSDXY.js"),
45
+ graphhopper: () => import("./graphhopper-DF65ZNGK.js"),
46
+ ip2proxy: () => import("./ip2proxy-UCAQ5P2J.js"),
47
+ ipgeolocation_io: () => import("./ipgeolocation_io-UX6FCA2S.js"),
48
+ ipqualityscore: () => import("./ipqualityscore-MKTRXIZJ.js"),
49
+ jina_ai: () => import("./jina_ai-MRHPCSV5.js"),
50
+ jira: () => import("./jira-EG7ZPOIW.js"),
51
+ langsmith: () => import("./langsmith-FNO3RCOZ.js"),
52
+ lemlist: () => import("./lemlist-SN6BJHSG.js"),
53
+ linear: () => import("./linear-H3VU4PSD.js"),
54
+ logsnag: () => import("./logsnag-OY2JJT2H.js"),
55
+ mattermost: () => import("./mattermost-C5SQ7PGD.js"),
56
+ mem0: () => import("./mem0-LMLE5BFC.js"),
57
+ memos: () => import("./memos-UWFAMBZC.js"),
58
+ metabase: () => import("./metabase-SRYDSDJ6.js"),
59
+ mistral_ai: () => import("./mistral_ai-YNIJ7VDM.js"),
60
+ mother_duck: () => import("./mother_duck-CPGOFEXE.js"),
61
+ ngrok: () => import("./ngrok-CDJFBSOM.js"),
62
+ notes: () => import("./notes-DIVFH3P3.js"),
63
+ notion: () => import("./notion-HGDKS4HK.js"),
64
+ open_exchange_rates: () => import("./open_exchange_rates-COHHYJDD.js"),
65
+ openai: () => import("./openai-4TRT66GW.js"),
66
+ opengraph_io: () => import("./opengraph_io-YKVW4PXI.js"),
67
+ openrouter: () => import("./openrouter-6CV7B7V5.js"),
68
+ outline: () => import("./outline-YWDUK5F7.js"),
69
+ paddle: () => import("./paddle-MEU7HWDZ.js"),
70
+ perplexity: () => import("./perplexity-MRQUDBIC.js"),
71
+ pinecone: () => import("./pinecone-JI7X2TAF.js"),
72
+ pipedrive: () => import("./pipedrive-6JQPAW23.js"),
73
+ polar: () => import("./polar-7BF56CMC.js"),
74
+ posthog: () => import("./posthog-YPU5ADEN.js"),
75
+ postmark: () => import("./postmark-BEU5OFKU.js"),
76
+ prerender: () => import("./prerender-UT5GOOZH.js"),
77
+ pubmed: () => import("./pubmed-3SGOE24Q.js"),
78
+ railway: () => import("./railway-CEK4GLRQ.js"),
79
+ readwise: () => import("./readwise-DXQUQU67.js"),
80
+ render: () => import("./render-7TGAU5AW.js"),
81
+ replicate: () => import("./replicate-VICFSQ5A.js"),
82
+ resend: () => import("./resend-3E76WK3O.js"),
83
+ rootly: () => import("./rootly-36GY46BY.js"),
84
+ scrapfly: () => import("./scrapfly-VDVUYAHX.js"),
85
+ scrapingbee: () => import("./scrapingbee-3KTPMAVY.js"),
86
+ screenshot_fyi: () => import("./screenshot_fyi-LKG62C3J.js"),
87
+ semantic_scholar: () => import("./semantic_scholar-4WREECYO.js"),
88
+ sentry: () => import("./sentry-HUQTGXOV.js"),
89
+ shodan: () => import("./shodan-SGRKU4KS.js"),
90
+ shopify: () => import("./shopify-YCZ4L5HT.js"),
91
+ stripe: () => import("./stripe-OEBKMELB.js"),
92
+ supabase: () => import("./supabase-I3DBY7L4.js"),
93
+ tavily: () => import("./tavily-B2YHCNRD.js"),
94
+ telegram: () => import("./telegram-2VYJELZX.js"),
95
+ telnyx: () => import("./telnyx-HHXD3CXL.js"),
96
+ todoist: () => import("./todoist-PHFDEEIS.js"),
97
+ trello: () => import("./trello-WUSAK6YN.js"),
98
+ turso: () => import("./turso-FW56U2B3.js"),
99
+ twilio: () => import("./twilio-M5JI7XHA.js"),
100
+ umami: () => import("./umami-HAYODRC4.js"),
101
+ unsplash: () => import("./unsplash-EDPTNEHJ.js"),
102
+ upstash_redis: () => import("./upstash_redis-GC2CLIWD.js"),
103
+ uptimerobot: () => import("./uptimerobot-XMSNYLIT.js"),
104
+ v2ex: () => import("./v2ex-KU4ECD65.js"),
105
+ vercel: () => import("./vercel-THPCEFHW.js"),
106
+ wolfram_alpha_api: () => import("./wolfram_alpha_api-WHHTH4GU.js"),
107
+ wordpress: () => import("./wordpress-O6TQEQNF.js"),
108
+ workos: () => import("./workos-A3VHHWI3.js"),
109
+ zhihu: () => import("./zhihu-BJAI64YJ.js")
110
+ };
111
+
112
+ // ../plugins/src/catalog.generated.ts
113
+ var BUILTIN_CATALOG = {
114
+ "airtable": { "id": "airtable", "kind": "builtin", "endpoint": "binding:airtable", "digest": "55dde28a8a836ba5a952d48d42a8541fe57fe108f9b044dea9ec50992f43d9e5", "describe": { "exports": [{ "credentialProbe": "list_bases", "description": "Airtable", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
115
+ "alt_text_generator_ai": { "id": "alt_text_generator_ai", "kind": "builtin", "endpoint": "binding:alt_text_generator_ai", "digest": "44fa0a30617ec84b2122e9d360ab1efaa6f31c0d5aa9d07f758175926ea278f8", "describe": { "exports": [{ "description": "Alt Text Generator AI", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
116
+ "amap": { "id": "amap", "kind": "builtin", "endpoint": "binding:amap", "digest": "c87c698154ace50c00dc93f400fc9352d7dabf83aba187a330cfbcc6f243c4d2", "describe": { "exports": [{ "description": "AMap (\u9AD8\u5FB7\u5730\u56FE)", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
117
+ "anthropic": { "id": "anthropic", "kind": "builtin", "endpoint": "binding:anthropic", "digest": "cf931f433d600f9bf6ab17d06d01c7987c893dab2564fc93805d4b042ee9ab90", "describe": { "exports": [{ "credentialProbe": "list_models", "description": "Anthropic", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
118
+ "apify": { "id": "apify", "kind": "builtin", "endpoint": "binding:apify", "digest": "941b505e2d69be784fd06e98797e0e37e5cb9839682ac25ee99370da86baf26b", "describe": { "exports": [{ "credentialProbe": "get_current_user", "description": "Apify", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
119
+ "brave_search": { "id": "brave_search", "kind": "builtin", "endpoint": "binding:brave_search", "digest": "4e571223a027a0be6e9b3afe395fe240b658607c1a9e8fa97307e41789aa35e9", "describe": { "exports": [{ "description": "Brave Search", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
120
+ "circleci": { "id": "circleci", "kind": "builtin", "endpoint": "binding:circleci", "digest": "77592389fef2439dc20c2a2848ed4f18d4b07df81521b1d01c9e051ca6d5d639", "describe": { "exports": [{ "credentialProbe": "get_current_user", "description": "CircleCI", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
121
+ "clerk": { "id": "clerk", "kind": "builtin", "endpoint": "binding:clerk", "digest": "e04fa186f1ccc57d98f4055c3c1d69ad0700549504a8c279ba86c5d647114b19", "describe": { "exports": [{ "credentialProbe": "count_users", "description": "Clerk", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
122
+ "cloudflare_dns": { "id": "cloudflare_dns", "kind": "builtin", "endpoint": "binding:cloudflare_dns", "digest": "b1eed3211ff5fa70fd5b1d5f76e98b318568991eb14533eb0b4979294c53b8e6", "describe": { "exports": [{ "credentialProbe": "list_zones", "description": "Cloudflare DNS", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
123
+ "cohere": { "id": "cohere", "kind": "builtin", "endpoint": "binding:cohere", "digest": "25b4fbb872cc20aa8f97266e5eed94fe84fdaa381dad20eba3dc8c7d01c7b614", "describe": { "exports": [{ "description": "Cohere", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
124
+ "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" } },
125
+ "convertapi": { "id": "convertapi", "kind": "builtin", "endpoint": "binding:convertapi", "digest": "657eff21d99b9395d3a98ddbda4b7f67d117d8cb15342f20395dee3c5c6e926b", "describe": { "exports": [{ "description": "ConvertAPI", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
126
+ "currencyapi": { "id": "currencyapi", "kind": "builtin", "endpoint": "binding:currencyapi", "digest": "ac2a19c78ea7dd8d4cc8bb691a6b08caef56cf6bfcd8ab27dadb3f0cb117341f", "describe": { "exports": [{ "credentialProbe": "get_api_status", "description": "currencyapi", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
127
+ "deepseek": { "id": "deepseek", "kind": "builtin", "endpoint": "binding:deepseek", "digest": "cd1e17b0bb3e53720016b8276385e80c10bf7bb7e6a5dc6827e78efa96affcb0", "describe": { "exports": [{ "credentialProbe": "list_models", "description": "DeepSeek", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
128
+ "docker_hub": { "id": "docker_hub", "kind": "builtin", "endpoint": "binding:docker_hub", "digest": "13e2146591cf17ebec1cc91ffb140afe0cfb70c1f034a513ec9c23ddd2da7f73", "describe": { "exports": [{ "description": "Docker Hub", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
129
+ "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" } },
130
+ "dub": { "id": "dub", "kind": "builtin", "endpoint": "binding:dub", "digest": "74fe0a636fd62a306fe321aa52bdfc74f8e68783dc86a29812a7db2edd2e02bd", "describe": { "exports": [{ "credentialProbe": "count_links", "description": "Dub", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
131
+ "e2b": { "id": "e2b", "kind": "builtin", "endpoint": "binding:e2b", "digest": "19a92b811982474088e8693ea726246110778a985357dfa074b4b3bac0d6773c", "describe": { "exports": [{ "credentialProbe": "list_sandboxes", "description": "E2B", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
132
+ "exa": { "id": "exa", "kind": "builtin", "endpoint": "binding:exa", "digest": "2e290f840f9eeb7ac65e006e6603e885767d0130baadb00a93d3406321d86db1", "describe": { "exports": [{ "description": "Exa", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
133
+ "fal_ai": { "id": "fal_ai", "kind": "builtin", "endpoint": "binding:fal_ai", "digest": "c840c74b1047ef4e42870e024263a5fc89ab60b73b4fa8d0aa807ba3beb12984", "describe": { "exports": [{ "credentialProbe": "get_models", "description": "fal.ai", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
134
+ "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" } },
135
+ "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" } },
136
+ "figma": { "id": "figma", "kind": "builtin", "endpoint": "binding:figma", "digest": "2718603bcf636397c66c8025a4ed0b74be15008f2c2c8ea791e439bc89d0a0b5", "describe": { "exports": [{ "credentialProbe": "get_current_user", "description": "Figma", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
137
+ "firehydrant": { "id": "firehydrant", "kind": "builtin", "endpoint": "binding:firehydrant", "digest": "16a992990f55521745e14e70b6097f3c21c44781ec617016f9667820f9505779", "describe": { "exports": [{ "credentialProbe": "list_incidents", "description": "FireHydrant", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
138
+ "fixer": { "id": "fixer", "kind": "builtin", "endpoint": "binding:fixer", "digest": "e8f27149dcd14d63f1b0924c98f7d46cfda6e290e7980ef8b6c5efdf93315a3a", "describe": { "exports": [{ "credentialProbe": "get_supported_symbols", "description": "Fixer", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
139
+ "fly": { "id": "fly", "kind": "builtin", "endpoint": "binding:fly", "digest": "fc3e627d7c7a12840fc60a0101d79a3b98a62e428abc121205f745f3923bb884", "describe": { "exports": [{ "description": "Fly.io", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
140
+ "front": { "id": "front", "kind": "builtin", "endpoint": "binding:front", "digest": "d89d5501fffb41d01c84d91c92ee6e685de3fa07929b80b568c516e9b45187b3", "describe": { "exports": [{ "credentialProbe": "list_teammates", "description": "Front", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
141
+ "geocodio": { "id": "geocodio", "kind": "builtin", "endpoint": "binding:geocodio", "digest": "1d8923be9c25e774c8d9b2d84fbecba9a3bbb2750022fbdeea021a14c658ac24", "describe": { "exports": [{ "description": "Geocodio", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
142
+ "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" } },
143
+ "github": { "id": "github", "kind": "builtin", "endpoint": "binding:github", "digest": "7a7e5d1434557dd158fd6c79ed31266e794a4ecbc418ad78d3d1f35f6e48b662", "describe": { "exports": [{ "credentialProbe": "get_current_user", "description": "GitHub", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
144
+ "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" } },
145
+ "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" } },
146
+ "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" } },
147
+ "grafana": { "id": "grafana", "kind": "builtin", "endpoint": "binding:grafana", "digest": "3949cc1e19171d65d8059fdda1556f8ebf47ca28e7c784f682fc5b974a83170a", "describe": { "exports": [{ "credentialProbe": "search_dashboards", "description": "Grafana", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
148
+ "graphhopper": { "id": "graphhopper", "kind": "builtin", "endpoint": "binding:graphhopper", "digest": "bb280b358c703f549e3c498012fbf0c54c299170bc67c4ce2e796a846ab661ee", "describe": { "exports": [{ "credentialProbe": "list_profiles", "description": "GraphHopper", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
149
+ "ip2proxy": { "id": "ip2proxy", "kind": "builtin", "endpoint": "binding:ip2proxy", "digest": "6c870ea70463c1d576981d099a088fd9e78eebb51326e38d640d6e3552018203", "describe": { "exports": [{ "description": "IP2Proxy", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
150
+ "ipgeolocation_io": { "id": "ipgeolocation_io", "kind": "builtin", "endpoint": "binding:ipgeolocation_io", "digest": "021b410b250bd9cbb80e13ae4b8d56b1253eabc5d6b8e1a19e9cacc660ed9c69", "describe": { "exports": [{ "credentialProbe": "get_timezone", "description": "IPGeolocation.io", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
151
+ "ipqualityscore": { "id": "ipqualityscore", "kind": "builtin", "endpoint": "binding:ipqualityscore", "digest": "9ce1833afa48198db91b9d105d6473b7c7a7351c75629dab0c4ee3e587939447", "describe": { "exports": [{ "description": "IPQualityScore", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
152
+ "jina_ai": { "id": "jina_ai", "kind": "builtin", "endpoint": "binding:jina_ai", "digest": "f05a2eb979ec4686bbb0613b95d51021740e0d4d3afe1eea9777fcac9d52bfa5", "describe": { "exports": [{ "description": "Jina AI", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
153
+ "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" } },
154
+ "langsmith": { "id": "langsmith", "kind": "builtin", "endpoint": "binding:langsmith", "digest": "e6b94ce0097f490ff412e7662d5c9eb0e3db0161f64c8c9fa4ef3594c7cae366", "describe": { "exports": [{ "credentialProbe": "list_workspaces", "description": "LangSmith", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
155
+ "lemlist": { "id": "lemlist", "kind": "builtin", "endpoint": "binding:lemlist", "digest": "5f4c6855c435ca7b79c6877f8bae9059062ad848d587bf557ea2a82926ee65dc", "describe": { "exports": [{ "credentialProbe": "get_team", "description": "lemlist", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
156
+ "linear": { "id": "linear", "kind": "builtin", "endpoint": "binding:linear", "digest": "9896f80dc7f1a15ae2fd61e91cd0b1cecf97e7406d757f2b86141a0537e363e7", "describe": { "exports": [{ "credentialProbe": "get_current_user", "description": "Linear", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
157
+ "logsnag": { "id": "logsnag", "kind": "builtin", "endpoint": "binding:logsnag", "digest": "ae051bc0ee93580da16de0c98c3941a57a71e79e9bdd48a472a1f999134f156a", "describe": { "exports": [{ "description": "LogSnag", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
158
+ "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" } },
159
+ "mem0": { "id": "mem0", "kind": "builtin", "endpoint": "binding:mem0", "digest": "a38488f8820ed1e1b1ae24f1633d240f5a29d91ea75bb43c2f2d8ffc3947f237", "describe": { "exports": [{ "credentialProbe": "get_events", "description": "Mem0", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
160
+ "memos": { "id": "memos", "kind": "builtin", "endpoint": "binding:memos", "digest": "4135becb22008db14e5e2af8f6f86c63a15e63a8c657a5015cdbf1b0f4ec3124", "describe": { "exports": [{ "credentialProbe": "get_current_user", "description": "Memos", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
161
+ "metabase": { "id": "metabase", "kind": "builtin", "endpoint": "binding:metabase", "digest": "23431975d31cf71ce67984a8263649f9670a1a123878f6bb07fa2160be379591", "describe": { "exports": [{ "credentialProbe": "get_current_user", "description": "Metabase", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
162
+ "mistral_ai": { "id": "mistral_ai", "kind": "builtin", "endpoint": "binding:mistral_ai", "digest": "0e1fad496c4ea8f643d97a23dc52f78c0c5e4e6dde04d5c83f7c45aa02da5959", "describe": { "exports": [{ "credentialProbe": "list_models", "description": "Mistral AI", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
163
+ "mother_duck": { "id": "mother_duck", "kind": "builtin", "endpoint": "binding:mother_duck", "digest": "ed6931c20ae3406e01a314e1013dbac3b8b5a5398acdc2805bd62c10e8539166", "describe": { "exports": [{ "credentialProbe": "list_active_accounts", "description": "MotherDuck", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
164
+ "ngrok": { "id": "ngrok", "kind": "builtin", "endpoint": "binding:ngrok", "digest": "e2c5a6352a55059653438bb7f006c8b110d98e831449046a54827058d263a8dc", "describe": { "exports": [{ "credentialProbe": "list_endpoints", "description": "ngrok", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
165
+ "notes": { "id": "notes", "kind": "builtin", "endpoint": "binding:notes", "digest": "86b3b5025869e5f5a3cdf5707d8df7e3410c08693fd51b126fec534a83e4469a", "describe": { "exports": [{ "description": "\u8BB0\u4E8B\u672C\u52A8\u4F5C", "id": "actions", "profile": "tools/v1" }, { "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"], "profile": "context/v1" }], "protocolVersion": "plugin/v2" } },
166
+ "notion": { "id": "notion", "kind": "builtin", "endpoint": "binding:notion", "digest": "df784c86b2a0f016cb68ce66d5ce416b9be0551bf0da70e544bbb9642ca2063f", "describe": { "exports": [{ "description": "Notion", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
167
+ "open_exchange_rates": { "id": "open_exchange_rates", "kind": "builtin", "endpoint": "binding:open_exchange_rates", "digest": "ec3b8756430cf9f6e7343a6ce730abae4a369b2d35d94aef2c578ea01f47b9b3", "describe": { "exports": [{ "credentialProbe": "get_latest_rates", "description": "Open Exchange Rates", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
168
+ "openai": { "id": "openai", "kind": "builtin", "endpoint": "binding:openai", "digest": "d435cf7762a75b440f999175bef7476db053816989cc19ba1792183c370984ce", "describe": { "exports": [{ "credentialProbe": "list_models", "description": "OpenAI", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
169
+ "opengraph_io": { "id": "opengraph_io", "kind": "builtin", "endpoint": "binding:opengraph_io", "digest": "040027173714e40019731b9bfd251de9c619685e3298c66e5627b76a49d3cf29", "describe": { "exports": [{ "description": "OpenGraph.io", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
170
+ "openrouter": { "id": "openrouter", "kind": "builtin", "endpoint": "binding:openrouter", "digest": "4bfc0a4751ee288b3c1914ee6f754a9d0b122466bbb1ed7123962867ba49f096", "describe": { "exports": [{ "credentialProbe": "get_current_key", "description": "OpenRouter", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
171
+ "outline": { "id": "outline", "kind": "builtin", "endpoint": "binding:outline", "digest": "45365d2a3ec1120318cde60b79dfe23a3d8eb847e6e2333d4d46a25f524687d2", "describe": { "exports": [{ "credentialProbe": "list_collections", "description": "Outline", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
172
+ "paddle": { "id": "paddle", "kind": "builtin", "endpoint": "binding:paddle", "digest": "24e2708854dcdddcec0458c3c2b07e88f49e5ced743349d5cefb39d49b7debde", "describe": { "exports": [{ "credentialProbe": "list_products", "description": "Paddle", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
173
+ "perplexity": { "id": "perplexity", "kind": "builtin", "endpoint": "binding:perplexity", "digest": "34f21e6981e4f542837c81571761f2ccee6ee500311fe80bf1944bb876a36b6c", "describe": { "exports": [{ "credentialProbe": "list_models", "description": "Perplexity", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
174
+ "pinecone": { "id": "pinecone", "kind": "builtin", "endpoint": "binding:pinecone", "digest": "6e281e83bd7d6acd9179f0b9f765ad13dae2ae895998b7f02b63f9ee25fdeaa1", "describe": { "exports": [{ "credentialProbe": "list_indexes", "description": "Pinecone", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
175
+ "pipedrive": { "id": "pipedrive", "kind": "builtin", "endpoint": "binding:pipedrive", "digest": "31145a9c4fc00c10b035561ae9b15596bde6942b84f0e1b8c9bb2b3dc018d0a2", "describe": { "exports": [{ "credentialProbe": "list_pipelines", "description": "Pipedrive", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
176
+ "polar": { "id": "polar", "kind": "builtin", "endpoint": "binding:polar", "digest": "f83804d54763a2dc21e270c5dd8959380f5aa0822b9dd04c838a2a82a35febc3", "describe": { "exports": [{ "credentialProbe": "list_organizations", "description": "Polar", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
177
+ "posthog": { "id": "posthog", "kind": "builtin", "endpoint": "binding:posthog", "digest": "9b8d6cea92999d083d9431b63c84bb4bb6b3e544b35ad2981da26a47295769ad", "describe": { "exports": [{ "credentialProbe": "get_current_user", "description": "PostHog", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
178
+ "postmark": { "id": "postmark", "kind": "builtin", "endpoint": "binding:postmark", "digest": "25e1a0b1c5c8a1c18ff74de2df9ade984f27b5c090ee0bd6cbc4d16a55b4e3a0", "describe": { "exports": [{ "credentialProbe": "get_server", "description": "Postmark", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
179
+ "prerender": { "id": "prerender", "kind": "builtin", "endpoint": "binding:prerender", "digest": "e85fccd8b1046a643157b153f8dfcb0f5be7e21b7909124e65f5401042cd05d6", "describe": { "exports": [{ "credentialProbe": "get_cache_clear_status", "description": "Prerender", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
180
+ "pubmed": { "id": "pubmed", "kind": "builtin", "endpoint": "binding:pubmed", "digest": "a8d1c09315b64d5cb2e63ebef6ddbca1b8cdda469b2b6347c2a9a70adb5f173c", "describe": { "exports": [{ "description": "PubMed", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
181
+ "railway": { "id": "railway", "kind": "builtin", "endpoint": "binding:railway", "digest": "7c391995e83bdf715b2a51bf7ab0aa43ed2c2bfa192c123de30b7e2b0c2466ae", "describe": { "exports": [{ "credentialProbe": "list_projects", "description": "Railway", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
182
+ "readwise": { "id": "readwise", "kind": "builtin", "endpoint": "binding:readwise", "digest": "1538d82e227bde667b12de77cb81db4ec2d1eb13dba5a588952b0a94c792fa4d", "describe": { "exports": [{ "credentialProbe": "list_books", "description": "Readwise", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
183
+ "render": { "id": "render", "kind": "builtin", "endpoint": "binding:render", "digest": "1eb0d2fe3d40d3cebc10c4451b82db65a9dddbe15445b7df613e54e935087334", "describe": { "exports": [{ "credentialProbe": "get_current_user", "description": "Render", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
184
+ "replicate": { "id": "replicate", "kind": "builtin", "endpoint": "binding:replicate", "digest": "f560280b488abd574afac28276d5a97e565ac389ad9583fefedf2dde5cabf4f1", "describe": { "exports": [{ "credentialProbe": "get_account", "description": "Replicate", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
185
+ "resend": { "id": "resend", "kind": "builtin", "endpoint": "binding:resend", "digest": "0780c42e9d78f98de05a9a8112a3166a23e1669838659d9de52c695fbbd66c0e", "describe": { "exports": [{ "description": "Resend", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
186
+ "rootly": { "id": "rootly", "kind": "builtin", "endpoint": "binding:rootly", "digest": "a06c91de913de5fc7cc84d9afa91084126568aecbb01ea8dc38dccc6f2df624d", "describe": { "exports": [{ "credentialProbe": "get_current_user", "description": "Rootly", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
187
+ "scrapfly": { "id": "scrapfly", "kind": "builtin", "endpoint": "binding:scrapfly", "digest": "3971ee1d735cfbde624a01487e109897426a2ce28ec957760c89516844ec8f53", "describe": { "exports": [{ "description": "Scrapfly", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
188
+ "scrapingbee": { "id": "scrapingbee", "kind": "builtin", "endpoint": "binding:scrapingbee", "digest": "5331ffd7c94366e14c13ab54ecdb5e68ccd0aac28a0c765bdd06f907eab32b75", "describe": { "exports": [{ "credentialProbe": "get_usage_stats", "description": "ScrapingBee", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
189
+ "screenshot_fyi": { "id": "screenshot_fyi", "kind": "builtin", "endpoint": "binding:screenshot_fyi", "digest": "7b9a252ae2c1367f7da4219b22a994adc1026fa749500644824c925ea24d924b", "describe": { "exports": [{ "description": "screenshot.fyi", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
190
+ "semantic_scholar": { "id": "semantic_scholar", "kind": "builtin", "endpoint": "binding:semantic_scholar", "digest": "e0c816926db664360c30ed8bbc22d57f505ab15b21c5523fa6733d73489efd03", "describe": { "exports": [{ "description": "Semantic Scholar", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
191
+ "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" } },
192
+ "shodan": { "id": "shodan", "kind": "builtin", "endpoint": "binding:shodan", "digest": "c2e34f597dae5c7f0ea234c86b2ad0384106749f782e4eb4f313e2bca499dc64", "describe": { "exports": [{ "credentialProbe": "get_api_info", "description": "Shodan", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
193
+ "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" } },
194
+ "stripe": { "id": "stripe", "kind": "builtin", "endpoint": "binding:stripe", "digest": "c3d4dfe0706f3763e25e886bb13ac1a1a06d267e556e28e7e70941278fbdd2cc", "describe": { "exports": [{ "description": "Stripe", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
195
+ "supabase": { "id": "supabase", "kind": "builtin", "endpoint": "binding:supabase", "digest": "0201d4fddc2c91cb90395f78eb5f64f7e96bf25e935b74548fe5f73eda314277", "describe": { "exports": [{ "credentialProbe": "list_organizations", "description": "Supabase (Management API)", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
196
+ "tavily": { "id": "tavily", "kind": "builtin", "endpoint": "binding:tavily", "digest": "8fc85babaa76a19f2ce38ff79d9dac8257311118fcca7ce71bb791f7d10567ec", "describe": { "exports": [{ "credentialProbe": "get_usage", "description": "Tavily", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
197
+ "telegram": { "id": "telegram", "kind": "builtin", "endpoint": "binding:telegram", "digest": "93e0d987df64f63e69e9f3e997211ea6bb0fa9673c8d8cc28a844540c5d9f4f7", "describe": { "exports": [{ "credentialProbe": "get_me", "description": "Telegram Bot", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
198
+ "telnyx": { "id": "telnyx", "kind": "builtin", "endpoint": "binding:telnyx", "digest": "961fe579ab62a536ccff885dc431bd1fc499f57cece0c019ebc87d011edd815f", "describe": { "exports": [{ "description": "Telnyx", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
199
+ "todoist": { "id": "todoist", "kind": "builtin", "endpoint": "binding:todoist", "digest": "9c8c53f48a9bed0d8f0e310e13fd85bc79b2515f2237968b170196d610f4125b", "describe": { "exports": [{ "credentialProbe": "get_current_user", "description": "Todoist", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
200
+ "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" } },
201
+ "turso": { "id": "turso", "kind": "builtin", "endpoint": "binding:turso", "digest": "73bdb348e9152d34fe699f467ab842b2737b8db1278f2966b8bee6da651f83fa", "describe": { "exports": [{ "credentialProbe": "list_organizations", "description": "Turso", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
202
+ "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" } },
203
+ "umami": { "id": "umami", "kind": "builtin", "endpoint": "binding:umami", "digest": "4529a6e6b36b4e226a1982a48376dab5c18776d1968096d28a6dd5d58b0f1acf", "describe": { "exports": [{ "credentialProbe": "get_current_user", "description": "Umami", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
204
+ "unsplash": { "id": "unsplash", "kind": "builtin", "endpoint": "binding:unsplash", "digest": "db94c054aaebf980b77f665f990dda9472b1755e7be86431e18fb810b032308a", "describe": { "exports": [{ "credentialProbe": "list_photos", "description": "Unsplash", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
205
+ "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" } },
206
+ "uptimerobot": { "id": "uptimerobot", "kind": "builtin", "endpoint": "binding:uptimerobot", "digest": "9376352d04bb2ca536806512030b1fa92aaf331d9ba0ac15ab0a25aea73d747c", "describe": { "exports": [{ "credentialProbe": "get_account_details", "description": "UptimeRobot", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
207
+ "v2ex": { "id": "v2ex", "kind": "builtin", "endpoint": "binding:v2ex", "digest": "df209d6b85ba0443f8707207e24066385fd3a4ffeefcd4577472385c54926222", "describe": { "exports": [{ "credentialProbe": "get_current_member", "description": "V2EX", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
208
+ "vercel": { "id": "vercel", "kind": "builtin", "endpoint": "binding:vercel", "digest": "d6f8119397267536265922ac743ad8bc6c9bc4ddeb9e2f5c933410678cc8af17", "describe": { "exports": [{ "credentialProbe": "get_auth_user", "description": "Vercel", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
209
+ "wolfram_alpha_api": { "id": "wolfram_alpha_api", "kind": "builtin", "endpoint": "binding:wolfram_alpha_api", "digest": "8383e84cd2201bbb28b6bc7308ac0b705ea3fcc960c612c501cea0a769a8f2b8", "describe": { "exports": [{ "description": "Wolfram|Alpha", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
210
+ "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" } },
211
+ "workos": { "id": "workos", "kind": "builtin", "endpoint": "binding:workos", "digest": "71690b4db286ad123033ddc4be98dfa94da97522a8671f4418953ae357456b65", "describe": { "exports": [{ "credentialProbe": "list_organizations", "description": "WorkOS", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } },
212
+ "zhihu": { "id": "zhihu", "kind": "builtin", "endpoint": "binding:zhihu", "digest": "611ce0bc468480e68f0f5f2b105729ea9ec289ddd1f3079f30a64adc5574157d", "describe": { "exports": [{ "description": "Zhihu", "id": "actions", "profile": "tools/v1" }], "protocolVersion": "plugin/v2" } }
213
+ };
214
+
215
+ // ../plugins/src/registry.ts
216
+ var BUILTIN_PLUGIN_ENV_KEYS = [
217
+ // feishu:官方 MCP / 换发端点的 override(测试用)与工具白名单。
218
+ "FEISHU_ALLOWED_TOOLS",
219
+ "FEISHU_AUTH_URL",
220
+ "FEISHU_MCP_URL"
221
+ ];
222
+ function narrowPluginEnv(env) {
223
+ const narrowed = {};
224
+ if (env.PLUGIN_TOKEN !== void 0) narrowed.PLUGIN_TOKEN = env.PLUGIN_TOKEN;
225
+ for (const key of BUILTIN_PLUGIN_ENV_KEYS) {
226
+ const value = env[key];
227
+ if (value !== void 0) narrowed[key] = value;
228
+ }
229
+ return narrowed;
230
+ }
231
+ function builtinPluginBindings(env, opts = {}) {
232
+ const names = opts.include ?? Object.keys(BUILTIN_PLUGIN_LOADERS);
233
+ const pluginEnv = { ...narrowPluginEnv(env), TB_PLUGIN_IN_PROCESS: true };
234
+ const bindings = /* @__PURE__ */ new Map();
235
+ for (const name of names) {
236
+ const loader = BUILTIN_PLUGIN_LOADERS[name];
237
+ if (loader === void 0) throw new Error(`unknown builtin plugin '${name}'`);
238
+ let loaded;
239
+ bindings.set(name, async (request) => {
240
+ loaded ??= loader();
241
+ const mod = await loaded;
242
+ return await mod.default.fetch(request, pluginEnv);
243
+ });
244
+ }
245
+ return bindings;
246
+ }
247
+
8
248
  // src/main.ts
9
249
  var config = configFromEnv(process.env);
10
- var server = createTbServer(config);
250
+ var server = createTbServer({
251
+ ...config,
252
+ pluginBindings: config.pluginBindings ?? builtinPluginBindings(process.env),
253
+ pluginCatalog: config.pluginCatalog ?? BUILTIN_CATALOG
254
+ });
11
255
  var port;
12
256
  try {
13
257
  ;