Veabird: ski & beach trip planner

io.github.alexchouck-hashv2.0.0Updated Oct 1, 2026

Ski & beach trip planning: resort matching, snow and sargassum forecasts, lodging and flights.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingLocation & LifestyleFinance

Overview

AI-generated overview

Lets an assistant plan ski and beach trips using Veabird data: resort matching, snow and sargassum forecasts, lodging, flights and advisories.

What it does
Exposes read-only tools for ski and beach trip planning. Ski tools rank resorts by group ability, snow, crowds, pass and gateway airport, and report conditions. Beach tools rank resorts, report beach scores, sargassum, tides, hurricane threats and travel advisories. Trip tools assemble lodging, flight and extras searches for a given destination and dates.
When to use it
Use it when someone asks where to ski or which beach to visit, wants conditions for specific dates, or needs lodging and flight options around a resort. It suits assistants that keep a traveler profile such as home airport, ability, pass and budget in memory and pass it as arguments.
Requirements
A remote MCP endpoint over Streamable HTTP; no authentication is declared. The hosted server reads the Worker secret LITEAPI_KEY and the variable LITEAPI_WHITELABEL. A local Node.js server is also offered, taking LITEAPI_KEY, LITEAPI_WHITELABEL, VEABIRD_FEED, VEABIRD_SARGASSUM and VEABIRD_SITE. Network access is needed.
Before you install
All tools are described as read-only, so no confirmation is requested before calls. Lodging, flight and rental results are partner links, and the server may send searches to third-party providers; live hotel prices depend on LITEAPI_KEY. Forecasts are modeled and not safety guidance, and results require attribution to Veabird.

Installation

In SourceWeft

  1. Open Veabird: ski & beach trip planner in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "veabird": {
      "type": "http",
      "url": "https://veabird.com/mcp"
    }
  }
}

README

Veabird for AI assistants (MCP server + API)

Lets ChatGPT, Claude, Gemini and other assistants plan ski and beach trips with Veabird's data: "Where should we ski in late January? Two intermediates and a 7-year-old, Ikon pass, flying from Dallas", "Plan 4 nights at Breckenridge under $350 a night", "Is there seaweed in Tulum next week?"

One set of tools (tools.mjs), served three ways:

WhereWhatFor
https://veabird.com/mcpRemote MCP server (Streamable HTTP, stateless, no auth)ChatGPT connectors and apps, Claude connectors, Claude Code, any MCP client
https://veabird.com/api/v1The same tools as GET endpoints + OpenAPI specCustom GPT Actions, agents without MCP, partners
node mcp/server.mjsLocal MCP server (stdio or --http)Desktop clients that launch a command, testing

User-facing setup instructions: veabird.com/ai. Agent-facing site map: /llms.txt.

Tools

ToolREST pathWhat it answers
find_ski_resorts/ski/matchRanks ski resorts for a traveler: terrain fit for each ability in the group (kids add beginner terrain), snow and crowds for the dates, drive or flight from their airport/city, Epic/Ikon pass, budget style. Each pick has its reasons and links
ski_conditions/ski/conditions0-100 "ski today" score, 7-day summit snow, crowd outlook, terrain, passes, gateway airport
search_ski_resorts/ski/resorts~300 resorts by name, country, state or range, optionally by pass
plan_trip/trip/planOne ski or beach trip: conditions for the dates, lodging (live prices and photos when enabled, plus Stay22/Vrbo/Booking searches), flights to the best gateway airports, extras (lift tickets, rentals, tours, car hire, insurance)
find_lodging/trip/lodgingPlaces to stay near a resort or point for dates, party, rooms and budget
find_flights/trip/flightsFlight searches (Skyscanner, Google Flights) from home to each gateway airport, with the drive to the resort
rank_beaches/beach/rankBest beach resorts for a date by area or radius; with from, flight searches
beach_conditions/beach/conditionsBeach score, sargassum, weather, water, waves, UV, crowds, hurricane risk for one resort and date
search_beach_resorts/beach/resorts1,400+ beach resorts by name, town, island or country
better_nearby_beaches/beach/better-nearbyHigher-scoring resorts nearby on the same date
sargassum_forecast/beach/sargassum16-day sargassum detail + weekly outlook, cleanup, model skill
hurricane_threats/beach/hurricanesActive NHC storms and threatened resorts
travel_advisory/beach/advisoryState Department advisory + local safety notes
tides/beach/tidesHigh/low tides
sargassum_model_skill/beach/model-skillHeld-out accuracy of the sargassum model

All tools are read-only (readOnlyHint), so assistants don't ask for confirmation before calling them. Results carry structuredContent plus a JSON text copy, photo URLs where we have them, partner links with a disclosure, and an attribution line.

Personalization. The server is stateless. The traveler's profile (home airport, ability, pass, kids' ages, budget) lives in the assistant's memory and arrives as tool arguments. The schemas have a slot for each, and the server instructions tell the assistant to ask for them.

Data

  • Ski catalog: snow/js/resorts.js, snow/js/resorts-more.js, snow/js/tickets.js (passes, airports, sites).
  • Ski conditions: ski/boards.json on the data feed (every 3 h, snow/scripts/boards.mjs), scored with snow/js/now.js and snow/js/crowds.js.
  • Terrain mix: data/ski-terrain.json, the share of downhill run length by difficulty plus run and lift counts from OpenSkiMap (OpenStreetMap). Rebuild with node scripts/build-ski-terrain.mjs (one download, about 20 MB).
  • Airports: data/airports.json, 3,200+ airports with scheduled service from OurAirports. Rebuild with node scripts/build-airports.mjs.
  • Beach: the resort feed (format) and js/data/hotel-photos.json.
  • Lodging prices: LiteAPI /hotels/rates when LITEAPI_KEY is set (a sandbox key returns sample prices, labeled as such). LITEAPI_WHITELABEL (the domain of the LiteAPI white-label booking site, e.g. book.veabird.com) sends hotel "book" links to that hotel's page there with dates and guests filled in; without it they open a Stay22 search.
  • Affiliate IDs and templates: js/affiliates.js (Stay22 AID, Vrbo/Booking/flights/rentals wraps).

Run locally

bash
cd mcp && npm install   # only the test needs the MCP SDK; the server has no dependenciesnode server.mjs         # stdionode server.mjs --http 8787   # http://localhost:8787/mcpnpm test                # the official MCP SDK client calls every tool over stdio

Claude Code: claude mcp add --transport http veabird https://veabird.com/mcp (hosted) or claude mcp add veabird -- node /path/to/bluebird/mcp/server.mjs (local).

Env for the local server: LITEAPI_KEY, LITEAPI_WHITELABEL, VEABIRD_FEED, VEABIRD_SARGASSUM, VEABIRD_SITE. The hosted one reads the Worker secret LITEAPI_KEY and the var LITEAPI_WHITELABEL (see wrangler.jsonc). Worker checks: node tests/worker.test.mjs.

Terms

Free with attribution ("Data: Veabird" + link). Forecasts are modeled, not safety guidance. Lodging, flight and rental links are partner links; partners never affect forecasts or rankings.

Source: mcp/README.md at commit 5f4f799

Tools

0
Tool metadata has not been indexed yet.

Version history

1
  1. v2.0.0LatestOct 1, 2026