Skip to main content
PeakCam

MCP server · REST API · feeds · no key

Use PeakCam with your AI assistant

One URL gives Claude, ChatGPT, Cursor or your own agent the same data as this site: the latest measured snow at every resort, webcams as links, forecasts and season dates. Read-only, anonymous, free.

https://www.peakcam.io/api/mcp

1 · What you get

Eight tools, one resource

The server is io.peakcam/snow, speaking stateless Streamable HTTP with no authentication and no legacy SSE endpoint; it negotiates protocol revisions 2026-07-28, 2025-11-25 and 2025-06-18, and a plain browser GET on the URL returns a small JSON description of itself. Every tool is annotated read-only and returns a short, dated markdown answer plus a structured document that matches the public API wire types. Each snow number carries its source and time, so the assistant can say “6 in in 24 h, SNOTEL-measured, 05:00 MST” instead of a bare figure.

PeakCam MCP tools and what each one answers
search_resortsFind a resort by name, fragment or region and get its slug with a one-line snow summary.
get_resort_conditionsThe latest snow report for one resort, every number labelled with its source and time, plus the page URL to cite.
get_resort_camsThe resort's webcams as links with live, down or unchecked health. Frames are never returned inline.
find_powderRank resorts by new snow in the last 24 or 48 hours, by state, with a measured-only option.
compare_resortsSide-by-side snow, season status and cam counts for two to six resorts.
get_forecastFive-day National Weather Service forecast for US resorts; Canada and the Andes return available: false.
get_snow_historyDaily depth, snow water equivalent, precipitation and temperatures for the last 1 to 30 days at the resort's station.
get_opening_datesSeason opening and closing dates with open, closed or unknown status, soonest first.
peakcam://resorts/{slug}Resource: each resort as markdown, the same document as its /index.md page. Listed and completable by slug.

2 · Set it up

Pick your client

Claude.ai and Claude Desktop

Paid plans can add a custom connector. The link below opens the dialog with the name and URL filled in.

Add PeakCam to Claude
  1. Or: Settings → Connectors → Add custom connector.
  2. Name PeakCam, URL the endpoint above, no OAuth.
  3. Enable it in a chat under the tools menu and ask about a resort.

Claude Code

One command registers the server for the current project, or add --scope user for everywhere.

claude mcp add --transport http peakcam https://www.peakcam.io/api/mcp

Check with claude mcp list; the tools appear as mcp__peakcam__*.

ChatGPT (developer mode)

  1. Settings → Apps & Connectors → Advanced → turn on Developer mode.
  2. Back in Apps & Connectors, choose Create.
  3. Name PeakCam, MCP server URL the endpoint above, Authentication: No authentication.
  4. Start a chat with the connector enabled under the plus menu.

Developer mode is available on Plus, Pro, Business and Enterprise plans; an admin may need to enable it for a workspace.

Cursor

Add the server to .cursor/mcp.json in a project, or to ~/.cursor/mcp.json for every project.

{
  "mcpServers": {
    "peakcam": {
      "url": "https://www.peakcam.io/api/mcp"
    }
  }
}

The same object works in Windsurf, Zed, VS Code and any client that reads an mcpServers map with a url entry.

Grok and Perplexity

Where supported

Both expose a custom connector field on some plans: paste the endpoint as the server URL and leave authentication empty. Where the field is missing, the markdown and REST alternates below work as plain web fetches.

  • Grok: Settings → Connectors → Add custom connector → MCP server URL.
  • Perplexity: Settings → Connectors → Add connector → Advanced → Server URL.

Hermes and self-hosted agents

Push, not pull

An agent that should wake up when it snows does not need MCP. Register a webhook on manage alerts and webhooks: each powder alert is POSTed as JSON, signed per Standard Webhooks (webhook-id, webhook-timestamp, webhook-signature; the secret shown once starts with whsec_).

hermes webhook subscribe --name peakcam-powder \
  --secret "$PEAKCAM_WEBHOOK_SECRET" \
  --on powder.alert "notify 'Powder: {{resort.name}} {{inches}}\" ({{kind}}) {{url}}'"

Hermes prints the URL it listens on; paste it into the webhook field. The payload:

{
  "type": "powder.alert",
  "resort": {
    "slug": "alta",
    "name": "Alta Ski Area",
    "url": "https://www.peakcam.io/resorts/alta"
  },
  "inches": 11,
  "kind": "measured",
  "measuredAt": "2026-12-01T12:30:00.000Z",
  "url": "https://www.peakcam.io/resorts/alta",
  "threshold": 8
}

For agents that poll instead (a Grok routine, a cron job), read the per-resort Atom feed below; no token needed. Receivers wanting exactly-once should key on resort.slug + measuredAt.

3 · Try it

Six prompts that work

  1. Prompt 1

    “Where did it snow most in the last 24 hours, measured only?”

    find_powder (24h, sourceOnly snotel)

  2. Prompt 2

    “Which Colorado resorts picked up more than 6 inches over the weekend?”

    find_powder (48h, CO, minInches 6)

  3. Prompt 3

    “What are conditions like at Alta right now, and is the base deeper than last week?”

    search_resorts, get_resort_conditions, get_snow_history (7 days)

  4. Prompt 4

    “Show me Breckenridge's webcams.”

    get_resort_cams (links only)

  5. Prompt 5

    “Compare Vail, Breckenridge and Keystone for a trip this weekend.”

    compare_resorts, then get_forecast for each

  6. Prompt 6

    “When does Mammoth open this season? What about the rest of California?”

    get_opening_dates (CA)

4 · Provenance

Where the data comes from

Where a resort has an assigned NRCS SNOTEL or SCAN station (most of the western United States), snow numbers are that station’s telemetry, quality-controlled and synced every six hours. Resorts without one (Canada, most of the East, the Andes) carry Open-Meteo model estimates and say so in every response. Forecasts are the National Weather Service for US resorts. Webcams belong to their operators; PeakCam links to them and reports whether the last probe found them live. Season dates come from the resort when confirmed and from third-party projections otherwise. The methodology page has the quality-control rules and the freshness guarantees.

Attribution policy

  • Quote any number with a link to the resort’s PeakCam page (the canonicalUrl in every response).
  • SNOTEL numbers are USDA NRCS measurements; say so when it matters, and note the station sits at one elevation.
  • Model numbers are estimates and must be labelled as such; the source field tells you which is which.
  • Cam frames are linked, not redistributed. Do not describe a frame the assistant has not fetched.
  • Full terms: https://www.peakcam.io/about#terms. Privacy: privacy policy. Questions: hello@peakcam.io.

5 · Without MCP

The same data over plain HTTP

Every surface is anonymous, CORS-open, cached fifteen minutes and carries X-Attribution and Link author and license headers. Swap breckenridge for any slug from the resort list.