@oomol-lab/open-connector 1.9.1 → 1.9.2

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 (461) hide show
  1. package/assets/open-connector/catalog/apps/aisa.json +1946 -56
  2. package/assets/open-connector/catalog/apps/akta.json +1181 -0
  3. package/assets/open-connector/catalog/apps/asana.json +110 -0
  4. package/assets/open-connector/catalog/apps/calendly.json +103 -0
  5. package/assets/open-connector/catalog/apps/clickup.json +104 -0
  6. package/assets/open-connector/catalog/apps/cloro.json +9289 -0
  7. package/assets/open-connector/catalog/apps/contextdev.json +20670 -0
  8. package/assets/open-connector/catalog/apps/deepseek.json +177 -0
  9. package/assets/open-connector/catalog/apps/defillama.json +23747 -0
  10. package/assets/open-connector/catalog/apps/fireflies.json +103 -0
  11. package/assets/open-connector/catalog/apps/fundable.json +7926 -0
  12. package/assets/open-connector/catalog/apps/intercom.json +110 -0
  13. package/assets/open-connector/catalog/apps/jira.json +110 -0
  14. package/assets/open-connector/catalog/apps/keenable.json +235 -0
  15. package/assets/open-connector/catalog/apps/kolsprite_mcp.json +1227 -0
  16. package/assets/open-connector/catalog/apps/litescrape.json +52514 -0
  17. package/assets/open-connector/catalog/apps/magichour.json +5926 -0
  18. package/assets/open-connector/catalog/apps/minimax.json +24 -14
  19. package/assets/open-connector/catalog/apps/notion.json +731 -76
  20. package/assets/open-connector/catalog/apps/octen.json +5248 -0
  21. package/assets/open-connector/catalog/apps/openrouter.json +10 -0
  22. package/assets/open-connector/catalog/apps/orbit.json +3574 -0
  23. package/assets/open-connector/catalog/apps/pandadoc.json +68 -0
  24. package/assets/open-connector/catalog/apps/pipedrive.json +86 -0
  25. package/assets/open-connector/catalog/apps/ploid.json +9802 -0
  26. package/assets/open-connector/catalog/apps/resend.json +100 -0
  27. package/assets/open-connector/catalog/apps/salesforce.json +2487 -119
  28. package/assets/open-connector/catalog/apps/saperly.json +7056 -0
  29. package/assets/open-connector/catalog/apps/search1api.json +2382 -0
  30. package/assets/open-connector/catalog/apps/sentry.json +129 -0
  31. package/assets/open-connector/catalog/apps/slackbot.json +230 -1
  32. package/assets/open-connector/catalog/apps/surf.json +11378 -0
  33. package/assets/open-connector/catalog/apps/tally.json +113 -0
  34. package/assets/open-connector/catalog/apps/tinyfish.json +6154 -0
  35. package/assets/open-connector/catalog/apps/typeform.json +90 -1
  36. package/assets/open-connector/catalog/apps/vaquill.json +5944 -0
  37. package/assets/open-connector/catalog/apps/vercel.json +110 -0
  38. package/assets/open-connector/catalog/apps/weixin_store.json +1256 -7
  39. package/assets/open-connector/catalog/apps/zoom.json +112 -0
  40. package/assets/open-connector/catalog/apps-index.json +1 -1
  41. package/package.json +1 -1
  42. package/src/core/json-schema.d.ts +11 -3
  43. package/src/core/json-schema.js +13 -3
  44. package/src/providers/action-contracts.generated.d.ts +23 -6
  45. package/src/providers/aisa/executors.js +238 -6
  46. package/src/providers/aisa/firecrawl-actions.d.ts +9 -0
  47. package/src/providers/aisa/firecrawl-actions.js +115 -0
  48. package/src/providers/akta/actions.d.ts +9 -0
  49. package/src/providers/akta/actions.js +420 -0
  50. package/src/providers/akta/executors.d.ts +4 -0
  51. package/src/providers/akta/executors.js +103 -0
  52. package/src/providers/asana/executors.d.ts +2 -0
  53. package/src/providers/asana/executors.js +2 -0
  54. package/src/providers/asana/trigger-on-task-event.d.ts +2 -0
  55. package/src/providers/asana/trigger-on-task-event.definition.d.ts +4 -0
  56. package/src/providers/asana/trigger-on-task-event.definition.js +42 -0
  57. package/src/providers/asana/trigger-on-task-event.js +160 -0
  58. package/src/providers/calendly/executors.d.ts +2 -0
  59. package/src/providers/calendly/executors.js +2 -0
  60. package/src/providers/calendly/trigger-on-booking-event.d.ts +2 -0
  61. package/src/providers/calendly/trigger-on-booking-event.definition.d.ts +5 -0
  62. package/src/providers/calendly/trigger-on-booking-event.definition.js +42 -0
  63. package/src/providers/calendly/trigger-on-booking-event.js +144 -0
  64. package/src/providers/clickup/executors.d.ts +2 -0
  65. package/src/providers/clickup/executors.js +2 -0
  66. package/src/providers/clickup/trigger-on-task-event.d.ts +2 -0
  67. package/src/providers/clickup/trigger-on-task-event.definition.d.ts +4 -0
  68. package/src/providers/clickup/trigger-on-task-event.definition.js +41 -0
  69. package/src/providers/clickup/trigger-on-task-event.js +94 -0
  70. package/src/providers/cloro/actions.d.ts +12 -0
  71. package/src/providers/cloro/actions.js +155 -0
  72. package/src/providers/cloro/executors.d.ts +4 -0
  73. package/src/providers/cloro/executors.js +67 -0
  74. package/src/providers/cloro/inputs.d.ts +10 -0
  75. package/src/providers/cloro/inputs.js +680 -0
  76. package/src/providers/contextdev/actions.d.ts +14 -0
  77. package/src/providers/contextdev/actions.js +647 -0
  78. package/src/providers/contextdev/executors.d.ts +4 -0
  79. package/src/providers/contextdev/executors.js +109 -0
  80. package/src/providers/contextdev/files.d.ts +3 -0
  81. package/src/providers/contextdev/files.js +49 -0
  82. package/src/providers/contextdev/input-schemas.d.ts +49 -0
  83. package/src/providers/contextdev/input-schemas.js +3082 -0
  84. package/src/providers/contextdev/output-schemas.d.ts +49 -0
  85. package/src/providers/contextdev/output-schemas.js +1599 -0
  86. package/src/providers/deepseek/executors.d.ts +0 -5
  87. package/src/providers/deepseek/executors.js +38 -25
  88. package/src/providers/defillama/actions.d.ts +24 -0
  89. package/src/providers/defillama/actions.js +24 -0
  90. package/src/providers/defillama/dimensions-definitions.d.ts +2 -0
  91. package/src/providers/defillama/dimensions-definitions.js +1387 -0
  92. package/src/providers/defillama/ecosystem-definitions.d.ts +2 -0
  93. package/src/providers/defillama/ecosystem-definitions.js +758 -0
  94. package/src/providers/defillama/equities-definitions.d.ts +2 -0
  95. package/src/providers/defillama/equities-definitions.js +733 -0
  96. package/src/providers/defillama/executors.d.ts +4 -0
  97. package/src/providers/defillama/executors.js +196 -0
  98. package/src/providers/defillama/markets-definitions.d.ts +2 -0
  99. package/src/providers/defillama/markets-definitions.js +624 -0
  100. package/src/providers/defillama/shared-schemas.d.ts +71 -0
  101. package/src/providers/defillama/shared-schemas.js +157 -0
  102. package/src/providers/defillama/tvl-definitions.d.ts +2 -0
  103. package/src/providers/defillama/tvl-definitions.js +546 -0
  104. package/src/providers/defillama/yields-definitions.d.ts +2 -0
  105. package/src/providers/defillama/yields-definitions.js +766 -0
  106. package/src/providers/feishu_app_bot/trigger-on-event.js +2 -0
  107. package/src/providers/fireflies/executors.d.ts +2 -0
  108. package/src/providers/fireflies/executors.js +2 -0
  109. package/src/providers/fireflies/trigger-on-meeting-ready.d.ts +2 -0
  110. package/src/providers/fireflies/trigger-on-meeting-ready.definition.d.ts +4 -0
  111. package/src/providers/fireflies/trigger-on-meeting-ready.definition.js +44 -0
  112. package/src/providers/fireflies/trigger-on-meeting-ready.js +60 -0
  113. package/src/providers/fundable/actions.d.ts +8 -0
  114. package/src/providers/fundable/actions.js +1515 -0
  115. package/src/providers/fundable/executors.d.ts +4 -0
  116. package/src/providers/fundable/executors.js +74 -0
  117. package/src/providers/gmail/message.d.ts +1 -6
  118. package/src/providers/gmail/message.js +1 -1
  119. package/src/providers/intercom/executors.d.ts +2 -0
  120. package/src/providers/intercom/executors.js +2 -0
  121. package/src/providers/intercom/trigger-on-conversation-event.d.ts +2 -0
  122. package/src/providers/intercom/trigger-on-conversation-event.definition.d.ts +4 -0
  123. package/src/providers/intercom/trigger-on-conversation-event.definition.js +42 -0
  124. package/src/providers/intercom/trigger-on-conversation-event.js +23 -0
  125. package/src/providers/jira/executors.d.ts +2 -0
  126. package/src/providers/jira/executors.js +2 -0
  127. package/src/providers/jira/trigger-on-issue-event.d.ts +2 -0
  128. package/src/providers/jira/trigger-on-issue-event.definition.d.ts +4 -0
  129. package/src/providers/jira/trigger-on-issue-event.definition.js +44 -0
  130. package/src/providers/jira/trigger-on-issue-event.js +116 -0
  131. package/src/providers/jira/trigger-resource.d.ts +4 -0
  132. package/src/providers/jira/trigger-resource.js +141 -0
  133. package/src/providers/keenable/executors.d.ts +4 -0
  134. package/src/providers/keenable/executors.js +20 -0
  135. package/src/providers/keenable/runtime.d.ts +26 -0
  136. package/src/providers/keenable/runtime.js +89 -0
  137. package/src/providers/kolsprite_mcp/actions.d.ts +2 -0
  138. package/src/providers/kolsprite_mcp/actions.js +519 -0
  139. package/src/providers/kolsprite_mcp/executors.d.ts +4 -0
  140. package/src/providers/kolsprite_mcp/executors.js +89 -0
  141. package/src/providers/litescrape/actions.d.ts +12 -0
  142. package/src/providers/litescrape/actions.js +124 -0
  143. package/src/providers/litescrape/airbnb-schemas.d.ts +2 -0
  144. package/src/providers/litescrape/airbnb-schemas.js +72 -0
  145. package/src/providers/litescrape/aliexpress-schemas.d.ts +2 -0
  146. package/src/providers/litescrape/aliexpress-schemas.js +52 -0
  147. package/src/providers/litescrape/amazon-schemas.d.ts +2 -0
  148. package/src/providers/litescrape/amazon-schemas.js +358 -0
  149. package/src/providers/litescrape/apartments-schemas.d.ts +2 -0
  150. package/src/providers/litescrape/apartments-schemas.js +45 -0
  151. package/src/providers/litescrape/apple-schemas.d.ts +2 -0
  152. package/src/providers/litescrape/apple-schemas.js +215 -0
  153. package/src/providers/litescrape/ashby-schemas.d.ts +2 -0
  154. package/src/providers/litescrape/ashby-schemas.js +82 -0
  155. package/src/providers/litescrape/baidu-schemas.d.ts +2 -0
  156. package/src/providers/litescrape/baidu-schemas.js +31 -0
  157. package/src/providers/litescrape/bestbuy-schemas.d.ts +2 -0
  158. package/src/providers/litescrape/bestbuy-schemas.js +56 -0
  159. package/src/providers/litescrape/bing-schemas.d.ts +2 -0
  160. package/src/providers/litescrape/bing-schemas.js +315 -0
  161. package/src/providers/litescrape/brave-schemas.d.ts +2 -0
  162. package/src/providers/litescrape/brave-schemas.js +101 -0
  163. package/src/providers/litescrape/copilot-schemas.d.ts +2 -0
  164. package/src/providers/litescrape/copilot-schemas.js +590 -0
  165. package/src/providers/litescrape/duckduckgo-schemas.d.ts +2 -0
  166. package/src/providers/litescrape/duckduckgo-schemas.js +64 -0
  167. package/src/providers/litescrape/ebay-schemas.d.ts +2 -0
  168. package/src/providers/litescrape/ebay-schemas.js +300 -0
  169. package/src/providers/litescrape/etsy-schemas.d.ts +2 -0
  170. package/src/providers/litescrape/etsy-schemas.js +52 -0
  171. package/src/providers/litescrape/eventbrite-schemas.d.ts +2 -0
  172. package/src/providers/litescrape/eventbrite-schemas.js +43 -0
  173. package/src/providers/litescrape/executors.d.ts +4 -0
  174. package/src/providers/litescrape/executors.js +138 -0
  175. package/src/providers/litescrape/facebook-schemas.d.ts +2 -0
  176. package/src/providers/litescrape/facebook-schemas.js +283 -0
  177. package/src/providers/litescrape/glassdoor-schemas.d.ts +2 -0
  178. package/src/providers/litescrape/glassdoor-schemas.js +147 -0
  179. package/src/providers/litescrape/google-schemas.d.ts +2 -0
  180. package/src/providers/litescrape/google-schemas.js +1686 -0
  181. package/src/providers/litescrape/homedepot-schemas.d.ts +2 -0
  182. package/src/providers/litescrape/homedepot-schemas.js +58 -0
  183. package/src/providers/litescrape/homes-schemas.d.ts +2 -0
  184. package/src/providers/litescrape/homes-schemas.js +45 -0
  185. package/src/providers/litescrape/ikea-schemas.d.ts +2 -0
  186. package/src/providers/litescrape/ikea-schemas.js +56 -0
  187. package/src/providers/litescrape/indeed-schemas.d.ts +2 -0
  188. package/src/providers/litescrape/indeed-schemas.js +141 -0
  189. package/src/providers/litescrape/instagram-schemas.d.ts +2 -0
  190. package/src/providers/litescrape/instagram-schemas.js +234 -0
  191. package/src/providers/litescrape/kroger-schemas.d.ts +2 -0
  192. package/src/providers/litescrape/kroger-schemas.js +62 -0
  193. package/src/providers/litescrape/levels-schemas.d.ts +2 -0
  194. package/src/providers/litescrape/levels-schemas.js +153 -0
  195. package/src/providers/litescrape/naver-schemas.d.ts +2 -0
  196. package/src/providers/litescrape/naver-schemas.js +107 -0
  197. package/src/providers/litescrape/realtor-schemas.d.ts +2 -0
  198. package/src/providers/litescrape/realtor-schemas.js +47 -0
  199. package/src/providers/litescrape/redfin-schemas.d.ts +2 -0
  200. package/src/providers/litescrape/redfin-schemas.js +112 -0
  201. package/src/providers/litescrape/shared.d.ts +9 -0
  202. package/src/providers/litescrape/shared.js +1 -0
  203. package/src/providers/litescrape/sprouts-schemas.d.ts +2 -0
  204. package/src/providers/litescrape/sprouts-schemas.js +72 -0
  205. package/src/providers/litescrape/target-schemas.d.ts +2 -0
  206. package/src/providers/litescrape/target-schemas.js +56 -0
  207. package/src/providers/litescrape/tiktok-schemas.d.ts +2 -0
  208. package/src/providers/litescrape/tiktok-schemas.js +625 -0
  209. package/src/providers/litescrape/tools.d.ts +2 -0
  210. package/src/providers/litescrape/tools.js +88 -0
  211. package/src/providers/litescrape/tripadvisor-schemas.d.ts +2 -0
  212. package/src/providers/litescrape/tripadvisor-schemas.js +119 -0
  213. package/src/providers/litescrape/walmart-schemas.d.ts +2 -0
  214. package/src/providers/litescrape/walmart-schemas.js +52 -0
  215. package/src/providers/litescrape/wayfair-schemas.d.ts +2 -0
  216. package/src/providers/litescrape/wayfair-schemas.js +52 -0
  217. package/src/providers/litescrape/web-schemas.d.ts +2 -0
  218. package/src/providers/litescrape/web-schemas.js +463 -0
  219. package/src/providers/litescrape/wholefoods-schemas.d.ts +2 -0
  220. package/src/providers/litescrape/wholefoods-schemas.js +56 -0
  221. package/src/providers/litescrape/x-schemas.d.ts +2 -0
  222. package/src/providers/litescrape/x-schemas.js +128 -0
  223. package/src/providers/litescrape/yahoo-schemas.d.ts +2 -0
  224. package/src/providers/litescrape/yahoo-schemas.js +234 -0
  225. package/src/providers/litescrape/yandex-schemas.d.ts +2 -0
  226. package/src/providers/litescrape/yandex-schemas.js +179 -0
  227. package/src/providers/litescrape/yelp-schemas.d.ts +2 -0
  228. package/src/providers/litescrape/yelp-schemas.js +130 -0
  229. package/src/providers/litescrape/youtube-schemas.d.ts +2 -0
  230. package/src/providers/litescrape/youtube-schemas.js +128 -0
  231. package/src/providers/litescrape/zillow-schemas.d.ts +2 -0
  232. package/src/providers/litescrape/zillow-schemas.js +128 -0
  233. package/src/providers/litescrape/ziprecruiter-schemas.d.ts +2 -0
  234. package/src/providers/litescrape/ziprecruiter-schemas.js +96 -0
  235. package/src/providers/magichour/actions.d.ts +22 -0
  236. package/src/providers/magichour/actions.js +308 -0
  237. package/src/providers/magichour/audio-schemas.d.ts +2 -0
  238. package/src/providers/magichour/audio-schemas.js +54 -0
  239. package/src/providers/magichour/executors.d.ts +4 -0
  240. package/src/providers/magichour/executors.js +115 -0
  241. package/src/providers/magichour/image-schemas.d.ts +2 -0
  242. package/src/providers/magichour/image-schemas.js +443 -0
  243. package/src/providers/magichour/project-schemas.d.ts +8 -0
  244. package/src/providers/magichour/project-schemas.js +65 -0
  245. package/src/providers/magichour/shared-schemas.d.ts +8 -0
  246. package/src/providers/magichour/shared-schemas.js +18 -0
  247. package/src/providers/magichour/utility-schemas.d.ts +11 -0
  248. package/src/providers/magichour/utility-schemas.js +150 -0
  249. package/src/providers/magichour/video-schemas.d.ts +2 -0
  250. package/src/providers/magichour/video-schemas.js +629 -0
  251. package/src/providers/magichour/voices.d.ts +1 -0
  252. package/src/providers/magichour/voices.js +1268 -0
  253. package/src/providers/minimax/executors.js +19 -4
  254. package/src/providers/minimax/text-models.d.ts +2 -0
  255. package/src/providers/minimax/text-models.js +34 -0
  256. package/src/providers/moneyforward_mcp/manifest.d.ts +0 -2
  257. package/src/providers/moneyforward_mcp/manifest.js +1 -1
  258. package/src/providers/notion/executors.js +36 -3
  259. package/src/providers/octen/actions.d.ts +6 -0
  260. package/src/providers/octen/actions.js +919 -0
  261. package/src/providers/octen/executors.d.ts +4 -0
  262. package/src/providers/octen/executors.js +125 -0
  263. package/src/providers/octen/inputs.d.ts +2 -0
  264. package/src/providers/octen/inputs.js +2434 -0
  265. package/src/providers/octen/research.d.ts +1 -0
  266. package/src/providers/octen/research.js +86 -0
  267. package/src/providers/openrouter/executors.js +7 -4
  268. package/src/providers/orbit/actions.d.ts +2 -0
  269. package/src/providers/orbit/actions.js +3030 -0
  270. package/src/providers/orbit/executors.d.ts +4 -0
  271. package/src/providers/orbit/executors.js +106 -0
  272. package/src/providers/orbit/routes.d.ts +9 -0
  273. package/src/providers/orbit/routes.js +170 -0
  274. package/src/providers/pandadoc/executors.d.ts +2 -0
  275. package/src/providers/pandadoc/executors.js +2 -0
  276. package/src/providers/pandadoc/trigger-on-document-event.d.ts +2 -0
  277. package/src/providers/pandadoc/trigger-on-document-event.definition.d.ts +4 -0
  278. package/src/providers/pandadoc/trigger-on-document-event.definition.js +33 -0
  279. package/src/providers/pandadoc/trigger-on-document-event.js +96 -0
  280. package/src/providers/pipedrive/executors.d.ts +2 -0
  281. package/src/providers/pipedrive/executors.js +2 -0
  282. package/src/providers/pipedrive/trigger-on-crm-event.d.ts +2 -0
  283. package/src/providers/pipedrive/trigger-on-crm-event.definition.d.ts +4 -0
  284. package/src/providers/pipedrive/trigger-on-crm-event.definition.js +30 -0
  285. package/src/providers/pipedrive/trigger-on-crm-event.js +101 -0
  286. package/src/providers/ploid/actions.d.ts +16 -0
  287. package/src/providers/ploid/actions.js +23 -0
  288. package/src/providers/ploid/endpoints.json +8440 -0
  289. package/src/providers/ploid/executors.d.ts +4 -0
  290. package/src/providers/ploid/executors.js +119 -0
  291. package/src/providers/provider-runtime.d.ts +13 -0
  292. package/src/providers/provider-runtime.js +37 -4
  293. package/src/providers/registry.generated.js +17 -0
  294. package/src/providers/resend/executors.d.ts +2 -0
  295. package/src/providers/resend/executors.js +2 -0
  296. package/src/providers/resend/trigger-on-email-event.d.ts +2 -0
  297. package/src/providers/resend/trigger-on-email-event.definition.d.ts +4 -0
  298. package/src/providers/resend/trigger-on-email-event.definition.js +37 -0
  299. package/src/providers/resend/trigger-on-email-event.js +125 -0
  300. package/src/providers/salesforce/chatter-routes.d.ts +107 -0
  301. package/src/providers/salesforce/chatter-routes.js +140 -0
  302. package/src/providers/salesforce/context.d.ts +2 -2
  303. package/src/providers/salesforce/context.js +7 -4
  304. package/src/providers/salesforce/executors.js +10 -0
  305. package/src/providers/salesforce/runtime-approvals.d.ts +2 -0
  306. package/src/providers/salesforce/runtime-approvals.js +52 -0
  307. package/src/providers/salesforce/runtime-base.js +14 -3
  308. package/src/providers/salesforce/runtime-chatter.d.ts +2 -0
  309. package/src/providers/salesforce/runtime-chatter.js +78 -0
  310. package/src/providers/salesforce/runtime-knowledge.d.ts +2 -0
  311. package/src/providers/salesforce/runtime-knowledge.js +34 -0
  312. package/src/providers/salesforce/runtime-leads.d.ts +2 -0
  313. package/src/providers/salesforce/runtime-leads.js +117 -0
  314. package/src/providers/salesforce/runtime-platform.d.ts +2 -0
  315. package/src/providers/salesforce/runtime-platform.js +67 -0
  316. package/src/providers/saperly/actions.d.ts +17 -0
  317. package/src/providers/saperly/actions.js +869 -0
  318. package/src/providers/saperly/executors.d.ts +4 -0
  319. package/src/providers/saperly/executors.js +113 -0
  320. package/src/providers/saperly/schemas.d.ts +33 -0
  321. package/src/providers/saperly/schemas.js +601 -0
  322. package/src/providers/search1api/actions.d.ts +2 -0
  323. package/src/providers/search1api/actions.js +39 -0
  324. package/src/providers/search1api/executors.d.ts +4 -0
  325. package/src/providers/search1api/executors.js +72 -0
  326. package/src/providers/search1api/runtime.d.ts +3 -0
  327. package/src/providers/search1api/runtime.js +44 -0
  328. package/src/providers/search1api/schemas.d.ts +3 -0
  329. package/src/providers/search1api/schemas.js +1834 -0
  330. package/src/providers/sentry/executors.d.ts +2 -0
  331. package/src/providers/sentry/executors.js +2 -0
  332. package/src/providers/sentry/trigger-on-issue-alert.d.ts +2 -0
  333. package/src/providers/sentry/trigger-on-issue-alert.definition.d.ts +4 -0
  334. package/src/providers/sentry/trigger-on-issue-alert.definition.js +64 -0
  335. package/src/providers/sentry/trigger-on-issue-alert.js +80 -0
  336. package/src/providers/sf_express/runtime.d.ts +0 -16
  337. package/src/providers/sf_express/runtime.js +2 -2
  338. package/src/providers/slack/runtime.d.ts +6 -1
  339. package/src/providers/slack/runtime.js +21 -0
  340. package/src/providers/slackbot/actions.js +17 -1
  341. package/src/providers/slackbot/executors.d.ts +2 -0
  342. package/src/providers/slackbot/executors.js +5 -1
  343. package/src/providers/slackbot/trigger-on-event.d.ts +2 -0
  344. package/src/providers/slackbot/trigger-on-event.definition.d.ts +4 -0
  345. package/src/providers/slackbot/trigger-on-event.definition.js +57 -0
  346. package/src/providers/slackbot/trigger-on-event.js +23 -0
  347. package/src/providers/surf/actions.d.ts +21 -0
  348. package/src/providers/surf/actions.js +26 -0
  349. package/src/providers/surf/discovery-definitions.d.ts +2 -0
  350. package/src/providers/surf/discovery-definitions.js +871 -0
  351. package/src/providers/surf/equity-definitions.d.ts +2 -0
  352. package/src/providers/surf/equity-definitions.js +322 -0
  353. package/src/providers/surf/executors.d.ts +4 -0
  354. package/src/providers/surf/executors.js +131 -0
  355. package/src/providers/surf/market-definitions.d.ts +2 -0
  356. package/src/providers/surf/market-definitions.js +885 -0
  357. package/src/providers/surf/onchain-definitions.d.ts +2 -0
  358. package/src/providers/surf/onchain-definitions.js +901 -0
  359. package/src/providers/surf/prediction-definitions.d.ts +2 -0
  360. package/src/providers/surf/prediction-definitions.js +683 -0
  361. package/src/providers/surf/shared-schemas.d.ts +18 -0
  362. package/src/providers/surf/shared-schemas.js +37 -0
  363. package/src/providers/tally/executors.d.ts +2 -0
  364. package/src/providers/tally/executors.js +2 -0
  365. package/src/providers/tally/trigger-on-form-response.d.ts +2 -0
  366. package/src/providers/tally/trigger-on-form-response.definition.d.ts +4 -0
  367. package/src/providers/tally/trigger-on-form-response.definition.js +54 -0
  368. package/src/providers/tally/trigger-on-form-response.js +166 -0
  369. package/src/providers/tinyfish/actions.d.ts +6 -0
  370. package/src/providers/tinyfish/actions.js +19 -0
  371. package/src/providers/tinyfish/agent-actions.d.ts +2 -0
  372. package/src/providers/tinyfish/agent-actions.js +268 -0
  373. package/src/providers/tinyfish/data-actions.d.ts +2 -0
  374. package/src/providers/tinyfish/data-actions.js +186 -0
  375. package/src/providers/tinyfish/data-schemas.d.ts +7 -0
  376. package/src/providers/tinyfish/data-schemas.js +103 -0
  377. package/src/providers/tinyfish/endpoints.d.ts +14 -0
  378. package/src/providers/tinyfish/endpoints.js +1 -0
  379. package/src/providers/tinyfish/executors.d.ts +4 -0
  380. package/src/providers/tinyfish/executors.js +133 -0
  381. package/src/providers/tinyfish/management-actions.d.ts +2 -0
  382. package/src/providers/tinyfish/management-actions.js +524 -0
  383. package/src/providers/tinyfish/monitor-schemas.d.ts +5 -0
  384. package/src/providers/tinyfish/monitor-schemas.js +65 -0
  385. package/src/providers/tinyfish/research-schemas.d.ts +6 -0
  386. package/src/providers/tinyfish/research-schemas.js +71 -0
  387. package/src/providers/trello/executors.js +5 -2
  388. package/src/providers/typeform/executors.d.ts +2 -0
  389. package/src/providers/typeform/executors.js +2 -0
  390. package/src/providers/typeform/trigger-on-form-response.d.ts +2 -0
  391. package/src/providers/typeform/trigger-on-form-response.definition.d.ts +4 -0
  392. package/src/providers/typeform/trigger-on-form-response.definition.js +40 -0
  393. package/src/providers/typeform/trigger-on-form-response.js +68 -0
  394. package/src/providers/vaquill/actions.d.ts +13 -0
  395. package/src/providers/vaquill/actions.js +529 -0
  396. package/src/providers/vaquill/executors.d.ts +4 -0
  397. package/src/providers/vaquill/executors.js +141 -0
  398. package/src/providers/vaquill/schemas.d.ts +67 -0
  399. package/src/providers/vaquill/schemas.js +4953 -0
  400. package/src/providers/vercel/executors.d.ts +2 -0
  401. package/src/providers/vercel/executors.js +2 -0
  402. package/src/providers/vercel/trigger-on-deployment-event.d.ts +2 -0
  403. package/src/providers/vercel/trigger-on-deployment-event.definition.d.ts +5 -0
  404. package/src/providers/vercel/trigger-on-deployment-event.definition.js +41 -0
  405. package/src/providers/vercel/trigger-on-deployment-event.js +102 -0
  406. package/src/providers/weixin_bot/runtime.d.ts +0 -1
  407. package/src/providers/weixin_bot/runtime.js +1 -1
  408. package/src/providers/weixin_store/access-token.d.ts +3 -3
  409. package/src/providers/weixin_store/access-token.js +15 -7
  410. package/src/providers/weixin_store/executors.js +214 -1
  411. package/src/providers/zoom/executors.d.ts +2 -0
  412. package/src/providers/zoom/executors.js +2 -0
  413. package/src/providers/zoom/trigger-on-recording-ready.d.ts +2 -0
  414. package/src/providers/zoom/trigger-on-recording-ready.definition.d.ts +4 -0
  415. package/src/providers/zoom/trigger-on-recording-ready.definition.js +44 -0
  416. package/src/providers/zoom/trigger-on-recording-ready.js +39 -0
  417. package/src/server/api/action-example.js +12 -1
  418. package/src/server/api/pattern-example.js +35 -1
  419. package/src/server/api/trigger-routes.js +1 -1
  420. package/src/server/connect-app.js +1 -0
  421. package/src/triggers/common/integration.d.ts +15 -3
  422. package/src/triggers/common/integration.js +5 -0
  423. package/src/triggers/common/proxy.d.ts +7 -0
  424. package/src/triggers/managed-webhook.d.ts +13 -0
  425. package/src/triggers/managed-webhook.js +48 -0
  426. package/src/triggers/request.d.ts +5 -1
  427. package/src/triggers/request.js +2 -0
  428. package/src/triggers/resources.d.ts +8 -2
  429. package/src/triggers/resources.js +31 -0
  430. package/src/triggers/signature.d.ts +3 -3
  431. package/src/triggers/signature.js +4 -6
  432. package/src/triggers/sources/configuration-schema.d.ts +5 -0
  433. package/src/triggers/sources/configuration-schema.js +118 -0
  434. package/src/triggers/sources/configuration.d.ts +115 -0
  435. package/src/triggers/sources/configuration.js +1 -0
  436. package/src/triggers/sources/definition.d.ts +61 -0
  437. package/src/triggers/sources/definition.js +3 -0
  438. package/src/triggers/sources/feishu-demands.d.ts +6 -0
  439. package/src/triggers/sources/feishu-demands.js +24 -0
  440. package/src/triggers/sources/feishu-events.d.ts +19 -0
  441. package/src/triggers/sources/feishu-events.js +108 -0
  442. package/src/triggers/sources/feishu.d.ts +3 -0
  443. package/src/triggers/sources/feishu.js +85 -0
  444. package/src/triggers/sources/fireflies.d.ts +3 -0
  445. package/src/triggers/sources/fireflies.js +100 -0
  446. package/src/triggers/sources/intercom.d.ts +3 -0
  447. package/src/triggers/sources/intercom.js +86 -0
  448. package/src/triggers/sources/jira.d.ts +3 -0
  449. package/src/triggers/sources/jira.js +120 -0
  450. package/src/triggers/sources/operation.d.ts +42 -0
  451. package/src/triggers/sources/operation.js +146 -0
  452. package/src/triggers/sources/sentry.d.ts +3 -0
  453. package/src/triggers/sources/sentry.js +125 -0
  454. package/src/triggers/sources/signature.d.ts +1 -0
  455. package/src/triggers/sources/signature.js +10 -0
  456. package/src/triggers/sources/slack.d.ts +3 -0
  457. package/src/triggers/sources/slack.js +127 -0
  458. package/src/triggers/sources/zoom.d.ts +3 -0
  459. package/src/triggers/sources/zoom.js +113 -0
  460. package/src/triggers/trigger-runner.d.ts +2 -0
  461. package/src/triggers/trigger-runner.js +52 -16
@@ -0,0 +1,901 @@
1
+ import { s } from "../../core/json-schema.js";
2
+ import { arrayResponseSchema, dataSchema, metaSchema, objectResponseSchema, evmWalletAddressSchema, fromSchema, sqlJobResponseSchema, } from "./shared-schemas.js";
3
+ export const onchainDefinitions = [
4
+ {
5
+ name: "hyperliquid_account",
6
+ description: "Account Portfolio.",
7
+ operationType: "read",
8
+ route: {
9
+ path: "/gateway/v1/hyperliquid/account",
10
+ method: "GET",
11
+ parameters: [{ name: "address", in: "query", field: "address" }],
12
+ body: false,
13
+ },
14
+ inputSchema: s.object("Parameters for Account Portfolio.", { address: evmWalletAddressSchema }, { required: ["address"], additionalProperties: false }),
15
+ outputSchema: objectResponseSchema,
16
+ },
17
+ {
18
+ name: "hyperliquid_candles",
19
+ description: "Market Candles.",
20
+ operationType: "read",
21
+ route: {
22
+ path: "/gateway/v1/hyperliquid/candles",
23
+ method: "GET",
24
+ parameters: [
25
+ { name: "symbol", in: "query", field: "symbol" },
26
+ { name: "interval", in: "query", field: "interval" },
27
+ { name: "from", in: "query", field: "from" },
28
+ { name: "to", in: "query", field: "to" },
29
+ ],
30
+ body: false,
31
+ },
32
+ inputSchema: s.object("Parameters for Market Candles.", {
33
+ symbol: s.withExamples(s.string("Hyperliquid market id (for example BTC, kPEPE, xyz:GOLD, the canonical PURR/USDC spot pair, or an @index spot market)."), ["SOL"]),
34
+ interval: s.withExamples(s.withEnum(s.string('Candle granularity. Default: "4h".'), [
35
+ "1m",
36
+ "3m",
37
+ "5m",
38
+ "15m",
39
+ "30m",
40
+ "1h",
41
+ "2h",
42
+ "4h",
43
+ "8h",
44
+ "12h",
45
+ "1d",
46
+ "3d",
47
+ "1w",
48
+ "1M",
49
+ ]), ["4h"]),
50
+ from: s.withExamples(s.string("Window start (Unix seconds, an ISO datetime, or a bare UTC date)."), [
51
+ "2026-05-16",
52
+ ]),
53
+ to: s.withExamples(s.string("Window end (Unix seconds, an ISO datetime, or a bare UTC date; a bare date means the end of that day)."), ["2026-05-19"]),
54
+ }, { required: ["symbol", "from", "to"], additionalProperties: false }),
55
+ outputSchema: arrayResponseSchema,
56
+ },
57
+ {
58
+ name: "hyperliquid_fills",
59
+ description: "Fills.",
60
+ operationType: "read",
61
+ route: {
62
+ path: "/gateway/v1/hyperliquid/fills",
63
+ method: "GET",
64
+ parameters: [
65
+ { name: "address", in: "query", field: "address" },
66
+ { name: "from", in: "query", field: "from" },
67
+ { name: "to", in: "query", field: "to" },
68
+ { name: "to_ms", in: "query", field: "to_ms" },
69
+ { name: "to_fill_id", in: "query", field: "to_fill_id" },
70
+ { name: "order", in: "query", field: "order" },
71
+ { name: "cursor", in: "query", field: "cursor" },
72
+ { name: "symbol", in: "query", field: "symbol" },
73
+ { name: "limit", in: "query", field: "limit" },
74
+ ],
75
+ body: false,
76
+ },
77
+ inputSchema: s.object("Parameters for Fills.", {
78
+ address: evmWalletAddressSchema,
79
+ from: s.withExamples(s.string("Window start (Unix seconds or a date). With the default order=desc, results cover the window forward from this point and are capped at ~2000 of the earliest fills in range (narrow the range to see the most-recent fills). With order=asc this is the start of a complete-history walk: follow meta.next_cursor to page through every fill in the window with no cap."), ["2026-03-01"]),
80
+ to: s.withExamples(s.string("Window end (Unix seconds or a date), inclusive. Defaults to now. With order=desc, page back within the most-recent results by setting this to the oldest time you received (prefer to_ms for millisecond precision); with order=asc it bounds the walk."), ["2026-03-01"]),
81
+ to_ms: s.integer("Window end in Unix milliseconds, for millisecond-precise desc paging: pass the time_ms of the oldest fill you received to fetch the next page. On its own the boundary is exclusive (fills AT to_ms are dropped), so when more than limit fills share one millisecond the remainder is skipped — pair it with to_fill_id to page losslessly through a boundary millisecond. Takes precedence over to (which is ignored when to_ms is set). Like to, it pages within the recent (~2000-fill) window. desc-only: rejected with order=asc (use cursor instead).", { minimum: 0 }),
82
+ to_fill_id: s.string("Cursor tiebreak for to_ms: pass the fill_id of the oldest fill you received alongside its time_ms as to_ms. The next page then resumes strictly after that (time_ms, fill_id) pair — fills at the boundary millisecond with a lower fill_id are included instead of skipped, so paging never loses fills that share a millisecond. Requires to_ms; desc-only. Equivalent to following meta.next_cursor, which encodes the same position. An empty page can mean the window is exhausted (set from to reach older history), not that no older fills exist."),
83
+ order: s.withEnum(s.string('desc (default): newest first — the recent feed, or the earliest-anchored ~2000-fill slice when from is set. asc: oldest first, a complete-history walk from from (required) up to to — each page links the next via meta.next_cursor with no result cap, the reliable mode for full trade-history or PnL reconstruction. Default: "desc".'), ["desc", "asc"]),
84
+ cursor: s.string("Opaque continuation token from a previous response's meta.next_cursor. It encodes the paging direction, position, and window, so pass it with only symbol and limit — combining it with from, to, to_ms, or to_fill_id is rejected with 400."),
85
+ symbol: s.string("Filter to one market (exact match, e.g. xyz:GOLD). Applied client-side: with order=desc it filters after the recent cap (pair it with from/to so older fills are not missed); with order=asc the cursor walk scans past non-matching fills, so a page may return fewer than limit items (or none) while meta.next_cursor still advances."),
86
+ limit: s.integer("Page size (1-100). Default: 20.", { minimum: 1, maximum: 100 }),
87
+ }, { required: ["address"], additionalProperties: false }),
88
+ outputSchema: arrayResponseSchema,
89
+ },
90
+ {
91
+ name: "hyperliquid_leaderboard",
92
+ description: "Trader Leaderboard.",
93
+ operationType: "read",
94
+ route: {
95
+ path: "/gateway/v1/hyperliquid/leaderboard",
96
+ method: "GET",
97
+ parameters: [
98
+ { name: "time_range", in: "query", field: "time_range" },
99
+ { name: "sort_by", in: "query", field: "sort_by" },
100
+ { name: "min_trades", in: "query", field: "min_trades" },
101
+ { name: "min_days_active", in: "query", field: "min_days_active" },
102
+ { name: "min_account_age_days", in: "query", field: "min_account_age_days" },
103
+ { name: "min_human_score", in: "query", field: "min_human_score" },
104
+ { name: "dex", in: "query", field: "dex" },
105
+ { name: "limit", in: "query", field: "limit" },
106
+ { name: "offset", in: "query", field: "offset" },
107
+ ],
108
+ body: false,
109
+ },
110
+ inputSchema: s.object("Parameters for Trader Leaderboard.", {
111
+ time_range: s.withEnum(s.string('Window to rank over. Default all (data starts 2025-08-01). Default: "all".'), [
112
+ "1d",
113
+ "7d",
114
+ "30d",
115
+ "90d",
116
+ "all",
117
+ ]),
118
+ sort_by: s.withEnum(s.string('Rank by this metric. Always sorted descending. Default: "total_pnl".'), [
119
+ "total_pnl",
120
+ "win_rate",
121
+ "volume_traded",
122
+ ]),
123
+ min_trades: s.integer("Only traders with at least this many trades. Defaults to 5; pass 0 for the full population. Default: 5.", { minimum: 0 }),
124
+ min_days_active: s.integer("Only traders active at least this many days (0 = no filter). Default: 0.", {
125
+ minimum: 0,
126
+ }),
127
+ min_account_age_days: s.integer("Only accounts at least this old, in days (0 = no filter). Default: 0.", {
128
+ minimum: 0,
129
+ }),
130
+ min_human_score: s.integer("Only traders scoring at least this, 0-100 (0 = no filter). Default: 0.", {
131
+ minimum: 0,
132
+ maximum: 100,
133
+ }),
134
+ dex: s.withEnum(s.string("Market to rank within: main_dex (or omit) for the native market ONLY, or a builder market — one of: xyz, flx, vntl, hyna, km, abcd, cash, para, mkts. NOTE: the omit default differs from /trades/aggregate, where omitting dex aggregates across ALL markets."), ["main_dex", "xyz", "flx", "vntl", "hyna", "km", "abcd", "cash", "para", "mkts"]),
135
+ limit: s.integer("Results per page (1-100). Default: 20.", { minimum: 1, maximum: 100 }),
136
+ offset: s.integer("Results to skip. Default: 0.", { minimum: 0 }),
137
+ }, { required: [], additionalProperties: false }),
138
+ outputSchema: arrayResponseSchema,
139
+ },
140
+ {
141
+ name: "hyperliquid_orders",
142
+ description: "Open & Recent Orders.",
143
+ operationType: "read",
144
+ route: {
145
+ path: "/gateway/v1/hyperliquid/orders",
146
+ method: "GET",
147
+ parameters: [
148
+ { name: "address", in: "query", field: "address" },
149
+ { name: "open_limit", in: "query", field: "open_limit" },
150
+ { name: "historical_limit", in: "query", field: "historical_limit" },
151
+ ],
152
+ body: false,
153
+ },
154
+ inputSchema: s.object("Parameters for Open & Recent Orders.", {
155
+ address: evmWalletAddressSchema,
156
+ open_limit: s.integer("Max open orders returned (market makers can hold 1500+; open_total reports the pre-truncation count). Default: 500.", { minimum: 1, maximum: 2000 }),
157
+ historical_limit: s.integer("Max terminal orders returned, newest first (the upstream feed holds ~1000 post-collapse; historical_total reports the pre-truncation count). Default: 200.", { minimum: 1, maximum: 2000 }),
158
+ }, { required: ["address"], additionalProperties: false }),
159
+ outputSchema: objectResponseSchema,
160
+ },
161
+ {
162
+ name: "hyperliquid_performance",
163
+ description: "Trading Performance.",
164
+ operationType: "read",
165
+ route: {
166
+ path: "/gateway/v1/hyperliquid/performance",
167
+ method: "GET",
168
+ parameters: [
169
+ { name: "address", in: "query", field: "address" },
170
+ { name: "dex", in: "query", field: "dex" },
171
+ ],
172
+ body: false,
173
+ },
174
+ inputSchema: s.object("Parameters for Trading Performance.", {
175
+ address: evmWalletAddressSchema,
176
+ dex: s.string("NOT SUPPORTED on /performance — returns 400 if set. The lifetime summary always spans ALL markets; market scoping lives on /trades/aggregate (dex=...)."),
177
+ }, { required: ["address"], additionalProperties: false }),
178
+ outputSchema: objectResponseSchema,
179
+ },
180
+ {
181
+ name: "hyperliquid_positions",
182
+ description: "Open Positions.",
183
+ operationType: "read",
184
+ route: {
185
+ path: "/gateway/v1/hyperliquid/positions",
186
+ method: "GET",
187
+ parameters: [
188
+ { name: "address", in: "query", field: "address" },
189
+ { name: "dex", in: "query", field: "dex" },
190
+ ],
191
+ body: false,
192
+ },
193
+ inputSchema: s.object("Parameters for Open Positions.", {
194
+ address: evmWalletAddressSchema,
195
+ dex: s.withEnum(s.string("Market scope: omit (or main_dex) for the native market, or a builder market — one of: xyz, flx, vntl, hyna, km, abcd, cash, para, mkts."), ["main_dex", "xyz", "flx", "vntl", "hyna", "km", "abcd", "cash", "para", "mkts"]),
196
+ }, { required: ["address"], additionalProperties: false }),
197
+ outputSchema: objectResponseSchema,
198
+ },
199
+ {
200
+ name: "hyperliquid_trades",
201
+ description: "Closed Trades.",
202
+ operationType: "read",
203
+ route: {
204
+ path: "/gateway/v1/hyperliquid/trades",
205
+ method: "GET",
206
+ parameters: [
207
+ { name: "address", in: "query", field: "address" },
208
+ { name: "symbol", in: "query", field: "symbol" },
209
+ { name: "direction", in: "query", field: "direction" },
210
+ { name: "dex", in: "query", field: "dex" },
211
+ { name: "from", in: "query", field: "from" },
212
+ { name: "to", in: "query", field: "to" },
213
+ { name: "cursor", in: "query", field: "cursor" },
214
+ { name: "limit", in: "query", field: "limit" },
215
+ ],
216
+ body: false,
217
+ },
218
+ inputSchema: s.object("Parameters for Closed Trades.", {
219
+ address: evmWalletAddressSchema,
220
+ symbol: s.string("NOT SUPPORTED on /trades — returns 400 if set. Per-symbol slicing lives on /trades/aggregate (group_by=symbol) or client-side."),
221
+ direction: s.withEnum(s.string("NOT SUPPORTED on /trades — returns 400 if set. Per-direction slicing lives on /trades/aggregate (group_by=direction) or client-side."), ["long", "short"]),
222
+ dex: s.string("NOT SUPPORTED on /trades — returns 400 if set. Market scoping lives on /trades/aggregate (dex=...)."),
223
+ from: s.withExamples(s.string("Window start: Unix seconds, an ISO datetime (2026-03-01T12:00:00Z), or a bare date (= midnight UTC). Omit for the full history."), ["2026-03-01"]),
224
+ to: s.withExamples(s.string("Window end, inclusive: Unix seconds, an ISO datetime, or a bare date — a bare date means the END of that UTC day, so from=X&to=X covers the whole day X. Defaults to now."), ["2026-03-01"]),
225
+ cursor: s.string("Opaque continuation token from a previous response's meta.next_cursor. It encodes the window, position, and address, so pass it with only address + limit — and only with the address it was issued for. Tokens are single-use opaque values: identical requests mint different tokens that decode to the same position."),
226
+ limit: s.integer("Page size (1-100). Default: 20.", { minimum: 1, maximum: 100 }),
227
+ }, { required: ["address"], additionalProperties: false }),
228
+ outputSchema: arrayResponseSchema,
229
+ },
230
+ {
231
+ name: "hyperliquid_trades_aggregate",
232
+ description: "Closed Trades Aggregate.",
233
+ operationType: "read",
234
+ route: {
235
+ path: "/gateway/v1/hyperliquid/trades/aggregate",
236
+ method: "GET",
237
+ parameters: [
238
+ { name: "address", in: "query", field: "address" },
239
+ { name: "group_by", in: "query", field: "group_by" },
240
+ { name: "from", in: "query", field: "from" },
241
+ { name: "to", in: "query", field: "to" },
242
+ { name: "dex", in: "query", field: "dex" },
243
+ { name: "fill_gaps", in: "query", field: "fill_gaps" },
244
+ ],
245
+ body: false,
246
+ },
247
+ inputSchema: s.object("Parameters for Closed Trades Aggregate.", {
248
+ address: evmWalletAddressSchema,
249
+ group_by: s.withEnum(s.string('Dimension to roll up by. day = UTC calendar day (the P&L calendar / equity-curve source); symbol = per market; direction = long vs short; size_bucket = notional-USD tiers; hold_bucket = holding-time tiers. Default: "day".'), ["day", "symbol", "direction", "size_bucket", "hold_bucket"]),
250
+ from: s.withExamples(s.string("Window start, bounds close_time: Unix seconds, an ISO datetime (2026-03-01T12:00:00Z), or a bare date (= midnight UTC). Omit for full history."), ["2026-03-01"]),
251
+ to: s.withExamples(s.string("Window end, inclusive, bounds close_time: Unix seconds, an ISO datetime, or a bare date — a bare date means the END of that UTC day, so from=X&to=X covers the whole day X. Defaults to now."), ["2026-03-31"]),
252
+ dex: s.withEnum(s.string("Market scope: main_dex for the native market only, omit to aggregate across ALL markets, or a builder market — one of: xyz, flx, vntl, hyna, km, abcd, cash, para, mkts. NOTE: the omit default differs from /leaderboard, where omitting dex means the native market only."), ["main_dex", "xyz", "flx", "vntl", "hyna", "km", "abcd", "cash", "para", "mkts"]),
253
+ fill_gaps: s.boolean("group_by=day only: emit a zero row for every no-trade UTC day in the window so the calendar is dense. Requires from (a bounded window); ignored for other group_by values. Default: false."),
254
+ }, { required: ["address"], additionalProperties: false }),
255
+ outputSchema: arrayResponseSchema,
256
+ },
257
+ {
258
+ name: "hyperliquid_trade_context",
259
+ description: "Closed Trade Funding and Leverage.",
260
+ operationType: "read",
261
+ route: {
262
+ path: "/gateway/v1/hyperliquid/trades/context",
263
+ method: "GET",
264
+ parameters: [
265
+ { name: "address", in: "query", field: "address" },
266
+ { name: "symbol", in: "query", field: "symbol" },
267
+ { name: "direction", in: "query", field: "direction" },
268
+ { name: "open_time", in: "query", field: "open_time" },
269
+ { name: "close_time", in: "query", field: "close_time" },
270
+ ],
271
+ body: false,
272
+ },
273
+ inputSchema: s.object("Parameters for Closed Trade Funding and Leverage.", {
274
+ address: evmWalletAddressSchema,
275
+ symbol: s.string("Hyperliquid perpetual market id, including a builder prefix for HIP-3 markets (for example xyz:GOLD)."),
276
+ direction: s.withEnum(s.string("Opening direction of the episode."), ["long", "short"]),
277
+ open_time: s.integer("Episode open time, Unix seconds, copied from GET /hyperliquid/trades.", { minimum: 1 }),
278
+ close_time: s.integer("Episode close time, Unix seconds, copied from GET /hyperliquid/trades.", { minimum: 1 }),
279
+ }, {
280
+ required: ["address", "symbol", "direction", "open_time", "close_time"],
281
+ additionalProperties: false,
282
+ }),
283
+ outputSchema: objectResponseSchema,
284
+ },
285
+ {
286
+ name: "onchain_bridge_ranking",
287
+ description: "Bridge Protocol Ranking.",
288
+ operationType: "read",
289
+ route: {
290
+ path: "/gateway/v1/onchain/bridge/ranking",
291
+ method: "GET",
292
+ parameters: [
293
+ { name: "time_range", in: "query", field: "time_range" },
294
+ { name: "limit", in: "query", field: "limit" },
295
+ { name: "offset", in: "query", field: "offset" },
296
+ ],
297
+ body: false,
298
+ },
299
+ inputSchema: s.object("Parameters for Bridge Protocol Ranking.", {
300
+ time_range: s.withExamples(s.withEnum(s.string('Window to aggregate bridge volume over: `7d`, `30d`, `90d`, `180d`, `1y`, or `all`. Returns a single ranked snapshot (not a time-series). This endpoint uses `time_range` only — it does NOT accept `interval`. Default: "30d".'), ["7d", "30d", "90d", "180d", "1y", "all"]), ["30d"]),
301
+ limit: s.withExamples(s.integer("Results per page Default: 20.", { minimum: 1, maximum: 100 }), [20]),
302
+ offset: s.withExamples(s.integer("Pagination offset Default: 0.", { minimum: 0 }), [0]),
303
+ }, { required: [], additionalProperties: false }),
304
+ outputSchema: arrayResponseSchema,
305
+ },
306
+ {
307
+ name: "onchain_dex_activity",
308
+ description: "DEX Protocol Activity.",
309
+ operationType: "read",
310
+ route: {
311
+ path: "/gateway/v1/onchain/dex/activity",
312
+ method: "GET",
313
+ parameters: [
314
+ { name: "chain", in: "query", field: "chain" },
315
+ { name: "project", in: "query", field: "project" },
316
+ { name: "address", in: "query", field: "address" },
317
+ { name: "time_range", in: "query", field: "time_range" },
318
+ { name: "from", in: "query", field: "from" },
319
+ { name: "to", in: "query", field: "to" },
320
+ { name: "group_by", in: "query", field: "group_by" },
321
+ ],
322
+ body: false,
323
+ },
324
+ inputSchema: s.object("Parameters for DEX Protocol Activity.", {
325
+ chain: s.withExamples(s.withEnum(s.string("Chain to query."), ["ethereum", "base", "bsc", "arbitrum", "tron"]), ["ethereum"]),
326
+ project: s.withExamples(s.string("DEX project name (e.g. `uniswap`, `pancakeswap`, `aerodrome`). Exactly one of `project` / `address` is required."), ["uniswap"]),
327
+ address: s.withExamples(s.string("A specific router/contract measured as `tx_to`. Exactly one of `project` / `address` is required."), ["0x1111111254eeb25477b68fb85ed929f73a960582"]),
328
+ time_range: s.withEnum(s.string('Look-back window (hard 90d cap). Overridden by `from`/`to` when set. Default: "7d".'), ["1d", "7d", "30d", "90d"]),
329
+ from: s.withExamples(s.string("Start of range — Unix seconds or YYYY-MM-DD. With `to`, the range may span at most 90 days."), ["2025-01-01"]),
330
+ to: s.withExamples(s.string("End of range — Unix seconds or YYYY-MM-DD. Without `from`, the window is `time_range` ending at `to`."), ["2025-02-01"]),
331
+ group_by: s.withEnum(s.string('`total` = single aggregate; `day` = daily series (newest first). Default: "total".'), ["total", "day"]),
332
+ }, { required: ["chain"], additionalProperties: false }),
333
+ outputSchema: arrayResponseSchema,
334
+ },
335
+ {
336
+ name: "onchain_gas_price",
337
+ description: "Current Gas Price.",
338
+ operationType: "read",
339
+ route: {
340
+ path: "/gateway/v1/onchain/gas-price",
341
+ method: "GET",
342
+ parameters: [{ name: "chain", in: "query", field: "chain" }],
343
+ body: false,
344
+ },
345
+ inputSchema: s.object("Parameters for Current Gas Price.", {
346
+ chain: s.withExamples(s.withEnum(s.string("Chain. Can be `ethereum`, `polygon`, `bsc`, `arbitrum`, `optimism`, `base`, `avalanche`, `fantom`, `linea`, or `cyber`."), ["ethereum", "polygon", "bsc", "arbitrum", "optimism", "base", "avalanche", "fantom", "linea", "cyber"]), ["ethereum"]),
347
+ }, { required: ["chain"], additionalProperties: false }),
348
+ outputSchema: objectResponseSchema,
349
+ },
350
+ {
351
+ name: "onchain_structured_query",
352
+ description: "Query blockchain data with structured column, filter, and sort clauses. Discover agent.<table> sources with onchain_schema; always filter large tables by block_date. Resolve token symbols using search_token rather than filtering unindexed symbol columns. Transfer amount is decimal-adjusted, while amount_raw is in base units.",
353
+ operationType: "read",
354
+ route: { path: "/gateway/v1/onchain/query", method: "POST", parameters: [], body: true },
355
+ inputSchema: s.object("Parameters for Blockchain Structured Query.", {
356
+ fields: s.nullable(s.withExamples(s.array("Columns to return. Omit to return all columns.", s.string("Array item.")), [
357
+ ["project", "symbol", "apy", "tvl_usd"],
358
+ ])),
359
+ filters: s.nullable(s.array("WHERE conditions (ANDed together)", s.object("Array item.", {
360
+ field: s.withExamples(s.string("Column name to filter on like `block_number` or `from_address`"), [
361
+ "block_number",
362
+ ]),
363
+ op: s.withExamples(s.string("Comparison operator: eq, neq, gt, gte, lt, lte, like, in, not_in. For `in`/`not_in`, value must be a JSON array"), ["eq"]),
364
+ value: {
365
+ description: "Comparison value. Use a JSON array for `in`/`not_in` operators like `[21000000, 21000001]`",
366
+ },
367
+ }, { required: ["field", "op", "value"], additionalProperties: false }))),
368
+ limit: s.withExamples(s.integer("Max rows to return. Default 20, max 10000"), [20]),
369
+ offset: s.withExamples(s.integer("Rows to skip for pagination. Default 0"), [0]),
370
+ sort: s.nullable(s.array("ORDER BY clauses", s.object("Array item.", {
371
+ field: s.withExamples(s.string("Column name to sort by like `gas`, `block_number`, or `amount_usd`"), [
372
+ "gas",
373
+ ]),
374
+ order: s.withExamples(s.string("Sort direction: asc (default) or desc"), ["desc"]),
375
+ }, { required: ["field"], additionalProperties: false }))),
376
+ source: s.withExamples(s.string("Fully-qualified table name like `agent.ethereum_yields_daily`. Use GET /v1/onchain/schema for available tables."), ["agent.ethereum_yields_daily"]),
377
+ }, { required: ["source"], additionalProperties: false }),
378
+ outputSchema: arrayResponseSchema,
379
+ },
380
+ {
381
+ name: "onchain_schema",
382
+ description: "On-Chain Table Schema.",
383
+ operationType: "read",
384
+ route: {
385
+ path: "/gateway/v1/onchain/schema",
386
+ method: "GET",
387
+ parameters: [{ name: "table", in: "query", field: "table" }],
388
+ body: false,
389
+ },
390
+ inputSchema: s.object("Parameters for On-Chain Table Schema.", {
391
+ table: s.withExamples(s.string("Optional logical table name from the agent database. Use this to include bounded physical partition, ordering-key, and size metadata."), ["polymarket_trades"]),
392
+ }, { required: [], additionalProperties: false }),
393
+ outputSchema: arrayResponseSchema,
394
+ },
395
+ {
396
+ name: "onchain_sql",
397
+ description: "Execute a read-only ClickHouse SELECT/WITH query against agent.<table> blockchain data. Discover tables with onchain_schema and filter large tables by block_date or block_number. Normalize address literals to lowercase without wrapping indexed address columns in lower(); use separate UNION ALL branches instead of OR for transfer from/to predicates. Resolve token symbols with search_token before querying contracts. The synchronous budget is 30 seconds; use prefer=respond-async and a stable idempotency_key for long queries. Do not automatically retry synchronous timeouts; submit an asynchronous job instead.",
398
+ operationType: "destructive",
399
+ route: {
400
+ path: "/gateway/v1/onchain/sql",
401
+ method: "POST",
402
+ parameters: [
403
+ { name: "Prefer", in: "header", field: "prefer" },
404
+ { name: "Idempotency-Key", in: "header", field: "idempotency_key" },
405
+ ],
406
+ body: true,
407
+ },
408
+ inputSchema: s.object("Parameters for Blockchain SQL Query.", {
409
+ prefer: s.string("Optional RFC 7240 preference. Include respond-async to submit this request as a durable asynchronous job and receive 202 Accepted."),
410
+ idempotency_key: s.string("Stable client-generated key used when Prefer includes respond-async. Reusing it returns the existing retained job.", { maxLength: 200 }),
411
+ max_rows: s.withExamples(s.integer("Maximum number of rows to return Default: 1000.", {
412
+ minimum: 1,
413
+ maximum: 10000,
414
+ }), [1000]),
415
+ sql: s.withExamples(s.string('Send a JSON object with the sql field. Example: {"sql":"SELECT 1"}. Use GET /v1/onchain/schema for tables and columns. Transfer table amount is decimal-adjusted; amount_raw is the original base-unit value. Use single quotes for ClickHouse strings. Example: toDate(\'2026-04-07\').'), [
416
+ "SELECT block_date, project, symbol, apy, tvl_usd FROM agent.ethereum_yields_daily WHERE block_date >= today() - 7 ORDER BY apy DESC LIMIT 10",
417
+ ]),
418
+ }, { required: ["sql"], additionalProperties: false }),
419
+ outputSchema: s.object("Surf response with the original provider envelope and fields.", {
420
+ $schema: s.string("Response JSON Schema URL."),
421
+ data: { description: "Upstream result data, preserving all provider fields." },
422
+ meta: metaSchema,
423
+ job_id: s.string("Asynchronous SQL job identifier, promoted from data.job_id."),
424
+ status: s.string("Asynchronous SQL job state, promoted from data.status."),
425
+ }, { required: [], additionalProperties: true }),
426
+ },
427
+ {
428
+ name: "onchain_sql_job_create",
429
+ description: "Submit a read-only ClickHouse SELECT/WITH query as a durable asynchronous job. Use agent.<table> names, partition filters, and resolved contract addresses as for onchain_sql. A retained job is reused for the same idempotency key or equivalent normalized SQL and max_rows. Poll onchain_sql_job_get, then read onchain_sql_job_results; results are retained for 24 hours.",
430
+ operationType: "destructive",
431
+ route: {
432
+ path: "/gateway/v1/onchain/sql/jobs",
433
+ method: "POST",
434
+ parameters: [{ name: "Idempotency-Key", in: "header", field: "idempotency_key" }],
435
+ body: true,
436
+ },
437
+ inputSchema: s.object("Parameters for Submit Asynchronous Blockchain SQL Job.", {
438
+ idempotency_key: s.string("Stable client-generated key. Reusing it returns the existing job without starting another query.", { maxLength: 200 }),
439
+ max_rows: s.withExamples(s.integer("Maximum number of result rows to retain Default: 1000.", {
440
+ minimum: 1,
441
+ maximum: 10000,
442
+ }), [1000]),
443
+ sql: s.withExamples(s.string("Exact read-only ClickHouse SQL to execute asynchronously. The submitted SQL and date range are preserved."), [
444
+ "SELECT block_date, project, symbol, apy FROM agent.ethereum_yields_daily WHERE block_date >= today() - 30 ORDER BY apy DESC",
445
+ ]),
446
+ }, { required: ["sql"], additionalProperties: false }),
447
+ outputSchema: sqlJobResponseSchema,
448
+ },
449
+ {
450
+ name: "onchain_sql_job_cancel",
451
+ description: "Cancel Asynchronous Blockchain SQL Job.",
452
+ operationType: "destructive",
453
+ route: {
454
+ path: "/gateway/v1/onchain/sql/jobs/{job_id}",
455
+ method: "DELETE",
456
+ parameters: [{ name: "job_id", in: "path", field: "job_id" }],
457
+ body: false,
458
+ },
459
+ inputSchema: s.object("Parameters for Cancel Asynchronous Blockchain SQL Job.", { job_id: s.string("Asynchronous SQL job identifier", { format: "uuid" }) }, { required: ["job_id"], additionalProperties: false }),
460
+ outputSchema: sqlJobResponseSchema,
461
+ },
462
+ {
463
+ name: "onchain_sql_job_get",
464
+ description: "Get Asynchronous Blockchain SQL Job.",
465
+ operationType: "read",
466
+ route: {
467
+ path: "/gateway/v1/onchain/sql/jobs/{job_id}",
468
+ method: "GET",
469
+ parameters: [{ name: "job_id", in: "path", field: "job_id" }],
470
+ body: false,
471
+ },
472
+ inputSchema: s.object("Parameters for Get Asynchronous Blockchain SQL Job.", { job_id: s.string("Asynchronous SQL job identifier", { format: "uuid" }) }, { required: ["job_id"], additionalProperties: false }),
473
+ outputSchema: sqlJobResponseSchema,
474
+ },
475
+ {
476
+ name: "onchain_sql_job_results",
477
+ description: "Download Asynchronous Blockchain SQL Results.",
478
+ operationType: "read",
479
+ route: {
480
+ path: "/gateway/v1/onchain/sql/jobs/{job_id}/results",
481
+ method: "GET",
482
+ parameters: [
483
+ { name: "job_id", in: "path", field: "job_id" },
484
+ { name: "format", in: "query", field: "format" },
485
+ ],
486
+ body: false,
487
+ },
488
+ inputSchema: s.object("Parameters for Download Asynchronous Blockchain SQL Results.", {
489
+ job_id: s.string("Asynchronous SQL job identifier", { format: "uuid" }),
490
+ format: s.withEnum(s.string('Result representation Default: "json".'), ["json", "csv"]),
491
+ }, { required: ["job_id"], additionalProperties: false }),
492
+ outputSchema: s.object("Surf response with the original provider envelope and fields.", {
493
+ $schema: s.string("Response JSON Schema URL."),
494
+ data: dataSchema,
495
+ meta: metaSchema,
496
+ csv: s.string("CSV result text when CSV format is requested."),
497
+ }, { required: [], additionalProperties: true }),
498
+ },
499
+ {
500
+ name: "onchain_sql_preflight",
501
+ description: "Preflight Blockchain SQL Query.",
502
+ operationType: "read",
503
+ route: {
504
+ path: "/gateway/v1/onchain/sql/preflight",
505
+ method: "POST",
506
+ parameters: [],
507
+ body: true,
508
+ },
509
+ inputSchema: s.object("Parameters for Preflight Blockchain SQL Query.", {
510
+ max_rows: s.withExamples(s.integer("Maximum result rows in the final server-bounded execution plan Default: 1000.", {
511
+ minimum: 1,
512
+ maximum: 10000,
513
+ }), [1000]),
514
+ sql: s.withExamples(s.string("Read-only ClickHouse SELECT/WITH query to validate and estimate without executing it"), [
515
+ "SELECT block_date, project, apy, tvl_usd FROM agent.ethereum_yields_daily WHERE block_date >= today() - 7 LIMIT 100",
516
+ ]),
517
+ }, { required: ["sql"], additionalProperties: false }),
518
+ outputSchema: objectResponseSchema,
519
+ },
520
+ {
521
+ name: "onchain_tx",
522
+ description: "Transaction Details by Hash.",
523
+ operationType: "read",
524
+ route: {
525
+ path: "/gateway/v1/onchain/tx",
526
+ method: "GET",
527
+ parameters: [
528
+ { name: "hash", in: "query", field: "hash" },
529
+ { name: "chain", in: "query", field: "chain" },
530
+ { name: "include", in: "query", field: "include" },
531
+ ],
532
+ body: false,
533
+ },
534
+ inputSchema: s.object("Parameters for Transaction Details by Hash.", {
535
+ hash: s.withExamples(s.string("Transaction hash (0x-prefixed hex)"), [
536
+ "0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060",
537
+ ]),
538
+ chain: s.withExamples(s.withEnum(s.string("Chain. Can be `ethereum`, `polygon`, `bsc`, `arbitrum`, `optimism`, `base`, `avalanche`, `fantom`, `linea`, or `cyber`."), ["ethereum", "polygon", "bsc", "arbitrum", "optimism", "base", "avalanche", "fantom", "linea", "cyber"]), ["ethereum"]),
539
+ include: s.withExamples(s.string("Comma-separated enrichments to attach. Currently valid: `labels` — adds `from_label` and `to_label` fields with entity information for the from/to addresses."), ["labels"]),
540
+ }, { required: ["hash", "chain"], additionalProperties: false }),
541
+ outputSchema: arrayResponseSchema,
542
+ },
543
+ {
544
+ name: "onchain_yield_ranking",
545
+ description: "Yield Pool Ranking.",
546
+ operationType: "read",
547
+ route: {
548
+ path: "/gateway/v1/onchain/yield/ranking",
549
+ method: "GET",
550
+ parameters: [
551
+ { name: "project", in: "query", field: "project" },
552
+ { name: "sort_by", in: "query", field: "sort_by" },
553
+ { name: "order", in: "query", field: "order" },
554
+ { name: "limit", in: "query", field: "limit" },
555
+ { name: "offset", in: "query", field: "offset" },
556
+ ],
557
+ body: false,
558
+ },
559
+ inputSchema: s.object("Parameters for Yield Pool Ranking.", {
560
+ project: s.withExamples(s.string("Filter by protocol name like `lido`, `aave`, or `uniswap`"), ["aave"]),
561
+ sort_by: s.withExamples(s.withEnum(s.string('Ranking metric: `apy` or `tvl_usd`. When sorted by `apy`, only pools with TVL >= $100k are included Default: "apy".'), ["apy", "tvl_usd"]), ["apy"]),
562
+ order: s.withExamples(s.withEnum(s.string('Sort direction Default: "desc".'), ["asc", "desc"]), ["desc"]),
563
+ limit: s.withExamples(s.integer("Results per page Default: 20.", { minimum: 1, maximum: 100 }), [20]),
564
+ offset: s.withExamples(s.integer("Pagination offset Default: 0.", { minimum: 0 }), [0]),
565
+ }, { required: [], additionalProperties: false }),
566
+ outputSchema: arrayResponseSchema,
567
+ },
568
+ {
569
+ name: "portfolio_wallets",
570
+ description: "Current User Portfolio Wallets.",
571
+ operationType: "read",
572
+ route: { path: "/gateway/v1/portfolio/wallets", method: "GET", parameters: [], body: false },
573
+ inputSchema: s.object("Parameters for Current User Portfolio Wallets.", {}, { required: [], additionalProperties: false }),
574
+ outputSchema: objectResponseSchema,
575
+ },
576
+ {
577
+ name: "token_dex_trades",
578
+ description: "Token DEX Trade History.",
579
+ operationType: "read",
580
+ route: {
581
+ path: "/gateway/v1/token/dex-trades",
582
+ method: "GET",
583
+ parameters: [
584
+ { name: "address", in: "query", field: "address" },
585
+ { name: "chain", in: "query", field: "chain" },
586
+ { name: "limit", in: "query", field: "limit" },
587
+ { name: "offset", in: "query", field: "offset" },
588
+ { name: "include", in: "query", field: "include" },
589
+ ],
590
+ body: false,
591
+ },
592
+ inputSchema: s.object("Parameters for Token DEX Trade History.", {
593
+ address: s.withExamples(s.string("Token CONTRACT ADDRESS — 0x-prefixed hex (EVM chains only; Tron also accepts base58 `T...`). This is NOT a ticker symbol (e.g. do NOT pass `USDC` or `BTC`). To resolve a ticker symbol to a contract address, call GET /v1/search/token?q={symbol}&chain={chain} and use the `address` whose `chain` is supported by this endpoint. This endpoint has no `symbol` parameter."), ["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"]),
594
+ chain: s.withExamples(s.withEnum(s.string('Chain. Can be `ethereum`, `base`, `bsc`, `arbitrum`, or `tron`. Default: "ethereum".'), [
595
+ "ethereum",
596
+ "base",
597
+ "bsc",
598
+ "arbitrum",
599
+ "tron",
600
+ ]), ["ethereum"]),
601
+ limit: s.withExamples(s.integer("Results per page Default: 20.", { minimum: 1, maximum: 100 }), [20]),
602
+ offset: s.withExamples(s.integer("Pagination offset Default: 0.", { minimum: 0 }), [0]),
603
+ include: s.withExamples(s.string("Comma-separated enrichments to attach to each trade. Currently valid: `labels` — adds a `taker_label` field with entity information for the taker address."), ["labels"]),
604
+ }, { required: ["address"], additionalProperties: false }),
605
+ outputSchema: arrayResponseSchema,
606
+ },
607
+ {
608
+ name: "token_holders",
609
+ description: "Token Holders.",
610
+ operationType: "read",
611
+ route: {
612
+ path: "/gateway/v1/token/holders",
613
+ method: "GET",
614
+ parameters: [
615
+ { name: "address", in: "query", field: "address" },
616
+ { name: "chain", in: "query", field: "chain" },
617
+ { name: "limit", in: "query", field: "limit" },
618
+ { name: "offset", in: "query", field: "offset" },
619
+ { name: "include", in: "query", field: "include" },
620
+ ],
621
+ body: false,
622
+ },
623
+ inputSchema: s.object("Parameters for Token Holders.", {
624
+ address: s.withExamples(s.string("Token CONTRACT ADDRESS — 0x-prefixed hex for EVM chains, base58 for Solana. This is NOT a ticker symbol (e.g. do NOT pass `USDC` or `BTC`). To resolve a ticker symbol to a contract address, call GET /v1/search/token?q={symbol}&chain={chain} and use the `address` whose `chain` is supported by this endpoint. This endpoint has no `symbol` parameter."), ["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"]),
625
+ chain: s.withExamples(s.withEnum(s.string("Chain. Can be `ethereum`, `polygon`, `bsc`, `solana`, `avalanche`, `arbitrum`, `optimism`, or `base`."), ["ethereum", "polygon", "bsc", "solana", "avalanche", "arbitrum", "optimism", "base"]), ["ethereum"]),
626
+ limit: s.withExamples(s.integer("Results per page Default: 20.", { minimum: 1, maximum: 100 }), [20]),
627
+ offset: s.withExamples(s.integer("Pagination offset Default: 0.", { minimum: 0 }), [0]),
628
+ include: s.withExamples(s.string("Comma-separated enrichments to attach to each holder. Currently valid: `labels` — adds a full `label` record alongside the flat `entity_name` / `entity_type` fields."), ["labels"]),
629
+ }, { required: ["address", "chain"], additionalProperties: false }),
630
+ outputSchema: arrayResponseSchema,
631
+ },
632
+ {
633
+ name: "token_tokenomics",
634
+ description: "Token Unlock Schedule.",
635
+ operationType: "read",
636
+ route: {
637
+ path: "/gateway/v1/token/tokenomics",
638
+ method: "GET",
639
+ parameters: [
640
+ { name: "id", in: "query", field: "id" },
641
+ { name: "symbol", in: "query", field: "symbol" },
642
+ { name: "from", in: "query", field: "from" },
643
+ { name: "to", in: "query", field: "to" },
644
+ ],
645
+ body: false,
646
+ },
647
+ inputSchema: s.object("Parameters for Token Unlock Schedule.", {
648
+ id: s.withExamples(s.string("Surf project UUID. PREFERRED — always use this when available from a previous response. Takes priority over symbol."), ["25c6612a-395c-4974-94eb-3b5f9f4b2ed7"]),
649
+ symbol: s.withExamples(s.string("Token symbol like `ARB`, `OP`, or `APT`"), ["ARB"]),
650
+ from: fromSchema,
651
+ to: s.withExamples(s.string("End of time range. Accepts Unix seconds (`1735689600`) or date string (`2025-01-01`)"), ["2025-01-01"]),
652
+ }, { required: [], additionalProperties: false }),
653
+ outputSchema: arrayResponseSchema,
654
+ },
655
+ {
656
+ name: "token_transfer_counterparties",
657
+ description: "Top Transfer Counterparties.",
658
+ operationType: "read",
659
+ route: {
660
+ path: "/gateway/v1/token/transfer-counterparties",
661
+ method: "GET",
662
+ parameters: [
663
+ { name: "address", in: "query", field: "address" },
664
+ { name: "chain", in: "query", field: "chain" },
665
+ { name: "direction", in: "query", field: "direction" },
666
+ { name: "metric", in: "query", field: "metric" },
667
+ { name: "time_range", in: "query", field: "time_range" },
668
+ { name: "limit", in: "query", field: "limit" },
669
+ { name: "offset", in: "query", field: "offset" },
670
+ { name: "include", in: "query", field: "include" },
671
+ { name: "exclude_labels", in: "query", field: "exclude_labels" },
672
+ ],
673
+ body: false,
674
+ },
675
+ inputSchema: s.object("Parameters for Top Transfer Counterparties.", {
676
+ address: s.withExamples(s.string("Token CONTRACT ADDRESS (0x-hex for EVM; Tron accepts base58 `T...` or 0x-hex). Not a ticker — resolve a symbol via GET /v1/search/token?q={symbol}&chain={chain} and use a returned address whose chain is supported by this endpoint."), ["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"]),
677
+ chain: s.withExamples(s.withEnum(s.string("Chain the token contract is deployed on."), [
678
+ "ethereum",
679
+ "base",
680
+ "bsc",
681
+ "arbitrum",
682
+ "tron",
683
+ ]), ["ethereum"]),
684
+ direction: s.withExamples(s.withEnum(s.string("Ranking direction: `to` = top receivers, `from` = top senders."), ["to", "from"]), ["to"]),
685
+ metric: s.withEnum(s.string('Ranking key: `count` = transfer frequency, `amount` = decimal-adjusted token sum, `amount_usd` = USD value sum (USD lags ~3 days; unreliable for recent windows). Default: "count".'), ["count", "amount", "amount_usd"]),
686
+ time_range: s.withEnum(s.string('Look-back window (hard 90d cap). Default: "7d".'), ["1d", "7d", "30d", "90d"]),
687
+ limit: s.integer("Results per page. Default: 20.", { minimum: 1, maximum: 100 }),
688
+ offset: s.integer("Pagination offset. Default: 0.", { minimum: 0 }),
689
+ include: s.withExamples(s.string("Comma-separated enrichments. `labels` attaches an entity label per counterparty."), ["labels"]),
690
+ exclude_labels: s.withExamples(s.string("Comma-separated entity categories to drop (best-effort): `cex`, `router`, `amm`, `bridge`. Results may be fewer than `limit` when top counterparties are infrastructure."), ["cex,router"]),
691
+ }, { required: ["address", "chain", "direction"], additionalProperties: false }),
692
+ outputSchema: arrayResponseSchema,
693
+ },
694
+ {
695
+ name: "token_transfer_stats",
696
+ description: "Token Transfer Activity Summary.",
697
+ operationType: "read",
698
+ route: {
699
+ path: "/gateway/v1/token/transfer-stats",
700
+ method: "GET",
701
+ parameters: [
702
+ { name: "address", in: "query", field: "address" },
703
+ { name: "chain", in: "query", field: "chain" },
704
+ { name: "time_range", in: "query", field: "time_range" },
705
+ { name: "include", in: "query", field: "include" },
706
+ ],
707
+ body: false,
708
+ },
709
+ inputSchema: s.object("Parameters for Token Transfer Activity Summary.", {
710
+ address: s.withExamples(s.string("Token CONTRACT ADDRESS (0x-hex for EVM; Tron accepts base58 `T...` or 0x-hex). Not a ticker — resolve a symbol via GET /v1/search/token?q={symbol}&chain={chain} and use a returned address whose chain is supported by this endpoint."), ["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"]),
711
+ chain: s.withExamples(s.withEnum(s.string("Chain the token contract is deployed on."), [
712
+ "ethereum",
713
+ "base",
714
+ "bsc",
715
+ "arbitrum",
716
+ "tron",
717
+ ]), ["ethereum"]),
718
+ time_range: s.withEnum(s.string('Look-back window (hard 90d cap). Default: "7d".'), ["1d", "7d", "30d", "90d"]),
719
+ include: s.withExamples(s.string("Comma-separated extras. `series` adds a daily trend breakdown (volume only)."), ["series"]),
720
+ }, { required: ["address", "chain"], additionalProperties: false }),
721
+ outputSchema: objectResponseSchema,
722
+ },
723
+ {
724
+ name: "token_transfers",
725
+ description: "Token Transfer History.",
726
+ operationType: "read",
727
+ route: {
728
+ path: "/gateway/v1/token/transfers",
729
+ method: "GET",
730
+ parameters: [
731
+ { name: "address", in: "query", field: "address" },
732
+ { name: "chain", in: "query", field: "chain" },
733
+ { name: "from", in: "query", field: "from" },
734
+ { name: "to", in: "query", field: "to" },
735
+ { name: "limit", in: "query", field: "limit" },
736
+ { name: "offset", in: "query", field: "offset" },
737
+ { name: "include", in: "query", field: "include" },
738
+ ],
739
+ body: false,
740
+ },
741
+ inputSchema: s.object("Parameters for Token Transfer History.", {
742
+ address: s.withExamples(s.string("Token CONTRACT ADDRESS — 0x-prefixed hex for EVM chains, base58 for Solana. This is NOT a ticker symbol (e.g. do NOT pass `USDC` or `BTC`). To resolve a ticker symbol to a contract address, call GET /v1/search/token?q={symbol}&chain={chain} and use the `address` whose `chain` is supported by this endpoint. This endpoint has no `symbol` parameter."), ["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"]),
743
+ chain: s.withExamples(s.withEnum(s.string("Chain. Can be `ethereum`, `base`, `solana`, `tron`, `bsc`, or `arbitrum`."), [
744
+ "ethereum",
745
+ "base",
746
+ "solana",
747
+ "tron",
748
+ "bsc",
749
+ "arbitrum",
750
+ ]), ["ethereum"]),
751
+ from: s.withExamples(s.string("Start of date range. Accepts Unix seconds or YYYY-MM-DD. Defaults to 7 days ago."), ["2025-01-01"]),
752
+ to: s.withExamples(s.string("End of date range. Accepts Unix seconds or YYYY-MM-DD. Defaults to today."), [
753
+ "2025-03-01",
754
+ ]),
755
+ limit: s.withExamples(s.integer("Results per page Default: 20.", { minimum: 1, maximum: 100 }), [20]),
756
+ offset: s.withExamples(s.integer("Pagination offset Default: 0.", { minimum: 0 }), [0]),
757
+ include: s.withExamples(s.string("Comma-separated enrichments to attach to each transfer. Currently valid: `labels` — adds `from_label` and `to_label` fields."), ["labels"]),
758
+ }, { required: ["address", "chain"], additionalProperties: false }),
759
+ outputSchema: arrayResponseSchema,
760
+ },
761
+ {
762
+ name: "wallet_detail",
763
+ description: "Aggregated Wallet Detail.",
764
+ operationType: "read",
765
+ route: {
766
+ path: "/gateway/v1/wallet/detail",
767
+ method: "GET",
768
+ parameters: [
769
+ { name: "address", in: "query", field: "address" },
770
+ { name: "chain", in: "query", field: "chain" },
771
+ { name: "fields", in: "query", field: "fields" },
772
+ ],
773
+ body: false,
774
+ },
775
+ inputSchema: s.object("Parameters for Aggregated Wallet Detail.", {
776
+ address: s.withExamples(s.string("Wallet address (0x hex for EVM, base58 for Solana)"), [
777
+ "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
778
+ ]),
779
+ chain: s.withExamples(s.withEnum(s.string("Chain filter for `tokens`, `nft`, and `approvals`. When omitted, inferred from address format: 0x addresses query all EVM chains, base58 addresses query Solana."), ["ethereum", "polygon", "bsc", "avalanche", "arbitrum", "optimism", "fantom", "base", "solana"]), ["ethereum"]),
780
+ fields: s.withExamples(s.string('Comma-separated sub-resources to include. Valid: `balance`, `tokens`, `labels`, `nft`, `approvals`. The `active_chains` field is always returned. `approvals` is opt-in (not in default) as it triggers additional upstream calls. Default: "balance,tokens,labels,nft".'), ["balance,labels,approvals"]),
781
+ }, { required: ["address"], additionalProperties: false }),
782
+ outputSchema: objectResponseSchema,
783
+ },
784
+ {
785
+ name: "wallet_history",
786
+ description: "Wallet Transaction History.",
787
+ operationType: "read",
788
+ route: {
789
+ path: "/gateway/v1/wallet/history",
790
+ method: "GET",
791
+ parameters: [
792
+ { name: "address", in: "query", field: "address" },
793
+ { name: "chain", in: "query", field: "chain" },
794
+ { name: "limit", in: "query", field: "limit" },
795
+ { name: "offset", in: "query", field: "offset" },
796
+ { name: "before", in: "query", field: "before" },
797
+ { name: "sort_by", in: "query", field: "sort_by" },
798
+ { name: "order", in: "query", field: "order" },
799
+ { name: "include", in: "query", field: "include" },
800
+ ],
801
+ body: false,
802
+ },
803
+ inputSchema: s.object("Parameters for Wallet Transaction History.", {
804
+ address: s.withExamples(s.string("Wallet address — must be a raw 0x-prefixed hex address, not an ENS name"), [
805
+ "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
806
+ ]),
807
+ chain: s.withExamples(s.withEnum(s.string('Chain filter. Can be `ethereum`, `polygon`, `bsc`, `avalanche`, `arbitrum`, `optimism`, `fantom`, or `base`. Default: "ethereum".'), ["ethereum", "polygon", "bsc", "avalanche", "arbitrum", "optimism", "fantom", "base"]), ["ethereum"]),
808
+ limit: s.withExamples(s.integer("Results per page Default: 20.", { minimum: 1, maximum: 100 }), [20]),
809
+ offset: s.withExamples(s.integer("Pagination offset. This feed is cursor-paginated upstream and only the most recent ~1000 transactions are reachable; a larger offset returns an empty page with meta.empty_reason rather than an error. For deep history prefer the `before` cursor — its upstream cost is bounded by `limit` and independent of depth, whereas a large offset is emulated by walking the whole feed. Default: 0.", { minimum: 0 }), [0]),
810
+ before: s.withExamples(s.integer("Cursor for efficient deep pagination: return transactions strictly older than this Unix-seconds timestamp (exclusive). Pass the `timestamp` of the last item from the previous page; if items may share a second, pass that timestamp + 1 and de-duplicate on `tx_hash`. Unlike `offset` (which walks the feed), the number of upstream fetches is bounded by `limit` (DeBank returns up to 20 per page) and independent of how far back you page. Mutually exclusive with `offset`.", { minimum: 0 }), [1704067200]),
811
+ sort_by: s.withExamples(s.withEnum(s.string('Field to sort results by. The cursor-paginated upstream feed only supports `timestamp` correctly; unsupported values are rejected by the handler for correctness. Default: "timestamp".'), ["timestamp", "value"]), ["timestamp"]),
812
+ order: s.withExamples(s.withEnum(s.string('Sort order. The cursor-paginated upstream feed only supports `desc` correctly; unsupported values are rejected by the handler for correctness. Default: "desc".'), ["asc", "desc"]), ["desc"]),
813
+ include: s.withExamples(s.string("Comma-separated enrichments to attach to each item. Currently valid: `labels` — adds `from_label` and `to_label` fields with entity information for each counterparty address."), ["labels"]),
814
+ }, { required: ["address"], additionalProperties: false }),
815
+ outputSchema: arrayResponseSchema,
816
+ },
817
+ {
818
+ name: "wallet_labels_batch",
819
+ description: "Wallet Labels (Batch).",
820
+ operationType: "read",
821
+ route: {
822
+ path: "/gateway/v1/wallet/labels/batch",
823
+ method: "GET",
824
+ parameters: [{ name: "addresses", in: "query", field: "addresses" }],
825
+ body: false,
826
+ },
827
+ inputSchema: s.object("Parameters for Wallet Labels (Batch).", {
828
+ addresses: s.withExamples(s.string("Comma-separated wallet addresses to look up, max 100"), [
829
+ "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045,0xdead",
830
+ ]),
831
+ }, { required: ["addresses"], additionalProperties: false }),
832
+ outputSchema: arrayResponseSchema,
833
+ },
834
+ {
835
+ name: "wallet_net_worth",
836
+ description: "Wallet Net Worth History.",
837
+ operationType: "read",
838
+ route: {
839
+ path: "/gateway/v1/wallet/net-worth",
840
+ method: "GET",
841
+ parameters: [{ name: "address", in: "query", field: "address" }],
842
+ body: false,
843
+ },
844
+ inputSchema: s.object("Parameters for Wallet Net Worth History.", {
845
+ address: s.withExamples(s.string("Wallet address — must be a raw 0x-prefixed hex address (EVM only). Solana and ENS names are not supported."), ["0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"]),
846
+ }, { required: ["address"], additionalProperties: false }),
847
+ outputSchema: arrayResponseSchema,
848
+ },
849
+ {
850
+ name: "wallet_protocols",
851
+ description: "Wallet DeFi Protocol Positions.",
852
+ operationType: "read",
853
+ route: {
854
+ path: "/gateway/v1/wallet/protocols",
855
+ method: "GET",
856
+ parameters: [
857
+ { name: "address", in: "query", field: "address" },
858
+ { name: "limit", in: "query", field: "limit" },
859
+ { name: "offset", in: "query", field: "offset" },
860
+ ],
861
+ body: false,
862
+ },
863
+ inputSchema: s.object("Parameters for Wallet DeFi Protocol Positions.", {
864
+ address: s.withExamples(s.string("Wallet address — must be a raw 0x-prefixed hex address, not an ENS name"), [
865
+ "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
866
+ ]),
867
+ limit: s.withExamples(s.integer("Results per page Default: 20.", { minimum: 1, maximum: 100 }), [20]),
868
+ offset: s.withExamples(s.integer("Pagination offset Default: 0.", { minimum: 0 }), [0]),
869
+ }, { required: ["address"], additionalProperties: false }),
870
+ outputSchema: arrayResponseSchema,
871
+ },
872
+ {
873
+ name: "wallet_transfers",
874
+ description: "Wallet Transfer History.",
875
+ operationType: "read",
876
+ route: {
877
+ path: "/gateway/v1/wallet/transfers",
878
+ method: "GET",
879
+ parameters: [
880
+ { name: "address", in: "query", field: "address" },
881
+ { name: "chain", in: "query", field: "chain" },
882
+ { name: "flow", in: "query", field: "flow" },
883
+ { name: "token", in: "query", field: "token" },
884
+ { name: "limit", in: "query", field: "limit" },
885
+ { name: "offset", in: "query", field: "offset" },
886
+ { name: "include", in: "query", field: "include" },
887
+ ],
888
+ body: false,
889
+ },
890
+ inputSchema: s.object("Parameters for Wallet Transfer History.", {
891
+ address: s.withExamples(s.string("Wallet address — must be a raw address (0x-prefixed hex for EVM, base58 for Solana). ENS names like `vitalik.eth` are not supported; resolve to a 0x address first."), ["0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"]),
892
+ chain: s.withExamples(s.withEnum(s.string('Chain. Can be `ethereum`, `base`, `solana`, `tron`, `bsc`, or `arbitrum`. Default: "ethereum".'), ["ethereum", "base", "solana", "tron", "bsc", "arbitrum"]), ["ethereum"]),
893
+ flow: s.withExamples(s.withEnum(s.string("Filter by transfer direction relative to the queried wallet. `in` for incoming, `out` for outgoing. Omit for both directions."), ["in", "out"]), ["in"]),
894
+ token: s.withExamples(s.string("Filter by token contract address. Use `0x0000000000000000000000000000000000000000` for native token transfers. Omit for all tokens."), ["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]),
895
+ limit: s.withExamples(s.integer("Results per page. Default 20, max 100. NOTE: Solana (`chain=solana`) is hard-capped at 40 per call by the upstream Solscan API — values above 40 return at most 40 items. Check `meta.has_more` and paginate with `offset` to fetch beyond the first page. Default: 20.", { minimum: 1, maximum: 100 }), [20]),
896
+ offset: s.withExamples(s.integer("Pagination offset. For Solana, this maps to Solscan's 1-indexed `page` parameter (page = offset/page_size + 1). Default: 0.", { minimum: 0 }), [0]),
897
+ include: s.withExamples(s.string("Comma-separated enrichments to attach to each transfer. Currently valid: `labels` — adds `from_label` and `to_label` fields with entity information for each counterparty address."), ["labels"]),
898
+ }, { required: ["address"], additionalProperties: false }),
899
+ outputSchema: arrayResponseSchema,
900
+ },
901
+ ];