Skip to content

Cosmic's Camp Map

by brendoncampbell · remote · no sign-in to list tools · v1.0.0 · published by GitHub user brendoncampbell

Can I camp here, and will I have signal? Land status, signal, weather and fires in Canada and the US

Changes · 13

15 tools: 13 change things and 2 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http camp-map https://camp.cosmicotter.ca/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "start_pass_purchase" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "start_pass_purchase" says "start": a word for a change.

    What this check looks for
  • The server marks "pass_status" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "pass_status" says "status": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

15 tools

Changes things 13Claude Code: ask
  • camp_map_passWhat the Camp Map Pass adds over the free map (offline maps, the full scouting list, work-week picks, the full hunting view, more for AI assistants), its prices (CA$55 a year or CA…Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    What the Camp Map Pass adds over the free map (offline maps, the full scouting list, work-week picks, the full hunting view, more for AI assistants), its prices (CA$55 a year or CA$5 a month), direct purchase links, and how the user gives the pass to an assistant. Also says whether the current request carries a valid pass. Covers offline use, more spots, work-week picks, hunting details and upgrading.

    Annotations the server declares

    • title: Camp Map Pass: what it adds and how to buy it
    • readOnlyHint: true
    • openWorldHint: true
  • check_spotLand status at a point (Crown/public land, park, private, reserve…) with the camping rule that applies, special areas (parks, pass zones, tree farm licences), estimated mobile sign…Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Land status at a point (Crown/public land, park, private, reserve…) with the camping rule that applies, special areas (parks, pass zones, tree farm licences), estimated mobile signal per carrier, active logging, the nearest road and its surface, and where to check fire bans. Hunting details are included only with a Camp Map Pass.

    Annotations the server declares

    • title: Can I camp here, and will I have signal?
    • readOnlyHint: true
    • openWorldHint: true
  • confirm_spotStores what the user found at a camping spot (outcome: camped, signal_worked, signal_failed, road_as_described, road_worse, closed, no_camping_sign), read by the next scouting-list…Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "store": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Stores what the user found at a camping spot (outcome: camped, signal_worked, signal_failed, road_as_described, road_worse, closed, no_camping_sign), read by the next scouting-list build. Needs the user's Camp Map Pass key; shares the daily cap of 10 stored reports.

    Annotations the server declares

    • title: Confirm what a spot was like (Camp Map Pass)
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • hunting_spotsCamp Map Pass only (CA$55 a year or CA$5 a month).Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Camp Map Pass only (CA$55 a year or CA$5 a month). Access points near 5-10 year old cut blocks and winter ranges, with the hunting unit and trail-camera signal. Seasons and bag limits are not included; the official regulations are the source for those.

    Annotations the server declares

    • title: Hunting scouting picks (Camp Map Pass)
    • readOnlyHint: true
    • openWorldHint: true
  • pass_statusChecks whether the payment for a purchase reference has completed.Reads text others write1 finding

    Why it is in this group

    • The name "pass_status" says "status": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.

    Findings

    • Warn

      The server marks "pass_status" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "pass_status" says "status": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Checks whether the payment for a purchase reference has completed. Returns pending (with a retry interval) or paid with the pass key, which is sent as "Authorization: Bearer <key>" from then on, plus a link that activates the pass in the user's own map.

    Annotations the server declares

    • title: Collect the pass key after the user has paid
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • plan_tripOne call that answers "can I camp at this spot this weekend?": land status and the camping rule, signal per carrier, the 3-day forecast with workable days, wildfires within 60 km, …Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One call that answers "can I camp at this spot this weekend?": land status and the camping rule, signal per carrier, the 3-day forecast with workable days, wildfires within 60 km, road reports within 10 km, and the best remote spots with signal nearby (top 3 free, 5 with a pass), with the important heads_up lines listed first.

    Annotations the server declares

    • title: Everything for one destination in one call
    • readOnlyHint: true
    • openWorldHint: true
  • report_conditionsStores a one-tap field report at a point, the same kind the map's users leave (kinds: road-good, road-rough, road-4x4, washout, gate-open, gate-locked, spot-ok, spot-closed, no-cam…Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "store": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Stores a one-tap field report at a point, the same kind the map's users leave (kinds: road-good, road-rough, road-4x4, washout, gate-open, gate-locked, spot-ok, spot-closed, no-camping, hauling, turnaround, no-turnaround, rig-ok, low-clearance; vehicle: car, awd, 4x4, van, rv, unk). Needs the user's Camp Map Pass key; at most 10 stored reports a day per key. No free text.

    Annotations the server declares

    • title: Store a field report (Camp Map Pass)
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • road_reportsField reports from map users within a radius in the last 120 days: road fine for a car, rough, 4x4 only, washout, gate open or locked, log hauling, turnaround room, camped here, cl…Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Field reports from map users within a radius in the last 120 days: road fine for a car, rough, 4x4 only, washout, gate open or locked, log hauling, turnaround room, camped here, closed, no-camping sign.

    Annotations the server declares

    • title: Recent road and camp reports
    • readOnlyHint: true
    • openWorldHint: true
  • start_pass_purchaseBegin a Camp Map Pass purchase without leaving the conversation: returns checkout links (CA$55 a year or CA$5 a month, Stripe, no account) tagged with a purchase reference.Reads text others write1 finding

    Why it is in this group

    • The name "start_pass_purchase" says "start": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.

    Findings

    • Warn

      The server marks "start_pass_purchase" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "start_pass_purchase" says "start": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Begin a Camp Map Pass purchase without leaving the conversation: returns checkout links (CA$55 a year or CA$5 a month, Stripe, no account) tagged with a purchase reference. The user pays in their browser; the reference identifies that payment afterwards.

    Annotations the server declares

    • title: Start buying the Camp Map Pass in this conversation
    • readOnlyHint: true
    • openWorldHint: true
  • trip_feedbackStores the user's answers after a trip planned with plan_trip (its followup token): camped there or not, whether the signal worked (worked, weak, none) and whether the road was as …Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "store": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Stores the user's answers after a trip planned with plan_trip (its followup token): camped there or not, whether the signal worked (worked, weak, none) and whether the road was as described (as_described, worse, better). Stored beside the forecast that was given. Needs the user's Camp Map Pass key.

    Annotations the server declares

    • title: Answer three questions after a trip (Camp Map Pass)
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • weatherCurrent conditions and a 3-day outlook (min/max °C, rain mm, wind km/h) from Environment Canada in Canada and the US National Weather Service in the US, MET Norway as a fallback.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Current conditions and a 3-day outlook (min/max °C, rain mm, wind km/h) from Environment Canada in Canada and the US National Weather Service in the US, MET Norway as a fallback.

    Annotations the server declares

    • title: 3-day weather at a point
    • readOnlyHint: true
    • openWorldHint: true
  • wildfiresActive wildfire hotspots, perimeters and incidents within a radius, nearest first, from CWFIS (Canada) and NIFC (US).Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Active wildfire hotspots, perimeters and incidents within a radius, nearest first, from CWFIS (Canada) and NIFC (US).

    Annotations the server declares

    • title: Wildfires near a point
    • readOnlyHint: true
    • openWorldHint: true
  • work_weekCamp Map Pass only (CA$55 a year or CA$5 a month).Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Camp Map Pass only (CA$55 a year or CA$5 a month). Ranks nearby spots by signal for the carrier, open sky for Starlink and flat ground, then adds each spot's 3-day forecast and marks workable days (under 2 mm rain, wind under 35 km/h).

    Annotations the server declares

    • title: Best spots to work from this week (Camp Map Pass)
    • readOnlyHint: true
    • openWorldHint: true
Only reads 2Claude Code: allow
  • find_spotsRanked camping spots near a point that are remote and still have signal for the carrier.Reads text others writeNo findings

    Why it is in this group

    • The name "find_spots" says "find": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Ranked camping spots near a point that are remote and still have signal for the carrier. Free: the top 3, with how many more the Camp Map Pass adds. With the pass: up to `limit`. access=rental keeps spots on pavement or under 500 m of unpaved road (most rental agreements exclude unpaved roads).

    Annotations the server declares

    • title: Remote camping spots with signal near a place
    • readOnlyHint: true
    • openWorldHint: true
  • list_regionsThe provinces, territories and states the Camp Map covers, with their bounding boxes, when their data was built and their offline packs.Reads text others writeNo findings

    Why it is in this group

    • The name "list_regions" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    The provinces, territories and states the Camp Map covers, with their bounding boxes, when their data was built and their offline packs.

    Annotations the server declares

    • title: Areas the map covers
    • readOnlyHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or outbound.

Reads private data0
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write15
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http camp-map https://camp.cosmicotter.ca/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__camp-map__find_spots",
      "mcp__camp-map__list_regions"
    ],
    "ask": [
      "mcp__camp-map__check_spot",
      "mcp__camp-map__plan_trip",
      "mcp__camp-map__work_week",
      "mcp__camp-map__hunting_spots",
      "mcp__camp-map__weather",
      "mcp__camp-map__wildfires",
      "mcp__camp-map__road_reports",
      "mcp__camp-map__camp_map_pass",
      "mcp__camp-map__start_pass_purchase",
      "mcp__camp-map__pass_status",
      "mcp__camp-map__report_conditions",
      "mcp__camp-map__confirm_spot",
      "mcp__camp-map__trip_feedback"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as camp-map. Review it before you use it.

Capability tags behind 15 rules
  • mcp__camp-map__check_spot untrusted-input
  • mcp__camp-map__find_spots untrusted-input
  • mcp__camp-map__plan_trip untrusted-input
  • mcp__camp-map__work_week untrusted-input
  • mcp__camp-map__hunting_spots untrusted-input
  • mcp__camp-map__weather untrusted-input
  • mcp__camp-map__wildfires untrusted-input
  • mcp__camp-map__road_reports untrusted-input
  • mcp__camp-map__camp_map_pass untrusted-input
  • mcp__camp-map__start_pass_purchase untrusted-input
  • mcp__camp-map__pass_status untrusted-input
  • mcp__camp-map__report_conditions untrusted-input
  • mcp__camp-map__confirm_spot untrusted-input
  • mcp__camp-map__trip_feedback untrusted-input
  • mcp__camp-map__list_regions untrusted-input