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
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.
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
claude mcp add jcrossman-open-state-camping -- npx -y @open-state/camping
codex mcp add jcrossman-open-state-camping -- npx -y @open-state/camping
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"jcrossman-open-state-camping": {
"type": "local",
"command": [
"npx",
"-y",
"@open-state/camping"
],
"enabled": true
}
}
} openclaw mcp add jcrossman-open-state-camping --command npx --arg -y --arg @open-state/camping
mcp_servers:
jcrossman-open-state-camping:
command: "npx"
args: ["-y", "@open-state/camping"] {
"mcpServers": {
"jcrossman-open-state-camping": {
"command": "npx",
"args": [
"-y",
"@open-state/camping"
]
}
}
} 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.
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.
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.
connect_account Connect (sign in to) your Parks Canada 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 Check your Parks Canada connection ~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 Set a cancellation 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.
| Name | Type | Req | Description |
|---|---|---|---|
| accessible_only | boolean | — | — |
| campground_id | string | yes | — |
| end_date | string | yes | — |
| equipment_type | string | — | — |
| nights | integer | — | — |
| notify_target | string | — | — |
| party_size | integer | yes | — |
| recreation_area_id | string | — | — |
| start_date | string | yes | — |
| weekends_only | boolean | — | — |
No output schema declared.
No examples provided.
debug_account_shape Diagnostics: account data 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 Delete a cancellation alert ~36
Preview deletion of a saved watch and ask the citizen to approve that exact deletion through the MCP host.
| Name | Type | Req | Description |
|---|---|---|---|
| alert_id | string | yes | — |
No output schema declared.
No examples provided.
disconnect_account Disconnect your Parks Canada 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 Show my Parks Canada 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 Parks Canada 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.
| Name | Type | Req | Description |
|---|---|---|---|
| family | string | — | Narrow 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 Get campsite 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.
| Name | Type | Req | Description |
|---|---|---|---|
| campground_id | string | yes | — |
| campsite_id | string | yes | — |
| include_photos | boolean | — | — |
| recreation_area_id | string | — | — |
No output schema declared.
No examples provided.
list_alerts List your cancellation alerts ~6
No description provided.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_equipment_types 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.
| Name | Type | Req | Description |
|---|---|---|---|
| recreation_area_id | string | — | — |
No output schema declared.
No examples provided.
list_my_reservations Show my Parks Canada 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 Prepare a campsite booking (you review and pay) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| adults | integer | — | Adults 18-64 (default 1). |
| campground_id | string | yes | The campground/facility resourceLocationId (from search). |
| category | string | — | Match what you searched: 'campsite' (default), 'group', or 'accommodation' (oTENTik, cabin, yurt). |
| children | integer | — | Children 0-5. |
| end_date | string | — | Departure date, YYYY-MM-DD. Optional for Day Use (single day). |
| entry_point_id | string | — | For 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_type | string | — | The 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. |
| itinerary | array | — | For 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_id | string | — | For 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… |
| seniors | integer | — | Seniors 65+. |
| site_id | string | — | The chosen site/slot id (from search). Omit for a Backcountry trip (use itinerary). |
| start_date | string | — | Arrival date, YYYY-MM-DD. Omit for Backcountry (taken from the itinerary). |
| youth | integer | — | Youth 6-17. |
No output schema declared.
No examples provided.
prepare_booking_url Prepare a booking link (fallback only) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| campground_id | string | yes | — |
| campsite_id | string | yes | — |
| end_date | string | yes | — |
| equipment_type | string | — | — |
| party_size | integer | yes | — |
| recreation_area_id | string | — | — |
| start_date | string | yes | — |
No output schema declared.
No examples provided.
resolve_dates Work out exact calendar 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.
| Name | Type | Req | Description |
|---|---|---|---|
| day | integer | yes | Arrival day of month, 1-31. |
| month | integer | yes | Arrival month, 1-12. |
| nights | integer | — | Number of nights, to also compute the departure date. |
| year | integer | — | Arrival year. Leave off for the next upcoming occurrence. |
No output schema declared.
No examples provided.
search_backcountry Search backcountry zones (wilderness permits) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| accessible_only | boolean | — | — |
| end_date | string | — | — |
| party_size | integer | — | — |
| query | string | — | — |
| start_date | string | — | — |
No output schema declared.
No examples provided.
search_day_use Search Day Use passes (shuttles, parking, guided events) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | — | — |
| party_size | integer | — | — |
| query | string | — | — |
| start_date | string | — | — |
No output schema declared.
No examples provided.
search_park_availability Search a whole park for 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.
| Name | Type | Req | Description |
|---|---|---|---|
| accessible_only | boolean | — | — |
| category | string | — | What to search: 'campsite' (regular sites, default), 'group' (group campsites), or 'accommodation' (roofed/equipped — oTENTik, cabin, yurt). |
| end_date | string | yes | — |
| equipment_type | string | — | — |
| nights | integer | — | — |
| party_size | integer | yes | — |
| query | string | yes | — |
| start_date | string | yes | — |
| weekends_only | boolean | — | — |
No output schema declared.
No examples provided.
search_parks Find a Parks Canada campground ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | — | — |
| query | string | yes | — |
No output schema declared.
No examples provided.
search_sites Search for open campsites ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| accessible_only | boolean | — | — |
| campground_id | string | yes | — |
| category | string | — | What to search: 'campsite' (regular sites, default), 'group' (group campsites), or 'accommodation' (roofed/equipped — oTENTik, cabin, yurt). |
| end_date | string | yes | — |
| equipment_type | string | — | — |
| nights | integer | — | — |
| party_size | integer | yes | — |
| recreation_area_id | string | — | — |
| start_date | string | yes | — |
| weekends_only | boolean | — | — |
No output schema declared.
No examples provided.
update_account Update my Parks Canada profile ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| city | string | — | — |
| first_name | string | — | — |
| language | string | — | — |
| last_name | string | — | — |
| postal_code | string | — | — |
| primary_phone | string | — | — |
| region | string | — | — |
| secondary_phone | string | — | — |
| street_address | string | — | — |
| unit | string | — | — |
No output schema declared.
No examples provided.