@unclick/mcp-server 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) hide show
  1. package/dist/abn-tool.d.ts +3 -0
  2. package/dist/abn-tool.d.ts.map +1 -0
  3. package/dist/abn-tool.js +89 -0
  4. package/dist/abn-tool.js.map +1 -0
  5. package/dist/abuseipdb-tool.d.ts +4 -0
  6. package/dist/abuseipdb-tool.d.ts.map +1 -0
  7. package/dist/abuseipdb-tool.js +129 -0
  8. package/dist/abuseipdb-tool.js.map +1 -0
  9. package/dist/alphavantage-tool.d.ts +7 -0
  10. package/dist/alphavantage-tool.d.ts.map +1 -0
  11. package/dist/alphavantage-tool.js +208 -0
  12. package/dist/alphavantage-tool.js.map +1 -0
  13. package/dist/amber-tool.d.ts +4 -0
  14. package/dist/amber-tool.d.ts.map +1 -0
  15. package/dist/amber-tool.js +114 -0
  16. package/dist/amber-tool.js.map +1 -0
  17. package/dist/australiapost-tool.d.ts +4 -0
  18. package/dist/australiapost-tool.d.ts.map +1 -0
  19. package/dist/australiapost-tool.js +130 -0
  20. package/dist/australiapost-tool.js.map +1 -0
  21. package/dist/bandsintown-tool.d.ts +4 -0
  22. package/dist/bandsintown-tool.d.ts.map +1 -0
  23. package/dist/bandsintown-tool.js +76 -0
  24. package/dist/bandsintown-tool.js.map +1 -0
  25. package/dist/bungie-tool.d.ts +5 -0
  26. package/dist/bungie-tool.d.ts.map +1 -0
  27. package/dist/bungie-tool.js +138 -0
  28. package/dist/bungie-tool.js.map +1 -0
  29. package/dist/calculator-tool.d.ts +6 -0
  30. package/dist/calculator-tool.d.ts.map +1 -0
  31. package/dist/calculator-tool.js +196 -0
  32. package/dist/calculator-tool.js.map +1 -0
  33. package/dist/carboninterface-tool.d.ts +5 -0
  34. package/dist/carboninterface-tool.d.ts.map +1 -0
  35. package/dist/carboninterface-tool.js +143 -0
  36. package/dist/carboninterface-tool.js.map +1 -0
  37. package/dist/chessdotcom-tool.d.ts +6 -0
  38. package/dist/chessdotcom-tool.d.ts.map +1 -0
  39. package/dist/chessdotcom-tool.js +183 -0
  40. package/dist/chessdotcom-tool.js.map +1 -0
  41. package/dist/client.js +1 -1
  42. package/dist/clockify-tool.d.ts +2 -0
  43. package/dist/clockify-tool.d.ts.map +1 -0
  44. package/dist/clockify-tool.js +155 -0
  45. package/dist/clockify-tool.js.map +1 -0
  46. package/dist/coingecko-tool.d.ts +7 -0
  47. package/dist/coingecko-tool.d.ts.map +1 -0
  48. package/dist/coingecko-tool.js +176 -0
  49. package/dist/coingecko-tool.js.map +1 -0
  50. package/dist/coinmarketcap-tool.d.ts +6 -0
  51. package/dist/coinmarketcap-tool.d.ts.map +1 -0
  52. package/dist/coinmarketcap-tool.js +168 -0
  53. package/dist/coinmarketcap-tool.js.map +1 -0
  54. package/dist/color-tool.d.ts +6 -0
  55. package/dist/color-tool.d.ts.map +1 -0
  56. package/dist/color-tool.js +391 -0
  57. package/dist/color-tool.js.map +1 -0
  58. package/dist/connectors/bluesky.d.ts +3 -0
  59. package/dist/connectors/bluesky.d.ts.map +1 -0
  60. package/dist/connectors/bluesky.js +26 -0
  61. package/dist/connectors/bluesky.js.map +1 -0
  62. package/dist/connectors/discogs.d.ts +3 -0
  63. package/dist/connectors/discogs.d.ts.map +1 -0
  64. package/dist/connectors/discogs.js +18 -0
  65. package/dist/connectors/discogs.js.map +1 -0
  66. package/dist/connectors/discord.d.ts +3 -0
  67. package/dist/connectors/discord.d.ts.map +1 -0
  68. package/dist/connectors/discord.js +18 -0
  69. package/dist/connectors/discord.js.map +1 -0
  70. package/dist/connectors/guardian.d.ts +3 -0
  71. package/dist/connectors/guardian.d.ts.map +1 -0
  72. package/dist/connectors/guardian.js +18 -0
  73. package/dist/connectors/guardian.js.map +1 -0
  74. package/dist/connectors/index.d.ts +39 -0
  75. package/dist/connectors/index.d.ts.map +1 -0
  76. package/dist/connectors/index.js +23 -0
  77. package/dist/connectors/index.js.map +1 -0
  78. package/dist/connectors/lastfm.d.ts +3 -0
  79. package/dist/connectors/lastfm.d.ts.map +1 -0
  80. package/dist/connectors/lastfm.js +18 -0
  81. package/dist/connectors/lastfm.js.map +1 -0
  82. package/dist/connectors/mastodon.d.ts +3 -0
  83. package/dist/connectors/mastodon.d.ts.map +1 -0
  84. package/dist/connectors/mastodon.js +26 -0
  85. package/dist/connectors/mastodon.js.map +1 -0
  86. package/dist/connectors/newsapi.d.ts +3 -0
  87. package/dist/connectors/newsapi.d.ts.map +1 -0
  88. package/dist/connectors/newsapi.js +18 -0
  89. package/dist/connectors/newsapi.js.map +1 -0
  90. package/dist/connectors/ptv.d.ts +3 -0
  91. package/dist/connectors/ptv.d.ts.map +1 -0
  92. package/dist/connectors/ptv.js +26 -0
  93. package/dist/connectors/ptv.js.map +1 -0
  94. package/dist/connectors/reddit.d.ts +3 -0
  95. package/dist/connectors/reddit.d.ts.map +1 -0
  96. package/dist/connectors/reddit.js +28 -0
  97. package/dist/connectors/reddit.js.map +1 -0
  98. package/dist/connectors/seatgeek.d.ts +3 -0
  99. package/dist/connectors/seatgeek.d.ts.map +1 -0
  100. package/dist/connectors/seatgeek.js +18 -0
  101. package/dist/connectors/seatgeek.js.map +1 -0
  102. package/dist/connectors/shopify.d.ts +3 -0
  103. package/dist/connectors/shopify.d.ts.map +1 -0
  104. package/dist/connectors/shopify.js +38 -0
  105. package/dist/connectors/shopify.js.map +1 -0
  106. package/dist/connectors/slack.d.ts +3 -0
  107. package/dist/connectors/slack.d.ts.map +1 -0
  108. package/dist/connectors/slack.js +18 -0
  109. package/dist/connectors/slack.js.map +1 -0
  110. package/dist/connectors/telegram.d.ts +3 -0
  111. package/dist/connectors/telegram.d.ts.map +1 -0
  112. package/dist/connectors/telegram.js +18 -0
  113. package/dist/connectors/telegram.js.map +1 -0
  114. package/dist/connectors/ticketmaster.d.ts +3 -0
  115. package/dist/connectors/ticketmaster.d.ts.map +1 -0
  116. package/dist/connectors/ticketmaster.js +18 -0
  117. package/dist/connectors/ticketmaster.js.map +1 -0
  118. package/dist/connectors/twitch.d.ts +3 -0
  119. package/dist/connectors/twitch.d.ts.map +1 -0
  120. package/dist/connectors/twitch.js +26 -0
  121. package/dist/connectors/twitch.js.map +1 -0
  122. package/dist/connectors/xero.d.ts +3 -0
  123. package/dist/connectors/xero.d.ts.map +1 -0
  124. package/dist/connectors/xero.js +36 -0
  125. package/dist/connectors/xero.js.map +1 -0
  126. package/dist/connectors/yelp.d.ts +3 -0
  127. package/dist/connectors/yelp.d.ts.map +1 -0
  128. package/dist/connectors/yelp.js +18 -0
  129. package/dist/connectors/yelp.js.map +1 -0
  130. package/dist/datetime-tool.d.ts +8 -0
  131. package/dist/datetime-tool.d.ts.map +1 -0
  132. package/dist/datetime-tool.js +263 -0
  133. package/dist/datetime-tool.js.map +1 -0
  134. package/dist/deezer-tool.d.ts +7 -0
  135. package/dist/deezer-tool.d.ts.map +1 -0
  136. package/dist/deezer-tool.js +142 -0
  137. package/dist/deezer-tool.js.map +1 -0
  138. package/dist/discogs-tool.d.ts +7 -0
  139. package/dist/discogs-tool.d.ts.map +1 -0
  140. package/dist/discogs-tool.js +138 -0
  141. package/dist/discogs-tool.js.map +1 -0
  142. package/dist/domain-tool.d.ts +4 -0
  143. package/dist/domain-tool.d.ts.map +1 -0
  144. package/dist/domain-tool.js +155 -0
  145. package/dist/domain-tool.js.map +1 -0
  146. package/dist/ebird-tool.d.ts +5 -0
  147. package/dist/ebird-tool.d.ts.map +1 -0
  148. package/dist/ebird-tool.js +128 -0
  149. package/dist/ebird-tool.js.map +1 -0
  150. package/dist/email-tool.d.ts +8 -0
  151. package/dist/email-tool.d.ts.map +1 -0
  152. package/dist/email-tool.js +376 -0
  153. package/dist/email-tool.js.map +1 -0
  154. package/dist/espn-tool.d.ts +8 -0
  155. package/dist/espn-tool.d.ts.map +1 -0
  156. package/dist/espn-tool.js +147 -0
  157. package/dist/espn-tool.js.map +1 -0
  158. package/dist/eventbrite-tool.d.ts +7 -0
  159. package/dist/eventbrite-tool.d.ts.map +1 -0
  160. package/dist/eventbrite-tool.js +134 -0
  161. package/dist/eventbrite-tool.js.map +1 -0
  162. package/dist/feedly-tool.d.ts +2 -0
  163. package/dist/feedly-tool.d.ts.map +1 -0
  164. package/dist/feedly-tool.js +152 -0
  165. package/dist/feedly-tool.js.map +1 -0
  166. package/dist/foursquare-tool.d.ts +6 -0
  167. package/dist/foursquare-tool.d.ts.map +1 -0
  168. package/dist/foursquare-tool.js +102 -0
  169. package/dist/foursquare-tool.js.map +1 -0
  170. package/dist/fpl-tool.d.ts +8 -0
  171. package/dist/fpl-tool.d.ts.map +1 -0
  172. package/dist/fpl-tool.js +195 -0
  173. package/dist/fpl-tool.js.map +1 -0
  174. package/dist/genius-tool.d.ts +5 -0
  175. package/dist/genius-tool.d.ts.map +1 -0
  176. package/dist/genius-tool.js +62 -0
  177. package/dist/genius-tool.js.map +1 -0
  178. package/dist/guardian-tool.d.ts +6 -0
  179. package/dist/guardian-tool.d.ts.map +1 -0
  180. package/dist/guardian-tool.js +124 -0
  181. package/dist/guardian-tool.js.map +1 -0
  182. package/dist/hackernews-tool.d.ts +8 -0
  183. package/dist/hackernews-tool.d.ts.map +1 -0
  184. package/dist/hackernews-tool.js +96 -0
  185. package/dist/hackernews-tool.js.map +1 -0
  186. package/dist/haveibeenpwned-tool.d.ts +4 -0
  187. package/dist/haveibeenpwned-tool.d.ts.map +1 -0
  188. package/dist/haveibeenpwned-tool.js +162 -0
  189. package/dist/haveibeenpwned-tool.js.map +1 -0
  190. package/dist/hunter-tool.d.ts +4 -0
  191. package/dist/hunter-tool.d.ts.map +1 -0
  192. package/dist/hunter-tool.js +148 -0
  193. package/dist/hunter-tool.js.map +1 -0
  194. package/dist/instapaper-tool.d.ts +2 -0
  195. package/dist/instapaper-tool.d.ts.map +1 -0
  196. package/dist/instapaper-tool.js +257 -0
  197. package/dist/instapaper-tool.js.map +1 -0
  198. package/dist/ipapi-tool.d.ts +3 -0
  199. package/dist/ipapi-tool.d.ts.map +1 -0
  200. package/dist/ipapi-tool.js +78 -0
  201. package/dist/ipapi-tool.js.map +1 -0
  202. package/dist/ipaustralia-tool.d.ts +4 -0
  203. package/dist/ipaustralia-tool.d.ts.map +1 -0
  204. package/dist/ipaustralia-tool.js +138 -0
  205. package/dist/ipaustralia-tool.js.map +1 -0
  206. package/dist/lastfm-tool.d.ts +8 -0
  207. package/dist/lastfm-tool.d.ts.map +1 -0
  208. package/dist/lastfm-tool.js +169 -0
  209. package/dist/lastfm-tool.js.map +1 -0
  210. package/dist/lego-tool.d.ts +8 -0
  211. package/dist/lego-tool.d.ts.map +1 -0
  212. package/dist/lego-tool.js +235 -0
  213. package/dist/lego-tool.js.map +1 -0
  214. package/dist/lichess-tool.d.ts +6 -0
  215. package/dist/lichess-tool.d.ts.map +1 -0
  216. package/dist/lichess-tool.js +211 -0
  217. package/dist/lichess-tool.js.map +1 -0
  218. package/dist/meal-tool.d.ts +8 -0
  219. package/dist/meal-tool.d.ts.map +1 -0
  220. package/dist/meal-tool.js +143 -0
  221. package/dist/meal-tool.js.map +1 -0
  222. package/dist/monica-tool.d.ts +2 -0
  223. package/dist/monica-tool.d.ts.map +1 -0
  224. package/dist/monica-tool.js +160 -0
  225. package/dist/monica-tool.js.map +1 -0
  226. package/dist/musicbrainz-tool.d.ts +6 -0
  227. package/dist/musicbrainz-tool.d.ts.map +1 -0
  228. package/dist/musicbrainz-tool.js +65 -0
  229. package/dist/musicbrainz-tool.js.map +1 -0
  230. package/dist/nasa-tool.d.ts +6 -0
  231. package/dist/nasa-tool.d.ts.map +1 -0
  232. package/dist/nasa-tool.js +158 -0
  233. package/dist/nasa-tool.js.map +1 -0
  234. package/dist/newsapi-tool.d.ts +4 -0
  235. package/dist/newsapi-tool.d.ts.map +1 -0
  236. package/dist/newsapi-tool.js +108 -0
  237. package/dist/newsapi-tool.js.map +1 -0
  238. package/dist/notion-tool.d.ts +2 -0
  239. package/dist/notion-tool.d.ts.map +1 -0
  240. package/dist/notion-tool.js +167 -0
  241. package/dist/notion-tool.js.map +1 -0
  242. package/dist/numbers-tool.d.ts +3 -0
  243. package/dist/numbers-tool.d.ts.map +1 -0
  244. package/dist/numbers-tool.js +47 -0
  245. package/dist/numbers-tool.js.map +1 -0
  246. package/dist/nvd-tool.d.ts +4 -0
  247. package/dist/nvd-tool.d.ts.map +1 -0
  248. package/dist/nvd-tool.js +150 -0
  249. package/dist/nvd-tool.js.map +1 -0
  250. package/dist/omdb-tool.d.ts +4 -0
  251. package/dist/omdb-tool.d.ts.map +1 -0
  252. package/dist/omdb-tool.js +62 -0
  253. package/dist/omdb-tool.js.map +1 -0
  254. package/dist/openaq-tool.d.ts +5 -0
  255. package/dist/openaq-tool.d.ts.map +1 -0
  256. package/dist/openaq-tool.js +141 -0
  257. package/dist/openaq-tool.js.map +1 -0
  258. package/dist/openexchangerates-tool.d.ts +5 -0
  259. package/dist/openexchangerates-tool.d.ts.map +1 -0
  260. package/dist/openexchangerates-tool.js +101 -0
  261. package/dist/openexchangerates-tool.js.map +1 -0
  262. package/dist/openf1-tool.d.ts +9 -0
  263. package/dist/openf1-tool.d.ts.map +1 -0
  264. package/dist/openf1-tool.js +194 -0
  265. package/dist/openf1-tool.js.map +1 -0
  266. package/dist/openfoodfacts-tool.d.ts +5 -0
  267. package/dist/openfoodfacts-tool.d.ts.map +1 -0
  268. package/dist/openfoodfacts-tool.js +106 -0
  269. package/dist/openfoodfacts-tool.js.map +1 -0
  270. package/dist/openlibrary-tool.d.ts +7 -0
  271. package/dist/openlibrary-tool.d.ts.map +1 -0
  272. package/dist/openlibrary-tool.js +67 -0
  273. package/dist/openlibrary-tool.js.map +1 -0
  274. package/dist/openmeteo-tool.d.ts +4 -0
  275. package/dist/openmeteo-tool.d.ts.map +1 -0
  276. package/dist/openmeteo-tool.js +160 -0
  277. package/dist/openmeteo-tool.js.map +1 -0
  278. package/dist/pandascore-tool.d.ts +6 -0
  279. package/dist/pandascore-tool.d.ts.map +1 -0
  280. package/dist/pandascore-tool.js +239 -0
  281. package/dist/pandascore-tool.js.map +1 -0
  282. package/dist/podcastindex-tool.d.ts +7 -0
  283. package/dist/podcastindex-tool.d.ts.map +1 -0
  284. package/dist/podcastindex-tool.js +98 -0
  285. package/dist/podcastindex-tool.js.map +1 -0
  286. package/dist/ptv-tool.d.ts +6 -0
  287. package/dist/ptv-tool.d.ts.map +1 -0
  288. package/dist/ptv-tool.js +95 -0
  289. package/dist/ptv-tool.js.map +1 -0
  290. package/dist/radiobrowser-tool.d.ts +7 -0
  291. package/dist/radiobrowser-tool.d.ts.map +1 -0
  292. package/dist/radiobrowser-tool.js +125 -0
  293. package/dist/radiobrowser-tool.js.map +1 -0
  294. package/dist/raindrop-tool.d.ts +2 -0
  295. package/dist/raindrop-tool.d.ts.map +1 -0
  296. package/dist/raindrop-tool.js +137 -0
  297. package/dist/raindrop-tool.js.map +1 -0
  298. package/dist/random-tool.d.ts +9 -0
  299. package/dist/random-tool.d.ts.map +1 -0
  300. package/dist/random-tool.js +198 -0
  301. package/dist/random-tool.js.map +1 -0
  302. package/dist/rawg-tool.d.ts +7 -0
  303. package/dist/rawg-tool.d.ts.map +1 -0
  304. package/dist/rawg-tool.js +172 -0
  305. package/dist/rawg-tool.js.map +1 -0
  306. package/dist/readwise-tool.d.ts +2 -0
  307. package/dist/readwise-tool.d.ts.map +1 -0
  308. package/dist/readwise-tool.js +133 -0
  309. package/dist/readwise-tool.js.map +1 -0
  310. package/dist/resend-tool.d.ts +4 -0
  311. package/dist/resend-tool.d.ts.map +1 -0
  312. package/dist/resend-tool.js +133 -0
  313. package/dist/resend-tool.js.map +1 -0
  314. package/dist/restcountries-tool.d.ts +7 -0
  315. package/dist/restcountries-tool.d.ts.map +1 -0
  316. package/dist/restcountries-tool.js +141 -0
  317. package/dist/restcountries-tool.js.map +1 -0
  318. package/dist/riot-tool.d.ts +6 -0
  319. package/dist/riot-tool.d.ts.map +1 -0
  320. package/dist/riot-tool.js +166 -0
  321. package/dist/riot-tool.js.map +1 -0
  322. package/dist/seatgeek-tool.d.ts +7 -0
  323. package/dist/seatgeek-tool.d.ts.map +1 -0
  324. package/dist/seatgeek-tool.js +144 -0
  325. package/dist/seatgeek-tool.js.map +1 -0
  326. package/dist/sendle-tool.d.ts +4 -0
  327. package/dist/sendle-tool.d.ts.map +1 -0
  328. package/dist/sendle-tool.js +146 -0
  329. package/dist/sendle-tool.js.map +1 -0
  330. package/dist/server.d.ts.map +1 -1
  331. package/dist/server.js +114 -1825
  332. package/dist/server.js.map +1 -1
  333. package/dist/setlistfm-tool.d.ts +5 -0
  334. package/dist/setlistfm-tool.d.ts.map +1 -0
  335. package/dist/setlistfm-tool.js +89 -0
  336. package/dist/setlistfm-tool.js.map +1 -0
  337. package/dist/shodan-tool.d.ts +4 -0
  338. package/dist/shodan-tool.d.ts.map +1 -0
  339. package/dist/shodan-tool.js +139 -0
  340. package/dist/shodan-tool.js.map +1 -0
  341. package/dist/sleeper-tool.d.ts +7 -0
  342. package/dist/sleeper-tool.d.ts.map +1 -0
  343. package/dist/sleeper-tool.js +147 -0
  344. package/dist/sleeper-tool.js.map +1 -0
  345. package/dist/splitwise-tool.d.ts +2 -0
  346. package/dist/splitwise-tool.d.ts.map +1 -0
  347. package/dist/splitwise-tool.js +133 -0
  348. package/dist/splitwise-tool.js.map +1 -0
  349. package/dist/supercell-tool.d.ts +8 -0
  350. package/dist/supercell-tool.d.ts.map +1 -0
  351. package/dist/supercell-tool.js +258 -0
  352. package/dist/supercell-tool.js.map +1 -0
  353. package/dist/tab-tool.d.ts +4 -0
  354. package/dist/tab-tool.d.ts.map +1 -0
  355. package/dist/tab-tool.js +128 -0
  356. package/dist/tab-tool.js.map +1 -0
  357. package/dist/text-tool.d.ts +8 -0
  358. package/dist/text-tool.d.ts.map +1 -0
  359. package/dist/text-tool.js +190 -0
  360. package/dist/text-tool.js.map +1 -0
  361. package/dist/thelott-tool.d.ts +3 -0
  362. package/dist/thelott-tool.d.ts.map +1 -0
  363. package/dist/thelott-tool.js +93 -0
  364. package/dist/thelott-tool.js.map +1 -0
  365. package/dist/ticketmaster-tool.d.ts +6 -0
  366. package/dist/ticketmaster-tool.d.ts.map +1 -0
  367. package/dist/ticketmaster-tool.js +140 -0
  368. package/dist/ticketmaster-tool.js.map +1 -0
  369. package/dist/tmdb-tool.d.ts +9 -0
  370. package/dist/tmdb-tool.d.ts.map +1 -0
  371. package/dist/tmdb-tool.js +204 -0
  372. package/dist/tmdb-tool.js.map +1 -0
  373. package/dist/toggl-tool.d.ts +5 -0
  374. package/dist/toggl-tool.d.ts.map +1 -0
  375. package/dist/toggl-tool.js +203 -0
  376. package/dist/toggl-tool.js.map +1 -0
  377. package/dist/toilets-tool.d.ts +3 -0
  378. package/dist/toilets-tool.d.ts.map +1 -0
  379. package/dist/toilets-tool.js +260 -0
  380. package/dist/toilets-tool.js.map +1 -0
  381. package/dist/tomorrowio-tool.d.ts +4 -0
  382. package/dist/tomorrowio-tool.d.ts.map +1 -0
  383. package/dist/tomorrowio-tool.js +114 -0
  384. package/dist/tomorrowio-tool.js.map +1 -0
  385. package/dist/tool-wiring.d.ts +7370 -0
  386. package/dist/tool-wiring.d.ts.map +1 -0
  387. package/dist/tool-wiring.js +6068 -0
  388. package/dist/tool-wiring.js.map +1 -0
  389. package/dist/trivia-tool.d.ts +3 -0
  390. package/dist/trivia-tool.d.ts.map +1 -0
  391. package/dist/trivia-tool.js +91 -0
  392. package/dist/trivia-tool.js.map +1 -0
  393. package/dist/trove-tool.d.ts +4 -0
  394. package/dist/trove-tool.d.ts.map +1 -0
  395. package/dist/trove-tool.js +121 -0
  396. package/dist/trove-tool.js.map +1 -0
  397. package/dist/twitch-tool.d.ts +8 -0
  398. package/dist/twitch-tool.d.ts.map +1 -0
  399. package/dist/twitch-tool.js +188 -0
  400. package/dist/twitch-tool.js.map +1 -0
  401. package/dist/unit-converter-tool.d.ts +8 -0
  402. package/dist/unit-converter-tool.d.ts.map +1 -0
  403. package/dist/unit-converter-tool.js +176 -0
  404. package/dist/unit-converter-tool.js.map +1 -0
  405. package/dist/untappd-tool.d.ts +6 -0
  406. package/dist/untappd-tool.d.ts.map +1 -0
  407. package/dist/untappd-tool.js +193 -0
  408. package/dist/untappd-tool.js.map +1 -0
  409. package/dist/urlscan-tool.d.ts +4 -0
  410. package/dist/urlscan-tool.d.ts.map +1 -0
  411. package/dist/urlscan-tool.js +154 -0
  412. package/dist/urlscan-tool.js.map +1 -0
  413. package/dist/usgs-tool.d.ts +5 -0
  414. package/dist/usgs-tool.d.ts.map +1 -0
  415. package/dist/usgs-tool.js +140 -0
  416. package/dist/usgs-tool.js.map +1 -0
  417. package/dist/vault-bridge.d.ts +16 -0
  418. package/dist/vault-bridge.d.ts.map +1 -0
  419. package/dist/vault-bridge.js +139 -0
  420. package/dist/vault-bridge.js.map +1 -0
  421. package/dist/vercel-tool.d.ts +6 -0
  422. package/dist/vercel-tool.d.ts.map +1 -0
  423. package/dist/vercel-tool.js +202 -0
  424. package/dist/vercel-tool.js.map +1 -0
  425. package/dist/virustotal-tool.d.ts +5 -0
  426. package/dist/virustotal-tool.d.ts.map +1 -0
  427. package/dist/virustotal-tool.js +154 -0
  428. package/dist/virustotal-tool.js.map +1 -0
  429. package/dist/willyweather-tool.d.ts +4 -0
  430. package/dist/willyweather-tool.d.ts.map +1 -0
  431. package/dist/willyweather-tool.js +128 -0
  432. package/dist/willyweather-tool.js.map +1 -0
  433. package/dist/wise-tool.d.ts +5 -0
  434. package/dist/wise-tool.d.ts.map +1 -0
  435. package/dist/wise-tool.js +129 -0
  436. package/dist/wise-tool.js.map +1 -0
  437. package/dist/xero-tool.d.ts.map +1 -1
  438. package/dist/xero-tool.js +40 -35
  439. package/dist/xero-tool.js.map +1 -1
  440. package/dist/yelp-tool.d.ts +6 -0
  441. package/dist/yelp-tool.d.ts.map +1 -0
  442. package/dist/yelp-tool.js +150 -0
  443. package/dist/yelp-tool.js.map +1 -0
  444. package/package.json +6 -1
@@ -0,0 +1,263 @@
1
+ // Date and time utilities.
2
+ // No API required -- uses built-in JS Date and Intl APIs.
3
+ // ─── get_current_time ─────────────────────────────────────────────────────────
4
+ export function getCurrentTime(args) {
5
+ const tz = String(args.timezone ?? "UTC").trim();
6
+ try {
7
+ const now = new Date();
8
+ const formatter = new Intl.DateTimeFormat("en-AU", {
9
+ timeZone: tz,
10
+ year: "numeric",
11
+ month: "2-digit",
12
+ day: "2-digit",
13
+ hour: "2-digit",
14
+ minute: "2-digit",
15
+ second: "2-digit",
16
+ hour12: false,
17
+ timeZoneName: "long",
18
+ });
19
+ const parts = Object.fromEntries(formatter.formatToParts(now).map((p) => [p.type, p.value]));
20
+ return {
21
+ timezone: tz,
22
+ iso: now.toISOString(),
23
+ local_datetime: `${parts.year}-${parts.month}-${parts.day}T${parts.hour}:${parts.minute}:${parts.second}`,
24
+ date: `${parts.year}-${parts.month}-${parts.day}`,
25
+ time: `${parts.hour}:${parts.minute}:${parts.second}`,
26
+ timezone_name: parts.timeZoneName ?? tz,
27
+ unix_timestamp: Math.floor(now.getTime() / 1000),
28
+ };
29
+ }
30
+ catch {
31
+ return { error: `Invalid timezone "${tz}". Use IANA format, e.g. "Australia/Melbourne", "America/New_York", "UTC".` };
32
+ }
33
+ }
34
+ // ─── convert_timezone ─────────────────────────────────────────────────────────
35
+ export function convertTimezone(args) {
36
+ const datetimeStr = String(args.datetime ?? "").trim();
37
+ const fromTz = String(args.from_tz ?? "").trim();
38
+ const toTz = String(args.to_tz ?? "").trim();
39
+ if (!datetimeStr)
40
+ return { error: "datetime is required (e.g. 2024-06-15T14:30:00)." };
41
+ if (!fromTz)
42
+ return { error: "from_tz is required (IANA timezone, e.g. America/New_York)." };
43
+ if (!toTz)
44
+ return { error: "to_tz is required (IANA timezone, e.g. Australia/Sydney)." };
45
+ try {
46
+ // Parse the datetime in the from_tz context
47
+ const date = parseLocalDate(datetimeStr, fromTz);
48
+ if (!date)
49
+ return { error: `Could not parse datetime "${datetimeStr}". Use ISO format: YYYY-MM-DDTHH:MM:SS.` };
50
+ const formatIn = (tz) => {
51
+ try {
52
+ const f = new Intl.DateTimeFormat("en-CA", {
53
+ timeZone: tz,
54
+ year: "numeric", month: "2-digit", day: "2-digit",
55
+ hour: "2-digit", minute: "2-digit", second: "2-digit",
56
+ hour12: false,
57
+ });
58
+ const p = Object.fromEntries(f.formatToParts(date).map((x) => [x.type, x.value]));
59
+ return `${p.year}-${p.month}-${p.day}T${p.hour}:${p.minute}:${p.second}`;
60
+ }
61
+ catch {
62
+ return null;
63
+ }
64
+ };
65
+ const resultLocal = formatIn(toTz);
66
+ if (!resultLocal)
67
+ return { error: `Invalid timezone "${toTz}".` };
68
+ return {
69
+ input: datetimeStr,
70
+ from_tz: fromTz,
71
+ to_tz: toTz,
72
+ result: resultLocal,
73
+ iso_utc: date.toISOString(),
74
+ unix_timestamp: Math.floor(date.getTime() / 1000),
75
+ };
76
+ }
77
+ catch (e) {
78
+ return { error: `Conversion failed: ${String(e)}` };
79
+ }
80
+ }
81
+ // ─── calculate_date_diff ──────────────────────────────────────────────────────
82
+ export function calculateDateDiff(args) {
83
+ const d1 = parseDate(String(args.date1 ?? ""));
84
+ const d2 = parseDate(String(args.date2 ?? ""));
85
+ if (!d1)
86
+ return { error: `Invalid date1 "${args.date1}". Use YYYY-MM-DD.` };
87
+ if (!d2)
88
+ return { error: `Invalid date2 "${args.date2}". Use YYYY-MM-DD.` };
89
+ const msPerDay = 86400000;
90
+ const diffMs = d2.getTime() - d1.getTime();
91
+ const totalDays = Math.round(diffMs / msPerDay);
92
+ const absDays = Math.abs(totalDays);
93
+ const weeks = Math.floor(absDays / 7);
94
+ const remainingDays = absDays % 7;
95
+ // Approximate months and years
96
+ const months = monthsBetween(d1, d2);
97
+ const years = Math.floor(Math.abs(months) / 12);
98
+ const remMonths = Math.abs(months) % 12;
99
+ return {
100
+ date1: args.date1,
101
+ date2: args.date2,
102
+ total_days: totalDays,
103
+ absolute_days: absDays,
104
+ weeks: weeks,
105
+ weeks_and_days: `${weeks} weeks, ${remainingDays} days`,
106
+ approximate_months: Math.abs(months),
107
+ approximate_years_and_months: `${years} years, ${remMonths} months`,
108
+ direction: totalDays >= 0 ? "date2 is after date1" : "date2 is before date1",
109
+ };
110
+ }
111
+ // ─── add_to_date ──────────────────────────────────────────────────────────────
112
+ export function addToDate(args) {
113
+ const date = parseDate(String(args.date ?? ""));
114
+ const amount = Math.round(Number(args.amount ?? 0));
115
+ const unit = String(args.unit ?? "days").toLowerCase();
116
+ if (!date)
117
+ return { error: `Invalid date "${args.date}". Use YYYY-MM-DD.` };
118
+ if (isNaN(amount))
119
+ return { error: "amount must be a number." };
120
+ if (!["days", "weeks", "months", "years"].includes(unit)) {
121
+ return { error: `unit must be one of: days, weeks, months, years.` };
122
+ }
123
+ const result = new Date(date);
124
+ switch (unit) {
125
+ case "days":
126
+ result.setUTCDate(result.getUTCDate() + amount);
127
+ break;
128
+ case "weeks":
129
+ result.setUTCDate(result.getUTCDate() + amount * 7);
130
+ break;
131
+ case "months":
132
+ result.setUTCMonth(result.getUTCMonth() + amount);
133
+ break;
134
+ case "years":
135
+ result.setUTCFullYear(result.getUTCFullYear() + amount);
136
+ break;
137
+ }
138
+ return {
139
+ input_date: args.date,
140
+ amount,
141
+ unit,
142
+ result_date: formatIsoDate(result),
143
+ day_of_week: result.toLocaleDateString("en-AU", { weekday: "long", timeZone: "UTC" }),
144
+ };
145
+ }
146
+ // ─── get_business_days ────────────────────────────────────────────────────────
147
+ export function getBusinessDays(args) {
148
+ const start = parseDate(String(args.start_date ?? ""));
149
+ const end = parseDate(String(args.end_date ?? ""));
150
+ if (!start)
151
+ return { error: `Invalid start_date "${args.start_date}". Use YYYY-MM-DD.` };
152
+ if (!end)
153
+ return { error: `Invalid end_date "${args.end_date}". Use YYYY-MM-DD.` };
154
+ const msPerDay = 86400000;
155
+ const from = start <= end ? start : end;
156
+ const to = start <= end ? end : start;
157
+ let count = 0;
158
+ const cur = new Date(from);
159
+ while (cur <= to) {
160
+ const dow = cur.getUTCDay();
161
+ if (dow !== 0 && dow !== 6)
162
+ count++;
163
+ cur.setUTCDate(cur.getUTCDate() + 1);
164
+ }
165
+ const totalDays = Math.round((to.getTime() - from.getTime()) / msPerDay) + 1;
166
+ return {
167
+ start_date: args.start_date,
168
+ end_date: args.end_date,
169
+ business_days: count,
170
+ total_calendar_days: totalDays,
171
+ weekend_days: totalDays - count,
172
+ note: "Excludes Saturdays and Sundays. Does not account for public holidays.",
173
+ };
174
+ }
175
+ // ─── format_date ──────────────────────────────────────────────────────────────
176
+ export function formatDate(args) {
177
+ const date = parseDate(String(args.date ?? ""));
178
+ const format = String(args.format ?? "iso").toLowerCase();
179
+ if (!date)
180
+ return { error: `Invalid date "${args.date}". Use YYYY-MM-DD.` };
181
+ const formats = {
182
+ iso: formatIsoDate(date),
183
+ us: date.toLocaleDateString("en-US", { month: "2-digit", day: "2-digit", year: "numeric", timeZone: "UTC" }),
184
+ au: date.toLocaleDateString("en-AU", { day: "2-digit", month: "2-digit", year: "numeric", timeZone: "UTC" }),
185
+ long: date.toLocaleDateString("en-AU", { weekday: "long", day: "numeric", month: "long", year: "numeric", timeZone: "UTC" }),
186
+ short: date.toLocaleDateString("en-AU", { day: "numeric", month: "short", year: "numeric", timeZone: "UTC" }),
187
+ };
188
+ if (!formats[format]) {
189
+ return { error: `format must be one of: iso, us, au, long, short.` };
190
+ }
191
+ return {
192
+ input: args.date,
193
+ format,
194
+ result: formats[format],
195
+ all_formats: formats,
196
+ };
197
+ }
198
+ // ─── get_week_number ──────────────────────────────────────────────────────────
199
+ export function getWeekNumber(args) {
200
+ const date = parseDate(String(args.date ?? ""));
201
+ if (!date)
202
+ return { error: `Invalid date "${args.date}". Use YYYY-MM-DD.` };
203
+ // ISO week number: week 1 contains the first Thursday of the year
204
+ const target = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
205
+ const dayNum = target.getUTCDay() || 7;
206
+ target.setUTCDate(target.getUTCDate() + 4 - dayNum);
207
+ const yearStart = new Date(Date.UTC(target.getUTCFullYear(), 0, 1));
208
+ const weekNo = Math.ceil(((target.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);
209
+ return {
210
+ date: args.date,
211
+ iso_week: weekNo,
212
+ iso_year: target.getUTCFullYear(),
213
+ formatted: `W${String(weekNo).padStart(2, "0")} ${target.getUTCFullYear()}`,
214
+ day_of_week: date.toLocaleDateString("en-AU", { weekday: "long", timeZone: "UTC" }),
215
+ day_number_in_year: getDayOfYear(date),
216
+ };
217
+ }
218
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
219
+ function parseDate(s) {
220
+ const m = s.trim().match(/^(\d{4})-(\d{2})-(\d{2})/);
221
+ if (!m)
222
+ return null;
223
+ const d = new Date(Date.UTC(+m[1], +m[2] - 1, +m[3]));
224
+ if (isNaN(d.getTime()))
225
+ return null;
226
+ return d;
227
+ }
228
+ function parseLocalDate(s, tz) {
229
+ // Try to parse as UTC first, then adjust to timezone
230
+ const m = s.trim().match(/^(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2})(?::(\d{2}))?)?/);
231
+ if (!m)
232
+ return null;
233
+ const year = +m[1], month = +m[2] - 1, day = +m[3];
234
+ const hour = m[4] ? +m[4] : 0;
235
+ const min = m[5] ? +m[5] : 0;
236
+ const sec = m[6] ? +m[6] : 0;
237
+ // Create date string and parse with timezone context using Intl
238
+ const testDate = new Date(Date.UTC(year, month, day, hour, min, sec));
239
+ if (isNaN(testDate.getTime()))
240
+ return null;
241
+ // Compute the UTC offset at that moment in the given timezone
242
+ const utcStr = testDate.toLocaleString("en-CA", { timeZone: tz, hour12: false });
243
+ const utcParts = utcStr.match(/(\d{4})-(\d{2})-(\d{2}),?\s*(\d{2}):(\d{2}):(\d{2})/);
244
+ if (!utcParts)
245
+ return testDate;
246
+ const localAsUtc = Date.UTC(+utcParts[1], +utcParts[2] - 1, +utcParts[3], +utcParts[4], +utcParts[5], +utcParts[6]);
247
+ const offset = localAsUtc - testDate.getTime();
248
+ return new Date(testDate.getTime() - offset);
249
+ }
250
+ function formatIsoDate(d) {
251
+ return `${d.getUTCFullYear()}-${String(d.getUTCMonth() + 1).padStart(2, "0")}-${String(d.getUTCDate()).padStart(2, "0")}`;
252
+ }
253
+ function monthsBetween(a, b) {
254
+ const sign = b >= a ? 1 : -1;
255
+ const from = a <= b ? a : b;
256
+ const to = a <= b ? b : a;
257
+ return sign * ((to.getUTCFullYear() - from.getUTCFullYear()) * 12 + (to.getUTCMonth() - from.getUTCMonth()));
258
+ }
259
+ function getDayOfYear(d) {
260
+ const start = new Date(Date.UTC(d.getUTCFullYear(), 0, 0));
261
+ return Math.floor((d.getTime() - start.getTime()) / 86400000);
262
+ }
263
+ //# sourceMappingURL=datetime-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datetime-tool.js","sourceRoot":"","sources":["../src/datetime-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function searchDeezer(args: Record<string, unknown>): Promise<unknown>;
2
+ export declare function getDeezerArtist(args: Record<string, unknown>): Promise<unknown>;
3
+ export declare function getDeezerAlbum(args: Record<string, unknown>): Promise<unknown>;
4
+ export declare function getDeezerTrack(args: Record<string, unknown>): Promise<unknown>;
5
+ export declare function getDeezerChart(args: Record<string, unknown>): Promise<unknown>;
6
+ export declare function searchDeezerPlaylist(args: Record<string, unknown>): Promise<unknown>;
7
+ //# sourceMappingURL=deezer-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deezer-tool.d.ts","sourceRoot":"","sources":["../src/deezer-tool.ts"],"names":[],"mappings":"AAyEA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAalF;AAID,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAerF;AAID,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BpF;AAID,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBpF;AAQD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAYpF;AAsBD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAwB1F"}
@@ -0,0 +1,142 @@
1
+ // Deezer music API.
2
+ // No API key required for basic search (public endpoints).
3
+ // Base URL: https://api.deezer.com/
4
+ const DEEZER_BASE = "https://api.deezer.com";
5
+ async function deezerFetch(path) {
6
+ const res = await fetch(`${DEEZER_BASE}${path}`, {
7
+ headers: { "User-Agent": "UnClickMCP/1.0 (https://unclick.io)" },
8
+ });
9
+ if (!res.ok)
10
+ throw new Error(`Deezer API HTTP ${res.status}`);
11
+ return res.json();
12
+ }
13
+ function normalizeTrack(t) {
14
+ return {
15
+ id: t.id,
16
+ title: t.title,
17
+ duration_seconds: t.duration,
18
+ duration_formatted: formatDuration(t.duration),
19
+ rank: t.rank ?? null,
20
+ preview_url: t.preview ?? null,
21
+ link: t.link ?? null,
22
+ artist: t.artist ? { id: t.artist.id, name: t.artist.name, link: t.artist.link ?? null } : null,
23
+ album: t.album ? { id: t.album.id, title: t.album.title, cover: t.album.cover ?? null } : null,
24
+ };
25
+ }
26
+ // ─── search_deezer ────────────────────────────────────────────────────────────
27
+ export async function searchDeezer(args) {
28
+ const query = String(args.query ?? "").trim();
29
+ if (!query)
30
+ return { error: "query is required." };
31
+ const limit = Math.min(50, Math.max(1, Number(args.limit ?? 10)));
32
+ const data = await deezerFetch(`/search?q=${encodeURIComponent(query)}&limit=${limit}`);
33
+ return {
34
+ query,
35
+ total: data.total,
36
+ returned: data.data.length,
37
+ tracks: data.data.map(normalizeTrack),
38
+ };
39
+ }
40
+ // ─── get_deezer_artist ────────────────────────────────────────────────────────
41
+ export async function getDeezerArtist(args) {
42
+ const id = String(args.id ?? "").trim();
43
+ if (!id)
44
+ return { error: "id is required (Deezer artist ID)." };
45
+ const artist = await deezerFetch(`/artist/${encodeURIComponent(id)}`);
46
+ return {
47
+ id: artist.id,
48
+ name: artist.name,
49
+ fans: artist.nb_fan ?? null,
50
+ album_count: artist.nb_album ?? null,
51
+ picture: artist.picture_medium ?? artist.picture ?? null,
52
+ link: artist.link ?? null,
53
+ has_radio: artist.radio ?? null,
54
+ };
55
+ }
56
+ // ─── get_deezer_album ─────────────────────────────────────────────────────────
57
+ export async function getDeezerAlbum(args) {
58
+ const id = String(args.id ?? "").trim();
59
+ if (!id)
60
+ return { error: "id is required (Deezer album ID)." };
61
+ const album = await deezerFetch(`/album/${encodeURIComponent(id)}`);
62
+ return {
63
+ id: album.id,
64
+ title: album.title,
65
+ artist: album.artist ? { id: album.artist.id, name: album.artist.name } : null,
66
+ release_date: album.release_date ?? null,
67
+ track_count: album.nb_tracks ?? null,
68
+ duration_seconds: album.duration ?? null,
69
+ duration_formatted: album.duration ? formatDuration(album.duration) : null,
70
+ fans: album.fans ?? null,
71
+ cover: album.cover_medium ?? album.cover ?? null,
72
+ link: album.link ?? null,
73
+ genres: album.genres?.data.map((g) => g.name) ?? [],
74
+ tracklist: album.tracks?.data.map((t) => ({
75
+ id: t.id,
76
+ title: t.title,
77
+ duration_seconds: t.duration,
78
+ duration_formatted: formatDuration(t.duration),
79
+ preview_url: t.preview ?? null,
80
+ })) ?? [],
81
+ };
82
+ }
83
+ // ─── get_deezer_track ─────────────────────────────────────────────────────────
84
+ export async function getDeezerTrack(args) {
85
+ const id = String(args.id ?? "").trim();
86
+ if (!id)
87
+ return { error: "id is required (Deezer track ID)." };
88
+ const track = await deezerFetch(`/track/${encodeURIComponent(id)}`);
89
+ return {
90
+ ...normalizeTrack(track),
91
+ bpm: track.bpm ?? null,
92
+ isrc: track.isrc ?? null,
93
+ available_countries: track.available_countries ?? null,
94
+ note: track.preview ? "preview_url is a 30-second MP3 sample, freely accessible." : "No preview available for this track.",
95
+ };
96
+ }
97
+ export async function getDeezerChart(args) {
98
+ const limit = Math.min(50, Math.max(1, Number(args.limit ?? 10)));
99
+ const data = await deezerFetch(`/chart/0/tracks?limit=${limit}`);
100
+ return {
101
+ chart: "Global Top Tracks",
102
+ count: data.tracks.data.length,
103
+ tracks: data.tracks.data.map((t, i) => ({
104
+ ...normalizeTrack(t),
105
+ rank: i + 1,
106
+ })),
107
+ };
108
+ }
109
+ export async function searchDeezerPlaylist(args) {
110
+ const query = String(args.query ?? "").trim();
111
+ if (!query)
112
+ return { error: "query is required." };
113
+ const limit = Math.min(25, Math.max(1, Number(args.limit ?? 10)));
114
+ const data = await deezerFetch(`/search/playlist?q=${encodeURIComponent(query)}&limit=${limit}`);
115
+ return {
116
+ query,
117
+ total: data.total,
118
+ returned: data.data.length,
119
+ playlists: data.data.map((p) => ({
120
+ id: p.id,
121
+ title: p.title,
122
+ track_count: p.nb_tracks ?? null,
123
+ duration_seconds: p.duration ?? null,
124
+ duration_formatted: p.duration ? formatDuration(p.duration) : null,
125
+ fans: p.fans ?? null,
126
+ public: p.public ?? null,
127
+ cover: p.picture_medium ?? p.picture ?? null,
128
+ link: p.link ?? null,
129
+ created_by: p.user ? { id: p.user.id, name: p.user.name } : null,
130
+ })),
131
+ };
132
+ }
133
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
134
+ function formatDuration(seconds) {
135
+ const h = Math.floor(seconds / 3600);
136
+ const m = Math.floor((seconds % 3600) / 60);
137
+ const s = seconds % 60;
138
+ if (h > 0)
139
+ return `${h}:${String(m).padStart(2, "0")}:${String(s).padStart(2, "0")}`;
140
+ return `${m}:${String(s).padStart(2, "0")}`;
141
+ }
142
+ //# sourceMappingURL=deezer-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deezer-tool.js","sourceRoot":"","sources":["../src/deezer-tool.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,2DAA2D;AAC3D,oCAAoC;AAEpC,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAE7C,KAAK,UAAU,WAAW,CAAI,IAAY;IACxC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,GAAG,IAAI,EAAE,EAAE;QAC/C,OAAO,EAAE,EAAE,YAAY,EAAE,qCAAqC,EAAE;KACjE,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;AAClC,CAAC;AA6CD,SAAS,cAAc,CAAC,CAAc;IACpC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,gBAAgB,EAAE,CAAC,CAAC,QAAQ;QAC5B,kBAAkB,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9C,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;QACpB,WAAW,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;QAC9B,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;QAC/F,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;KAC/F,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAA6B;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAEnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAuB,aAAa,kBAAkB,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;IAE9G,OAAO;QACL,KAAK;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;QAC1B,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;KACtC,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAA6B;IACjE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;IAEhE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAe,WAAW,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEpF,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;QAC3B,WAAW,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;QACpC,OAAO,EAAE,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI;QACxD,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;QACzB,SAAS,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;KAChC,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAA6B;IAChE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC;IAE/D,MAAM,KAAK,GAAG,MAAM,WAAW,CAAc,UAAU,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEjF,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;QAC9E,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,IAAI;QACxC,WAAW,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;QACpC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;QACxC,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;QAC1E,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QACxB,KAAK,EAAE,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI;QAChD,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;QACnD,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,gBAAgB,EAAE,CAAC,CAAC,QAAQ;YAC5B,kBAAkB,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC9C,WAAW,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;SAC/B,CAAC,CAAC,IAAI,EAAE;KACV,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAA6B;IAChE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC;IAS/D,MAAM,KAAK,GAAG,MAAM,WAAW,CAAY,UAAU,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAE/E,OAAO;QACL,GAAG,cAAc,CAAC,KAAK,CAAC;QACxB,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,IAAI;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QACxB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,IAAI,IAAI;QACtD,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,sCAAsC;KAC3H,CAAC;AACJ,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAA6B;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAsB,yBAAyB,KAAK,EAAE,CAAC,CAAC;IAEtF,OAAO;QACL,KAAK,EAAE,mBAAmB;QAC1B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;QAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACtC,GAAG,cAAc,CAAC,CAAC,CAAC;YACpB,IAAI,EAAE,CAAC,GAAG,CAAC;SACZ,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAsBD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAA6B;IACtE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAEnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,MAAM,WAAW,CAA+B,sBAAsB,kBAAkB,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;IAE/H,OAAO;QACL,KAAK;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;QAC1B,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,WAAW,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;YAChC,gBAAgB,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;YACpC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;YAClE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI;YACxB,KAAK,EAAE,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI;YAC5C,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;YACpB,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;SACjE,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC;IACvB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IACrF,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare function discogsSearchReleases(args: Record<string, unknown>): Promise<unknown>;
2
+ export declare function discogsGetRelease(args: Record<string, unknown>): Promise<unknown>;
3
+ export declare function discogsGetArtist(args: Record<string, unknown>): Promise<unknown>;
4
+ export declare function discogsSearchArtists(args: Record<string, unknown>): Promise<unknown>;
5
+ export declare function discogsGetMarketplaceStats(args: Record<string, unknown>): Promise<unknown>;
6
+ export declare function discogsGetLabel(args: Record<string, unknown>): Promise<unknown>;
7
+ //# sourceMappingURL=discogs-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discogs-tool.d.ts","sourceRoot":"","sources":["../src/discogs-tool.ts"],"names":[],"mappings":"AAuCA,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAsB3F;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAUvF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAUtF;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAgB1F;AAED,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAUhG;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAUrF"}
@@ -0,0 +1,138 @@
1
+ // ── Discogs API tool ────────────────────────────────────────────────────────────
2
+ // Free API with personal access token auth.
3
+ // Docs: https://www.discogs.com/developers
4
+ // Env var: DISCOGS_TOKEN
5
+ const DISCOGS_BASE = "https://api.discogs.com";
6
+ async function discogsGet(token, path, params = {}) {
7
+ const qs = new URLSearchParams();
8
+ for (const [k, v] of Object.entries(params)) {
9
+ if (v !== undefined && v !== "")
10
+ qs.set(k, String(v));
11
+ }
12
+ const url = `${DISCOGS_BASE}${path}${qs.toString() ? "?" + qs.toString() : ""}`;
13
+ const res = await fetch(url, {
14
+ headers: {
15
+ Authorization: `Discogs token=${token}`,
16
+ "User-Agent": "UnClickMCP/1.0",
17
+ Accept: "application/vnd.discogs.v2.discogs+json",
18
+ },
19
+ });
20
+ if (!res.ok) {
21
+ const body = await res.text().catch(() => "");
22
+ throw new Error(`Discogs API HTTP ${res.status}: ${body || res.statusText}`);
23
+ }
24
+ return res.json();
25
+ }
26
+ function getToken(args) {
27
+ const token = String(args.token ?? process.env.DISCOGS_TOKEN ?? "").trim();
28
+ if (!token)
29
+ throw new Error("token is required (or set DISCOGS_TOKEN env var).");
30
+ return token;
31
+ }
32
+ // ── Tool functions ─────────────────────────────────────────────────────────────
33
+ export async function discogsSearchReleases(args) {
34
+ try {
35
+ const token = getToken(args);
36
+ const params = { type: "release" };
37
+ if (args.query)
38
+ params.q = String(args.query);
39
+ if (args.artist)
40
+ params.artist = String(args.artist);
41
+ if (args.genre)
42
+ params.genre = String(args.genre);
43
+ if (args.year)
44
+ params.year = Number(args.year);
45
+ if (args.format)
46
+ params.format = String(args.format);
47
+ if (args.label)
48
+ params.label = String(args.label);
49
+ if (args.per_page)
50
+ params.per_page = Number(args.per_page);
51
+ if (args.page)
52
+ params.page = Number(args.page);
53
+ const data = await discogsGet(token, "/database/search", params);
54
+ return {
55
+ total: data.pagination?.items,
56
+ pages: data.pagination?.pages,
57
+ page: data.pagination?.page,
58
+ results: data.results,
59
+ };
60
+ }
61
+ catch (err) {
62
+ return { error: err instanceof Error ? err.message : String(err) };
63
+ }
64
+ }
65
+ export async function discogsGetRelease(args) {
66
+ try {
67
+ const token = getToken(args);
68
+ const id = String(args.id ?? "").trim();
69
+ if (!id)
70
+ return { error: "id is required." };
71
+ const data = await discogsGet(token, `/releases/${encodeURIComponent(id)}`);
72
+ return data;
73
+ }
74
+ catch (err) {
75
+ return { error: err instanceof Error ? err.message : String(err) };
76
+ }
77
+ }
78
+ export async function discogsGetArtist(args) {
79
+ try {
80
+ const token = getToken(args);
81
+ const id = String(args.id ?? "").trim();
82
+ if (!id)
83
+ return { error: "id is required." };
84
+ const data = await discogsGet(token, `/artists/${encodeURIComponent(id)}`);
85
+ return data;
86
+ }
87
+ catch (err) {
88
+ return { error: err instanceof Error ? err.message : String(err) };
89
+ }
90
+ }
91
+ export async function discogsSearchArtists(args) {
92
+ try {
93
+ const token = getToken(args);
94
+ const query = String(args.query ?? "").trim();
95
+ if (!query)
96
+ return { error: "query is required." };
97
+ const params = { q: query, type: "artist" };
98
+ if (args.per_page)
99
+ params.per_page = Number(args.per_page);
100
+ if (args.page)
101
+ params.page = Number(args.page);
102
+ const data = await discogsGet(token, "/database/search", params);
103
+ return {
104
+ total: data.pagination?.items,
105
+ results: data.results,
106
+ };
107
+ }
108
+ catch (err) {
109
+ return { error: err instanceof Error ? err.message : String(err) };
110
+ }
111
+ }
112
+ export async function discogsGetMarketplaceStats(args) {
113
+ try {
114
+ const token = getToken(args);
115
+ const releaseId = String(args.release_id ?? "").trim();
116
+ if (!releaseId)
117
+ return { error: "release_id is required." };
118
+ const data = await discogsGet(token, `/marketplace/stats/${encodeURIComponent(releaseId)}`);
119
+ return data;
120
+ }
121
+ catch (err) {
122
+ return { error: err instanceof Error ? err.message : String(err) };
123
+ }
124
+ }
125
+ export async function discogsGetLabel(args) {
126
+ try {
127
+ const token = getToken(args);
128
+ const id = String(args.id ?? "").trim();
129
+ if (!id)
130
+ return { error: "id is required." };
131
+ const data = await discogsGet(token, `/labels/${encodeURIComponent(id)}`);
132
+ return data;
133
+ }
134
+ catch (err) {
135
+ return { error: err instanceof Error ? err.message : String(err) };
136
+ }
137
+ }
138
+ //# sourceMappingURL=discogs-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discogs-tool.js","sourceRoot":"","sources":["../src/discogs-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function searchDomainListings(args: Record<string, unknown>): Promise<unknown>;
2
+ export declare function getDomainProperty(args: Record<string, unknown>): Promise<unknown>;
3
+ export declare function getDomainSuburbStats(args: Record<string, unknown>): Promise<unknown>;
4
+ //# sourceMappingURL=domain-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-tool.d.ts","sourceRoot":"","sources":["../src/domain-tool.ts"],"names":[],"mappings":"AAyCA,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAqD1F;AAID,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA+BvF;AAID,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAwB1F"}