@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.
- package/dist/abn-tool.d.ts +3 -0
- package/dist/abn-tool.d.ts.map +1 -0
- package/dist/abn-tool.js +89 -0
- package/dist/abn-tool.js.map +1 -0
- package/dist/abuseipdb-tool.d.ts +4 -0
- package/dist/abuseipdb-tool.d.ts.map +1 -0
- package/dist/abuseipdb-tool.js +129 -0
- package/dist/abuseipdb-tool.js.map +1 -0
- package/dist/alphavantage-tool.d.ts +7 -0
- package/dist/alphavantage-tool.d.ts.map +1 -0
- package/dist/alphavantage-tool.js +208 -0
- package/dist/alphavantage-tool.js.map +1 -0
- package/dist/amber-tool.d.ts +4 -0
- package/dist/amber-tool.d.ts.map +1 -0
- package/dist/amber-tool.js +114 -0
- package/dist/amber-tool.js.map +1 -0
- package/dist/australiapost-tool.d.ts +4 -0
- package/dist/australiapost-tool.d.ts.map +1 -0
- package/dist/australiapost-tool.js +130 -0
- package/dist/australiapost-tool.js.map +1 -0
- package/dist/bandsintown-tool.d.ts +4 -0
- package/dist/bandsintown-tool.d.ts.map +1 -0
- package/dist/bandsintown-tool.js +76 -0
- package/dist/bandsintown-tool.js.map +1 -0
- package/dist/bungie-tool.d.ts +5 -0
- package/dist/bungie-tool.d.ts.map +1 -0
- package/dist/bungie-tool.js +138 -0
- package/dist/bungie-tool.js.map +1 -0
- package/dist/calculator-tool.d.ts +6 -0
- package/dist/calculator-tool.d.ts.map +1 -0
- package/dist/calculator-tool.js +196 -0
- package/dist/calculator-tool.js.map +1 -0
- package/dist/carboninterface-tool.d.ts +5 -0
- package/dist/carboninterface-tool.d.ts.map +1 -0
- package/dist/carboninterface-tool.js +143 -0
- package/dist/carboninterface-tool.js.map +1 -0
- package/dist/chessdotcom-tool.d.ts +6 -0
- package/dist/chessdotcom-tool.d.ts.map +1 -0
- package/dist/chessdotcom-tool.js +183 -0
- package/dist/chessdotcom-tool.js.map +1 -0
- package/dist/client.js +1 -1
- package/dist/clockify-tool.d.ts +2 -0
- package/dist/clockify-tool.d.ts.map +1 -0
- package/dist/clockify-tool.js +155 -0
- package/dist/clockify-tool.js.map +1 -0
- package/dist/coingecko-tool.d.ts +7 -0
- package/dist/coingecko-tool.d.ts.map +1 -0
- package/dist/coingecko-tool.js +176 -0
- package/dist/coingecko-tool.js.map +1 -0
- package/dist/coinmarketcap-tool.d.ts +6 -0
- package/dist/coinmarketcap-tool.d.ts.map +1 -0
- package/dist/coinmarketcap-tool.js +168 -0
- package/dist/coinmarketcap-tool.js.map +1 -0
- package/dist/color-tool.d.ts +6 -0
- package/dist/color-tool.d.ts.map +1 -0
- package/dist/color-tool.js +391 -0
- package/dist/color-tool.js.map +1 -0
- package/dist/connectors/bluesky.d.ts +3 -0
- package/dist/connectors/bluesky.d.ts.map +1 -0
- package/dist/connectors/bluesky.js +26 -0
- package/dist/connectors/bluesky.js.map +1 -0
- package/dist/connectors/discogs.d.ts +3 -0
- package/dist/connectors/discogs.d.ts.map +1 -0
- package/dist/connectors/discogs.js +18 -0
- package/dist/connectors/discogs.js.map +1 -0
- package/dist/connectors/discord.d.ts +3 -0
- package/dist/connectors/discord.d.ts.map +1 -0
- package/dist/connectors/discord.js +18 -0
- package/dist/connectors/discord.js.map +1 -0
- package/dist/connectors/guardian.d.ts +3 -0
- package/dist/connectors/guardian.d.ts.map +1 -0
- package/dist/connectors/guardian.js +18 -0
- package/dist/connectors/guardian.js.map +1 -0
- package/dist/connectors/index.d.ts +39 -0
- package/dist/connectors/index.d.ts.map +1 -0
- package/dist/connectors/index.js +23 -0
- package/dist/connectors/index.js.map +1 -0
- package/dist/connectors/lastfm.d.ts +3 -0
- package/dist/connectors/lastfm.d.ts.map +1 -0
- package/dist/connectors/lastfm.js +18 -0
- package/dist/connectors/lastfm.js.map +1 -0
- package/dist/connectors/mastodon.d.ts +3 -0
- package/dist/connectors/mastodon.d.ts.map +1 -0
- package/dist/connectors/mastodon.js +26 -0
- package/dist/connectors/mastodon.js.map +1 -0
- package/dist/connectors/newsapi.d.ts +3 -0
- package/dist/connectors/newsapi.d.ts.map +1 -0
- package/dist/connectors/newsapi.js +18 -0
- package/dist/connectors/newsapi.js.map +1 -0
- package/dist/connectors/ptv.d.ts +3 -0
- package/dist/connectors/ptv.d.ts.map +1 -0
- package/dist/connectors/ptv.js +26 -0
- package/dist/connectors/ptv.js.map +1 -0
- package/dist/connectors/reddit.d.ts +3 -0
- package/dist/connectors/reddit.d.ts.map +1 -0
- package/dist/connectors/reddit.js +28 -0
- package/dist/connectors/reddit.js.map +1 -0
- package/dist/connectors/seatgeek.d.ts +3 -0
- package/dist/connectors/seatgeek.d.ts.map +1 -0
- package/dist/connectors/seatgeek.js +18 -0
- package/dist/connectors/seatgeek.js.map +1 -0
- package/dist/connectors/shopify.d.ts +3 -0
- package/dist/connectors/shopify.d.ts.map +1 -0
- package/dist/connectors/shopify.js +38 -0
- package/dist/connectors/shopify.js.map +1 -0
- package/dist/connectors/slack.d.ts +3 -0
- package/dist/connectors/slack.d.ts.map +1 -0
- package/dist/connectors/slack.js +18 -0
- package/dist/connectors/slack.js.map +1 -0
- package/dist/connectors/telegram.d.ts +3 -0
- package/dist/connectors/telegram.d.ts.map +1 -0
- package/dist/connectors/telegram.js +18 -0
- package/dist/connectors/telegram.js.map +1 -0
- package/dist/connectors/ticketmaster.d.ts +3 -0
- package/dist/connectors/ticketmaster.d.ts.map +1 -0
- package/dist/connectors/ticketmaster.js +18 -0
- package/dist/connectors/ticketmaster.js.map +1 -0
- package/dist/connectors/twitch.d.ts +3 -0
- package/dist/connectors/twitch.d.ts.map +1 -0
- package/dist/connectors/twitch.js +26 -0
- package/dist/connectors/twitch.js.map +1 -0
- package/dist/connectors/xero.d.ts +3 -0
- package/dist/connectors/xero.d.ts.map +1 -0
- package/dist/connectors/xero.js +36 -0
- package/dist/connectors/xero.js.map +1 -0
- package/dist/connectors/yelp.d.ts +3 -0
- package/dist/connectors/yelp.d.ts.map +1 -0
- package/dist/connectors/yelp.js +18 -0
- package/dist/connectors/yelp.js.map +1 -0
- package/dist/datetime-tool.d.ts +8 -0
- package/dist/datetime-tool.d.ts.map +1 -0
- package/dist/datetime-tool.js +263 -0
- package/dist/datetime-tool.js.map +1 -0
- package/dist/deezer-tool.d.ts +7 -0
- package/dist/deezer-tool.d.ts.map +1 -0
- package/dist/deezer-tool.js +142 -0
- package/dist/deezer-tool.js.map +1 -0
- package/dist/discogs-tool.d.ts +7 -0
- package/dist/discogs-tool.d.ts.map +1 -0
- package/dist/discogs-tool.js +138 -0
- package/dist/discogs-tool.js.map +1 -0
- package/dist/domain-tool.d.ts +4 -0
- package/dist/domain-tool.d.ts.map +1 -0
- package/dist/domain-tool.js +155 -0
- package/dist/domain-tool.js.map +1 -0
- package/dist/ebird-tool.d.ts +5 -0
- package/dist/ebird-tool.d.ts.map +1 -0
- package/dist/ebird-tool.js +128 -0
- package/dist/ebird-tool.js.map +1 -0
- package/dist/email-tool.d.ts +8 -0
- package/dist/email-tool.d.ts.map +1 -0
- package/dist/email-tool.js +376 -0
- package/dist/email-tool.js.map +1 -0
- package/dist/espn-tool.d.ts +8 -0
- package/dist/espn-tool.d.ts.map +1 -0
- package/dist/espn-tool.js +147 -0
- package/dist/espn-tool.js.map +1 -0
- package/dist/eventbrite-tool.d.ts +7 -0
- package/dist/eventbrite-tool.d.ts.map +1 -0
- package/dist/eventbrite-tool.js +134 -0
- package/dist/eventbrite-tool.js.map +1 -0
- package/dist/feedly-tool.d.ts +2 -0
- package/dist/feedly-tool.d.ts.map +1 -0
- package/dist/feedly-tool.js +152 -0
- package/dist/feedly-tool.js.map +1 -0
- package/dist/foursquare-tool.d.ts +6 -0
- package/dist/foursquare-tool.d.ts.map +1 -0
- package/dist/foursquare-tool.js +102 -0
- package/dist/foursquare-tool.js.map +1 -0
- package/dist/fpl-tool.d.ts +8 -0
- package/dist/fpl-tool.d.ts.map +1 -0
- package/dist/fpl-tool.js +195 -0
- package/dist/fpl-tool.js.map +1 -0
- package/dist/genius-tool.d.ts +5 -0
- package/dist/genius-tool.d.ts.map +1 -0
- package/dist/genius-tool.js +62 -0
- package/dist/genius-tool.js.map +1 -0
- package/dist/guardian-tool.d.ts +6 -0
- package/dist/guardian-tool.d.ts.map +1 -0
- package/dist/guardian-tool.js +124 -0
- package/dist/guardian-tool.js.map +1 -0
- package/dist/hackernews-tool.d.ts +8 -0
- package/dist/hackernews-tool.d.ts.map +1 -0
- package/dist/hackernews-tool.js +96 -0
- package/dist/hackernews-tool.js.map +1 -0
- package/dist/haveibeenpwned-tool.d.ts +4 -0
- package/dist/haveibeenpwned-tool.d.ts.map +1 -0
- package/dist/haveibeenpwned-tool.js +162 -0
- package/dist/haveibeenpwned-tool.js.map +1 -0
- package/dist/hunter-tool.d.ts +4 -0
- package/dist/hunter-tool.d.ts.map +1 -0
- package/dist/hunter-tool.js +148 -0
- package/dist/hunter-tool.js.map +1 -0
- package/dist/instapaper-tool.d.ts +2 -0
- package/dist/instapaper-tool.d.ts.map +1 -0
- package/dist/instapaper-tool.js +257 -0
- package/dist/instapaper-tool.js.map +1 -0
- package/dist/ipapi-tool.d.ts +3 -0
- package/dist/ipapi-tool.d.ts.map +1 -0
- package/dist/ipapi-tool.js +78 -0
- package/dist/ipapi-tool.js.map +1 -0
- package/dist/ipaustralia-tool.d.ts +4 -0
- package/dist/ipaustralia-tool.d.ts.map +1 -0
- package/dist/ipaustralia-tool.js +138 -0
- package/dist/ipaustralia-tool.js.map +1 -0
- package/dist/lastfm-tool.d.ts +8 -0
- package/dist/lastfm-tool.d.ts.map +1 -0
- package/dist/lastfm-tool.js +169 -0
- package/dist/lastfm-tool.js.map +1 -0
- package/dist/lego-tool.d.ts +8 -0
- package/dist/lego-tool.d.ts.map +1 -0
- package/dist/lego-tool.js +235 -0
- package/dist/lego-tool.js.map +1 -0
- package/dist/lichess-tool.d.ts +6 -0
- package/dist/lichess-tool.d.ts.map +1 -0
- package/dist/lichess-tool.js +211 -0
- package/dist/lichess-tool.js.map +1 -0
- package/dist/meal-tool.d.ts +8 -0
- package/dist/meal-tool.d.ts.map +1 -0
- package/dist/meal-tool.js +143 -0
- package/dist/meal-tool.js.map +1 -0
- package/dist/monica-tool.d.ts +2 -0
- package/dist/monica-tool.d.ts.map +1 -0
- package/dist/monica-tool.js +160 -0
- package/dist/monica-tool.js.map +1 -0
- package/dist/musicbrainz-tool.d.ts +6 -0
- package/dist/musicbrainz-tool.d.ts.map +1 -0
- package/dist/musicbrainz-tool.js +65 -0
- package/dist/musicbrainz-tool.js.map +1 -0
- package/dist/nasa-tool.d.ts +6 -0
- package/dist/nasa-tool.d.ts.map +1 -0
- package/dist/nasa-tool.js +158 -0
- package/dist/nasa-tool.js.map +1 -0
- package/dist/newsapi-tool.d.ts +4 -0
- package/dist/newsapi-tool.d.ts.map +1 -0
- package/dist/newsapi-tool.js +108 -0
- package/dist/newsapi-tool.js.map +1 -0
- package/dist/notion-tool.d.ts +2 -0
- package/dist/notion-tool.d.ts.map +1 -0
- package/dist/notion-tool.js +167 -0
- package/dist/notion-tool.js.map +1 -0
- package/dist/numbers-tool.d.ts +3 -0
- package/dist/numbers-tool.d.ts.map +1 -0
- package/dist/numbers-tool.js +47 -0
- package/dist/numbers-tool.js.map +1 -0
- package/dist/nvd-tool.d.ts +4 -0
- package/dist/nvd-tool.d.ts.map +1 -0
- package/dist/nvd-tool.js +150 -0
- package/dist/nvd-tool.js.map +1 -0
- package/dist/omdb-tool.d.ts +4 -0
- package/dist/omdb-tool.d.ts.map +1 -0
- package/dist/omdb-tool.js +62 -0
- package/dist/omdb-tool.js.map +1 -0
- package/dist/openaq-tool.d.ts +5 -0
- package/dist/openaq-tool.d.ts.map +1 -0
- package/dist/openaq-tool.js +141 -0
- package/dist/openaq-tool.js.map +1 -0
- package/dist/openexchangerates-tool.d.ts +5 -0
- package/dist/openexchangerates-tool.d.ts.map +1 -0
- package/dist/openexchangerates-tool.js +101 -0
- package/dist/openexchangerates-tool.js.map +1 -0
- package/dist/openf1-tool.d.ts +9 -0
- package/dist/openf1-tool.d.ts.map +1 -0
- package/dist/openf1-tool.js +194 -0
- package/dist/openf1-tool.js.map +1 -0
- package/dist/openfoodfacts-tool.d.ts +5 -0
- package/dist/openfoodfacts-tool.d.ts.map +1 -0
- package/dist/openfoodfacts-tool.js +106 -0
- package/dist/openfoodfacts-tool.js.map +1 -0
- package/dist/openlibrary-tool.d.ts +7 -0
- package/dist/openlibrary-tool.d.ts.map +1 -0
- package/dist/openlibrary-tool.js +67 -0
- package/dist/openlibrary-tool.js.map +1 -0
- package/dist/openmeteo-tool.d.ts +4 -0
- package/dist/openmeteo-tool.d.ts.map +1 -0
- package/dist/openmeteo-tool.js +160 -0
- package/dist/openmeteo-tool.js.map +1 -0
- package/dist/pandascore-tool.d.ts +6 -0
- package/dist/pandascore-tool.d.ts.map +1 -0
- package/dist/pandascore-tool.js +239 -0
- package/dist/pandascore-tool.js.map +1 -0
- package/dist/podcastindex-tool.d.ts +7 -0
- package/dist/podcastindex-tool.d.ts.map +1 -0
- package/dist/podcastindex-tool.js +98 -0
- package/dist/podcastindex-tool.js.map +1 -0
- package/dist/ptv-tool.d.ts +6 -0
- package/dist/ptv-tool.d.ts.map +1 -0
- package/dist/ptv-tool.js +95 -0
- package/dist/ptv-tool.js.map +1 -0
- package/dist/radiobrowser-tool.d.ts +7 -0
- package/dist/radiobrowser-tool.d.ts.map +1 -0
- package/dist/radiobrowser-tool.js +125 -0
- package/dist/radiobrowser-tool.js.map +1 -0
- package/dist/raindrop-tool.d.ts +2 -0
- package/dist/raindrop-tool.d.ts.map +1 -0
- package/dist/raindrop-tool.js +137 -0
- package/dist/raindrop-tool.js.map +1 -0
- package/dist/random-tool.d.ts +9 -0
- package/dist/random-tool.d.ts.map +1 -0
- package/dist/random-tool.js +198 -0
- package/dist/random-tool.js.map +1 -0
- package/dist/rawg-tool.d.ts +7 -0
- package/dist/rawg-tool.d.ts.map +1 -0
- package/dist/rawg-tool.js +172 -0
- package/dist/rawg-tool.js.map +1 -0
- package/dist/readwise-tool.d.ts +2 -0
- package/dist/readwise-tool.d.ts.map +1 -0
- package/dist/readwise-tool.js +133 -0
- package/dist/readwise-tool.js.map +1 -0
- package/dist/resend-tool.d.ts +4 -0
- package/dist/resend-tool.d.ts.map +1 -0
- package/dist/resend-tool.js +133 -0
- package/dist/resend-tool.js.map +1 -0
- package/dist/restcountries-tool.d.ts +7 -0
- package/dist/restcountries-tool.d.ts.map +1 -0
- package/dist/restcountries-tool.js +141 -0
- package/dist/restcountries-tool.js.map +1 -0
- package/dist/riot-tool.d.ts +6 -0
- package/dist/riot-tool.d.ts.map +1 -0
- package/dist/riot-tool.js +166 -0
- package/dist/riot-tool.js.map +1 -0
- package/dist/seatgeek-tool.d.ts +7 -0
- package/dist/seatgeek-tool.d.ts.map +1 -0
- package/dist/seatgeek-tool.js +144 -0
- package/dist/seatgeek-tool.js.map +1 -0
- package/dist/sendle-tool.d.ts +4 -0
- package/dist/sendle-tool.d.ts.map +1 -0
- package/dist/sendle-tool.js +146 -0
- package/dist/sendle-tool.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +114 -1825
- package/dist/server.js.map +1 -1
- package/dist/setlistfm-tool.d.ts +5 -0
- package/dist/setlistfm-tool.d.ts.map +1 -0
- package/dist/setlistfm-tool.js +89 -0
- package/dist/setlistfm-tool.js.map +1 -0
- package/dist/shodan-tool.d.ts +4 -0
- package/dist/shodan-tool.d.ts.map +1 -0
- package/dist/shodan-tool.js +139 -0
- package/dist/shodan-tool.js.map +1 -0
- package/dist/sleeper-tool.d.ts +7 -0
- package/dist/sleeper-tool.d.ts.map +1 -0
- package/dist/sleeper-tool.js +147 -0
- package/dist/sleeper-tool.js.map +1 -0
- package/dist/splitwise-tool.d.ts +2 -0
- package/dist/splitwise-tool.d.ts.map +1 -0
- package/dist/splitwise-tool.js +133 -0
- package/dist/splitwise-tool.js.map +1 -0
- package/dist/supercell-tool.d.ts +8 -0
- package/dist/supercell-tool.d.ts.map +1 -0
- package/dist/supercell-tool.js +258 -0
- package/dist/supercell-tool.js.map +1 -0
- package/dist/tab-tool.d.ts +4 -0
- package/dist/tab-tool.d.ts.map +1 -0
- package/dist/tab-tool.js +128 -0
- package/dist/tab-tool.js.map +1 -0
- package/dist/text-tool.d.ts +8 -0
- package/dist/text-tool.d.ts.map +1 -0
- package/dist/text-tool.js +190 -0
- package/dist/text-tool.js.map +1 -0
- package/dist/thelott-tool.d.ts +3 -0
- package/dist/thelott-tool.d.ts.map +1 -0
- package/dist/thelott-tool.js +93 -0
- package/dist/thelott-tool.js.map +1 -0
- package/dist/ticketmaster-tool.d.ts +6 -0
- package/dist/ticketmaster-tool.d.ts.map +1 -0
- package/dist/ticketmaster-tool.js +140 -0
- package/dist/ticketmaster-tool.js.map +1 -0
- package/dist/tmdb-tool.d.ts +9 -0
- package/dist/tmdb-tool.d.ts.map +1 -0
- package/dist/tmdb-tool.js +204 -0
- package/dist/tmdb-tool.js.map +1 -0
- package/dist/toggl-tool.d.ts +5 -0
- package/dist/toggl-tool.d.ts.map +1 -0
- package/dist/toggl-tool.js +203 -0
- package/dist/toggl-tool.js.map +1 -0
- package/dist/toilets-tool.d.ts +3 -0
- package/dist/toilets-tool.d.ts.map +1 -0
- package/dist/toilets-tool.js +260 -0
- package/dist/toilets-tool.js.map +1 -0
- package/dist/tomorrowio-tool.d.ts +4 -0
- package/dist/tomorrowio-tool.d.ts.map +1 -0
- package/dist/tomorrowio-tool.js +114 -0
- package/dist/tomorrowio-tool.js.map +1 -0
- package/dist/tool-wiring.d.ts +7370 -0
- package/dist/tool-wiring.d.ts.map +1 -0
- package/dist/tool-wiring.js +6068 -0
- package/dist/tool-wiring.js.map +1 -0
- package/dist/trivia-tool.d.ts +3 -0
- package/dist/trivia-tool.d.ts.map +1 -0
- package/dist/trivia-tool.js +91 -0
- package/dist/trivia-tool.js.map +1 -0
- package/dist/trove-tool.d.ts +4 -0
- package/dist/trove-tool.d.ts.map +1 -0
- package/dist/trove-tool.js +121 -0
- package/dist/trove-tool.js.map +1 -0
- package/dist/twitch-tool.d.ts +8 -0
- package/dist/twitch-tool.d.ts.map +1 -0
- package/dist/twitch-tool.js +188 -0
- package/dist/twitch-tool.js.map +1 -0
- package/dist/unit-converter-tool.d.ts +8 -0
- package/dist/unit-converter-tool.d.ts.map +1 -0
- package/dist/unit-converter-tool.js +176 -0
- package/dist/unit-converter-tool.js.map +1 -0
- package/dist/untappd-tool.d.ts +6 -0
- package/dist/untappd-tool.d.ts.map +1 -0
- package/dist/untappd-tool.js +193 -0
- package/dist/untappd-tool.js.map +1 -0
- package/dist/urlscan-tool.d.ts +4 -0
- package/dist/urlscan-tool.d.ts.map +1 -0
- package/dist/urlscan-tool.js +154 -0
- package/dist/urlscan-tool.js.map +1 -0
- package/dist/usgs-tool.d.ts +5 -0
- package/dist/usgs-tool.d.ts.map +1 -0
- package/dist/usgs-tool.js +140 -0
- package/dist/usgs-tool.js.map +1 -0
- package/dist/vault-bridge.d.ts +16 -0
- package/dist/vault-bridge.d.ts.map +1 -0
- package/dist/vault-bridge.js +139 -0
- package/dist/vault-bridge.js.map +1 -0
- package/dist/vercel-tool.d.ts +6 -0
- package/dist/vercel-tool.d.ts.map +1 -0
- package/dist/vercel-tool.js +202 -0
- package/dist/vercel-tool.js.map +1 -0
- package/dist/virustotal-tool.d.ts +5 -0
- package/dist/virustotal-tool.d.ts.map +1 -0
- package/dist/virustotal-tool.js +154 -0
- package/dist/virustotal-tool.js.map +1 -0
- package/dist/willyweather-tool.d.ts +4 -0
- package/dist/willyweather-tool.d.ts.map +1 -0
- package/dist/willyweather-tool.js +128 -0
- package/dist/willyweather-tool.js.map +1 -0
- package/dist/wise-tool.d.ts +5 -0
- package/dist/wise-tool.d.ts.map +1 -0
- package/dist/wise-tool.js +129 -0
- package/dist/wise-tool.js.map +1 -0
- package/dist/xero-tool.d.ts.map +1 -1
- package/dist/xero-tool.js +40 -35
- package/dist/xero-tool.js.map +1 -1
- package/dist/yelp-tool.d.ts +6 -0
- package/dist/yelp-tool.d.ts.map +1 -0
- package/dist/yelp-tool.js +150 -0
- package/dist/yelp-tool.js.map +1 -0
- package/package.json +6 -1
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
// Vercel deployment management API.
|
|
2
|
+
// Docs: https://vercel.com/docs/rest-api
|
|
3
|
+
// Auth: VERCEL_TOKEN (Bearer)
|
|
4
|
+
// Base: https://api.vercel.com/
|
|
5
|
+
const VERCEL_BASE = "https://api.vercel.com";
|
|
6
|
+
function getApiKey(args) {
|
|
7
|
+
const key = String(args.api_key ?? process.env.VERCEL_TOKEN ?? "").trim();
|
|
8
|
+
if (!key)
|
|
9
|
+
throw new Error("api_key is required (or set VERCEL_TOKEN env var).");
|
|
10
|
+
return key;
|
|
11
|
+
}
|
|
12
|
+
async function vercelGet(token, path, params) {
|
|
13
|
+
const qs = params ? "?" + new URLSearchParams(params).toString() : "";
|
|
14
|
+
const res = await fetch(`${VERCEL_BASE}${path}${qs}`, {
|
|
15
|
+
headers: {
|
|
16
|
+
Authorization: `Bearer ${token}`,
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
if (res.status === 401)
|
|
20
|
+
throw new Error("Invalid Vercel token.");
|
|
21
|
+
if (res.status === 403)
|
|
22
|
+
throw new Error("Vercel: access forbidden. Check token scopes.");
|
|
23
|
+
if (res.status === 404)
|
|
24
|
+
throw new Error(`Vercel: resource not found at ${path}.`);
|
|
25
|
+
if (res.status === 429)
|
|
26
|
+
throw new Error("Vercel rate limit exceeded.");
|
|
27
|
+
if (!res.ok) {
|
|
28
|
+
const body = await res.text().catch(() => "");
|
|
29
|
+
throw new Error(`Vercel HTTP ${res.status}: ${body || res.statusText}`);
|
|
30
|
+
}
|
|
31
|
+
return res.json();
|
|
32
|
+
}
|
|
33
|
+
// list_vercel_deployments
|
|
34
|
+
export async function listVercelDeployments(args) {
|
|
35
|
+
try {
|
|
36
|
+
const token = getApiKey(args);
|
|
37
|
+
const params = {};
|
|
38
|
+
if (args.app)
|
|
39
|
+
params.app = String(args.app);
|
|
40
|
+
if (args.limit)
|
|
41
|
+
params.limit = String(args.limit);
|
|
42
|
+
if (args.project_id)
|
|
43
|
+
params.projectId = String(args.project_id);
|
|
44
|
+
if (args.state)
|
|
45
|
+
params.state = String(args.state);
|
|
46
|
+
if (args.team_id)
|
|
47
|
+
params.teamId = String(args.team_id);
|
|
48
|
+
const data = await vercelGet(token, "/v6/deployments", params);
|
|
49
|
+
const deployments = data.deployments ?? [];
|
|
50
|
+
return {
|
|
51
|
+
count: deployments.length,
|
|
52
|
+
pagination: data.pagination,
|
|
53
|
+
deployments: deployments.map((d) => ({
|
|
54
|
+
uid: d.uid,
|
|
55
|
+
name: d.name,
|
|
56
|
+
url: d.url,
|
|
57
|
+
state: d.state,
|
|
58
|
+
ready_state: d.readyState,
|
|
59
|
+
created: d.created,
|
|
60
|
+
ready: d.ready,
|
|
61
|
+
target: d.target,
|
|
62
|
+
creator: d.creator?.email,
|
|
63
|
+
meta: d.meta,
|
|
64
|
+
})),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// get_vercel_deployment
|
|
72
|
+
export async function getVercelDeployment(args) {
|
|
73
|
+
try {
|
|
74
|
+
const token = getApiKey(args);
|
|
75
|
+
const id = String(args.id ?? "").trim();
|
|
76
|
+
if (!id)
|
|
77
|
+
return { error: "id is required." };
|
|
78
|
+
const params = {};
|
|
79
|
+
if (args.team_id)
|
|
80
|
+
params.teamId = String(args.team_id);
|
|
81
|
+
const data = await vercelGet(token, `/v13/deployments/${id}`, params);
|
|
82
|
+
return {
|
|
83
|
+
uid: data.uid,
|
|
84
|
+
name: data.name,
|
|
85
|
+
url: data.url,
|
|
86
|
+
state: data.state,
|
|
87
|
+
ready_state: data.readyState,
|
|
88
|
+
created: data.created,
|
|
89
|
+
ready: data.ready,
|
|
90
|
+
building: data.building,
|
|
91
|
+
target: data.target,
|
|
92
|
+
type: data.type,
|
|
93
|
+
regions: data.regions,
|
|
94
|
+
creator: data.creator?.email,
|
|
95
|
+
error: data.errorCode
|
|
96
|
+
? { code: data.errorCode, message: data.errorMessage }
|
|
97
|
+
: null,
|
|
98
|
+
meta: data.meta,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// list_vercel_projects
|
|
106
|
+
export async function listVercelProjects(args) {
|
|
107
|
+
try {
|
|
108
|
+
const token = getApiKey(args);
|
|
109
|
+
const params = {};
|
|
110
|
+
if (args.limit)
|
|
111
|
+
params.limit = String(args.limit);
|
|
112
|
+
if (args.search)
|
|
113
|
+
params.search = String(args.search);
|
|
114
|
+
if (args.team_id)
|
|
115
|
+
params.teamId = String(args.team_id);
|
|
116
|
+
const data = await vercelGet(token, "/v9/projects", params);
|
|
117
|
+
const projects = data.projects ?? [];
|
|
118
|
+
return {
|
|
119
|
+
count: projects.length,
|
|
120
|
+
pagination: data.pagination,
|
|
121
|
+
projects: projects.map((p) => ({
|
|
122
|
+
id: p.id,
|
|
123
|
+
name: p.name,
|
|
124
|
+
framework: p.framework,
|
|
125
|
+
node_version: p.nodeVersion,
|
|
126
|
+
updated_at: p.updatedAt,
|
|
127
|
+
created_at: p.createdAt,
|
|
128
|
+
latest_deployments: (p.latestDeployments ?? []).slice(0, 3).map((d) => ({
|
|
129
|
+
uid: d.uid,
|
|
130
|
+
url: d.url,
|
|
131
|
+
state: d.readyState,
|
|
132
|
+
target: d.target,
|
|
133
|
+
})),
|
|
134
|
+
})),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
catch (err) {
|
|
138
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// get_vercel_domain
|
|
142
|
+
export async function getVercelDomain(args) {
|
|
143
|
+
try {
|
|
144
|
+
const token = getApiKey(args);
|
|
145
|
+
const domain = String(args.domain ?? "").trim();
|
|
146
|
+
if (!domain)
|
|
147
|
+
return { error: "domain is required." };
|
|
148
|
+
const params = {};
|
|
149
|
+
if (args.team_id)
|
|
150
|
+
params.teamId = String(args.team_id);
|
|
151
|
+
const data = await vercelGet(token, `/v5/domains/${domain}`, params);
|
|
152
|
+
const d = data.domain;
|
|
153
|
+
return {
|
|
154
|
+
name: d?.name,
|
|
155
|
+
apex: d?.apexName,
|
|
156
|
+
project_id: d?.projectId,
|
|
157
|
+
verified: d?.verified,
|
|
158
|
+
ns_verified_at: d?.nsVerifiedAt,
|
|
159
|
+
cname_target: d?.cnamTarget,
|
|
160
|
+
service_type: d?.serviceType,
|
|
161
|
+
bought_at: d?.boughtAt,
|
|
162
|
+
expires_at: d?.expiresAt,
|
|
163
|
+
dns: d?.dns,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
// get_vercel_env
|
|
171
|
+
export async function getVercelEnv(args) {
|
|
172
|
+
try {
|
|
173
|
+
const token = getApiKey(args);
|
|
174
|
+
const projectId = String(args.project_id ?? "").trim();
|
|
175
|
+
if (!projectId)
|
|
176
|
+
return { error: "project_id is required." };
|
|
177
|
+
const params = {};
|
|
178
|
+
if (args.team_id)
|
|
179
|
+
params.teamId = String(args.team_id);
|
|
180
|
+
if (args.decrypt)
|
|
181
|
+
params.decrypt = "true";
|
|
182
|
+
const data = await vercelGet(token, `/v9/projects/${projectId}/env`, params);
|
|
183
|
+
const envs = data.envs ?? [];
|
|
184
|
+
return {
|
|
185
|
+
count: envs.length,
|
|
186
|
+
env: envs.map((e) => ({
|
|
187
|
+
id: e.id,
|
|
188
|
+
key: e.key,
|
|
189
|
+
value: e.value,
|
|
190
|
+
type: e.type,
|
|
191
|
+
target: e.target,
|
|
192
|
+
git_branch: e.gitBranch,
|
|
193
|
+
created_at: e.createdAt,
|
|
194
|
+
updated_at: e.updatedAt,
|
|
195
|
+
})),
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=vercel-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel-tool.js","sourceRoot":"","sources":["../src/vercel-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function scanUrlVirustotal(args: Record<string, unknown>): Promise<unknown>;
|
|
2
|
+
export declare function getUrlReport(args: Record<string, unknown>): Promise<unknown>;
|
|
3
|
+
export declare function scanIpVirustotal(args: Record<string, unknown>): Promise<unknown>;
|
|
4
|
+
export declare function scanDomainVirustotal(args: Record<string, unknown>): Promise<unknown>;
|
|
5
|
+
//# sourceMappingURL=virustotal-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virustotal-tool.d.ts","sourceRoot":"","sources":["../src/virustotal-tool.ts"],"names":[],"mappings":"AAiEA,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBvF;AAGD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBlF;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBtF;AAGD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAqB1F"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
// VirusTotal malware/URL/file/IP/domain scanner.
|
|
2
|
+
// Docs: https://developers.virustotal.com/reference
|
|
3
|
+
// Auth: VIRUSTOTAL_API_KEY (x-apikey header)
|
|
4
|
+
// Base: https://www.virustotal.com/api/v3/
|
|
5
|
+
const VT_BASE = "https://www.virustotal.com/api/v3";
|
|
6
|
+
function getApiKey(args) {
|
|
7
|
+
const key = String(args.api_key ?? process.env.VIRUSTOTAL_API_KEY ?? "").trim();
|
|
8
|
+
if (!key)
|
|
9
|
+
throw new Error("api_key is required (or set VIRUSTOTAL_API_KEY env var).");
|
|
10
|
+
return key;
|
|
11
|
+
}
|
|
12
|
+
async function vtGet(apiKey, path, params) {
|
|
13
|
+
const qs = params ? "?" + new URLSearchParams(params).toString() : "";
|
|
14
|
+
const res = await fetch(`${VT_BASE}${path}${qs}`, {
|
|
15
|
+
headers: { "x-apikey": apiKey },
|
|
16
|
+
});
|
|
17
|
+
if (res.status === 401)
|
|
18
|
+
throw new Error("Invalid VirusTotal API key.");
|
|
19
|
+
if (res.status === 404)
|
|
20
|
+
throw new Error(`VirusTotal: resource not found at ${path}.`);
|
|
21
|
+
if (res.status === 429)
|
|
22
|
+
throw new Error("VirusTotal rate limit exceeded. Wait and retry.");
|
|
23
|
+
if (!res.ok) {
|
|
24
|
+
const body = await res.text().catch(() => "");
|
|
25
|
+
throw new Error(`VirusTotal HTTP ${res.status}: ${body || res.statusText}`);
|
|
26
|
+
}
|
|
27
|
+
return res.json();
|
|
28
|
+
}
|
|
29
|
+
async function vtPost(apiKey, path, body) {
|
|
30
|
+
const res = await fetch(`${VT_BASE}${path}`, {
|
|
31
|
+
method: "POST",
|
|
32
|
+
headers: {
|
|
33
|
+
"x-apikey": apiKey,
|
|
34
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
35
|
+
},
|
|
36
|
+
body: body.toString(),
|
|
37
|
+
});
|
|
38
|
+
if (res.status === 401)
|
|
39
|
+
throw new Error("Invalid VirusTotal API key.");
|
|
40
|
+
if (res.status === 429)
|
|
41
|
+
throw new Error("VirusTotal rate limit exceeded. Wait and retry.");
|
|
42
|
+
if (!res.ok) {
|
|
43
|
+
const body2 = await res.text().catch(() => "");
|
|
44
|
+
throw new Error(`VirusTotal HTTP ${res.status}: ${body2 || res.statusText}`);
|
|
45
|
+
}
|
|
46
|
+
return res.json();
|
|
47
|
+
}
|
|
48
|
+
function extractStats(data) {
|
|
49
|
+
const attrs = data.data?.attributes;
|
|
50
|
+
return {
|
|
51
|
+
stats: attrs?.last_analysis_stats,
|
|
52
|
+
reputation: attrs?.reputation,
|
|
53
|
+
last_analysis_date: attrs?.last_analysis_date,
|
|
54
|
+
tags: attrs?.tags,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
// scan_url_virustotal
|
|
58
|
+
export async function scanUrlVirustotal(args) {
|
|
59
|
+
try {
|
|
60
|
+
const apiKey = getApiKey(args);
|
|
61
|
+
const url = String(args.url ?? "").trim();
|
|
62
|
+
if (!url)
|
|
63
|
+
return { error: "url is required." };
|
|
64
|
+
const body = new URLSearchParams({ url });
|
|
65
|
+
const data = await vtPost(apiKey, "/urls", body);
|
|
66
|
+
const id = data.data?.id ?? null;
|
|
67
|
+
return {
|
|
68
|
+
submitted: true,
|
|
69
|
+
analysis_id: id,
|
|
70
|
+
note: "Use get_url_report with the base64url-encoded URL to fetch results.",
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// get_url_report
|
|
78
|
+
export async function getUrlReport(args) {
|
|
79
|
+
try {
|
|
80
|
+
const apiKey = getApiKey(args);
|
|
81
|
+
const url = String(args.url ?? "").trim();
|
|
82
|
+
if (!url)
|
|
83
|
+
return { error: "url is required." };
|
|
84
|
+
// Encode to base64url without padding
|
|
85
|
+
const encoded = Buffer.from(url).toString("base64").replace(/=/g, "");
|
|
86
|
+
const data = await vtGet(apiKey, `/urls/${encoded}`);
|
|
87
|
+
const attrs = data.data?.attributes;
|
|
88
|
+
return {
|
|
89
|
+
url,
|
|
90
|
+
final_url: attrs?.last_final_url,
|
|
91
|
+
title: attrs?.title,
|
|
92
|
+
stats: attrs?.last_analysis_stats,
|
|
93
|
+
reputation: attrs?.reputation,
|
|
94
|
+
last_analysis_date: attrs?.last_analysis_date,
|
|
95
|
+
categories: attrs?.categories,
|
|
96
|
+
tags: attrs?.tags,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// scan_ip_virustotal
|
|
104
|
+
export async function scanIpVirustotal(args) {
|
|
105
|
+
try {
|
|
106
|
+
const apiKey = getApiKey(args);
|
|
107
|
+
const ip = String(args.ip ?? "").trim();
|
|
108
|
+
if (!ip)
|
|
109
|
+
return { error: "ip is required." };
|
|
110
|
+
const data = await vtGet(apiKey, `/ip_addresses/${ip}`);
|
|
111
|
+
const attrs = data.data?.attributes;
|
|
112
|
+
return {
|
|
113
|
+
ip,
|
|
114
|
+
country: attrs?.country,
|
|
115
|
+
asn: attrs?.asn,
|
|
116
|
+
as_owner: attrs?.as_owner,
|
|
117
|
+
stats: attrs?.last_analysis_stats,
|
|
118
|
+
reputation: attrs?.reputation,
|
|
119
|
+
last_analysis_date: attrs?.last_analysis_date,
|
|
120
|
+
tags: attrs?.tags,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// scan_domain_virustotal
|
|
128
|
+
export async function scanDomainVirustotal(args) {
|
|
129
|
+
try {
|
|
130
|
+
const apiKey = getApiKey(args);
|
|
131
|
+
const domain = String(args.domain ?? "").trim();
|
|
132
|
+
if (!domain)
|
|
133
|
+
return { error: "domain is required." };
|
|
134
|
+
const data = await vtGet(apiKey, `/domains/${domain}`);
|
|
135
|
+
const attrs = data.data?.attributes;
|
|
136
|
+
return {
|
|
137
|
+
domain,
|
|
138
|
+
registrar: attrs?.registrar,
|
|
139
|
+
creation_date: attrs?.creation_date,
|
|
140
|
+
stats: attrs?.last_analysis_stats,
|
|
141
|
+
reputation: attrs?.reputation,
|
|
142
|
+
last_analysis_date: attrs?.last_analysis_date,
|
|
143
|
+
categories: attrs?.categories,
|
|
144
|
+
tags: attrs?.tags,
|
|
145
|
+
whois: attrs?.whois ? String(attrs.whois).slice(0, 500) : null,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// Keep extractStats accessible to avoid unused warning
|
|
153
|
+
void extractStats;
|
|
154
|
+
//# sourceMappingURL=virustotal-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virustotal-tool.js","sourceRoot":"","sources":["../src/virustotal-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function getWillyweatherForecast(args: Record<string, unknown>): Promise<unknown>;
|
|
2
|
+
export declare function getWillyweatherSurf(args: Record<string, unknown>): Promise<unknown>;
|
|
3
|
+
export declare function getWillyweatherTide(args: Record<string, unknown>): Promise<unknown>;
|
|
4
|
+
//# sourceMappingURL=willyweather-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"willyweather-tool.d.ts","sourceRoot":"","sources":["../src/willyweather-tool.ts"],"names":[],"mappings":"AA2CA,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA8B7F;AAID,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BzF;AAID,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BzF"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// WillyWeather AU integration.
|
|
2
|
+
// Australian weather, surf, tide, UV, and swell forecasts.
|
|
3
|
+
// Docs: https://www.willyweather.com.au/api/docs/v2.html
|
|
4
|
+
// Auth: WILLYWEATHER_KEY env var (passed as key query param in base URL).
|
|
5
|
+
// Base URL: https://api.willyweather.com.au/v2/{key}/
|
|
6
|
+
const WILLY_BASE = "https://api.willyweather.com.au/v2";
|
|
7
|
+
function getApiKey(args) {
|
|
8
|
+
const key = String(args.api_key ?? process.env.WILLYWEATHER_KEY ?? "").trim();
|
|
9
|
+
if (!key)
|
|
10
|
+
throw new Error("api_key is required (or set WILLYWEATHER_KEY env var).");
|
|
11
|
+
return key;
|
|
12
|
+
}
|
|
13
|
+
async function willyGet(apiKey, path, params) {
|
|
14
|
+
const qs = params ? "?" + new URLSearchParams(params).toString() : "";
|
|
15
|
+
const res = await fetch(`${WILLY_BASE}/${apiKey}${path}${qs}`, {
|
|
16
|
+
headers: { "User-Agent": "UnClickMCP/1.0 (https://unclick.io)" },
|
|
17
|
+
});
|
|
18
|
+
if (res.status === 401 || res.status === 403)
|
|
19
|
+
throw new Error("Invalid WillyWeather API key.");
|
|
20
|
+
if (res.status === 404)
|
|
21
|
+
throw new Error("Location not found.");
|
|
22
|
+
if (res.status === 429)
|
|
23
|
+
throw new Error("WillyWeather API rate limit exceeded.");
|
|
24
|
+
if (!res.ok) {
|
|
25
|
+
const body = await res.text().catch(() => "");
|
|
26
|
+
throw new Error(`WillyWeather HTTP ${res.status}${body ? `: ${body.slice(0, 200)}` : ""}`);
|
|
27
|
+
}
|
|
28
|
+
return res.json();
|
|
29
|
+
}
|
|
30
|
+
async function searchLocation(apiKey, query) {
|
|
31
|
+
const data = await willyGet(apiKey, "/search.json", { q: query, limit: "1" });
|
|
32
|
+
const locations = data["locations"];
|
|
33
|
+
if (!locations?.length)
|
|
34
|
+
return null;
|
|
35
|
+
const loc = locations[0];
|
|
36
|
+
return {
|
|
37
|
+
id: Number(loc["id"]),
|
|
38
|
+
name: String(loc["name"] ?? ""),
|
|
39
|
+
state: String(loc["state"]?.["abbreviation"] ?? ""),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// ─── get_willyweather_forecast ────────────────────────────────────────────────
|
|
43
|
+
export async function getWillyweatherForecast(args) {
|
|
44
|
+
try {
|
|
45
|
+
const apiKey = getApiKey(args);
|
|
46
|
+
const query = String(args.location ?? args.suburb ?? args.postcode ?? "").trim();
|
|
47
|
+
if (!query)
|
|
48
|
+
return { error: "location is required (suburb name or postcode)." };
|
|
49
|
+
const loc = await searchLocation(apiKey, query);
|
|
50
|
+
if (!loc)
|
|
51
|
+
return { error: `Location "${query}" not found in WillyWeather.` };
|
|
52
|
+
const days = Math.min(7, Math.max(1, Number(args.days ?? 3)));
|
|
53
|
+
const data = await willyGet(apiKey, `/locations/${loc.id}/weather.json`, {
|
|
54
|
+
forecasts: "weather,temperature,rainfall,wind,sunrisesunset",
|
|
55
|
+
days: String(days),
|
|
56
|
+
});
|
|
57
|
+
const forecasts = data["forecasts"];
|
|
58
|
+
return {
|
|
59
|
+
location: `${loc.name}, ${loc.state}`,
|
|
60
|
+
location_id: loc.id,
|
|
61
|
+
days_requested: days,
|
|
62
|
+
weather: forecasts?.["weather"],
|
|
63
|
+
temperature: forecasts?.["temperature"],
|
|
64
|
+
rainfall: forecasts?.["rainfall"],
|
|
65
|
+
wind: forecasts?.["wind"],
|
|
66
|
+
sunrise_sunset: forecasts?.["sunrisesunset"],
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// ─── get_willyweather_surf ────────────────────────────────────────────────────
|
|
74
|
+
export async function getWillyweatherSurf(args) {
|
|
75
|
+
try {
|
|
76
|
+
const apiKey = getApiKey(args);
|
|
77
|
+
const query = String(args.location ?? args.suburb ?? args.postcode ?? "").trim();
|
|
78
|
+
if (!query)
|
|
79
|
+
return { error: "location is required (suburb name or postcode)." };
|
|
80
|
+
const loc = await searchLocation(apiKey, query);
|
|
81
|
+
if (!loc)
|
|
82
|
+
return { error: `Location "${query}" not found in WillyWeather.` };
|
|
83
|
+
const days = Math.min(7, Math.max(1, Number(args.days ?? 3)));
|
|
84
|
+
const data = await willyGet(apiKey, `/locations/${loc.id}/weather.json`, {
|
|
85
|
+
forecasts: "swell,surfConditions",
|
|
86
|
+
days: String(days),
|
|
87
|
+
});
|
|
88
|
+
const forecasts = data["forecasts"];
|
|
89
|
+
return {
|
|
90
|
+
location: `${loc.name}, ${loc.state}`,
|
|
91
|
+
location_id: loc.id,
|
|
92
|
+
days_requested: days,
|
|
93
|
+
swell: forecasts?.["swell"],
|
|
94
|
+
surf_conditions: forecasts?.["surfConditions"],
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// ─── get_willyweather_tide ────────────────────────────────────────────────────
|
|
102
|
+
export async function getWillyweatherTide(args) {
|
|
103
|
+
try {
|
|
104
|
+
const apiKey = getApiKey(args);
|
|
105
|
+
const query = String(args.location ?? args.suburb ?? args.postcode ?? "").trim();
|
|
106
|
+
if (!query)
|
|
107
|
+
return { error: "location is required (suburb name or postcode)." };
|
|
108
|
+
const loc = await searchLocation(apiKey, query);
|
|
109
|
+
if (!loc)
|
|
110
|
+
return { error: `Location "${query}" not found in WillyWeather.` };
|
|
111
|
+
const days = Math.min(7, Math.max(1, Number(args.days ?? 2)));
|
|
112
|
+
const data = await willyGet(apiKey, `/locations/${loc.id}/weather.json`, {
|
|
113
|
+
forecasts: "tides",
|
|
114
|
+
days: String(days),
|
|
115
|
+
});
|
|
116
|
+
const forecasts = data["forecasts"];
|
|
117
|
+
return {
|
|
118
|
+
location: `${loc.name}, ${loc.state}`,
|
|
119
|
+
location_id: loc.id,
|
|
120
|
+
days_requested: days,
|
|
121
|
+
tides: forecasts?.["tides"],
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=willyweather-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"willyweather-tool.js","sourceRoot":"","sources":["../src/willyweather-tool.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,2DAA2D;AAC3D,yDAAyD;AACzD,0EAA0E;AAC1E,sDAAsD;AAEtD,MAAM,UAAU,GAAG,oCAAoC,CAAC;AAExD,SAAS,SAAS,CAAC,IAA6B;IAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9E,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IACpF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,MAAc,EAAE,IAAY,EAAE,MAA+B;IACnF,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,IAAI,MAAM,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE;QAC7D,OAAO,EAAE,EAAE,YAAY,EAAE,qCAAqC,EAAE;KACjE,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC/F,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC/D,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACjF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAsB,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,KAAa;IACzD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAA4B,CAAC;IACzG,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAA+C,CAAC;IAClF,IAAI,CAAC,SAAS,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACzB,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/B,KAAK,EAAE,MAAM,CAAE,GAAG,CAAC,OAAO,CAA6B,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KACjF,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAA6B;IACzE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjF,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC;QAEhF,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,KAAK,EAAE,aAAa,KAAK,8BAA8B,EAAE,CAAC;QAE7E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,CAAC,EAAE,eAAe,EAAE;YACvE,SAAS,EAAE,iDAAiD;YAC5D,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;SACnB,CAA4B,CAAC;QAE9B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAwC,CAAC;QAE3E,OAAO;YACL,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE;YACrC,WAAW,EAAE,GAAG,CAAC,EAAE;YACnB,cAAc,EAAE,IAAI;YACpB,OAAO,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC;YAC/B,WAAW,EAAE,SAAS,EAAE,CAAC,aAAa,CAAC;YACvC,QAAQ,EAAE,SAAS,EAAE,CAAC,UAAU,CAAC;YACjC,IAAI,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC;YACzB,cAAc,EAAE,SAAS,EAAE,CAAC,eAAe,CAAC;SAC7C,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA6B;IACrE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjF,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC;QAEhF,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,KAAK,EAAE,aAAa,KAAK,8BAA8B,EAAE,CAAC;QAE7E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,CAAC,EAAE,eAAe,EAAE;YACvE,SAAS,EAAE,sBAAsB;YACjC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;SACnB,CAA4B,CAAC;QAE9B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAwC,CAAC;QAE3E,OAAO;YACL,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE;YACrC,WAAW,EAAE,GAAG,CAAC,EAAE;YACnB,cAAc,EAAE,IAAI;YACpB,KAAK,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC;YAC3B,eAAe,EAAE,SAAS,EAAE,CAAC,gBAAgB,CAAC;SAC/C,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA6B;IACrE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjF,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC;QAEhF,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,KAAK,EAAE,aAAa,KAAK,8BAA8B,EAAE,CAAC;QAE7E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,CAAC,EAAE,eAAe,EAAE;YACvE,SAAS,EAAE,OAAO;YAClB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;SACnB,CAA4B,CAAC;QAE9B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAwC,CAAC;QAE3E,OAAO;YACL,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE;YACrC,WAAW,EAAE,GAAG,CAAC,EAAE;YACnB,cAAc,EAAE,IAAI;YACpB,KAAK,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC;SAC5B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function wiseExchangeRates(args: Record<string, unknown>): Promise<unknown>;
|
|
2
|
+
export declare function wiseProfile(_args: Record<string, unknown>): Promise<unknown>;
|
|
3
|
+
export declare function wiseAccounts(args: Record<string, unknown>): Promise<unknown>;
|
|
4
|
+
export declare function wiseCreateQuote(args: Record<string, unknown>): Promise<unknown>;
|
|
5
|
+
//# sourceMappingURL=wise-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wise-tool.d.ts","sourceRoot":"","sources":["../src/wise-tool.ts"],"names":[],"mappings":"AAiDA,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAwBvF;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAelF;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBlF;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA+BrF"}
|