@unclick/mcp-server 0.2.3 → 0.2.4

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 (177) hide show
  1. package/README.md +139 -153
  2. package/dist/airtable-tool.d.ts +2 -0
  3. package/dist/airtable-tool.d.ts.map +1 -0
  4. package/dist/airtable-tool.js +154 -0
  5. package/dist/airtable-tool.js.map +1 -0
  6. package/dist/anthropic-tool.d.ts +3 -0
  7. package/dist/anthropic-tool.d.ts.map +1 -0
  8. package/dist/anthropic-tool.js +123 -0
  9. package/dist/anthropic-tool.js.map +1 -0
  10. package/dist/asana-tool.d.ts +8 -0
  11. package/dist/asana-tool.d.ts.map +1 -0
  12. package/dist/asana-tool.js +218 -0
  13. package/dist/asana-tool.js.map +1 -0
  14. package/dist/calendly-tool.d.ts +6 -0
  15. package/dist/calendly-tool.d.ts.map +1 -0
  16. package/dist/calendly-tool.js +182 -0
  17. package/dist/calendly-tool.js.map +1 -0
  18. package/dist/clickup-tool.d.ts +2 -0
  19. package/dist/clickup-tool.d.ts.map +1 -0
  20. package/dist/clickup-tool.js +153 -0
  21. package/dist/clickup-tool.js.map +1 -0
  22. package/dist/connectors/figma.d.ts +3 -0
  23. package/dist/connectors/figma.d.ts.map +1 -0
  24. package/dist/connectors/figma.js +18 -0
  25. package/dist/connectors/figma.js.map +1 -0
  26. package/dist/connectors/index.d.ts +3 -1
  27. package/dist/connectors/index.d.ts.map +1 -1
  28. package/dist/connectors/index.js +5 -1
  29. package/dist/connectors/index.js.map +1 -1
  30. package/dist/connectors/line.d.ts +3 -0
  31. package/dist/connectors/line.d.ts.map +1 -0
  32. package/dist/connectors/line.js +18 -0
  33. package/dist/connectors/line.js.map +1 -0
  34. package/dist/ebay-tool.d.ts +5 -0
  35. package/dist/ebay-tool.d.ts.map +1 -0
  36. package/dist/ebay-tool.js +179 -0
  37. package/dist/ebay-tool.js.map +1 -0
  38. package/dist/elevenlabs-tool.d.ts +6 -0
  39. package/dist/elevenlabs-tool.d.ts.map +1 -0
  40. package/dist/elevenlabs-tool.js +166 -0
  41. package/dist/elevenlabs-tool.js.map +1 -0
  42. package/dist/etsy-tool.d.ts +6 -0
  43. package/dist/etsy-tool.d.ts.map +1 -0
  44. package/dist/etsy-tool.js +125 -0
  45. package/dist/etsy-tool.js.map +1 -0
  46. package/dist/exchangerate-tool.d.ts +5 -0
  47. package/dist/exchangerate-tool.d.ts.map +1 -0
  48. package/dist/exchangerate-tool.js +139 -0
  49. package/dist/exchangerate-tool.js.map +1 -0
  50. package/dist/figma-tool.d.ts +8 -0
  51. package/dist/figma-tool.d.ts.map +1 -0
  52. package/dist/figma-tool.js +231 -0
  53. package/dist/figma-tool.js.map +1 -0
  54. package/dist/gdelt-tool.d.ts +5 -0
  55. package/dist/gdelt-tool.d.ts.map +1 -0
  56. package/dist/gdelt-tool.js +177 -0
  57. package/dist/gdelt-tool.js.map +1 -0
  58. package/dist/github-tool.d.ts +2 -0
  59. package/dist/github-tool.d.ts.map +1 -0
  60. package/dist/github-tool.js +165 -0
  61. package/dist/github-tool.js.map +1 -0
  62. package/dist/gitlab-tool.d.ts +2 -0
  63. package/dist/gitlab-tool.d.ts.map +1 -0
  64. package/dist/gitlab-tool.js +127 -0
  65. package/dist/gitlab-tool.js.map +1 -0
  66. package/dist/igdb-tool.d.ts +6 -0
  67. package/dist/igdb-tool.d.ts.map +1 -0
  68. package/dist/igdb-tool.js +140 -0
  69. package/dist/igdb-tool.js.map +1 -0
  70. package/dist/line-tool.d.ts +7 -0
  71. package/dist/line-tool.d.ts.map +1 -0
  72. package/dist/line-tool.js +188 -0
  73. package/dist/line-tool.js.map +1 -0
  74. package/dist/linear-tool.d.ts +2 -0
  75. package/dist/linear-tool.d.ts.map +1 -0
  76. package/dist/linear-tool.js +186 -0
  77. package/dist/linear-tool.js.map +1 -0
  78. package/dist/monday-tool.d.ts +7 -0
  79. package/dist/monday-tool.d.ts.map +1 -0
  80. package/dist/monday-tool.js +206 -0
  81. package/dist/monday-tool.js.map +1 -0
  82. package/dist/openai-tool.d.ts +6 -0
  83. package/dist/openai-tool.d.ts.map +1 -0
  84. package/dist/openai-tool.js +227 -0
  85. package/dist/openai-tool.js.map +1 -0
  86. package/dist/paypal-tool.d.ts +3 -0
  87. package/dist/paypal-tool.d.ts.map +1 -0
  88. package/dist/paypal-tool.js +157 -0
  89. package/dist/paypal-tool.js.map +1 -0
  90. package/dist/pinterest-tool.d.ts +7 -0
  91. package/dist/pinterest-tool.d.ts.map +1 -0
  92. package/dist/pinterest-tool.js +219 -0
  93. package/dist/pinterest-tool.js.map +1 -0
  94. package/dist/plaid-tool.d.ts +6 -0
  95. package/dist/plaid-tool.d.ts.map +1 -0
  96. package/dist/plaid-tool.js +149 -0
  97. package/dist/plaid-tool.js.map +1 -0
  98. package/dist/postman-tool.d.ts +2 -0
  99. package/dist/postman-tool.d.ts.map +1 -0
  100. package/dist/postman-tool.js +92 -0
  101. package/dist/postman-tool.js.map +1 -0
  102. package/dist/pushover-tool.d.ts +6 -0
  103. package/dist/pushover-tool.d.ts.map +1 -0
  104. package/dist/pushover-tool.js +146 -0
  105. package/dist/pushover-tool.js.map +1 -0
  106. package/dist/quickbooks-tool.d.ts +5 -0
  107. package/dist/quickbooks-tool.d.ts.map +1 -0
  108. package/dist/quickbooks-tool.js +160 -0
  109. package/dist/quickbooks-tool.js.map +1 -0
  110. package/dist/replicate-tool.d.ts +7 -0
  111. package/dist/replicate-tool.d.ts.map +1 -0
  112. package/dist/replicate-tool.js +172 -0
  113. package/dist/replicate-tool.js.map +1 -0
  114. package/dist/sentry-tool.d.ts +2 -0
  115. package/dist/sentry-tool.d.ts.map +1 -0
  116. package/dist/sentry-tool.js +123 -0
  117. package/dist/sentry-tool.js.map +1 -0
  118. package/dist/speedrun-tool.d.ts +6 -0
  119. package/dist/speedrun-tool.d.ts.map +1 -0
  120. package/dist/speedrun-tool.js +192 -0
  121. package/dist/speedrun-tool.js.map +1 -0
  122. package/dist/spotify-tool.d.ts +8 -0
  123. package/dist/spotify-tool.d.ts.map +1 -0
  124. package/dist/spotify-tool.js +274 -0
  125. package/dist/spotify-tool.js.map +1 -0
  126. package/dist/square-tool.d.ts +5 -0
  127. package/dist/square-tool.d.ts.map +1 -0
  128. package/dist/square-tool.js +133 -0
  129. package/dist/square-tool.js.map +1 -0
  130. package/dist/stability-tool.d.ts +5 -0
  131. package/dist/stability-tool.d.ts.map +1 -0
  132. package/dist/stability-tool.js +190 -0
  133. package/dist/stability-tool.js.map +1 -0
  134. package/dist/steam-tool.d.ts +6 -0
  135. package/dist/steam-tool.d.ts.map +1 -0
  136. package/dist/steam-tool.js +222 -0
  137. package/dist/steam-tool.js.map +1 -0
  138. package/dist/stripe-tool.d.ts +7 -0
  139. package/dist/stripe-tool.d.ts.map +1 -0
  140. package/dist/stripe-tool.js +181 -0
  141. package/dist/stripe-tool.js.map +1 -0
  142. package/dist/tiktok-tool.d.ts +4 -0
  143. package/dist/tiktok-tool.d.ts.map +1 -0
  144. package/dist/tiktok-tool.js +129 -0
  145. package/dist/tiktok-tool.js.map +1 -0
  146. package/dist/toilets-tool.js +2 -2
  147. package/dist/tool-wiring.d.ts +4066 -18
  148. package/dist/tool-wiring.d.ts.map +1 -1
  149. package/dist/tool-wiring.js +2601 -18
  150. package/dist/tool-wiring.js.map +1 -1
  151. package/dist/trello-tool.d.ts +2 -0
  152. package/dist/trello-tool.d.ts.map +1 -0
  153. package/dist/trello-tool.js +166 -0
  154. package/dist/trello-tool.js.map +1 -0
  155. package/dist/twilio-tool.d.ts +8 -0
  156. package/dist/twilio-tool.d.ts.map +1 -0
  157. package/dist/twilio-tool.js +243 -0
  158. package/dist/twilio-tool.js.map +1 -0
  159. package/dist/whatsapp-tool.d.ts +6 -0
  160. package/dist/whatsapp-tool.d.ts.map +1 -0
  161. package/dist/whatsapp-tool.js +200 -0
  162. package/dist/whatsapp-tool.js.map +1 -0
  163. package/dist/woocommerce-tool.d.ts +4 -0
  164. package/dist/woocommerce-tool.d.ts.map +1 -0
  165. package/dist/woocommerce-tool.js +140 -0
  166. package/dist/woocommerce-tool.js.map +1 -0
  167. package/dist/youtube-tool.d.ts +7 -0
  168. package/dist/youtube-tool.d.ts.map +1 -0
  169. package/dist/youtube-tool.js +196 -0
  170. package/dist/youtube-tool.js.map +1 -0
  171. package/package.json +1 -1
  172. package/server.json +37 -37
  173. package/LICENSE +0 -216
  174. package/dist/cloudflare-worker.d.ts +0 -12
  175. package/dist/cloudflare-worker.d.ts.map +0 -1
  176. package/dist/cloudflare-worker.js +0 -50
  177. package/dist/cloudflare-worker.js.map +0 -1
@@ -10,6 +10,7 @@ import { legoSearchSets, legoGetSet, legoSetParts, legoSearchParts, legoThemes,
10
10
  import { untappdSearchBeer, untappdGetBeer, untappdGetBrewery, untappdSearchBrewery, untappdBeerActivities, } from "./untappd-tool.js";
11
11
  import { esportsMatches, esportsTournaments, esportsTeams, esportsPlayers, esportsGetMatch, } from "./pandascore-tool.js";
12
12
  import { bggSearch, bggGameDetails, bggUserCollection, bggTopGames, bggGameReviews, } from "./bgg-tool.js";
13
+ import { gdeltNewsSearch, gdeltToneAnalysis, gdeltGeoEvents, gdeltTrending, } from "./gdelt-tool.js";
13
14
  // ─── Australian / Local ───────────────────────────────────────────────────────
14
15
  import { getAmberSites, getAmberCurrentPrice, getAmberForecast, } from "./amber-tool.js";
15
16
  import { getWillyweatherForecast, getWillyweatherSurf, getWillyweatherTide, } from "./willyweather-tool.js";
@@ -105,12 +106,54 @@ import { blueskyAction } from "./bluesky-tool.js";
105
106
  import { discordSend, discordRead, discordThread, discordReact, discordChannels, discordMembers, discordSearch, } from "./discord-tool.js";
106
107
  import { slackAction } from "./slack-tool.js";
107
108
  import { telegramSend, telegramRead, telegramSearch, telegramSendMedia, telegramGetUpdates, telegramManageChat, } from "./telegram-tool.js";
109
+ import { lineSendMessage, lineSendFlexMessage, lineGetProfile, lineGetGroupSummary, lineReplyMessage, lineBroadcast, } from "./line-tool.js";
110
+ import { figmaGetFile, figmaGetNode, figmaGetImages, figmaGetComments, figmaPostComment, figmaGetComponents, figmaGetTeamProjects, } from "./figma-tool.js";
111
+ // ─── Messaging ────────────────────────────────────────────────────────────────
112
+ import { twilioSendSms, twilioListMessages, twilioGetMessage, twilioMakeCall, twilioListCalls, twilioSendVerify, twilioCheckVerify, } from "./twilio-tool.js";
113
+ import { pushoverSendNotification, pushoverGetReceipt, pushoverCancelEmergency, pushoverListSounds, pushoverValidateUser, } from "./pushover-tool.js";
114
+ import { whatsappSendText, whatsappSendTemplate, whatsappSendMedia, whatsappGetMedia, whatsappUploadMedia, } from "./whatsapp-tool.js";
115
+ // ─── Media / Data ─────────────────────────────────────────────────────────────
116
+ import { youtubeSearch, youtubeGetVideo, youtubeGetChannel, youtubeListPlaylists, youtubeListPlaylistItems, youtubeGetCaptions, } from "./youtube-tool.js";
117
+ import { spotifySearch, spotifyGetTrack, spotifyGetAlbum, spotifyGetArtist, spotifyGetPlaylist, spotifyGetRecommendations, spotifyGetAudioFeatures, } from "./spotify-tool.js";
118
+ // ─── AI ───────────────────────────────────────────────────────────────────────
119
+ import { elevenlabsListVoices, elevenlabsGetVoice, elevenlabsTextToSpeech, elevenlabsGetModels, elevenlabsGetHistory, } from "./elevenlabs-tool.js";
120
+ import { replicateListModels, replicateGetModel, replicateCreatePrediction, replicateGetPrediction, replicateListPredictions, replicateCancelPrediction, } from "./replicate-tool.js";
121
+ import { stabilityTextToImage, stabilityImageToImage, stabilityUpscale, stabilityListEngines, } from "./stability-tool.js";
122
+ import { openaiChatCompletion, openaiCreateEmbedding, openaiGenerateImage, openaiCreateTranscription, openaiListModels, } from "./openai-tool.js";
123
+ import { anthropicCreateMessage, anthropicListModels, } from "./anthropic-tool.js";
108
124
  import { amazonSearch, amazonProduct, amazonBrowse, amazonVariations, } from "./amazon-tool.js";
109
125
  import { shopifyProducts, shopifyOrders, shopifyCustomers, shopifyInventory, shopifyCollections, shopifyShop, shopifyFulfillments, } from "./shopify-tool.js";
110
126
  import { yelpSearchBusinesses, yelpGetBusiness, yelpGetReviews, yelpSearchEvents, yelpGetAutocomplete, } from "./yelp-tool.js";
111
127
  import { xeroInvoices, xeroContacts, xeroAccounts, xeroPayments, xeroBankTransactions, xeroReports, xeroQuotes, xeroOrganisation, } from "./xero-tool.js";
128
+ import { ebaySearch, ebayGetItem, ebayGetItemByLegacyId, ebayGetCategories, } from "./ebay-tool.js";
129
+ import { etsySearchListings, etsyGetListing, etsyGetShop, etsyGetShopListings, etsySearchShops, } from "./etsy-tool.js";
130
+ import { stripeCustomers, stripeCharges, stripeSubscriptions, stripeInvoices, stripeProducts, stripePrices, } from "./stripe-tool.js";
131
+ import { paypalOrders, paypalInvoices, } from "./paypal-tool.js";
132
+ import { squarePayments, squareCustomers, squareCatalogList, squareCatalogSearch, } from "./square-tool.js";
133
+ import { quickbooksCustomers, quickbooksInvoices, quickbooksItems, quickbooksPayments, } from "./quickbooks-tool.js";
134
+ import { plaidAccounts, plaidTransactions, plaidBalances, plaidIdentity, plaidLinkTokenCreate, } from "./plaid-tool.js";
135
+ import { wooProducts, wooOrders, wooCustomers, } from "./woocommerce-tool.js";
112
136
  import { csuitAnalyze } from "./csuite-tool.js";
113
137
  import { vaultAction } from "./vault-tool.js";
138
+ // ─── Developer / Productivity ─────────────────────────────────────────────────
139
+ import { githubAction } from "./github-tool.js";
140
+ import { gitlabAction } from "./gitlab-tool.js";
141
+ import { clickupAction } from "./clickup-tool.js";
142
+ import { linearAction } from "./linear-tool.js";
143
+ import { airtableAction } from "./airtable-tool.js";
144
+ import { trelloAction } from "./trello-tool.js";
145
+ import { sentryAction } from "./sentry-tool.js";
146
+ import { postmanAction } from "./postman-tool.js";
147
+ // ─── Productivity / Social / Misc ─────────────────────────────────────────────
148
+ import { listAsanaWorkspaces, listAsanaProjects, listAsanaTasks, createAsanaTask, updateAsanaTask, getAsanaTask, searchAsanaTasks, } from "./asana-tool.js";
149
+ import { listMondayBoards, getMondayBoard, listMondayItems, createMondayItem, updateMondayItem, searchMondayItems, } from "./monday-tool.js";
150
+ import { getCalendlyUser, listCalendlyEventTypes, listCalendlyEvents, getCalendlyEvent, listCalendlyInvitees, } from "./calendly-tool.js";
151
+ import { listPinterestBoards, getPinterestBoard, listPinterestPins, createPinterestPin, searchPinterestPins, getPinterestUser, } from "./pinterest-tool.js";
152
+ import { getTiktokUser, listTiktokVideos, getTiktokVideo, } from "./tiktok-tool.js";
153
+ import { getSteamPlayerSummaries, getSteamOwnedGames, getSteamAchievements, getSteamAppDetails, searchSteamStore, } from "./steam-tool.js";
154
+ import { igdbSearchGames, igdbGetGame, igdbListPlatforms, igdbListGenres, igdbGetCompany, } from "./igdb-tool.js";
155
+ import { speedrunSearchGames, speedrunGetGame, speedrunGetLeaderboard, speedrunListRuns, speedrunGetUser, } from "./speedrun-tool.js";
156
+ import { exchangerateLatest, exchangerateConvert, exchangerateHistorical, exchangerateCodes, } from "./exchangerate-tool.js";
114
157
  // ─────────────────────────────────────────────────────────────────────────────
115
158
  // ADDITIONAL_TOOLS
116
159
  // ─────────────────────────────────────────────────────────────────────────────
@@ -3183,6 +3226,63 @@ export const ADDITIONAL_TOOLS = [
3183
3226
  properties: {},
3184
3227
  },
3185
3228
  },
3229
+ // ── gdelt-tool.ts ────────────────────────────────────────────────────────────
3230
+ {
3231
+ name: "gdelt_news_search",
3232
+ description: "Search global news via the GDELT Project. Returns article titles, URLs, sources, dates, countries, and languages. No API key required.",
3233
+ inputSchema: {
3234
+ type: "object",
3235
+ properties: {
3236
+ query: { type: "string", description: "Search query (keywords, phrases, or operators)" },
3237
+ maxrecords: { type: "number", description: "Max articles to return (default 25, max 250)" },
3238
+ startdatetime: { type: "string", description: "Start datetime YYYYMMDDHHMMSS (UTC)" },
3239
+ enddatetime: { type: "string", description: "End datetime YYYYMMDDHHMMSS (UTC)" },
3240
+ sourcelang: { type: "string", description: "Filter by source language (e.g. 'english', 'spanish')" },
3241
+ sourcecountry: { type: "string", description: "Filter by source country code (e.g. 'US', 'GB', 'AU')" },
3242
+ },
3243
+ required: ["query"],
3244
+ },
3245
+ },
3246
+ {
3247
+ name: "gdelt_tone_analysis",
3248
+ description: "Analyse the sentiment and tone of global news coverage for a topic over time. Returns average tone scores (negative = negative coverage, positive = positive), trend summary, and timeline. Great for brand monitoring or tracking public sentiment.",
3249
+ inputSchema: {
3250
+ type: "object",
3251
+ properties: {
3252
+ query: { type: "string", description: "Topic or keyword to analyse" },
3253
+ timespan: { type: "string", description: "Time window (e.g. '24h', '7d', '1month')" },
3254
+ sourcelang: { type: "string", description: "Filter by source language" },
3255
+ sourcecountry: { type: "string", description: "Filter by source country code" },
3256
+ },
3257
+ required: ["query"],
3258
+ },
3259
+ },
3260
+ {
3261
+ name: "gdelt_geo_events",
3262
+ description: "Get geographic distribution of news events for a topic from the GDELT GEO API. Returns event clusters with location, article count, and tone score.",
3263
+ inputSchema: {
3264
+ type: "object",
3265
+ properties: {
3266
+ query: { type: "string", description: "Topic or keyword to map" },
3267
+ maxpoints: { type: "number", description: "Max location clusters to return (default 50, max 250)" },
3268
+ timespan: { type: "string", description: "Time window (e.g. '24h', '7d')" },
3269
+ },
3270
+ required: ["query"],
3271
+ },
3272
+ },
3273
+ {
3274
+ name: "gdelt_trending",
3275
+ description: "Check whether a topic is trending in global news using GDELT article volume timelines. Returns a trend classification (surging, rising, stable, declining, fading) and volume data over time.",
3276
+ inputSchema: {
3277
+ type: "object",
3278
+ properties: {
3279
+ query: { type: "string", description: "Topic or keyword to check" },
3280
+ timespan: { type: "string", description: "Time window (e.g. '24h', '7d', '1month')" },
3281
+ sourcelang: { type: "string", description: "Filter by source language" },
3282
+ },
3283
+ required: ["query"],
3284
+ },
3285
+ },
3186
3286
  // ── numbers-tool.ts ──────────────────────────────────────────────────────────
3187
3287
  {
3188
3288
  name: "number_fact",
@@ -5213,6 +5313,177 @@ export const ADDITIONAL_TOOLS = [
5213
5313
  required: ["bot_token", "chat_id", "action"],
5214
5314
  },
5215
5315
  },
5316
+ // ── line-tool.ts ──────────────────────────────────────────────────────────────
5317
+ {
5318
+ name: "line_send_message",
5319
+ description: "Send a text message to a LINE user, group, or room.",
5320
+ inputSchema: {
5321
+ type: "object",
5322
+ properties: {
5323
+ channel_access_token: { type: "string" },
5324
+ to: { type: "string", description: "User ID, group ID, or room ID" },
5325
+ message: { type: "string" },
5326
+ },
5327
+ required: ["channel_access_token", "to", "message"],
5328
+ },
5329
+ },
5330
+ {
5331
+ name: "line_send_flex_message",
5332
+ description: "Send a rich Flex Message to a LINE user or group.",
5333
+ inputSchema: {
5334
+ type: "object",
5335
+ properties: {
5336
+ channel_access_token: { type: "string" },
5337
+ to: { type: "string" },
5338
+ alt_text: { type: "string", description: "Fallback text shown in push notifications" },
5339
+ contents: { description: "Flex Message container as JSON object or string" },
5340
+ },
5341
+ required: ["channel_access_token", "to", "alt_text", "contents"],
5342
+ },
5343
+ },
5344
+ {
5345
+ name: "line_get_profile",
5346
+ description: "Get a LINE user's display name, profile picture, and status message.",
5347
+ inputSchema: {
5348
+ type: "object",
5349
+ properties: {
5350
+ channel_access_token: { type: "string" },
5351
+ user_id: { type: "string" },
5352
+ },
5353
+ required: ["channel_access_token", "user_id"],
5354
+ },
5355
+ },
5356
+ {
5357
+ name: "line_get_group_summary",
5358
+ description: "Get a LINE group's name and picture URL.",
5359
+ inputSchema: {
5360
+ type: "object",
5361
+ properties: {
5362
+ channel_access_token: { type: "string" },
5363
+ group_id: { type: "string" },
5364
+ },
5365
+ required: ["channel_access_token", "group_id"],
5366
+ },
5367
+ },
5368
+ {
5369
+ name: "line_reply_message",
5370
+ description: "Reply to a LINE message using a reply token from a webhook event.",
5371
+ inputSchema: {
5372
+ type: "object",
5373
+ properties: {
5374
+ channel_access_token: { type: "string" },
5375
+ reply_token: { type: "string" },
5376
+ messages: { description: "Array of LINE message objects (max 5), or use message for a single text reply" },
5377
+ message: { type: "string", description: "Convenience: single text message to reply with" },
5378
+ },
5379
+ required: ["channel_access_token", "reply_token"],
5380
+ },
5381
+ },
5382
+ {
5383
+ name: "line_broadcast",
5384
+ description: "Broadcast a text message to all followers of your LINE Official Account.",
5385
+ inputSchema: {
5386
+ type: "object",
5387
+ properties: {
5388
+ channel_access_token: { type: "string" },
5389
+ message: { type: "string" },
5390
+ },
5391
+ required: ["channel_access_token", "message"],
5392
+ },
5393
+ },
5394
+ // ── figma-tool.ts ─────────────────────────────────────────────────────────────
5395
+ {
5396
+ name: "figma_get_file",
5397
+ description: "Get a Figma file's structure and metadata — pages, frames, and component count.",
5398
+ inputSchema: {
5399
+ type: "object",
5400
+ properties: {
5401
+ personal_access_token: { type: "string" },
5402
+ file_key: { type: "string", description: "Alphanumeric file ID from the Figma URL" },
5403
+ depth: { type: "number", description: "How deep to traverse the node tree (default: full)" },
5404
+ },
5405
+ required: ["personal_access_token", "file_key"],
5406
+ },
5407
+ },
5408
+ {
5409
+ name: "figma_get_node",
5410
+ description: "Get a specific node by ID within a Figma file.",
5411
+ inputSchema: {
5412
+ type: "object",
5413
+ properties: {
5414
+ personal_access_token: { type: "string" },
5415
+ file_key: { type: "string" },
5416
+ node_id: { type: "string", description: "Node ID (e.g. '1:2' or '1-2')" },
5417
+ },
5418
+ required: ["personal_access_token", "file_key", "node_id"],
5419
+ },
5420
+ },
5421
+ {
5422
+ name: "figma_get_images",
5423
+ description: "Export/render Figma nodes as images (PNG, JPG, SVG, or PDF).",
5424
+ inputSchema: {
5425
+ type: "object",
5426
+ properties: {
5427
+ personal_access_token: { type: "string" },
5428
+ file_key: { type: "string" },
5429
+ node_ids: { description: "Comma-separated node IDs or array of node ID strings" },
5430
+ format: { type: "string", description: "png, jpg, svg, or pdf (default: png)" },
5431
+ scale: { type: "number", description: "Image scale factor 0.01–4 (default: 1, PNG/JPG only)" },
5432
+ },
5433
+ required: ["personal_access_token", "file_key", "node_ids"],
5434
+ },
5435
+ },
5436
+ {
5437
+ name: "figma_get_comments",
5438
+ description: "Get all comments on a Figma file.",
5439
+ inputSchema: {
5440
+ type: "object",
5441
+ properties: {
5442
+ personal_access_token: { type: "string" },
5443
+ file_key: { type: "string" },
5444
+ },
5445
+ required: ["personal_access_token", "file_key"],
5446
+ },
5447
+ },
5448
+ {
5449
+ name: "figma_post_comment",
5450
+ description: "Add a comment to a Figma file, optionally pinned to canvas coordinates.",
5451
+ inputSchema: {
5452
+ type: "object",
5453
+ properties: {
5454
+ personal_access_token: { type: "string" },
5455
+ file_key: { type: "string" },
5456
+ message: { type: "string" },
5457
+ x: { type: "number", description: "Canvas X coordinate to pin the comment" },
5458
+ y: { type: "number", description: "Canvas Y coordinate to pin the comment" },
5459
+ },
5460
+ required: ["personal_access_token", "file_key", "message"],
5461
+ },
5462
+ },
5463
+ {
5464
+ name: "figma_get_components",
5465
+ description: "Get all published components in a Figma file.",
5466
+ inputSchema: {
5467
+ type: "object",
5468
+ properties: {
5469
+ personal_access_token: { type: "string" },
5470
+ file_key: { type: "string" },
5471
+ },
5472
+ required: ["personal_access_token", "file_key"],
5473
+ },
5474
+ },
5475
+ {
5476
+ name: "figma_get_team_projects",
5477
+ description: "List all projects for a Figma team.",
5478
+ inputSchema: {
5479
+ type: "object",
5480
+ properties: {
5481
+ personal_access_token: { type: "string" },
5482
+ team_id: { type: "string", description: "Team ID from your Figma team URL" },
5483
+ },
5484
+ required: ["personal_access_token", "team_id"],
5485
+ },
5486
+ },
5216
5487
  // ── amazon-tool.ts ───────────────────────────────────────────────────────────
5217
5488
  {
5218
5489
  name: "amazon_search",
@@ -5555,36 +5826,2154 @@ export const ADDITIONAL_TOOLS = [
5555
5826
  },
5556
5827
  },
5557
5828
  },
5558
- // ── csuite-tool.ts ───────────────────────────────────────────────────────────
5829
+ // ── ebay-tool.ts ─────────────────────────────────────────────────────────────
5559
5830
  {
5560
- name: "csuite_analyze",
5561
- description: "Run a C-Suite multi-perspective analysis on a business scenario.",
5831
+ name: "ebay_search",
5832
+ description: "Search eBay listings via the Browse API.",
5562
5833
  inputSchema: {
5563
5834
  type: "object",
5564
5835
  properties: {
5565
- scenario: { type: "string" },
5566
- context: { type: "string" },
5567
- perspectives: { type: "array", description: "e.g. [\"CEO\",\"CFO\",\"CTO\"]" },
5568
- depth: { type: "string", description: "quick, standard, or deep" },
5569
- focus: { type: "string" },
5836
+ client_id: { type: "string", description: "eBay application Client ID" },
5837
+ client_secret: { type: "string", description: "eBay application Client Secret" },
5838
+ q: { type: "string", description: "Search query" },
5839
+ limit: { type: "number", description: "Results per page (max 200, default 20)" },
5840
+ offset: { type: "number" },
5841
+ filter: { type: "string", description: "eBay filter string (e.g. price:[10..50])" },
5842
+ sort: { type: "string", description: "Sort order (e.g. price, -price, newlyListed)" },
5843
+ category_ids: { type: "string", description: "Comma-separated category IDs" },
5844
+ marketplace: { type: "string", description: "Marketplace ID (default: EBAY_US)" },
5570
5845
  },
5571
- required: ["scenario"],
5846
+ required: ["client_id", "client_secret", "q"],
5572
5847
  },
5573
5848
  },
5574
- // ── vault-tool.ts ────────────────────────────────────────────────────────────
5575
5849
  {
5576
- name: "vault_action",
5577
- description: "Perform a vault action: vault_init, vault_store, vault_retrieve, vault_list, vault_delete, vault_rotate, vault_audit.",
5850
+ name: "ebay_get_item",
5851
+ description: "Get full details for an eBay item by item ID.",
5578
5852
  inputSchema: {
5579
5853
  type: "object",
5580
5854
  properties: {
5581
- action: { type: "string" },
5582
- master_password: { type: "string" },
5583
- key: { type: "string" },
5584
- value: { type: "string" },
5585
- encrypt: { type: "boolean" },
5855
+ client_id: { type: "string" },
5856
+ client_secret: { type: "string" },
5857
+ item_id: { type: "string", description: "eBay item ID (e.g. v1|123456789|0)" },
5858
+ fieldgroups: { type: "string" },
5859
+ marketplace: { type: "string" },
5860
+ },
5861
+ required: ["client_id", "client_secret", "item_id"],
5862
+ },
5863
+ },
5864
+ {
5865
+ name: "ebay_get_item_by_legacy_id",
5866
+ description: "Get an eBay item by its legacy item ID (classic numeric ID).",
5867
+ inputSchema: {
5868
+ type: "object",
5869
+ properties: {
5870
+ client_id: { type: "string" },
5871
+ client_secret: { type: "string" },
5872
+ legacy_item_id: { type: "string", description: "Legacy eBay item ID (numeric)" },
5873
+ legacy_variation_id: { type: "string" },
5874
+ legacy_variation_sku: { type: "string" },
5875
+ marketplace: { type: "string" },
5876
+ },
5877
+ required: ["client_id", "client_secret", "legacy_item_id"],
5878
+ },
5879
+ },
5880
+ {
5881
+ name: "ebay_get_categories",
5882
+ description: "Get the eBay category tree for a marketplace.",
5883
+ inputSchema: {
5884
+ type: "object",
5885
+ properties: {
5886
+ client_id: { type: "string" },
5887
+ client_secret: { type: "string" },
5888
+ category_tree_id: { type: "string", description: "Category tree ID (0 = US default)" },
5889
+ marketplace: { type: "string" },
5890
+ },
5891
+ required: ["client_id", "client_secret"],
5892
+ },
5893
+ },
5894
+ // ── etsy-tool.ts ─────────────────────────────────────────────────────────────
5895
+ {
5896
+ name: "etsy_search_listings",
5897
+ description: "Search active Etsy listings by keyword.",
5898
+ inputSchema: {
5899
+ type: "object",
5900
+ properties: {
5901
+ api_key: { type: "string", description: "Etsy API key" },
5902
+ keywords: { type: "string", description: "Search keywords" },
5903
+ limit: { type: "number", description: "Results per page (max 100, default 25)" },
5904
+ offset: { type: "number" },
5905
+ sort_on: { type: "string", description: "Sort field (created, price, score, updated)" },
5906
+ sort_order: { type: "string", description: "asc or desc" },
5907
+ min_price: { type: "number" },
5908
+ max_price: { type: "number" },
5909
+ taxonomy_id: { type: "number" },
5910
+ location: { type: "string" },
5911
+ },
5912
+ required: ["api_key", "keywords"],
5913
+ },
5914
+ },
5915
+ {
5916
+ name: "etsy_get_listing",
5917
+ description: "Get details for a single Etsy listing by listing ID.",
5918
+ inputSchema: {
5919
+ type: "object",
5920
+ properties: {
5921
+ api_key: { type: "string" },
5922
+ listing_id: { type: "string" },
5923
+ includes: { type: "string", description: "Comma-separated includes (Images, Shop, etc.)" },
5924
+ },
5925
+ required: ["api_key", "listing_id"],
5926
+ },
5927
+ },
5928
+ {
5929
+ name: "etsy_get_shop",
5930
+ description: "Get details for an Etsy shop by shop ID or numeric ID.",
5931
+ inputSchema: {
5932
+ type: "object",
5933
+ properties: {
5934
+ api_key: { type: "string" },
5935
+ shop_id: { type: "string", description: "Shop ID or shop name" },
5936
+ },
5937
+ required: ["api_key", "shop_id"],
5938
+ },
5939
+ },
5940
+ {
5941
+ name: "etsy_get_shop_listings",
5942
+ description: "Get active listings for an Etsy shop.",
5943
+ inputSchema: {
5944
+ type: "object",
5945
+ properties: {
5946
+ api_key: { type: "string" },
5947
+ shop_id: { type: "string" },
5948
+ limit: { type: "number" },
5949
+ offset: { type: "number" },
5950
+ sort_on: { type: "string" },
5951
+ sort_order: { type: "string" },
5952
+ },
5953
+ required: ["api_key", "shop_id"],
5954
+ },
5955
+ },
5956
+ {
5957
+ name: "etsy_search_shops",
5958
+ description: "Search for Etsy shops by name.",
5959
+ inputSchema: {
5960
+ type: "object",
5961
+ properties: {
5962
+ api_key: { type: "string" },
5963
+ shop_name: { type: "string", description: "Shop name to search for" },
5964
+ limit: { type: "number" },
5965
+ offset: { type: "number" },
5966
+ },
5967
+ required: ["api_key", "shop_name"],
5968
+ },
5969
+ },
5970
+ // ── stripe-tool.ts ────────────────────────────────────────────────────────────
5971
+ {
5972
+ name: "stripe_customers",
5973
+ description: "List or create Stripe customers.",
5974
+ inputSchema: {
5975
+ type: "object",
5976
+ properties: {
5977
+ secret_key: { type: "string", description: "Stripe secret key (sk_live_* or sk_test_*)" },
5978
+ action: { type: "string", description: "list or create (default: list)" },
5979
+ limit: { type: "number" },
5980
+ starting_after: { type: "string", description: "Pagination cursor (customer ID)" },
5981
+ email: { type: "string" },
5982
+ name: { type: "string" },
5983
+ phone: { type: "string" },
5984
+ description: { type: "string" },
5985
+ },
5986
+ required: ["secret_key"],
5987
+ },
5988
+ },
5989
+ {
5990
+ name: "stripe_charges",
5991
+ description: "List or create Stripe charges.",
5992
+ inputSchema: {
5993
+ type: "object",
5994
+ properties: {
5995
+ secret_key: { type: "string" },
5996
+ action: { type: "string", description: "list or create (default: list)" },
5997
+ limit: { type: "number" },
5998
+ starting_after: { type: "string" },
5999
+ customer: { type: "string" },
6000
+ amount: { type: "number", description: "Amount in smallest currency unit (e.g. cents)" },
6001
+ currency: { type: "string", description: "ISO currency code (e.g. usd)" },
6002
+ source: { type: "string", description: "Payment source or token" },
6003
+ description: { type: "string" },
6004
+ },
6005
+ required: ["secret_key"],
6006
+ },
6007
+ },
6008
+ {
6009
+ name: "stripe_subscriptions",
6010
+ description: "List Stripe subscriptions.",
6011
+ inputSchema: {
6012
+ type: "object",
6013
+ properties: {
6014
+ secret_key: { type: "string" },
6015
+ limit: { type: "number" },
6016
+ starting_after: { type: "string" },
6017
+ customer: { type: "string" },
6018
+ status: { type: "string", description: "active, past_due, canceled, etc." },
6019
+ price: { type: "string" },
6020
+ },
6021
+ required: ["secret_key"],
6022
+ },
6023
+ },
6024
+ {
6025
+ name: "stripe_invoices",
6026
+ description: "List Stripe invoices.",
6027
+ inputSchema: {
6028
+ type: "object",
6029
+ properties: {
6030
+ secret_key: { type: "string" },
6031
+ limit: { type: "number" },
6032
+ starting_after: { type: "string" },
6033
+ customer: { type: "string" },
6034
+ status: { type: "string", description: "draft, open, paid, uncollectible, void" },
6035
+ subscription: { type: "string" },
6036
+ },
6037
+ required: ["secret_key"],
6038
+ },
6039
+ },
6040
+ {
6041
+ name: "stripe_products",
6042
+ description: "List Stripe products.",
6043
+ inputSchema: {
6044
+ type: "object",
6045
+ properties: {
6046
+ secret_key: { type: "string" },
6047
+ limit: { type: "number" },
6048
+ starting_after: { type: "string" },
6049
+ active: { type: "boolean" },
6050
+ },
6051
+ required: ["secret_key"],
6052
+ },
6053
+ },
6054
+ {
6055
+ name: "stripe_prices",
6056
+ description: "List Stripe prices.",
6057
+ inputSchema: {
6058
+ type: "object",
6059
+ properties: {
6060
+ secret_key: { type: "string" },
6061
+ limit: { type: "number" },
6062
+ starting_after: { type: "string" },
6063
+ product: { type: "string" },
6064
+ active: { type: "boolean" },
6065
+ type: { type: "string", description: "one_time or recurring" },
6066
+ },
6067
+ required: ["secret_key"],
6068
+ },
6069
+ },
6070
+ // ── paypal-tool.ts ────────────────────────────────────────────────────────────
6071
+ {
6072
+ name: "paypal_orders",
6073
+ description: "Create or retrieve a PayPal order.",
6074
+ inputSchema: {
6075
+ type: "object",
6076
+ properties: {
6077
+ client_id: { type: "string", description: "PayPal application Client ID" },
6078
+ client_secret: { type: "string", description: "PayPal application Client Secret" },
6079
+ action: { type: "string", description: "create or get (default: get)" },
6080
+ order_id: { type: "string", description: "Required for action='get'" },
6081
+ intent: { type: "string", description: "CAPTURE or AUTHORIZE (default: CAPTURE)" },
6082
+ purchase_units: { type: "array", description: "Required for action='create'" },
6083
+ sandbox: { type: "boolean", description: "Use PayPal sandbox (default: false)" },
6084
+ },
6085
+ required: ["client_id", "client_secret"],
6086
+ },
6087
+ },
6088
+ {
6089
+ name: "paypal_invoices",
6090
+ description: "List, create, or send PayPal invoices.",
6091
+ inputSchema: {
6092
+ type: "object",
6093
+ properties: {
6094
+ client_id: { type: "string" },
6095
+ client_secret: { type: "string" },
6096
+ action: { type: "string", description: "list, create, or send (default: list)" },
6097
+ invoice_id: { type: "string", description: "Required for action='send'" },
6098
+ invoice: { type: "object", description: "Invoice object for action='create'" },
6099
+ page: { type: "number" },
6100
+ page_size: { type: "number" },
6101
+ sandbox: { type: "boolean" },
6102
+ },
6103
+ required: ["client_id", "client_secret"],
6104
+ },
6105
+ },
6106
+ // ── square-tool.ts ────────────────────────────────────────────────────────────
6107
+ {
6108
+ name: "square_payments",
6109
+ description: "List or create Square payments.",
6110
+ inputSchema: {
6111
+ type: "object",
6112
+ properties: {
6113
+ access_token: { type: "string", description: "Square access token" },
6114
+ action: { type: "string", description: "list or create (default: list)" },
6115
+ begin_time: { type: "string", description: "RFC 3339 timestamp" },
6116
+ end_time: { type: "string" },
6117
+ cursor: { type: "string" },
6118
+ limit: { type: "number" },
6119
+ source_id: { type: "string", description: "Required for action='create'" },
6120
+ amount_money: { type: "object", description: "{amount: number, currency: string}" },
6121
+ idempotency_key: { type: "string" },
6122
+ customer_id: { type: "string" },
6123
+ note: { type: "string" },
6124
+ },
6125
+ required: ["access_token"],
6126
+ },
6127
+ },
6128
+ {
6129
+ name: "square_customers",
6130
+ description: "List Square customers.",
6131
+ inputSchema: {
6132
+ type: "object",
6133
+ properties: {
6134
+ access_token: { type: "string" },
6135
+ cursor: { type: "string" },
6136
+ limit: { type: "number" },
6137
+ sort_field: { type: "string" },
6138
+ sort_order: { type: "string" },
6139
+ },
6140
+ required: ["access_token"],
6141
+ },
6142
+ },
6143
+ {
6144
+ name: "square_catalog_list",
6145
+ description: "List Square catalog objects (items, categories, taxes, etc.).",
6146
+ inputSchema: {
6147
+ type: "object",
6148
+ properties: {
6149
+ access_token: { type: "string" },
6150
+ cursor: { type: "string" },
6151
+ types: { type: "string", description: "Comma-separated types (ITEM, CATEGORY, etc.)" },
6152
+ limit: { type: "number" },
6153
+ },
6154
+ required: ["access_token"],
6155
+ },
6156
+ },
6157
+ {
6158
+ name: "square_catalog_search",
6159
+ description: "Search Square catalog objects by text.",
6160
+ inputSchema: {
6161
+ type: "object",
6162
+ properties: {
6163
+ access_token: { type: "string" },
6164
+ text_filter: { type: "string", description: "Text to search for" },
6165
+ object_types: { type: "array", description: "Types to search (default: ['ITEM'])" },
6166
+ limit: { type: "number" },
6167
+ cursor: { type: "string" },
6168
+ },
6169
+ required: ["access_token", "text_filter"],
6170
+ },
6171
+ },
6172
+ // ── quickbooks-tool.ts ────────────────────────────────────────────────────────
6173
+ {
6174
+ name: "quickbooks_customers",
6175
+ description: "Query QuickBooks Online customers.",
6176
+ inputSchema: {
6177
+ type: "object",
6178
+ properties: {
6179
+ access_token: { type: "string", description: "QuickBooks OAuth2 access token" },
6180
+ realm_id: { type: "string", description: "QuickBooks company realm ID" },
6181
+ where: { type: "string", description: "SQL-style WHERE clause (e.g. Active = true)" },
6182
+ limit: { type: "number" },
6183
+ offset: { type: "number" },
6184
+ sandbox: { type: "boolean" },
6185
+ },
6186
+ required: ["access_token", "realm_id"],
6187
+ },
6188
+ },
6189
+ {
6190
+ name: "quickbooks_invoices",
6191
+ description: "List, get, or create QuickBooks Online invoices.",
6192
+ inputSchema: {
6193
+ type: "object",
6194
+ properties: {
6195
+ access_token: { type: "string" },
6196
+ realm_id: { type: "string" },
6197
+ action: { type: "string", description: "list, get, or create (default: list)" },
6198
+ invoice_id: { type: "string", description: "Required for action='get'" },
6199
+ invoice: { type: "object", description: "Invoice object for action='create'" },
6200
+ where: { type: "string" },
6201
+ limit: { type: "number" },
6202
+ offset: { type: "number" },
6203
+ sandbox: { type: "boolean" },
6204
+ },
6205
+ required: ["access_token", "realm_id"],
6206
+ },
6207
+ },
6208
+ {
6209
+ name: "quickbooks_items",
6210
+ description: "Query QuickBooks Online items (products and services).",
6211
+ inputSchema: {
6212
+ type: "object",
6213
+ properties: {
6214
+ access_token: { type: "string" },
6215
+ realm_id: { type: "string" },
6216
+ where: { type: "string" },
6217
+ limit: { type: "number" },
6218
+ offset: { type: "number" },
6219
+ sandbox: { type: "boolean" },
6220
+ },
6221
+ required: ["access_token", "realm_id"],
6222
+ },
6223
+ },
6224
+ {
6225
+ name: "quickbooks_payments",
6226
+ description: "Query QuickBooks Online payments.",
6227
+ inputSchema: {
6228
+ type: "object",
6229
+ properties: {
6230
+ access_token: { type: "string" },
6231
+ realm_id: { type: "string" },
6232
+ where: { type: "string" },
6233
+ limit: { type: "number" },
6234
+ offset: { type: "number" },
6235
+ sandbox: { type: "boolean" },
6236
+ },
6237
+ required: ["access_token", "realm_id"],
6238
+ },
6239
+ },
6240
+ // ── plaid-tool.ts ─────────────────────────────────────────────────────────────
6241
+ {
6242
+ name: "plaid_accounts",
6243
+ description: "Get accounts for a Plaid-linked item.",
6244
+ inputSchema: {
6245
+ type: "object",
6246
+ properties: {
6247
+ client_id: { type: "string", description: "Plaid client ID" },
6248
+ secret: { type: "string", description: "Plaid secret key" },
6249
+ access_token: { type: "string", description: "Plaid item access token" },
6250
+ account_ids: { type: "array", description: "Filter to specific account IDs" },
6251
+ environment: { type: "string", description: "sandbox, development, or production (default: sandbox)" },
6252
+ },
6253
+ required: ["client_id", "secret", "access_token"],
6254
+ },
6255
+ },
6256
+ {
6257
+ name: "plaid_transactions",
6258
+ description: "Get transactions for a Plaid-linked item within a date range.",
6259
+ inputSchema: {
6260
+ type: "object",
6261
+ properties: {
6262
+ client_id: { type: "string" },
6263
+ secret: { type: "string" },
6264
+ access_token: { type: "string" },
6265
+ start_date: { type: "string", description: "Start date (YYYY-MM-DD)" },
6266
+ end_date: { type: "string", description: "End date (YYYY-MM-DD)" },
6267
+ count: { type: "number", description: "Number of transactions (max 500, default 100)" },
6268
+ offset: { type: "number" },
6269
+ account_ids: { type: "array" },
6270
+ environment: { type: "string" },
6271
+ },
6272
+ required: ["client_id", "secret", "access_token", "start_date", "end_date"],
6273
+ },
6274
+ },
6275
+ {
6276
+ name: "plaid_balances",
6277
+ description: "Get real-time account balances for a Plaid-linked item.",
6278
+ inputSchema: {
6279
+ type: "object",
6280
+ properties: {
6281
+ client_id: { type: "string" },
6282
+ secret: { type: "string" },
6283
+ access_token: { type: "string" },
6284
+ account_ids: { type: "array" },
6285
+ environment: { type: "string" },
6286
+ },
6287
+ required: ["client_id", "secret", "access_token"],
6288
+ },
6289
+ },
6290
+ {
6291
+ name: "plaid_identity",
6292
+ description: "Get identity information for accounts linked via Plaid.",
6293
+ inputSchema: {
6294
+ type: "object",
6295
+ properties: {
6296
+ client_id: { type: "string" },
6297
+ secret: { type: "string" },
6298
+ access_token: { type: "string" },
6299
+ environment: { type: "string" },
6300
+ },
6301
+ required: ["client_id", "secret", "access_token"],
6302
+ },
6303
+ },
6304
+ {
6305
+ name: "plaid_link_token_create",
6306
+ description: "Create a Plaid Link token to initialise the Plaid Link flow.",
6307
+ inputSchema: {
6308
+ type: "object",
6309
+ properties: {
6310
+ client_id: { type: "string" },
6311
+ secret: { type: "string" },
6312
+ user_client_user_id: { type: "string", description: "Unique identifier for the end user" },
6313
+ client_name: { type: "string", description: "App name shown in Plaid Link UI" },
6314
+ products: { type: "array", description: "Plaid products (default: ['transactions'])" },
6315
+ country_codes: { type: "array", description: "ISO country codes (default: ['US'])" },
6316
+ language: { type: "string", description: "Language code (default: en)" },
6317
+ webhook: { type: "string" },
6318
+ access_token: { type: "string", description: "For update mode: existing access token" },
6319
+ environment: { type: "string" },
6320
+ },
6321
+ required: ["client_id", "secret", "user_client_user_id"],
6322
+ },
6323
+ },
6324
+ // ── woocommerce-tool.ts ───────────────────────────────────────────────────────
6325
+ {
6326
+ name: "woo_products",
6327
+ description: "List or get WooCommerce products.",
6328
+ inputSchema: {
6329
+ type: "object",
6330
+ properties: {
6331
+ store_url: { type: "string", description: "WooCommerce store URL (e.g. https://mystore.com)" },
6332
+ consumer_key: { type: "string", description: "WooCommerce consumer key (ck_...)" },
6333
+ consumer_secret: { type: "string", description: "WooCommerce consumer secret (cs_...)" },
6334
+ action: { type: "string", description: "list or get (default: list)" },
6335
+ id: { type: "string", description: "Product ID for action='get'" },
6336
+ per_page: { type: "number" },
6337
+ page: { type: "number" },
6338
+ status: { type: "string", description: "publish, draft, pending, private" },
6339
+ category: { type: "string" },
6340
+ search: { type: "string" },
6341
+ orderby: { type: "string" },
6342
+ order: { type: "string" },
6343
+ },
6344
+ required: ["store_url", "consumer_key", "consumer_secret"],
6345
+ },
6346
+ },
6347
+ {
6348
+ name: "woo_orders",
6349
+ description: "List, get, or create WooCommerce orders.",
6350
+ inputSchema: {
6351
+ type: "object",
6352
+ properties: {
6353
+ store_url: { type: "string" },
6354
+ consumer_key: { type: "string" },
6355
+ consumer_secret: { type: "string" },
6356
+ action: { type: "string", description: "list, get, or create (default: list)" },
6357
+ id: { type: "string", description: "Order ID for action='get'" },
6358
+ order: { type: "object", description: "Order object for action='create'" },
6359
+ per_page: { type: "number" },
6360
+ page: { type: "number" },
6361
+ status: { type: "string", description: "pending, processing, completed, refunded, etc." },
6362
+ customer: { type: "number", description: "Filter by customer ID" },
6363
+ after: { type: "string", description: "ISO 8601 date for orders after this date" },
6364
+ before: { type: "string" },
6365
+ },
6366
+ required: ["store_url", "consumer_key", "consumer_secret"],
6367
+ },
6368
+ },
6369
+ {
6370
+ name: "woo_customers",
6371
+ description: "List WooCommerce customers.",
6372
+ inputSchema: {
6373
+ type: "object",
6374
+ properties: {
6375
+ store_url: { type: "string" },
6376
+ consumer_key: { type: "string" },
6377
+ consumer_secret: { type: "string" },
6378
+ per_page: { type: "number" },
6379
+ page: { type: "number" },
6380
+ search: { type: "string" },
6381
+ email: { type: "string" },
6382
+ role: { type: "string" },
6383
+ orderby: { type: "string" },
6384
+ order: { type: "string" },
6385
+ },
6386
+ required: ["store_url", "consumer_key", "consumer_secret"],
6387
+ },
6388
+ },
6389
+ // ── csuite-tool.ts ───────────────────────────────────────────────────────────
6390
+ {
6391
+ name: "csuite_analyze",
6392
+ description: "Run a C-Suite multi-perspective analysis on a business scenario.",
6393
+ inputSchema: {
6394
+ type: "object",
6395
+ properties: {
6396
+ scenario: { type: "string" },
6397
+ context: { type: "string" },
6398
+ perspectives: { type: "array", description: "e.g. [\"CEO\",\"CFO\",\"CTO\"]" },
6399
+ depth: { type: "string", description: "quick, standard, or deep" },
6400
+ focus: { type: "string" },
6401
+ },
6402
+ required: ["scenario"],
6403
+ },
6404
+ },
6405
+ // ── vault-tool.ts ────────────────────────────────────────────────────────────
6406
+ {
6407
+ name: "vault_action",
6408
+ description: "Perform a vault action: vault_init, vault_store, vault_retrieve, vault_list, vault_delete, vault_rotate, vault_audit.",
6409
+ inputSchema: {
6410
+ type: "object",
6411
+ properties: {
6412
+ action: { type: "string" },
6413
+ master_password: { type: "string" },
6414
+ key: { type: "string" },
6415
+ value: { type: "string" },
6416
+ encrypt: { type: "boolean" },
6417
+ },
6418
+ required: ["action", "master_password"],
6419
+ },
6420
+ },
6421
+ // ── github-tool.ts ───────────────────────────────────────────────────────────
6422
+ {
6423
+ name: "github_action",
6424
+ description: "Interact with the GitHub REST API: search repos, get repo details, list and create issues, list PRs, get user profiles, list gists, and search code.",
6425
+ inputSchema: {
6426
+ type: "object",
6427
+ properties: {
6428
+ action: { type: "string", description: "Action: search_repos, get_repo, list_issues, create_issue, list_prs, get_user, list_gists, search_code." },
6429
+ access_token: { type: "string", description: "GitHub personal access token (PAT). Public data works without a token." },
6430
+ query: { type: "string", description: "Search query string (for search_repos and search_code)." },
6431
+ owner: { type: "string", description: "Repository owner login." },
6432
+ repo: { type: "string", description: "Repository name." },
6433
+ title: { type: "string", description: "Issue title (for create_issue)." },
6434
+ body: { type: "string", description: "Issue body text (for create_issue)." },
6435
+ state: { type: "string", description: "Filter by state: open, closed, all." },
6436
+ labels: { type: "string", description: "Comma-separated label names to filter by." },
6437
+ username: { type: "string", description: "GitHub username (for get_user and list_gists)." },
6438
+ per_page: { type: "number", description: "Results per page (max 100)." },
6439
+ page: { type: "number", description: "Page number." },
6440
+ },
6441
+ required: ["action"],
6442
+ },
6443
+ },
6444
+ // ── gitlab-tool.ts ───────────────────────────────────────────────────────────
6445
+ {
6446
+ name: "gitlab_action",
6447
+ description: "Interact with the GitLab REST API: search projects, get project details, list issues and merge requests, and look up users. Supports self-hosted GitLab instances.",
6448
+ inputSchema: {
6449
+ type: "object",
6450
+ properties: {
6451
+ action: { type: "string", description: "Action: search_projects, get_project, list_issues, list_mrs, get_user." },
6452
+ access_token: { type: "string", description: "GitLab personal access token (PAT)." },
6453
+ base_url: { type: "string", description: "GitLab base URL (default: https://gitlab.com/api/v4). Set for self-hosted instances." },
6454
+ query: { type: "string", description: "Search query string (for search_projects)." },
6455
+ project_id: { type: "string", description: "Project ID or URL-encoded namespace/project path." },
6456
+ state: { type: "string", description: "Filter by state: opened, closed, merged." },
6457
+ labels: { type: "string", description: "Comma-separated label names to filter by." },
6458
+ username: { type: "string", description: "GitLab username (for get_user)." },
6459
+ per_page: { type: "number", description: "Results per page." },
6460
+ page: { type: "number", description: "Page number." },
6461
+ },
6462
+ required: ["action"],
6463
+ },
6464
+ },
6465
+ // ── clickup-tool.ts ──────────────────────────────────────────────────────────
6466
+ {
6467
+ name: "clickup_action",
6468
+ description: "Interact with the ClickUp API v2: list workspaces and spaces, get lists and tasks, create tasks, and update task properties.",
6469
+ inputSchema: {
6470
+ type: "object",
6471
+ properties: {
6472
+ action: { type: "string", description: "Action: get_workspaces, get_spaces, get_lists, get_tasks, create_task, update_task." },
6473
+ api_key: { type: "string", description: "ClickUp API key." },
6474
+ team_id: { type: "string", description: "Workspace (team) ID (for get_spaces)." },
6475
+ space_id: { type: "string", description: "Space ID (for get_lists without a folder)." },
6476
+ folder_id: { type: "string", description: "Folder ID (for get_lists)." },
6477
+ list_id: { type: "string", description: "List ID (for get_tasks and create_task)." },
6478
+ task_id: { type: "string", description: "Task ID (for update_task)." },
6479
+ name: { type: "string", description: "Task name (for create_task and update_task)." },
6480
+ description: { type: "string", description: "Task description." },
6481
+ status: { type: "string", description: "Task status name." },
6482
+ priority: { type: "number", description: "Priority: 1 (urgent), 2 (high), 3 (normal), 4 (low)." },
6483
+ due_date: { type: "number", description: "Due date as Unix timestamp in milliseconds." },
6484
+ page: { type: "number", description: "Page number for task pagination." },
6485
+ },
6486
+ required: ["action", "api_key"],
6487
+ },
6488
+ },
6489
+ // ── linear-tool.ts ───────────────────────────────────────────────────────────
6490
+ {
6491
+ name: "linear_action",
6492
+ description: "Interact with the Linear GraphQL API: list and search issues, create issues, get project details, and list teams.",
6493
+ inputSchema: {
6494
+ type: "object",
6495
+ properties: {
6496
+ action: { type: "string", description: "Action: list_issues, create_issue, get_project, list_teams, search_issues." },
6497
+ api_key: { type: "string", description: "Linear API key." },
6498
+ title: { type: "string", description: "Issue title (for create_issue)." },
6499
+ team_id: { type: "string", description: "Team ID (required for create_issue, optional filter for list_issues)." },
6500
+ project_id: { type: "string", description: "Project ID (for get_project)." },
6501
+ description: { type: "string", description: "Issue description." },
6502
+ priority: { type: "number", description: "Priority: 0 (none), 1 (urgent), 2 (high), 3 (medium), 4 (low)." },
6503
+ assignee_id: { type: "string", description: "Assignee user ID." },
6504
+ state_id: { type: "string", description: "Workflow state ID." },
6505
+ query: { type: "string", description: "Search term (for search_issues)." },
6506
+ first: { type: "number", description: "Number of results to return (default 25)." },
6507
+ },
6508
+ required: ["action", "api_key"],
6509
+ },
6510
+ },
6511
+ // ── airtable-tool.ts ─────────────────────────────────────────────────────────
6512
+ {
6513
+ name: "airtable_action",
6514
+ description: "Interact with the Airtable REST API: list bases, list and search records, get a single record, and create or update records.",
6515
+ inputSchema: {
6516
+ type: "object",
6517
+ properties: {
6518
+ action: { type: "string", description: "Action: list_bases, list_records, get_record, create_record, update_record, search_records." },
6519
+ access_token: { type: "string", description: "Airtable personal access token (PAT)." },
6520
+ base_id: { type: "string", description: "Airtable base ID (starts with 'app')." },
6521
+ table_name: { type: "string", description: "Table name or ID." },
6522
+ record_id: { type: "string", description: "Record ID (starts with 'rec')." },
6523
+ fields: { type: "object", description: "Record fields as key-value pairs (for create_record and update_record)." },
6524
+ formula: { type: "string", description: "Airtable filter formula string (for search_records)." },
6525
+ view: { type: "string", description: "View name or ID to use." },
6526
+ max_records: { type: "number", description: "Maximum number of records to return." },
6527
+ page_size: { type: "number", description: "Number of records per page (max 100)." },
6528
+ offset: { type: "string", description: "Pagination offset token." },
6529
+ },
6530
+ required: ["action", "access_token"],
6531
+ },
6532
+ },
6533
+ // ── trello-tool.ts ───────────────────────────────────────────────────────────
6534
+ {
6535
+ name: "trello_action",
6536
+ description: "Interact with the Trello REST API: list boards and lists, get and search cards, create cards, and update card properties.",
6537
+ inputSchema: {
6538
+ type: "object",
6539
+ properties: {
6540
+ action: { type: "string", description: "Action: get_boards, get_lists, get_cards, create_card, update_card, search_cards." },
6541
+ api_key: { type: "string", description: "Trello API key." },
6542
+ token: { type: "string", description: "Trello user token." },
6543
+ board_id: { type: "string", description: "Board ID." },
6544
+ list_id: { type: "string", description: "List ID." },
6545
+ card_id: { type: "string", description: "Card ID (for update_card)." },
6546
+ name: { type: "string", description: "Card name (for create_card and update_card)." },
6547
+ desc: { type: "string", description: "Card description." },
6548
+ due: { type: "string", description: "Due date as ISO 8601 string." },
6549
+ due_complete: { type: "boolean", description: "Whether the due date is marked complete." },
6550
+ closed: { type: "boolean", description: "Archive or unarchive the card." },
6551
+ id_list: { type: "string", description: "Move card to this list ID." },
6552
+ pos: { type: "string", description: "Card position: top, bottom, or a positive float." },
6553
+ query: { type: "string", description: "Search query (for search_cards)." },
6554
+ member_id: { type: "string", description: "Member ID for get_boards (default: me)." },
6555
+ filter: { type: "string", description: "Filter for boards or lists: open, closed, all." },
6556
+ limit: { type: "number", description: "Max results for search_cards." },
6557
+ },
6558
+ required: ["action", "api_key", "token"],
6559
+ },
6560
+ },
6561
+ // ── sentry-tool.ts ───────────────────────────────────────────────────────────
6562
+ {
6563
+ name: "sentry_action",
6564
+ description: "Interact with the Sentry REST API: list projects and issues, get issue details and events, and resolve issues.",
6565
+ inputSchema: {
6566
+ type: "object",
6567
+ properties: {
6568
+ action: { type: "string", description: "Action: list_projects, list_issues, get_issue, list_events, resolve_issue." },
6569
+ auth_token: { type: "string", description: "Sentry auth token." },
6570
+ organization_slug: { type: "string", description: "Sentry organization slug." },
6571
+ project_slug: { type: "string", description: "Sentry project slug." },
6572
+ issue_id: { type: "string", description: "Issue ID (for get_issue, list_events, resolve_issue)." },
6573
+ query: { type: "string", description: "Search query to filter issues." },
6574
+ stats_period: { type: "string", description: "Time window for issue stats: 24h, 14d, etc." },
6575
+ limit: { type: "number", description: "Max number of results." },
6576
+ cursor: { type: "string", description: "Pagination cursor." },
6577
+ },
6578
+ required: ["action", "auth_token"],
6579
+ },
6580
+ },
6581
+ // ── postman-tool.ts ──────────────────────────────────────────────────────────
6582
+ {
6583
+ name: "postman_action",
6584
+ description: "Interact with the Postman API: list and retrieve collections, list environments, and list monitors.",
6585
+ inputSchema: {
6586
+ type: "object",
6587
+ properties: {
6588
+ action: { type: "string", description: "Action: list_collections, get_collection, list_environments, list_monitors." },
6589
+ api_key: { type: "string", description: "Postman API key." },
6590
+ collection_id: { type: "string", description: "Collection UID (for get_collection)." },
6591
+ workspace_id: { type: "string", description: "Workspace ID to filter results." },
6592
+ },
6593
+ required: ["action", "api_key"],
6594
+ },
6595
+ },
6596
+ // ── twilio-tool.ts ────────────────────────────────────────────────────────────
6597
+ {
6598
+ name: "twilio_send_sms",
6599
+ description: "Send an SMS via Twilio.",
6600
+ inputSchema: {
6601
+ type: "object",
6602
+ properties: {
6603
+ account_sid: { type: "string" },
6604
+ auth_token: { type: "string" },
6605
+ to: { type: "string", description: "Recipient phone number in E.164 format" },
6606
+ from: { type: "string", description: "Your Twilio phone number or messaging service SID" },
6607
+ body: { type: "string", description: "Message text" },
6608
+ status_callback: { type: "string", description: "URL to receive status updates" },
6609
+ },
6610
+ required: ["account_sid", "auth_token", "to", "from", "body"],
6611
+ },
6612
+ },
6613
+ {
6614
+ name: "twilio_list_messages",
6615
+ description: "List SMS messages sent or received on a Twilio account.",
6616
+ inputSchema: {
6617
+ type: "object",
6618
+ properties: {
6619
+ account_sid: { type: "string" },
6620
+ auth_token: { type: "string" },
6621
+ to: { type: "string" },
6622
+ from: { type: "string" },
6623
+ date_sent: { type: "string", description: "Filter by date (YYYY-MM-DD)" },
6624
+ page_size: { type: "number" },
6625
+ },
6626
+ required: ["account_sid", "auth_token"],
6627
+ },
6628
+ },
6629
+ {
6630
+ name: "twilio_get_message",
6631
+ description: "Get a single Twilio message by SID.",
6632
+ inputSchema: {
6633
+ type: "object",
6634
+ properties: {
6635
+ account_sid: { type: "string" },
6636
+ auth_token: { type: "string" },
6637
+ message_sid: { type: "string" },
6638
+ },
6639
+ required: ["account_sid", "auth_token", "message_sid"],
6640
+ },
6641
+ },
6642
+ {
6643
+ name: "twilio_make_call",
6644
+ description: "Initiate an outbound phone call via Twilio.",
6645
+ inputSchema: {
6646
+ type: "object",
6647
+ properties: {
6648
+ account_sid: { type: "string" },
6649
+ auth_token: { type: "string" },
6650
+ to: { type: "string", description: "E.164 phone number to call" },
6651
+ from: { type: "string", description: "Your Twilio phone number" },
6652
+ twiml: { type: "string", description: "TwiML instructions for the call" },
6653
+ url: { type: "string", description: "URL that returns TwiML for the call" },
6654
+ },
6655
+ required: ["account_sid", "auth_token", "to", "from"],
6656
+ },
6657
+ },
6658
+ {
6659
+ name: "twilio_list_calls",
6660
+ description: "List outbound and inbound calls on a Twilio account.",
6661
+ inputSchema: {
6662
+ type: "object",
6663
+ properties: {
6664
+ account_sid: { type: "string" },
6665
+ auth_token: { type: "string" },
6666
+ to: { type: "string" },
6667
+ from: { type: "string" },
6668
+ status: { type: "string", description: "queued, ringing, in-progress, completed, failed, busy, no-answer" },
6669
+ page_size: { type: "number" },
6670
+ },
6671
+ required: ["account_sid", "auth_token"],
6672
+ },
6673
+ },
6674
+ {
6675
+ name: "twilio_send_verify",
6676
+ description: "Send a verification code via Twilio Verify (SMS, call, email, or WhatsApp).",
6677
+ inputSchema: {
6678
+ type: "object",
6679
+ properties: {
6680
+ account_sid: { type: "string" },
6681
+ auth_token: { type: "string" },
6682
+ service_sid: { type: "string", description: "Twilio Verify Service SID" },
6683
+ to: { type: "string", description: "E.164 phone number or email" },
6684
+ channel: { type: "string", description: "sms, call, email, or whatsapp (default: sms)" },
6685
+ },
6686
+ required: ["account_sid", "auth_token", "service_sid", "to"],
6687
+ },
6688
+ },
6689
+ {
6690
+ name: "twilio_check_verify",
6691
+ description: "Check a verification code submitted by a user via Twilio Verify.",
6692
+ inputSchema: {
6693
+ type: "object",
6694
+ properties: {
6695
+ account_sid: { type: "string" },
6696
+ auth_token: { type: "string" },
6697
+ service_sid: { type: "string" },
6698
+ to: { type: "string" },
6699
+ code: { type: "string", description: "The OTP code entered by the user" },
6700
+ },
6701
+ required: ["account_sid", "auth_token", "service_sid", "to", "code"],
6702
+ },
6703
+ },
6704
+ // ── pushover-tool.ts ──────────────────────────────────────────────────────────
6705
+ {
6706
+ name: "pushover_send_notification",
6707
+ description: "Send a push notification via Pushover.",
6708
+ inputSchema: {
6709
+ type: "object",
6710
+ properties: {
6711
+ app_token: { type: "string" },
6712
+ user_key: { type: "string" },
6713
+ message: { type: "string" },
6714
+ title: { type: "string" },
6715
+ url: { type: "string" },
6716
+ url_title: { type: "string" },
6717
+ priority: { type: "number", description: "-2 (lowest) to 2 (emergency)" },
6718
+ sound: { type: "string" },
6719
+ device: { type: "string" },
6720
+ html: { type: "boolean" },
6721
+ retry: { type: "number", description: "Emergency only: retry interval in seconds (min 30)" },
6722
+ expire: { type: "number", description: "Emergency only: expiry in seconds (max 10800)" },
6723
+ },
6724
+ required: ["app_token", "user_key", "message"],
6725
+ },
6726
+ },
6727
+ {
6728
+ name: "pushover_get_receipt",
6729
+ description: "Get acknowledgment status for an emergency Pushover notification.",
6730
+ inputSchema: {
6731
+ type: "object",
6732
+ properties: {
6733
+ app_token: { type: "string" },
6734
+ receipt: { type: "string", description: "Receipt token returned from an emergency notification" },
6735
+ },
6736
+ required: ["app_token", "receipt"],
6737
+ },
6738
+ },
6739
+ {
6740
+ name: "pushover_cancel_emergency",
6741
+ description: "Cancel an outstanding emergency Pushover notification before it expires.",
6742
+ inputSchema: {
6743
+ type: "object",
6744
+ properties: {
6745
+ app_token: { type: "string" },
6746
+ user_key: { type: "string" },
6747
+ receipt: { type: "string" },
6748
+ },
6749
+ required: ["app_token", "user_key", "receipt"],
6750
+ },
6751
+ },
6752
+ {
6753
+ name: "pushover_list_sounds",
6754
+ description: "List all available notification sounds in Pushover.",
6755
+ inputSchema: {
6756
+ type: "object",
6757
+ properties: {
6758
+ app_token: { type: "string" },
6759
+ },
6760
+ required: ["app_token"],
6761
+ },
6762
+ },
6763
+ {
6764
+ name: "pushover_validate_user",
6765
+ description: "Validate a Pushover user or group key and list their registered devices.",
6766
+ inputSchema: {
6767
+ type: "object",
6768
+ properties: {
6769
+ app_token: { type: "string" },
6770
+ user_key: { type: "string" },
6771
+ device: { type: "string", description: "Optional: validate only for a specific device name" },
6772
+ },
6773
+ required: ["app_token", "user_key"],
6774
+ },
6775
+ },
6776
+ // ── whatsapp-tool.ts ──────────────────────────────────────────────────────────
6777
+ {
6778
+ name: "whatsapp_send_text",
6779
+ description: "Send a text message via WhatsApp Business Cloud API.",
6780
+ inputSchema: {
6781
+ type: "object",
6782
+ properties: {
6783
+ bearer_token: { type: "string" },
6784
+ phone_number_id: { type: "string", description: "Your WhatsApp phone number ID from Meta for Developers" },
6785
+ to: { type: "string", description: "Recipient phone number in E.164 format" },
6786
+ body: { type: "string", description: "Message text" },
6787
+ preview_url: { type: "boolean" },
6788
+ },
6789
+ required: ["bearer_token", "phone_number_id", "to", "body"],
6790
+ },
6791
+ },
6792
+ {
6793
+ name: "whatsapp_send_template",
6794
+ description: "Send a WhatsApp template message (required for first contact or >24h since last message).",
6795
+ inputSchema: {
6796
+ type: "object",
6797
+ properties: {
6798
+ bearer_token: { type: "string" },
6799
+ phone_number_id: { type: "string" },
6800
+ to: { type: "string" },
6801
+ template_name: { type: "string" },
6802
+ language: { type: "string", description: "Language code, e.g. en_US (default)" },
6803
+ components: { description: "Array of template component objects for variable substitution" },
6804
+ },
6805
+ required: ["bearer_token", "phone_number_id", "to", "template_name"],
6806
+ },
6807
+ },
6808
+ {
6809
+ name: "whatsapp_send_media",
6810
+ description: "Send a media message (image, video, audio, document, sticker) via WhatsApp.",
6811
+ inputSchema: {
6812
+ type: "object",
6813
+ properties: {
6814
+ bearer_token: { type: "string" },
6815
+ phone_number_id: { type: "string" },
6816
+ to: { type: "string" },
6817
+ media_type: { type: "string", description: "image, video, audio, document, or sticker" },
6818
+ media_id: { type: "string", description: "ID of a previously uploaded media object" },
6819
+ media_link: { type: "string", description: "URL of the media to send" },
6820
+ caption: { type: "string" },
6821
+ filename: { type: "string", description: "For documents: the display filename" },
6822
+ },
6823
+ required: ["bearer_token", "phone_number_id", "to", "media_type"],
6824
+ },
6825
+ },
6826
+ {
6827
+ name: "whatsapp_get_media",
6828
+ description: "Get the download URL and metadata for a WhatsApp media object by ID.",
6829
+ inputSchema: {
6830
+ type: "object",
6831
+ properties: {
6832
+ bearer_token: { type: "string" },
6833
+ media_id: { type: "string" },
6834
+ },
6835
+ required: ["bearer_token", "media_id"],
6836
+ },
6837
+ },
6838
+ {
6839
+ name: "whatsapp_upload_media",
6840
+ description: "Upload a media file to WhatsApp and get a media ID for use in messages.",
6841
+ inputSchema: {
6842
+ type: "object",
6843
+ properties: {
6844
+ bearer_token: { type: "string" },
6845
+ phone_number_id: { type: "string" },
6846
+ media_url: { type: "string", description: "URL to fetch the media from" },
6847
+ mime_type: { type: "string", description: "MIME type, e.g. image/jpeg, video/mp4" },
6848
+ filename: { type: "string" },
6849
+ },
6850
+ required: ["bearer_token", "phone_number_id", "media_url", "mime_type"],
6851
+ },
6852
+ },
6853
+ // ── youtube-tool.ts ───────────────────────────────────────────────────────────
6854
+ {
6855
+ name: "youtube_search",
6856
+ description: "Search YouTube for videos, channels, or playlists.",
6857
+ inputSchema: {
6858
+ type: "object",
6859
+ properties: {
6860
+ api_key: { type: "string" },
6861
+ query: { type: "string" },
6862
+ type: { type: "string", description: "video, channel, or playlist (default: video)" },
6863
+ max_results: { type: "number" },
6864
+ order: { type: "string", description: "relevance, date, rating, viewCount, title" },
6865
+ channel_id: { type: "string" },
6866
+ published_after: { type: "string", description: "RFC 3339 datetime, e.g. 2024-01-01T00:00:00Z" },
6867
+ region_code: { type: "string" },
6868
+ page_token: { type: "string" },
6869
+ },
6870
+ required: ["api_key", "query"],
6871
+ },
6872
+ },
6873
+ {
6874
+ name: "youtube_get_video",
6875
+ description: "Get metadata, statistics, and content details for a YouTube video.",
6876
+ inputSchema: {
6877
+ type: "object",
6878
+ properties: {
6879
+ api_key: { type: "string" },
6880
+ video_id: { type: "string" },
6881
+ },
6882
+ required: ["api_key", "video_id"],
6883
+ },
6884
+ },
6885
+ {
6886
+ name: "youtube_get_channel",
6887
+ description: "Get metadata and statistics for a YouTube channel.",
6888
+ inputSchema: {
6889
+ type: "object",
6890
+ properties: {
6891
+ api_key: { type: "string" },
6892
+ channel_id: { type: "string" },
6893
+ handle: { type: "string", description: "Channel handle without @ (alternative to channel_id)" },
6894
+ },
6895
+ required: ["api_key"],
6896
+ },
6897
+ },
6898
+ {
6899
+ name: "youtube_list_playlists",
6900
+ description: "List playlists belonging to a YouTube channel.",
6901
+ inputSchema: {
6902
+ type: "object",
6903
+ properties: {
6904
+ api_key: { type: "string" },
6905
+ channel_id: { type: "string" },
6906
+ max_results: { type: "number" },
6907
+ page_token: { type: "string" },
6908
+ },
6909
+ required: ["api_key", "channel_id"],
6910
+ },
6911
+ },
6912
+ {
6913
+ name: "youtube_list_playlist_items",
6914
+ description: "List videos in a YouTube playlist.",
6915
+ inputSchema: {
6916
+ type: "object",
6917
+ properties: {
6918
+ api_key: { type: "string" },
6919
+ playlist_id: { type: "string" },
6920
+ max_results: { type: "number" },
6921
+ page_token: { type: "string" },
6922
+ },
6923
+ required: ["api_key", "playlist_id"],
6924
+ },
6925
+ },
6926
+ {
6927
+ name: "youtube_get_captions",
6928
+ description: "List available caption tracks for a YouTube video.",
6929
+ inputSchema: {
6930
+ type: "object",
6931
+ properties: {
6932
+ api_key: { type: "string" },
6933
+ video_id: { type: "string" },
6934
+ },
6935
+ required: ["api_key", "video_id"],
6936
+ },
6937
+ },
6938
+ // ── spotify-tool.ts ───────────────────────────────────────────────────────────
6939
+ {
6940
+ name: "spotify_search",
6941
+ description: "Search Spotify for tracks, albums, artists, or playlists.",
6942
+ inputSchema: {
6943
+ type: "object",
6944
+ properties: {
6945
+ bearer_token: { type: "string" },
6946
+ query: { type: "string" },
6947
+ type: { type: "string", description: "Comma-separated: track, album, artist, playlist (default: track)" },
6948
+ limit: { type: "number" },
6949
+ offset: { type: "number" },
6950
+ market: { type: "string" },
6951
+ },
6952
+ required: ["bearer_token", "query"],
6953
+ },
6954
+ },
6955
+ {
6956
+ name: "spotify_get_track",
6957
+ description: "Get metadata for a Spotify track by ID.",
6958
+ inputSchema: {
6959
+ type: "object",
6960
+ properties: {
6961
+ bearer_token: { type: "string" },
6962
+ track_id: { type: "string" },
6963
+ market: { type: "string" },
6964
+ },
6965
+ required: ["bearer_token", "track_id"],
6966
+ },
6967
+ },
6968
+ {
6969
+ name: "spotify_get_album",
6970
+ description: "Get metadata and track listing for a Spotify album.",
6971
+ inputSchema: {
6972
+ type: "object",
6973
+ properties: {
6974
+ bearer_token: { type: "string" },
6975
+ album_id: { type: "string" },
6976
+ },
6977
+ required: ["bearer_token", "album_id"],
6978
+ },
6979
+ },
6980
+ {
6981
+ name: "spotify_get_artist",
6982
+ description: "Get metadata and follower count for a Spotify artist.",
6983
+ inputSchema: {
6984
+ type: "object",
6985
+ properties: {
6986
+ bearer_token: { type: "string" },
6987
+ artist_id: { type: "string" },
6988
+ },
6989
+ required: ["bearer_token", "artist_id"],
6990
+ },
6991
+ },
6992
+ {
6993
+ name: "spotify_get_playlist",
6994
+ description: "Get metadata and tracks for a Spotify playlist.",
6995
+ inputSchema: {
6996
+ type: "object",
6997
+ properties: {
6998
+ bearer_token: { type: "string" },
6999
+ playlist_id: { type: "string" },
7000
+ market: { type: "string" },
7001
+ },
7002
+ required: ["bearer_token", "playlist_id"],
7003
+ },
7004
+ },
7005
+ {
7006
+ name: "spotify_get_recommendations",
7007
+ description: "Get Spotify track recommendations based on seed tracks, artists, or genres.",
7008
+ inputSchema: {
7009
+ type: "object",
7010
+ properties: {
7011
+ bearer_token: { type: "string" },
7012
+ seed_tracks: { type: "string", description: "Comma-separated Spotify track IDs (max 5 seeds total)" },
7013
+ seed_artists: { type: "string", description: "Comma-separated Spotify artist IDs" },
7014
+ seed_genres: { type: "string", description: "Comma-separated genre names" },
7015
+ limit: { type: "number" },
7016
+ market: { type: "string" },
7017
+ min_energy: { type: "number" },
7018
+ max_energy: { type: "number" },
7019
+ target_valence: { type: "number" },
7020
+ target_danceability: { type: "number" },
7021
+ },
7022
+ required: ["bearer_token"],
7023
+ },
7024
+ },
7025
+ {
7026
+ name: "spotify_get_audio_features",
7027
+ description: "Get audio analysis features (danceability, energy, tempo, etc.) for a Spotify track.",
7028
+ inputSchema: {
7029
+ type: "object",
7030
+ properties: {
7031
+ bearer_token: { type: "string" },
7032
+ track_id: { type: "string" },
7033
+ },
7034
+ required: ["bearer_token", "track_id"],
7035
+ },
7036
+ },
7037
+ // ── elevenlabs-tool.ts ────────────────────────────────────────────────────────
7038
+ {
7039
+ name: "elevenlabs_list_voices",
7040
+ description: "List all available voices in ElevenLabs.",
7041
+ inputSchema: {
7042
+ type: "object",
7043
+ properties: {
7044
+ api_key: { type: "string" },
7045
+ },
7046
+ required: ["api_key"],
7047
+ },
7048
+ },
7049
+ {
7050
+ name: "elevenlabs_get_voice",
7051
+ description: "Get metadata for a specific ElevenLabs voice by ID.",
7052
+ inputSchema: {
7053
+ type: "object",
7054
+ properties: {
7055
+ api_key: { type: "string" },
7056
+ voice_id: { type: "string" },
7057
+ with_settings: { type: "boolean", description: "Include voice settings (stability, similarity_boost)" },
7058
+ },
7059
+ required: ["api_key", "voice_id"],
7060
+ },
7061
+ },
7062
+ {
7063
+ name: "elevenlabs_text_to_speech",
7064
+ description: "Convert text to speech with a selected ElevenLabs voice. Returns base64-encoded audio.",
7065
+ inputSchema: {
7066
+ type: "object",
7067
+ properties: {
7068
+ api_key: { type: "string" },
7069
+ voice_id: { type: "string" },
7070
+ text: { type: "string", description: "Text to synthesize (max 5000 characters)" },
7071
+ model_id: { type: "string", description: "ElevenLabs model ID (default: eleven_monolingual_v1)" },
7072
+ output_format: { type: "string", description: "mp3_44100_128, pcm_16000, etc. (default: mp3_44100_128)" },
7073
+ stability: { type: "number", description: "0.0-1.0 (default: 0.5)" },
7074
+ similarity_boost: { type: "number", description: "0.0-1.0 (default: 0.75)" },
7075
+ style: { type: "number", description: "0.0-1.0 style exaggeration" },
7076
+ use_speaker_boost: { type: "boolean" },
7077
+ },
7078
+ required: ["api_key", "voice_id", "text"],
7079
+ },
7080
+ },
7081
+ {
7082
+ name: "elevenlabs_get_models",
7083
+ description: "List available ElevenLabs TTS models and their supported languages.",
7084
+ inputSchema: {
7085
+ type: "object",
7086
+ properties: {
7087
+ api_key: { type: "string" },
7088
+ },
7089
+ required: ["api_key"],
7090
+ },
7091
+ },
7092
+ {
7093
+ name: "elevenlabs_get_history",
7094
+ description: "Get the TTS generation history for an ElevenLabs account.",
7095
+ inputSchema: {
7096
+ type: "object",
7097
+ properties: {
7098
+ api_key: { type: "string" },
7099
+ page_size: { type: "number" },
7100
+ voice_id: { type: "string", description: "Filter history by voice ID" },
7101
+ start_after_history_item_id: { type: "string" },
7102
+ },
7103
+ required: ["api_key"],
7104
+ },
7105
+ },
7106
+ // ── replicate-tool.ts ─────────────────────────────────────────────────────────
7107
+ {
7108
+ name: "replicate_list_models",
7109
+ description: "List public models available on Replicate.",
7110
+ inputSchema: {
7111
+ type: "object",
7112
+ properties: {
7113
+ api_token: { type: "string" },
7114
+ cursor: { type: "string" },
7115
+ },
7116
+ required: ["api_token"],
7117
+ },
7118
+ },
7119
+ {
7120
+ name: "replicate_get_model",
7121
+ description: "Get details and latest version for a Replicate model.",
7122
+ inputSchema: {
7123
+ type: "object",
7124
+ properties: {
7125
+ api_token: { type: "string" },
7126
+ owner: { type: "string", description: "Model owner username" },
7127
+ model_name: { type: "string" },
7128
+ },
7129
+ required: ["api_token", "owner", "model_name"],
7130
+ },
7131
+ },
7132
+ {
7133
+ name: "replicate_create_prediction",
7134
+ description: "Run a Replicate model by creating a prediction.",
7135
+ inputSchema: {
7136
+ type: "object",
7137
+ properties: {
7138
+ api_token: { type: "string" },
7139
+ version: { type: "string", description: "Model version ID (use this OR model)" },
7140
+ model: { type: "string", description: "Model as owner/name or owner/name:version (use this OR version)" },
7141
+ input: { description: "Model input parameters as JSON object or string" },
7142
+ webhook: { type: "string" },
7143
+ stream: { type: "boolean" },
7144
+ },
7145
+ required: ["api_token", "input"],
7146
+ },
7147
+ },
7148
+ {
7149
+ name: "replicate_get_prediction",
7150
+ description: "Get the status and output of a Replicate prediction.",
7151
+ inputSchema: {
7152
+ type: "object",
7153
+ properties: {
7154
+ api_token: { type: "string" },
7155
+ prediction_id: { type: "string" },
7156
+ },
7157
+ required: ["api_token", "prediction_id"],
7158
+ },
7159
+ },
7160
+ {
7161
+ name: "replicate_list_predictions",
7162
+ description: "List recent predictions for a Replicate account.",
7163
+ inputSchema: {
7164
+ type: "object",
7165
+ properties: {
7166
+ api_token: { type: "string" },
7167
+ cursor: { type: "string" },
7168
+ },
7169
+ required: ["api_token"],
7170
+ },
7171
+ },
7172
+ {
7173
+ name: "replicate_cancel_prediction",
7174
+ description: "Cancel a running Replicate prediction.",
7175
+ inputSchema: {
7176
+ type: "object",
7177
+ properties: {
7178
+ api_token: { type: "string" },
7179
+ prediction_id: { type: "string" },
7180
+ },
7181
+ required: ["api_token", "prediction_id"],
7182
+ },
7183
+ },
7184
+ // ── stability-tool.ts ─────────────────────────────────────────────────────────
7185
+ {
7186
+ name: "stability_text_to_image",
7187
+ description: "Generate images from a text prompt using Stability AI.",
7188
+ inputSchema: {
7189
+ type: "object",
7190
+ properties: {
7191
+ api_key: { type: "string" },
7192
+ prompt: { type: "string" },
7193
+ engine_id: { type: "string", description: "Stability engine ID (default: stable-diffusion-xl-1024-v1-0)" },
7194
+ negative_prompt: { type: "string" },
7195
+ width: { type: "number" },
7196
+ height: { type: "number" },
7197
+ steps: { type: "number", description: "Diffusion steps 10-150 (default: 30)" },
7198
+ cfg_scale: { type: "number", description: "Guidance scale 0-35 (default: 7)" },
7199
+ samples: { type: "number", description: "Number of images (max 10, default: 1)" },
7200
+ style_preset: { type: "string" },
7201
+ seed: { type: "number" },
7202
+ },
7203
+ required: ["api_key", "prompt"],
7204
+ },
7205
+ },
7206
+ {
7207
+ name: "stability_image_to_image",
7208
+ description: "Transform an existing image using a text prompt with Stability AI.",
7209
+ inputSchema: {
7210
+ type: "object",
7211
+ properties: {
7212
+ api_key: { type: "string" },
7213
+ prompt: { type: "string" },
7214
+ image_url: { type: "string", description: "URL of the source image" },
7215
+ engine_id: { type: "string" },
7216
+ negative_prompt: { type: "string" },
7217
+ strength: { type: "number", description: "0.0-1.0: how much to change the image (default: 0.35)" },
7218
+ steps: { type: "number" },
7219
+ cfg_scale: { type: "number" },
7220
+ samples: { type: "number" },
7221
+ },
7222
+ required: ["api_key", "prompt", "image_url"],
7223
+ },
7224
+ },
7225
+ {
7226
+ name: "stability_upscale",
7227
+ description: "Upscale an image using Stability AI ESRGAN.",
7228
+ inputSchema: {
7229
+ type: "object",
7230
+ properties: {
7231
+ api_key: { type: "string" },
7232
+ image_url: { type: "string", description: "URL of the image to upscale" },
7233
+ width: { type: "number", description: "Target width in pixels (default: 2048)" },
7234
+ engine_id: { type: "string", description: "Upscale engine (default: esrgan-v1-x2plus)" },
7235
+ },
7236
+ required: ["api_key", "image_url"],
7237
+ },
7238
+ },
7239
+ {
7240
+ name: "stability_list_engines",
7241
+ description: "List all available Stability AI generation engines.",
7242
+ inputSchema: {
7243
+ type: "object",
7244
+ properties: {
7245
+ api_key: { type: "string" },
7246
+ },
7247
+ required: ["api_key"],
7248
+ },
7249
+ },
7250
+ // ── openai-tool.ts ────────────────────────────────────────────────────────────
7251
+ {
7252
+ name: "openai_chat_completion",
7253
+ description: "Run a chat completion with an OpenAI model (GPT-4o, GPT-4, etc.).",
7254
+ inputSchema: {
7255
+ type: "object",
7256
+ properties: {
7257
+ api_key: { type: "string" },
7258
+ model: { type: "string", description: "Model ID, e.g. gpt-4o, gpt-4o-mini (default: gpt-4o-mini)" },
7259
+ prompt: { type: "string", description: "Convenience: single user message (alternative to messages array)" },
7260
+ system_prompt: { type: "string", description: "System instruction (used with prompt param)" },
7261
+ messages: { description: "Array of {role, content} message objects (alternative to prompt)" },
7262
+ max_tokens: { type: "number" },
7263
+ temperature: { type: "number" },
7264
+ top_p: { type: "number" },
7265
+ n: { type: "number" },
7266
+ response_format: { description: "e.g. {type: 'json_object'}" },
7267
+ seed: { type: "number" },
7268
+ org_id: { type: "string", description: "OpenAI organization ID (optional)" },
7269
+ },
7270
+ required: ["api_key"],
7271
+ },
7272
+ },
7273
+ {
7274
+ name: "openai_create_embedding",
7275
+ description: "Create vector embeddings for text using an OpenAI embedding model.",
7276
+ inputSchema: {
7277
+ type: "object",
7278
+ properties: {
7279
+ api_key: { type: "string" },
7280
+ input: { description: "String or array of strings to embed" },
7281
+ model: { type: "string", description: "Embedding model (default: text-embedding-3-small)" },
7282
+ dimensions: { type: "number", description: "Number of output dimensions (for text-embedding-3-* models)" },
7283
+ org_id: { type: "string" },
7284
+ },
7285
+ required: ["api_key", "input"],
7286
+ },
7287
+ },
7288
+ {
7289
+ name: "openai_generate_image",
7290
+ description: "Generate images from a text prompt using DALL-E.",
7291
+ inputSchema: {
7292
+ type: "object",
7293
+ properties: {
7294
+ api_key: { type: "string" },
7295
+ prompt: { type: "string" },
7296
+ model: { type: "string", description: "dall-e-3 or dall-e-2 (default: dall-e-3)" },
7297
+ n: { type: "number", description: "Number of images to generate" },
7298
+ size: { type: "string", description: "1024x1024, 1792x1024, or 1024x1792 for DALL-E 3" },
7299
+ quality: { type: "string", description: "standard or hd (DALL-E 3 only)" },
7300
+ style: { type: "string", description: "natural or vivid (DALL-E 3 only)" },
7301
+ response_format: { type: "string", description: "url or b64_json (default: url)" },
7302
+ },
7303
+ required: ["api_key", "prompt"],
7304
+ },
7305
+ },
7306
+ {
7307
+ name: "openai_create_transcription",
7308
+ description: "Transcribe audio to text using OpenAI Whisper.",
7309
+ inputSchema: {
7310
+ type: "object",
7311
+ properties: {
7312
+ api_key: { type: "string" },
7313
+ audio_url: { type: "string", description: "URL of the audio file to transcribe" },
7314
+ model: { type: "string", description: "Transcription model (default: whisper-1)" },
7315
+ language: { type: "string", description: "ISO-639-1 language code (optional)" },
7316
+ response_format: { type: "string", description: "json, text, srt, verbose_json, vtt (default: json)" },
7317
+ prompt: { type: "string" },
7318
+ temperature: { type: "number" },
7319
+ filename: { type: "string" },
7320
+ },
7321
+ required: ["api_key", "audio_url"],
7322
+ },
7323
+ },
7324
+ {
7325
+ name: "openai_list_models",
7326
+ description: "List all OpenAI models available to the account.",
7327
+ inputSchema: {
7328
+ type: "object",
7329
+ properties: {
7330
+ api_key: { type: "string" },
7331
+ },
7332
+ required: ["api_key"],
7333
+ },
7334
+ },
7335
+ // ── anthropic-tool.ts ─────────────────────────────────────────────────────────
7336
+ {
7337
+ name: "anthropic_create_message",
7338
+ description: "Send a message to the Anthropic Messages API (Claude models). Useful for agents that need to call Claude programmatically or compare model outputs.",
7339
+ inputSchema: {
7340
+ type: "object",
7341
+ properties: {
7342
+ api_key: { type: "string" },
7343
+ model: { type: "string", description: "Claude model ID (default: claude-sonnet-4-6)" },
7344
+ prompt: { type: "string", description: "Convenience: single user message (alternative to messages array)" },
7345
+ messages: { description: "Array of {role, content} message objects" },
7346
+ system: { type: "string", description: "System prompt" },
7347
+ max_tokens: { type: "number", description: "Max tokens to generate (default: 1024)" },
7348
+ temperature: { type: "number" },
7349
+ top_p: { type: "number" },
7350
+ top_k: { type: "number" },
7351
+ stop_sequences: { description: "Array of stop sequences" },
7352
+ },
7353
+ required: ["api_key"],
7354
+ },
7355
+ },
7356
+ {
7357
+ name: "anthropic_list_models",
7358
+ description: "List all Claude models available via the Anthropic API.",
7359
+ inputSchema: {
7360
+ type: "object",
7361
+ properties: {
7362
+ api_key: { type: "string" },
7363
+ },
7364
+ required: ["api_key"],
7365
+ },
7366
+ },
7367
+ // ── asana-tool.ts ────────────────────────────────────────────────────────────
7368
+ {
7369
+ name: "list_asana_workspaces",
7370
+ description: "List all Asana workspaces accessible by the authenticated user.",
7371
+ inputSchema: {
7372
+ type: "object",
7373
+ properties: {
7374
+ api_key: { type: "string", description: "Asana Personal Access Token (or set ASANA_API_KEY)" },
7375
+ },
7376
+ },
7377
+ },
7378
+ {
7379
+ name: "list_asana_projects",
7380
+ description: "List projects in an Asana workspace.",
7381
+ inputSchema: {
7382
+ type: "object",
7383
+ properties: {
7384
+ workspace_gid: { type: "string", description: "Workspace GID" },
7385
+ archived: { type: "boolean", description: "Include archived projects (default false)" },
7386
+ limit: { type: "number", description: "Max results (default 100)" },
7387
+ api_key: { type: "string" },
7388
+ },
7389
+ required: ["workspace_gid"],
7390
+ },
7391
+ },
7392
+ {
7393
+ name: "list_asana_tasks",
7394
+ description: "List tasks in an Asana project.",
7395
+ inputSchema: {
7396
+ type: "object",
7397
+ properties: {
7398
+ project_gid: { type: "string", description: "Project GID" },
7399
+ completed: { type: "boolean", description: "Filter to completed tasks only" },
7400
+ limit: { type: "number" },
7401
+ api_key: { type: "string" },
7402
+ },
7403
+ required: ["project_gid"],
7404
+ },
7405
+ },
7406
+ {
7407
+ name: "create_asana_task",
7408
+ description: "Create a new task in Asana.",
7409
+ inputSchema: {
7410
+ type: "object",
7411
+ properties: {
7412
+ name: { type: "string", description: "Task name" },
7413
+ workspace_gid: { type: "string", description: "Workspace GID" },
7414
+ notes: { type: "string", description: "Task description" },
7415
+ due_on: { type: "string", description: "Due date (YYYY-MM-DD)" },
7416
+ assignee: { type: "string", description: "Assignee GID or 'me'" },
7417
+ projects: { type: "array", items: { type: "string" }, description: "Project GIDs to add the task to" },
7418
+ api_key: { type: "string" },
7419
+ },
7420
+ required: ["name", "workspace_gid"],
7421
+ },
7422
+ },
7423
+ {
7424
+ name: "update_asana_task",
7425
+ description: "Update an existing Asana task.",
7426
+ inputSchema: {
7427
+ type: "object",
7428
+ properties: {
7429
+ task_gid: { type: "string", description: "Task GID" },
7430
+ name: { type: "string" },
7431
+ notes: { type: "string" },
7432
+ completed: { type: "boolean" },
7433
+ due_on: { type: "string", description: "YYYY-MM-DD or null to clear" },
7434
+ assignee: { type: "string", description: "Assignee GID or null to unassign" },
7435
+ api_key: { type: "string" },
7436
+ },
7437
+ required: ["task_gid"],
7438
+ },
7439
+ },
7440
+ {
7441
+ name: "get_asana_task",
7442
+ description: "Get full details of a single Asana task.",
7443
+ inputSchema: {
7444
+ type: "object",
7445
+ properties: {
7446
+ task_gid: { type: "string", description: "Task GID" },
7447
+ api_key: { type: "string" },
7448
+ },
7449
+ required: ["task_gid"],
7450
+ },
7451
+ },
7452
+ {
7453
+ name: "search_asana_tasks",
7454
+ description: "Search tasks by text within an Asana workspace.",
7455
+ inputSchema: {
7456
+ type: "object",
7457
+ properties: {
7458
+ workspace_gid: { type: "string", description: "Workspace GID" },
7459
+ text: { type: "string", description: "Search query" },
7460
+ completed: { type: "boolean" },
7461
+ limit: { type: "number" },
7462
+ api_key: { type: "string" },
7463
+ },
7464
+ required: ["workspace_gid", "text"],
7465
+ },
7466
+ },
7467
+ // ── monday-tool.ts ───────────────────────────────────────────────────────────
7468
+ {
7469
+ name: "list_monday_boards",
7470
+ description: "List boards in a Monday.com account.",
7471
+ inputSchema: {
7472
+ type: "object",
7473
+ properties: {
7474
+ limit: { type: "number", description: "Max boards to return (default 25)" },
7475
+ api_key: { type: "string", description: "Monday.com API token (or set MONDAY_API_KEY)" },
7476
+ },
7477
+ },
7478
+ },
7479
+ {
7480
+ name: "get_monday_board",
7481
+ description: "Get details of a specific Monday.com board including columns and groups.",
7482
+ inputSchema: {
7483
+ type: "object",
7484
+ properties: {
7485
+ board_id: { type: "string", description: "Board ID" },
7486
+ api_key: { type: "string" },
7487
+ },
7488
+ required: ["board_id"],
7489
+ },
7490
+ },
7491
+ {
7492
+ name: "list_monday_items",
7493
+ description: "List items (rows) in a Monday.com board.",
7494
+ inputSchema: {
7495
+ type: "object",
7496
+ properties: {
7497
+ board_id: { type: "string", description: "Board ID" },
7498
+ limit: { type: "number", description: "Max items (default 50)" },
7499
+ api_key: { type: "string" },
7500
+ },
7501
+ required: ["board_id"],
7502
+ },
7503
+ },
7504
+ {
7505
+ name: "create_monday_item",
7506
+ description: "Create a new item in a Monday.com board.",
7507
+ inputSchema: {
7508
+ type: "object",
7509
+ properties: {
7510
+ board_id: { type: "string", description: "Board ID" },
7511
+ item_name: { type: "string", description: "Item name" },
7512
+ group_id: { type: "string", description: "Group ID to add the item to" },
7513
+ column_values: { type: "object", description: "Column values as JSON object" },
7514
+ api_key: { type: "string" },
7515
+ },
7516
+ required: ["board_id", "item_name"],
7517
+ },
7518
+ },
7519
+ {
7520
+ name: "update_monday_item",
7521
+ description: "Update a column value on a Monday.com item.",
7522
+ inputSchema: {
7523
+ type: "object",
7524
+ properties: {
7525
+ board_id: { type: "string" },
7526
+ item_id: { type: "string" },
7527
+ column_id: { type: "string", description: "Column ID to update" },
7528
+ value: { description: "New value (string or JSON)" },
7529
+ api_key: { type: "string" },
7530
+ },
7531
+ required: ["board_id", "item_id", "column_id", "value"],
7532
+ },
7533
+ },
7534
+ {
7535
+ name: "search_monday_items",
7536
+ description: "Search items by name in a Monday.com board.",
7537
+ inputSchema: {
7538
+ type: "object",
7539
+ properties: {
7540
+ board_id: { type: "string" },
7541
+ query: { type: "string", description: "Search text" },
7542
+ limit: { type: "number" },
7543
+ api_key: { type: "string" },
7544
+ },
7545
+ required: ["board_id", "query"],
7546
+ },
7547
+ },
7548
+ // ── calendly-tool.ts ─────────────────────────────────────────────────────────
7549
+ {
7550
+ name: "get_calendly_user",
7551
+ description: "Get the authenticated Calendly user profile.",
7552
+ inputSchema: {
7553
+ type: "object",
7554
+ properties: {
7555
+ api_key: { type: "string", description: "Calendly Personal Access Token (or set CALENDLY_API_KEY)" },
7556
+ },
7557
+ },
7558
+ },
7559
+ {
7560
+ name: "list_calendly_event_types",
7561
+ description: "List event types for the authenticated Calendly user.",
7562
+ inputSchema: {
7563
+ type: "object",
7564
+ properties: {
7565
+ user_uri: { type: "string", description: "User URI (auto-resolved if omitted)" },
7566
+ active: { type: "boolean", description: "Filter to active event types only" },
7567
+ count: { type: "number" },
7568
+ api_key: { type: "string" },
7569
+ },
7570
+ },
7571
+ },
7572
+ {
7573
+ name: "list_calendly_events",
7574
+ description: "List scheduled events for the authenticated Calendly user.",
7575
+ inputSchema: {
7576
+ type: "object",
7577
+ properties: {
7578
+ user_uri: { type: "string", description: "User URI (auto-resolved if omitted)" },
7579
+ status: { type: "string", description: "active or canceled" },
7580
+ min_start_time: { type: "string", description: "ISO 8601 datetime" },
7581
+ max_start_time: { type: "string", description: "ISO 8601 datetime" },
7582
+ count: { type: "number" },
7583
+ sort: { type: "string", description: "e.g. start_time:asc" },
7584
+ api_key: { type: "string" },
7585
+ },
7586
+ },
7587
+ },
7588
+ {
7589
+ name: "get_calendly_event",
7590
+ description: "Get details of a single Calendly scheduled event.",
7591
+ inputSchema: {
7592
+ type: "object",
7593
+ properties: {
7594
+ event_uuid: { type: "string", description: "Event UUID" },
7595
+ api_key: { type: "string" },
7596
+ },
7597
+ required: ["event_uuid"],
7598
+ },
7599
+ },
7600
+ {
7601
+ name: "list_calendly_invitees",
7602
+ description: "List invitees for a Calendly scheduled event.",
7603
+ inputSchema: {
7604
+ type: "object",
7605
+ properties: {
7606
+ event_uuid: { type: "string", description: "Event UUID" },
7607
+ status: { type: "string", description: "active or canceled" },
7608
+ count: { type: "number" },
7609
+ api_key: { type: "string" },
7610
+ },
7611
+ required: ["event_uuid"],
7612
+ },
7613
+ },
7614
+ // ── pinterest-tool.ts ────────────────────────────────────────────────────────
7615
+ {
7616
+ name: "list_pinterest_boards",
7617
+ description: "List Pinterest boards for the authenticated user.",
7618
+ inputSchema: {
7619
+ type: "object",
7620
+ properties: {
7621
+ page_size: { type: "number" },
7622
+ bookmark: { type: "string", description: "Pagination cursor" },
7623
+ privacy: { type: "string", description: "PUBLIC, PROTECTED, or SECRET" },
7624
+ access_token: { type: "string", description: "Pinterest access token (or set PINTEREST_ACCESS_TOKEN)" },
7625
+ },
7626
+ },
7627
+ },
7628
+ {
7629
+ name: "get_pinterest_board",
7630
+ description: "Get details of a specific Pinterest board.",
7631
+ inputSchema: {
7632
+ type: "object",
7633
+ properties: {
7634
+ board_id: { type: "string", description: "Board ID" },
7635
+ access_token: { type: "string" },
7636
+ },
7637
+ required: ["board_id"],
7638
+ },
7639
+ },
7640
+ {
7641
+ name: "list_pinterest_pins",
7642
+ description: "List pins on a Pinterest board.",
7643
+ inputSchema: {
7644
+ type: "object",
7645
+ properties: {
7646
+ board_id: { type: "string", description: "Board ID" },
7647
+ page_size: { type: "number" },
7648
+ bookmark: { type: "string" },
7649
+ access_token: { type: "string" },
7650
+ },
7651
+ required: ["board_id"],
7652
+ },
7653
+ },
7654
+ {
7655
+ name: "create_pinterest_pin",
7656
+ description: "Create a new Pinterest pin from an image URL.",
7657
+ inputSchema: {
7658
+ type: "object",
7659
+ properties: {
7660
+ board_id: { type: "string", description: "Board ID to pin to" },
7661
+ media_source_url: { type: "string", description: "Public image URL" },
7662
+ title: { type: "string" },
7663
+ description: { type: "string" },
7664
+ link: { type: "string", description: "Destination URL when pin is clicked" },
7665
+ board_section_id: { type: "string" },
7666
+ access_token: { type: "string" },
7667
+ },
7668
+ required: ["board_id", "media_source_url"],
7669
+ },
7670
+ },
7671
+ {
7672
+ name: "search_pinterest_pins",
7673
+ description: "Search Pinterest pins by keyword.",
7674
+ inputSchema: {
7675
+ type: "object",
7676
+ properties: {
7677
+ query: { type: "string", description: "Search query" },
7678
+ page_size: { type: "number" },
7679
+ bookmark: { type: "string" },
7680
+ access_token: { type: "string" },
7681
+ },
7682
+ required: ["query"],
7683
+ },
7684
+ },
7685
+ {
7686
+ name: "get_pinterest_user",
7687
+ description: "Get the authenticated Pinterest user account info.",
7688
+ inputSchema: {
7689
+ type: "object",
7690
+ properties: {
7691
+ access_token: { type: "string" },
7692
+ },
7693
+ },
7694
+ },
7695
+ // ── tiktok-tool.ts ───────────────────────────────────────────────────────────
7696
+ {
7697
+ name: "get_tiktok_user",
7698
+ description: "Get the authenticated TikTok user profile (follower count, video count, etc.).",
7699
+ inputSchema: {
7700
+ type: "object",
7701
+ properties: {
7702
+ access_token: { type: "string", description: "TikTok OAuth access token (or set TIKTOK_ACCESS_TOKEN)" },
7703
+ },
7704
+ },
7705
+ },
7706
+ {
7707
+ name: "list_tiktok_videos",
7708
+ description: "List videos for the authenticated TikTok user.",
7709
+ inputSchema: {
7710
+ type: "object",
7711
+ properties: {
7712
+ max_count: { type: "number", description: "Max videos to return (default 20, max 20)" },
7713
+ cursor: { type: "number", description: "Pagination cursor" },
7714
+ access_token: { type: "string" },
7715
+ },
7716
+ },
7717
+ },
7718
+ {
7719
+ name: "get_tiktok_video",
7720
+ description: "Get details of a specific TikTok video by ID.",
7721
+ inputSchema: {
7722
+ type: "object",
7723
+ properties: {
7724
+ video_id: { type: "string", description: "TikTok video ID" },
7725
+ access_token: { type: "string" },
7726
+ },
7727
+ required: ["video_id"],
7728
+ },
7729
+ },
7730
+ // ── steam-tool.ts ────────────────────────────────────────────────────────────
7731
+ {
7732
+ name: "get_steam_player_summaries",
7733
+ description: "Get Steam player profile summaries for one or more Steam IDs.",
7734
+ inputSchema: {
7735
+ type: "object",
7736
+ properties: {
7737
+ steamids: { type: "string", description: "Comma-separated Steam64 IDs (up to 100)" },
7738
+ api_key: { type: "string", description: "Steam Web API key (or set STEAM_API_KEY)" },
7739
+ },
7740
+ required: ["steamids"],
7741
+ },
7742
+ },
7743
+ {
7744
+ name: "get_steam_owned_games",
7745
+ description: "Get games owned by a Steam user.",
7746
+ inputSchema: {
7747
+ type: "object",
7748
+ properties: {
7749
+ steamid: { type: "string", description: "Steam64 ID" },
7750
+ include_appinfo: { type: "boolean", description: "Include game names (default true)" },
7751
+ include_played_free_games: { type: "boolean" },
7752
+ api_key: { type: "string" },
7753
+ },
7754
+ required: ["steamid"],
7755
+ },
7756
+ },
7757
+ {
7758
+ name: "get_steam_achievements",
7759
+ description: "Get achievements for a Steam user in a specific game.",
7760
+ inputSchema: {
7761
+ type: "object",
7762
+ properties: {
7763
+ steamid: { type: "string", description: "Steam64 ID" },
7764
+ appid: { type: "string", description: "Steam App ID of the game" },
7765
+ api_key: { type: "string" },
7766
+ },
7767
+ required: ["steamid", "appid"],
7768
+ },
7769
+ },
7770
+ {
7771
+ name: "get_steam_app_details",
7772
+ description: "Get store details for a Steam app (game info, price, platforms, Metacritic score).",
7773
+ inputSchema: {
7774
+ type: "object",
7775
+ properties: {
7776
+ appid: { type: "string", description: "Steam App ID" },
7777
+ cc: { type: "string", description: "Country code for pricing (e.g. us, au)" },
7778
+ l: { type: "string", description: "Language code (e.g. english)" },
7779
+ },
7780
+ required: ["appid"],
7781
+ },
7782
+ },
7783
+ {
7784
+ name: "search_steam_store",
7785
+ description: "Search the Steam store for games by name.",
7786
+ inputSchema: {
7787
+ type: "object",
7788
+ properties: {
7789
+ term: { type: "string", description: "Search term" },
7790
+ cc: { type: "string", description: "Country code for pricing" },
7791
+ l: { type: "string", description: "Language code" },
7792
+ },
7793
+ required: ["term"],
7794
+ },
7795
+ },
7796
+ // ── igdb-tool.ts ─────────────────────────────────────────────────────────────
7797
+ {
7798
+ name: "igdb_search_games",
7799
+ description: "Search the IGDB games database by name.",
7800
+ inputSchema: {
7801
+ type: "object",
7802
+ properties: {
7803
+ query: { type: "string", description: "Game name to search for" },
7804
+ limit: { type: "number", description: "Max results (default 10, max 50)" },
7805
+ client_id: { type: "string", description: "Twitch/IGDB Client ID (or set IGDB_CLIENT_ID)" },
7806
+ client_secret: { type: "string", description: "Twitch/IGDB Client Secret (or set IGDB_CLIENT_SECRET)" },
7807
+ },
7808
+ required: ["query"],
7809
+ },
7810
+ },
7811
+ {
7812
+ name: "igdb_get_game",
7813
+ description: "Get full details of a game from IGDB by game ID.",
7814
+ inputSchema: {
7815
+ type: "object",
7816
+ properties: {
7817
+ game_id: { type: "string", description: "IGDB game ID" },
7818
+ client_id: { type: "string" },
7819
+ client_secret: { type: "string" },
7820
+ },
7821
+ required: ["game_id"],
7822
+ },
7823
+ },
7824
+ {
7825
+ name: "igdb_list_platforms",
7826
+ description: "List gaming platforms from IGDB.",
7827
+ inputSchema: {
7828
+ type: "object",
7829
+ properties: {
7830
+ limit: { type: "number", description: "Max results (default 30)" },
7831
+ offset: { type: "number" },
7832
+ client_id: { type: "string" },
7833
+ client_secret: { type: "string" },
7834
+ },
7835
+ },
7836
+ },
7837
+ {
7838
+ name: "igdb_list_genres",
7839
+ description: "List all game genres from IGDB.",
7840
+ inputSchema: {
7841
+ type: "object",
7842
+ properties: {
7843
+ client_id: { type: "string" },
7844
+ client_secret: { type: "string" },
7845
+ },
7846
+ },
7847
+ },
7848
+ {
7849
+ name: "igdb_get_company",
7850
+ description: "Get a game company from IGDB by name or ID.",
7851
+ inputSchema: {
7852
+ type: "object",
7853
+ properties: {
7854
+ name: { type: "string", description: "Company name to search for" },
7855
+ company_id: { type: "string", description: "IGDB company ID (takes precedence over name)" },
7856
+ client_id: { type: "string" },
7857
+ client_secret: { type: "string" },
7858
+ },
7859
+ },
7860
+ },
7861
+ // ── speedrun-tool.ts ─────────────────────────────────────────────────────────
7862
+ {
7863
+ name: "speedrun_search_games",
7864
+ description: "Search for games on Speedrun.com by name. No API key required.",
7865
+ inputSchema: {
7866
+ type: "object",
7867
+ properties: {
7868
+ name: { type: "string", description: "Game name to search" },
7869
+ max: { type: "number", description: "Max results" },
7870
+ },
7871
+ required: ["name"],
7872
+ },
7873
+ },
7874
+ {
7875
+ name: "speedrun_get_game",
7876
+ description: "Get details of a game on Speedrun.com including categories and levels.",
7877
+ inputSchema: {
7878
+ type: "object",
7879
+ properties: {
7880
+ game_id: { type: "string", description: "Speedrun.com game ID or abbreviation" },
7881
+ },
7882
+ required: ["game_id"],
7883
+ },
7884
+ },
7885
+ {
7886
+ name: "speedrun_get_leaderboard",
7887
+ description: "Get the leaderboard for a Speedrun.com game category.",
7888
+ inputSchema: {
7889
+ type: "object",
7890
+ properties: {
7891
+ game_id: { type: "string", description: "Game ID" },
7892
+ category_id: { type: "string", description: "Category ID" },
7893
+ top: { type: "number", description: "Only return top N places" },
7894
+ platform: { type: "string" },
7895
+ emulators: { type: "boolean" },
7896
+ video_only: { type: "boolean" },
7897
+ },
7898
+ required: ["game_id", "category_id"],
7899
+ },
7900
+ },
7901
+ {
7902
+ name: "speedrun_list_runs",
7903
+ description: "List speedruns with optional filters for game, category, user, or status.",
7904
+ inputSchema: {
7905
+ type: "object",
7906
+ properties: {
7907
+ game: { type: "string", description: "Game ID" },
7908
+ category: { type: "string" },
7909
+ user: { type: "string", description: "User ID" },
7910
+ status: { type: "string", description: "new, verified, or rejected" },
7911
+ orderby: { type: "string", description: "date, submitted, status, game, category, level, platform, region, emulated, or weblink" },
7912
+ direction: { type: "string", description: "asc or desc" },
7913
+ max: { type: "number" },
7914
+ },
7915
+ },
7916
+ },
7917
+ {
7918
+ name: "speedrun_get_user",
7919
+ description: "Get a Speedrun.com user profile by ID or username.",
7920
+ inputSchema: {
7921
+ type: "object",
7922
+ properties: {
7923
+ user_id: { type: "string", description: "User ID or username" },
7924
+ },
7925
+ required: ["user_id"],
7926
+ },
7927
+ },
7928
+ // ── exchangerate-tool.ts ─────────────────────────────────────────────────────
7929
+ {
7930
+ name: "exchangerate_latest",
7931
+ description: "Get latest currency exchange rates for a base currency. Works without API key using the free tier.",
7932
+ inputSchema: {
7933
+ type: "object",
7934
+ properties: {
7935
+ base: { type: "string", description: "Base currency code (default USD)" },
7936
+ api_key: { type: "string", description: "ExchangeRate-API key (or set EXCHANGERATE_API_KEY). Optional for latest rates." },
7937
+ },
7938
+ },
7939
+ },
7940
+ {
7941
+ name: "exchangerate_convert",
7942
+ description: "Convert an amount from one currency to another.",
7943
+ inputSchema: {
7944
+ type: "object",
7945
+ properties: {
7946
+ from: { type: "string", description: "Source currency code (e.g. USD)" },
7947
+ to: { type: "string", description: "Target currency code (e.g. EUR)" },
7948
+ amount: { type: "number", description: "Amount to convert (default 1)" },
7949
+ api_key: { type: "string", description: "Optional for conversion (uses latest rates if omitted)" },
7950
+ },
7951
+ required: ["from", "to"],
7952
+ },
7953
+ },
7954
+ {
7955
+ name: "exchangerate_historical",
7956
+ description: "Get historical exchange rates for a specific date. Requires an API key.",
7957
+ inputSchema: {
7958
+ type: "object",
7959
+ properties: {
7960
+ base: { type: "string", description: "Base currency code (default USD)" },
7961
+ year: { type: "string", description: "4-digit year" },
7962
+ month: { type: "string", description: "Month number (1-12)" },
7963
+ day: { type: "string", description: "Day number (1-31)" },
7964
+ api_key: { type: "string", description: "ExchangeRate-API key (required)" },
7965
+ },
7966
+ required: ["year", "month", "day"],
7967
+ },
7968
+ },
7969
+ {
7970
+ name: "exchangerate_codes",
7971
+ description: "List all supported currency codes and their names. Requires an API key.",
7972
+ inputSchema: {
7973
+ type: "object",
7974
+ properties: {
7975
+ api_key: { type: "string", description: "ExchangeRate-API key (required)" },
5586
7976
  },
5587
- required: ["action", "master_password"],
5588
7977
  },
5589
7978
  },
5590
7979
  ];
@@ -5899,6 +8288,11 @@ export const ADDITIONAL_HANDLERS = {
5899
8288
  radio_top_voted: (args) => radioTopVoted(args),
5900
8289
  radio_by_tag: (args) => radioByTag(args),
5901
8290
  radio_countries: (args) => radioCountries(args),
8291
+ // gdelt-tool.ts
8292
+ gdelt_news_search: (args) => gdeltNewsSearch(args),
8293
+ gdelt_tone_analysis: (args) => gdeltToneAnalysis(args),
8294
+ gdelt_geo_events: (args) => gdeltGeoEvents(args),
8295
+ gdelt_trending: (args) => gdeltTrending(args),
5902
8296
  // numbers-tool.ts
5903
8297
  number_fact: (args) => numberFact(args),
5904
8298
  number_random: (args) => numberRandom(args),
@@ -6092,6 +8486,21 @@ export const ADDITIONAL_HANDLERS = {
6092
8486
  telegram_send_media: (args) => telegramSendMedia(args),
6093
8487
  telegram_get_updates: (args) => telegramGetUpdates(args),
6094
8488
  telegram_manage_chat: (args) => telegramManageChat(args),
8489
+ // line-tool.ts
8490
+ line_send_message: (args) => lineSendMessage(args),
8491
+ line_send_flex_message: (args) => lineSendFlexMessage(args),
8492
+ line_get_profile: (args) => lineGetProfile(args),
8493
+ line_get_group_summary: (args) => lineGetGroupSummary(args),
8494
+ line_reply_message: (args) => lineReplyMessage(args),
8495
+ line_broadcast: (args) => lineBroadcast(args),
8496
+ // figma-tool.ts
8497
+ figma_get_file: (args) => figmaGetFile(args),
8498
+ figma_get_node: (args) => figmaGetNode(args),
8499
+ figma_get_images: (args) => figmaGetImages(args),
8500
+ figma_get_comments: (args) => figmaGetComments(args),
8501
+ figma_post_comment: (args) => figmaPostComment(args),
8502
+ figma_get_components: (args) => figmaGetComponents(args),
8503
+ figma_get_team_projects: (args) => figmaGetTeamProjects(args),
6095
8504
  // amazon-tool.ts
6096
8505
  amazon_search: (args) => amazonSearch(args),
6097
8506
  amazon_product: (args) => amazonProduct(args),
@@ -6120,6 +8529,47 @@ export const ADDITIONAL_HANDLERS = {
6120
8529
  xero_reports: (args) => xeroReports(args),
6121
8530
  xero_quotes: (args) => xeroQuotes(args),
6122
8531
  xero_organisation: (args) => xeroOrganisation(args),
8532
+ // ebay-tool.ts
8533
+ ebay_search: (args) => ebaySearch(args),
8534
+ ebay_get_item: (args) => ebayGetItem(args),
8535
+ ebay_get_item_by_legacy_id: (args) => ebayGetItemByLegacyId(args),
8536
+ ebay_get_categories: (args) => ebayGetCategories(args),
8537
+ // etsy-tool.ts
8538
+ etsy_search_listings: (args) => etsySearchListings(args),
8539
+ etsy_get_listing: (args) => etsyGetListing(args),
8540
+ etsy_get_shop: (args) => etsyGetShop(args),
8541
+ etsy_get_shop_listings: (args) => etsyGetShopListings(args),
8542
+ etsy_search_shops: (args) => etsySearchShops(args),
8543
+ // stripe-tool.ts
8544
+ stripe_customers: (args) => stripeCustomers(args),
8545
+ stripe_charges: (args) => stripeCharges(args),
8546
+ stripe_subscriptions: (args) => stripeSubscriptions(args),
8547
+ stripe_invoices: (args) => stripeInvoices(args),
8548
+ stripe_products: (args) => stripeProducts(args),
8549
+ stripe_prices: (args) => stripePrices(args),
8550
+ // paypal-tool.ts
8551
+ paypal_orders: (args) => paypalOrders(args),
8552
+ paypal_invoices: (args) => paypalInvoices(args),
8553
+ // square-tool.ts
8554
+ square_payments: (args) => squarePayments(args),
8555
+ square_customers: (args) => squareCustomers(args),
8556
+ square_catalog_list: (args) => squareCatalogList(args),
8557
+ square_catalog_search: (args) => squareCatalogSearch(args),
8558
+ // quickbooks-tool.ts
8559
+ quickbooks_customers: (args) => quickbooksCustomers(args),
8560
+ quickbooks_invoices: (args) => quickbooksInvoices(args),
8561
+ quickbooks_items: (args) => quickbooksItems(args),
8562
+ quickbooks_payments: (args) => quickbooksPayments(args),
8563
+ // plaid-tool.ts
8564
+ plaid_accounts: (args) => plaidAccounts(args),
8565
+ plaid_transactions: (args) => plaidTransactions(args),
8566
+ plaid_balances: (args) => plaidBalances(args),
8567
+ plaid_identity: (args) => plaidIdentity(args),
8568
+ plaid_link_token_create: (args) => plaidLinkTokenCreate(args),
8569
+ // woocommerce-tool.ts
8570
+ woo_products: (args) => wooProducts(args),
8571
+ woo_orders: (args) => wooOrders(args),
8572
+ woo_customers: (args) => wooCustomers(args),
6123
8573
  // csuite-tool.ts
6124
8574
  csuite_analyze: (args) => Promise.resolve(csuitAnalyze(String(args.scenario ?? ""), {
6125
8575
  context: args.context ? String(args.context) : undefined,
@@ -6129,5 +8579,138 @@ export const ADDITIONAL_HANDLERS = {
6129
8579
  })),
6130
8580
  // vault-tool.ts
6131
8581
  vault_action: (args) => vaultAction(String(args.action ?? ""), args),
8582
+ // github-tool.ts
8583
+ github_action: (args) => githubAction(String(args.action ?? ""), args),
8584
+ // gitlab-tool.ts
8585
+ gitlab_action: (args) => gitlabAction(String(args.action ?? ""), args),
8586
+ // clickup-tool.ts
8587
+ clickup_action: (args) => clickupAction(String(args.action ?? ""), args),
8588
+ // linear-tool.ts
8589
+ linear_action: (args) => linearAction(String(args.action ?? ""), args),
8590
+ // airtable-tool.ts
8591
+ airtable_action: (args) => airtableAction(String(args.action ?? ""), args),
8592
+ // trello-tool.ts
8593
+ trello_action: (args) => trelloAction(String(args.action ?? ""), args),
8594
+ // sentry-tool.ts
8595
+ sentry_action: (args) => sentryAction(String(args.action ?? ""), args),
8596
+ // postman-tool.ts
8597
+ postman_action: (args) => postmanAction(String(args.action ?? ""), args),
8598
+ // twilio-tool.ts
8599
+ twilio_send_sms: (args) => twilioSendSms(args),
8600
+ twilio_list_messages: (args) => twilioListMessages(args),
8601
+ twilio_get_message: (args) => twilioGetMessage(args),
8602
+ twilio_make_call: (args) => twilioMakeCall(args),
8603
+ twilio_list_calls: (args) => twilioListCalls(args),
8604
+ twilio_send_verify: (args) => twilioSendVerify(args),
8605
+ twilio_check_verify: (args) => twilioCheckVerify(args),
8606
+ // pushover-tool.ts
8607
+ pushover_send_notification: (args) => pushoverSendNotification(args),
8608
+ pushover_get_receipt: (args) => pushoverGetReceipt(args),
8609
+ pushover_cancel_emergency: (args) => pushoverCancelEmergency(args),
8610
+ pushover_list_sounds: (args) => pushoverListSounds(args),
8611
+ pushover_validate_user: (args) => pushoverValidateUser(args),
8612
+ // whatsapp-tool.ts
8613
+ whatsapp_send_text: (args) => whatsappSendText(args),
8614
+ whatsapp_send_template: (args) => whatsappSendTemplate(args),
8615
+ whatsapp_send_media: (args) => whatsappSendMedia(args),
8616
+ whatsapp_get_media: (args) => whatsappGetMedia(args),
8617
+ whatsapp_upload_media: (args) => whatsappUploadMedia(args),
8618
+ // youtube-tool.ts
8619
+ youtube_search: (args) => youtubeSearch(args),
8620
+ youtube_get_video: (args) => youtubeGetVideo(args),
8621
+ youtube_get_channel: (args) => youtubeGetChannel(args),
8622
+ youtube_list_playlists: (args) => youtubeListPlaylists(args),
8623
+ youtube_list_playlist_items: (args) => youtubeListPlaylistItems(args),
8624
+ youtube_get_captions: (args) => youtubeGetCaptions(args),
8625
+ // spotify-tool.ts
8626
+ spotify_search: (args) => spotifySearch(args),
8627
+ spotify_get_track: (args) => spotifyGetTrack(args),
8628
+ spotify_get_album: (args) => spotifyGetAlbum(args),
8629
+ spotify_get_artist: (args) => spotifyGetArtist(args),
8630
+ spotify_get_playlist: (args) => spotifyGetPlaylist(args),
8631
+ spotify_get_recommendations: (args) => spotifyGetRecommendations(args),
8632
+ spotify_get_audio_features: (args) => spotifyGetAudioFeatures(args),
8633
+ // elevenlabs-tool.ts
8634
+ elevenlabs_list_voices: (args) => elevenlabsListVoices(args),
8635
+ elevenlabs_get_voice: (args) => elevenlabsGetVoice(args),
8636
+ elevenlabs_text_to_speech: (args) => elevenlabsTextToSpeech(args),
8637
+ elevenlabs_get_models: (args) => elevenlabsGetModels(args),
8638
+ elevenlabs_get_history: (args) => elevenlabsGetHistory(args),
8639
+ // replicate-tool.ts
8640
+ replicate_list_models: (args) => replicateListModels(args),
8641
+ replicate_get_model: (args) => replicateGetModel(args),
8642
+ replicate_create_prediction: (args) => replicateCreatePrediction(args),
8643
+ replicate_get_prediction: (args) => replicateGetPrediction(args),
8644
+ replicate_list_predictions: (args) => replicateListPredictions(args),
8645
+ replicate_cancel_prediction: (args) => replicateCancelPrediction(args),
8646
+ // stability-tool.ts
8647
+ stability_text_to_image: (args) => stabilityTextToImage(args),
8648
+ stability_image_to_image: (args) => stabilityImageToImage(args),
8649
+ stability_upscale: (args) => stabilityUpscale(args),
8650
+ stability_list_engines: (args) => stabilityListEngines(args),
8651
+ // openai-tool.ts
8652
+ openai_chat_completion: (args) => openaiChatCompletion(args),
8653
+ openai_create_embedding: (args) => openaiCreateEmbedding(args),
8654
+ openai_generate_image: (args) => openaiGenerateImage(args),
8655
+ openai_create_transcription: (args) => openaiCreateTranscription(args),
8656
+ openai_list_models: (args) => openaiListModels(args),
8657
+ // anthropic-tool.ts
8658
+ anthropic_create_message: (args) => anthropicCreateMessage(args),
8659
+ anthropic_list_models: (args) => anthropicListModels(args),
8660
+ // asana-tool.ts
8661
+ list_asana_workspaces: (args) => listAsanaWorkspaces(args),
8662
+ list_asana_projects: (args) => listAsanaProjects(args),
8663
+ list_asana_tasks: (args) => listAsanaTasks(args),
8664
+ create_asana_task: (args) => createAsanaTask(args),
8665
+ update_asana_task: (args) => updateAsanaTask(args),
8666
+ get_asana_task: (args) => getAsanaTask(args),
8667
+ search_asana_tasks: (args) => searchAsanaTasks(args),
8668
+ // monday-tool.ts
8669
+ list_monday_boards: (args) => listMondayBoards(args),
8670
+ get_monday_board: (args) => getMondayBoard(args),
8671
+ list_monday_items: (args) => listMondayItems(args),
8672
+ create_monday_item: (args) => createMondayItem(args),
8673
+ update_monday_item: (args) => updateMondayItem(args),
8674
+ search_monday_items: (args) => searchMondayItems(args),
8675
+ // calendly-tool.ts
8676
+ get_calendly_user: (args) => getCalendlyUser(args),
8677
+ list_calendly_event_types: (args) => listCalendlyEventTypes(args),
8678
+ list_calendly_events: (args) => listCalendlyEvents(args),
8679
+ get_calendly_event: (args) => getCalendlyEvent(args),
8680
+ list_calendly_invitees: (args) => listCalendlyInvitees(args),
8681
+ // pinterest-tool.ts
8682
+ list_pinterest_boards: (args) => listPinterestBoards(args),
8683
+ get_pinterest_board: (args) => getPinterestBoard(args),
8684
+ list_pinterest_pins: (args) => listPinterestPins(args),
8685
+ create_pinterest_pin: (args) => createPinterestPin(args),
8686
+ search_pinterest_pins: (args) => searchPinterestPins(args),
8687
+ get_pinterest_user: (args) => getPinterestUser(args),
8688
+ // tiktok-tool.ts
8689
+ get_tiktok_user: (args) => getTiktokUser(args),
8690
+ list_tiktok_videos: (args) => listTiktokVideos(args),
8691
+ get_tiktok_video: (args) => getTiktokVideo(args),
8692
+ // steam-tool.ts
8693
+ get_steam_player_summaries: (args) => getSteamPlayerSummaries(args),
8694
+ get_steam_owned_games: (args) => getSteamOwnedGames(args),
8695
+ get_steam_achievements: (args) => getSteamAchievements(args),
8696
+ get_steam_app_details: (args) => getSteamAppDetails(args),
8697
+ search_steam_store: (args) => searchSteamStore(args),
8698
+ // igdb-tool.ts
8699
+ igdb_search_games: (args) => igdbSearchGames(args),
8700
+ igdb_get_game: (args) => igdbGetGame(args),
8701
+ igdb_list_platforms: (args) => igdbListPlatforms(args),
8702
+ igdb_list_genres: (args) => igdbListGenres(args),
8703
+ igdb_get_company: (args) => igdbGetCompany(args),
8704
+ // speedrun-tool.ts
8705
+ speedrun_search_games: (args) => speedrunSearchGames(args),
8706
+ speedrun_get_game: (args) => speedrunGetGame(args),
8707
+ speedrun_get_leaderboard: (args) => speedrunGetLeaderboard(args),
8708
+ speedrun_list_runs: (args) => speedrunListRuns(args),
8709
+ speedrun_get_user: (args) => speedrunGetUser(args),
8710
+ // exchangerate-tool.ts
8711
+ exchangerate_latest: (args) => exchangerateLatest(args),
8712
+ exchangerate_convert: (args) => exchangerateConvert(args),
8713
+ exchangerate_historical: (args) => exchangerateHistorical(args),
8714
+ exchangerate_codes: (args) => exchangerateCodes(args),
6132
8715
  };
6133
8716
  //# sourceMappingURL=tool-wiring.js.map