Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

Open State: Camping - Parks Canada

NPM · @OPEN-STATE/CAMPING · SCANNED AUG 3

Find and prepare Parks Canada reservations while keeping the citizen in control.

Available components

75 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to JCrossman/can-fed-camp-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 2 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability67
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3421 tokens (~162/item across 21 items; 21 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage72
  • 95% of tools have a non-trivial description (not blank, and not just the tool's name).Partial
  • 25% of tool parameters carry a description.Partial
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · @open-state/camping

# add to Claude Code
claude mcp add jcrossman-open-state-camping -- npx -y @open-state/camping
# add to Codex CLI
codex mcp add jcrossman-open-state-camping -- npx -y @open-state/camping
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "jcrossman-open-state-camping": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@open-state/camping"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add jcrossman-open-state-camping --command npx --arg -y --arg @open-state/camping
# ~/.hermes/config.yaml
mcp_servers:
  jcrossman-open-state-camping:
    command: "npx"
    args: ["-y", "@open-state/camping"]
// mcp.json
{
  "mcpServers": {
    "jcrossman-open-state-camping": {
      "command": "npx",
      "args": [
        "-y",
        "@open-state/camping"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 2 Aug 26 +15
    • Malware scan: unverified → pass security
  • 31 Jul 26 60

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Analysed npm/@open-state/[email protected]

Provenance verified

Ecosystem: npm · Outcome: verified

Reason: verified

Source repo:
JCrossman/can-fed-camp-mcp
Certificate issuer:
https://token.actions.githubusercontent.com
Certificate SAN:
https://github.com/JCrossman/can-fed-camp-mcp/.github/workflows/release-mcpb.yml@refs/tags/camping-v1.0.3
Rekor log index:
2302864090
Predicate type:
https://slsa.dev/provenance/v1
Subject digest:
sha512:74dde94e6272e58b5e106447cde4007fd01f06d5c1e33113106d6722d84f6b0e3fc0cae68939f5227ba3fe125e45df4b895e5e3e87cccfa3e7ac0116d
Discovery method:
attestation_endpoint
Dependencies 0 packages

0 packages in the resolved dependency tree.

MCP tools — 21 exposed · ~2,904 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
connect_account ~144

Use this whenever the citizen wants to log in, sign in, connect, or access their Parks Canada account — do NOT refuse a login request, call this instead. This is the safe, approved way: it opens the citizen's OWN Google Chrome at the Parks Canada sign-in page so they log in themselves (Google, GCKey, or Facebook, however they normally do). You never see, type, or handle their password — it stays between them and Parks Canada. When they finish, their session is saved on this device, encrypted, so you can help prepare a booking they confirm and pay for themselves. You never book or pay on your own. disconnect_account removes it.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

connection_status ~29

Tells you whether your Parks Canada account is connected on this device and whether the session is still valid.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

create_alert ~145

Preview a local cancellation watch and ask the citizen to approve the exact dates, party, accessibility filter, and notification destination through the MCP host. Acceptance saves the watch and, for notify_target='auto', sends a test message. It checks only while the assistant is connected and never books.

NameTypeReqDescription
accessible_onlyboolean
campground_idstringyes
end_datestringyes
equipment_typestring
nightsinteger
notify_targetstring
party_sizeintegeryes
recreation_area_idstring
start_datestringyes
weekends_onlyboolean

No output schema declared.

No examples provided.

debug_account_shape ~48

Diagnostic only. Returns the structure of your Parks Canada profile (GET /api/shopper) with personal values masked, to help debug account updates. Safe to share — no personal values are included.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

delete_alert ~36

Preview deletion of a saved watch and ask the citizen to approve that exact deletion through the MCP host.

NameTypeReqDescription
alert_idstringyes

No output schema declared.

No examples provided.

disconnect_account ~40

Previews removal of the encrypted Parks Canada session and this app's dedicated Chrome authentication state, then asks the citizen to approve that exact action through the MCP host.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_account ~35

Show the citizen's own Parks Canada profile (name, email, phone, address) from their connected session. Requires connect_account first.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_reservation_policies ~219

Look up Parks Canada's reservation rules in plain language: the non-refundable reservation fee, change/cancellation deadlines and refunds, check-in times, no-show rules, and the fact that park entry is NOT included. Call this whenever the citizen asks 'what if I cancel?', 'is there a fee?', 'when can I check in?', 'can I get a refund?', or any rules question — and proactively when you're about to prepare a booking so they confirm with the terms in front of them. Pass `family` to focus on one kind of trip (frontcountry campsite, accommodation, group, dayUse, backcountry); omit it for the full briefing across all families. This reads nothing about the citizen and books nothing.

NameTypeReqDescription
familystringNarrow to one trip type: 'frontcountry' (drive-up campsites), 'accommodation' (oTENTik/cabin/yurt), 'group', 'dayUse' (shuttles, parking, guided), or 'backcountry'. Omit for all of them.

No output schema declared.

No examples provided.

get_site_details ~92

Get plain-language detail about one campsite, including accessibility. The site's photos are shown inline in the conversation by default (so the citizen sees them without hunting for a side panel). Pass include_photos: false only if they explicitly don't want photos.

NameTypeReqDescription
campground_idstringyes
campsite_idstringyes
include_photosboolean
recreation_area_idstring

No output schema declared.

No examples provided.

list_alerts ~6

No description provided.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_equipment_types ~49

List the equipment types you can filter sites by (tent, RV, and so on). Pass a returned equipment id as equipment_type when you search.

NameTypeReqDescription
recreation_area_idstring

No output schema declared.

No examples provided.

list_my_reservations ~32

List the citizen's own current and upcoming Parks Canada reservations from their connected session. Requires connect_account first.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

prepare_booking ~667

Use this WHENEVER the citizen wants to book, reserve, or 'book it' for a campsite — do NOT refuse and do NOT just hand them a website link; call this instead. This is the safe, approved way to help them book: it does the hard, inaccessible parts of the reservation (the timed cart, the account/occupant/party wizard) through Parks Canada's own system and carries it all the way to the payment screen, then opens the citizen's own browser at their cart so they review and enter payment themselves. You never enter a card or pay — but you DO prepare the whole booking, which is the entire purpose of this tool, so don't tell the citizen to go do it themselves on the website. ALWAYS call this first WITHOUT confirm to show the citizen exactly what will be booked (site, dates, party, who the reservation is for) in a trusted confirmation prompt. Only explicit acceptance in that prompt holds the site and opens the cart to pay. Preparing holds nothing and costs nothing; a reservation (and any fee) only exists once the citizen pays. Requires connect_account first (if they aren't connected, this tool will say so — then call connect_account, don't give up). Use site_id and campground_id from search_sites.

NameTypeReqDescription
adultsintegerAdults 18-64 (default 1).
campground_idstringyesThe campground/facility resourceLocationId (from search).
categorystringMatch what you searched: 'campsite' (default), 'group', or 'accommodation' (oTENTik, cabin, yurt).
childrenintegerChildren 0-5.
end_datestringDeparture date, YYYY-MM-DD. Optional for Day Use (single day).
entry_point_idstringFor a Backcountry zone permit: the trailhead/entry point to start from (numeric id). If the area has only one, it's used automatically; if several, prepare_booking will list them and ask.
equipment_typestringThe equipment for the site (e.g. 'small tent', 'van', or an id from list_equipment_types). Use the same equipment you searched with. Defaults to a small tent. Not needed for accommodations.
itineraryarrayFor a Backcountry trip: one entry per night (a zone for a date range), in order. Requires product_id and campground_id (the facility). The trip spans the first arrival to the last departure.
product_idstringFor a Day Use booking (shuttle, parking, guided event) OR a Backcountry trip: the product id from search_day_use / search_backcountry (its productId). For Day Use, site_id is the time slot. For Backc…
seniorsintegerSeniors 65+.
site_idstringThe chosen site/slot id (from search). Omit for a Backcountry trip (use itinerary).
start_datestringArrival date, YYYY-MM-DD. Omit for Backcountry (taken from the itinerary).
youthintegerYouth 6-17.

No output schema declared.

No examples provided.

prepare_booking_url ~185

FALLBACK ONLY — do not use this for a normal booking. To book or reserve a campsite, use the prepare_booking tool instead: it completes the reservation up to the payment screen for the citizen (they only enter their card), which is the whole point of this tool. Only use prepare_booking_url if prepare_booking cannot be used — for example the citizen refuses to connect their account — because handing someone a link back to the inaccessible website is exactly the barrier this tool exists to remove. equipment_type is required: pass the matching id from list_equipment_types. This tool never books or pays.

NameTypeReqDescription
campground_idstringyes
campsite_idstringyes
end_datestringyes
equipment_typestring
party_sizeintegeryes
recreation_area_idstring
start_datestringyes

No output schema declared.

No examples provided.

resolve_dates ~209

Turn a citizen's dates into exact calendar dates, with the correct day of the week, before you search or book. ALWAYS use this when a citizen gives a date — especially a bare one like 'June 16' or 'next Friday' — and do NOT work out the year or the weekday yourself (that is error-prone for you). Give the month and day; leave year off to get the next upcoming occurrence (this runs on the citizen's machine, so it knows today's real date). Add nights for a stay to get the departure date too. Use the start_date and end_date it returns verbatim in search_sites / search_park_availability / prepare_booking.

NameTypeReqDescription
dayintegeryesArrival day of month, 1-31.
monthintegeryesArrival month, 1-12.
nightsintegerNumber of nights, to also compute the departure date.
yearintegerArrival year. Leave off for the next upcoming occurrence.

No output schema declared.

No examples provided.

search_backcountry ~127

Backcountry = multi-night wilderness trips, booked one zone per night. Call with NO query to LIST the backcountry areas. Call with an area/place in `query` PLUS dates and party size to see which zones have room each night (with accessibility surfaced). A trip is then composed one zone per night. start_date/end_date span the nights; pass accessible_only to keep only accessible zones.

NameTypeReqDescription
accessible_onlyboolean
end_datestring
party_sizeinteger
querystring
start_datestring

No output schema declared.

No examples provided.

search_day_use ~134

Day Use = timed passes booked by the day (not overnight sites): shuttles (Moraine Lake, Lake O'Hara), parking, ferries, guided events, fishing. Call with NO query (or just a place) to LIST the available Day Use products. Call with a product/place in `query` (e.g. 'Moraine Lake shuttle', 'parking') PLUS date(s) and party size to get the open time slots with spots remaining.

NameTypeReqDescription
end_datestring
party_sizeinteger
querystring
start_datestring

No output schema declared.

No examples provided.

search_park_availability ~204

Check every campground in a park at once ("anything open in Banff?") and return one consolidated list. start_date/end_date are an EXACT stay (open every night); for a flexible search over a wide range, also pass nights = desired stay length and openings anywhere in the range are returned. Then use search_sites on a campground that has openings. equipment_type takes a word or an id.

NameTypeReqDescription
accessible_onlyboolean
categorystringWhat to search: 'campsite' (regular sites, default), 'group' (group campsites), or 'accommodation' (roofed/equipped — oTENTik, cabin, yurt).
end_datestringyes
equipment_typestring
nightsinteger
party_sizeintegeryes
querystringyes
start_datestringyes
weekends_onlyboolean

No output schema declared.

No examples provided.

search_parks ~68

Find Parks Canada campgrounds by a plain-language place name (for example "Banff" or "Jasper"). Use this first; it returns matching campgrounds and their ids, which the other tools need. Canada only.

NameTypeReqDescription
countrystring
querystringyes

No output schema declared.

No examples provided.

search_sites ~277

Find open campsites in a campground for a stay, accessibility first. Use after search_parks gives you a campground id. start_date and end_date are an EXACT stay — a site must be open every night between them. For a flexible search across a wide range (e.g. "anything in June"), also pass nights = how many nights you want, and openings anywhere in the range are returned. Set accessible_only for sites Parks Canada marks accessible. equipment_type takes a word like "tent" or "RV", or an equipment id from list_equipment_types. The result states each date's weekday (correctly computed) — use that and don't work out days of the week yourself, as that is error-prone.

NameTypeReqDescription
accessible_onlyboolean
campground_idstringyes
categorystringWhat to search: 'campsite' (regular sites, default), 'group' (group campsites), or 'accommodation' (roofed/equipped — oTENTik, cabin, yurt).
end_datestringyes
equipment_typestring
nightsinteger
party_sizeintegeryes
recreation_area_idstring
start_datestringyes
weekends_onlyboolean

No output schema declared.

No examples provided.

update_account ~158

Update the citizen's OWN Parks Canada profile — phone, address, name, or language. This changes their official account record, so ONLY call it after the citizen has told you the exact change AND confirmed it. Pass only the fields to change; everything else is kept. Never change anything without the citizen's explicit go-ahead; the result shows them exactly what changed.

NameTypeReqDescription
citystring
first_namestring
languagestring
last_namestring
postal_codestring
primary_phonestring
regionstring
secondary_phonestring
street_addressstring
unitstring

No output schema declared.

No examples provided.