Skip to main content
Glama

PermitSnag

Server Details

US backcountry permit and campground rules, dates and recorded openings. Read-only, no sign-in.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP ยท MCP 2025-11-25
URL

TDQS

Score is being calculated.

Available Tools

6 tools
check_availabilityCheck recorded openings for a permit or campground
Read-onlyIdempotent
Inspect

Shows what PermitSnag has recorded for one US backcountry permit or one campground over a range of up to 62 days. Answers come from PermitSnag's own stored checks of the booking site, not a live look, and nothing is booked. Each date has one state: observed_opening (an opening seen recently, with when it was last seen), observed_no_match (a recent check that saw no opening, with its time), stale (the newest check is older than staleAfterHours, with its time), unknown (no usable check of that date), unreleased (not on sale yet, by the agency's release rule or the booking site), off_season (outside the agency's published season), closed (closed by the agency) or unsupported (PermitSnag does not check this place). Neither stale nor unknown means sold out. Permit dates are shown as they stood 15 minutes ago. For a permit split into zones or entry points, our checks may cover only some of them, so a date with no opening seen comes back as unknown, never as observed_no_match.

ParametersJSON Schema
NameRequiredDescriptionDefault
permitNoThe permit id or slug from search_permits. Give this or campground, not both.
endDateNoLast date, YYYY-MM-DD, inclusive. Defaults to startDate. The range covers at most 62 days, counting both ends.
startDateYesFirst date, YYYY-MM-DD, read as the place's own local calendar day (for a campground, the night you arrive).
campgroundNoThe campground id from search_campgrounds. Give this or permit, not both.

Output Schema

ParametersJSON Schema
NameRequiredDescription
daysNo
pastNoPresent only when every asked date has passed.
alertNo
datesNo
depthNo
foundNoPresent, and false, only when nothing matched.
sourceNo
subjectNo
checkedAtNo
freshnessNo
scanRouteNoHow PermitSnag reaches this permit for cancellation openings: direct, through a zone or starting area, through its entry points, or none.
partialScopeNoPermits only: true when our checks may cover only some zones or entry points, so no date is called "no opening".
staleAfterHoursNoHours. A check older than this is never reported as observed; it is reported as stale (or as unknown, when partialScope hides a check that saw no opening).
publicDelayMinutesNoPermits only: dates are described as they stood this many minutes ago.
get_campground_detailsUS campground details
Read-onlyIdempotent
Inspect

Get the details of one US campground: its booking system, how far ahead sites go on sale, site count and types, stay limits, season and closures. Use it after search_campgrounds, or when the person names a specific campground. Says whether PermitSnag can send an alert when a site opens, and whether our checks count individual sites or only the campground as a whole.

ParametersJSON Schema
NameRequiredDescriptionDefault
campgroundYesThe campground id from search_campgrounds.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
alertNo
depthNosite_level: our checks count individual sites. campground_level: the booking system reports the campground as a whole.
foundNoPresent, and false, only when nothing matched.
stateNo
seasonNoThe agency's season or closure state, with agency words in quoted fields.
pageUrlNo
providerNo
amenitiesNo
checkedAtNo
siteTypesNo
bookingUrlNo
priceRangeNo
totalSitesNo
descriptionNo
releaseRuleNoWhen sites go on sale, from the listing itself.
bookingSystemNo
maxStayNightsNo
reservationWindowDaysNo
get_permit_detailsUS backcountry permit rules and dates
Read-onlyIdempotent
Inspect

Get the rules for one US backcountry or wilderness permit: how it is issued (reservation, lottery or in person), its season, lottery and release dates, closures, group size limit, and the official agency page. Use it after search_permits, or when the person names a specific permit. Every date comes from an agency source; a date we cannot source is left out. Says whether PermitSnag can send an alert when the permit opens.

ParametersJSON Schema
NameRequiredDescriptionDefault
permitYesThe permit id or slug from search_permits, or its permitsnag.com page URL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
parkNo
slugNo
alertNo
foundNoPresent, and false, only when nothing matched.
seasonNoThe agency's season or closure state, with agency words in quoted fields.
pageUrlNo
usStateNo
issuanceNoHow the permit is issued, in plain words.
checkedAtNoWhen this answer was composed, ISO 8601.
scanRouteNoHow PermitSnag reaches this permit for cancellation openings: direct, through a zone or starting area, through its entry points, or none.
agencyDatesNoUpcoming dates from an agency source (lottery opens, closes, results, claims).
descriptionNo
officialUrlNoThe agency's own permit page.
releaseRulesNoThe agency schedule for when dates go on sale.
groupSizeLimitNo
search_campgroundsSearch US campgrounds
Read-onlyIdempotent
Inspect

Find campgrounds in the US by name, area or state, across Recreation.gov and state park booking systems. Use this when someone wants a place to camp or asks about a specific campground. Returns up to 10 campgrounds with their PermitSnag page, their booking system, and whether PermitSnag can send an alert when a site opens. It does not check dates; use check_availability for that.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many results, 1 to 10. Default 5.
queryYesA campground name or area, like "Upper Pines" or "Big Sur".
stateNoOptional two-letter US state code to narrow results, like CA.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
stateYes
resultsYes
search_permitsSearch US backcountry and wilderness permits
Read-onlyIdempotent
Inspect

Find US backcountry and wilderness permits by name, park, trail or area, for hikes, climbs, river trips and overnight trips in national parks, national forests and state parks. Use this when someone asks how to get a permit or which permit a trip needs. Returns up to 10 permits with their PermitSnag page and whether PermitSnag scans them for cancellation openings. It does not check dates; use check_availability for that, and get_permit_details for the rules of one permit.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many results, 1 to 10. Default 5.
queryYesA permit, trail, park or area name, like "Mount Whitney" or "Enchantments".
stateNoOptional two-letter US state code to narrow results, like CA.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYesThe search as asked.
stateYesThe two-letter state filter, or null.
resultsYes

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedcheck_availability5 fields changed
      • changedInput schema / properties / endDate / description
        Previous value: -"Last date, YYYY-MM-DD, inclusive. Defaults to startDate. At most 62 days after startDate."New value: +"Last date, YYYY-MM-DD, inclusive. Defaults to startDate. The range covers at most 62 days, counting both ends."
      • changedOutput schema / description
        Previous value: -"PermitSnag's recorded checks of one permit or campground on the asked dates, each with its age. Not a live look at the booking site. Or found: false, or past: true."New value: +"PermitSnag's recorded checks of one permit or campground on the asked dates; an observed or stale date carries the time and age of its check. Not a live look at the booking site. Or found: false, or past: true."
      • changedOutput schema / properties / days / items / properties / observedAt / description
        Previous value: -"When the check behind an observed or stale state was made, ISO 8601."New value: +"The time of the check behind an observed or stale state (for an opening, when it was last seen), ISO 8601. For a permit, never later than publicDelayMinutes ago."
      • changedOutput schema / properties / days / items / properties / state / description
        Previous value: -"What PermitSnag recorded for this date. unknown is never sold out."New value: +"What PermitSnag recorded for this date. Neither stale nor unknown means sold out."
      • changedOutput schema / properties / staleAfterHours / description
        Previous value: -"A check older than this is reported as stale."New value: +"Hours. A check older than this is never reported as observed; it is reported as stale (or as unknown, when partialScope hides a check that saw no opening)."
  2. 1 tool update
    • Changedget_booking_link4 fields changed
      • changedInput schema / properties / endDate / description
        Previous value: -"Optional last date, YYYY-MM-DD."New value: +"Optional last date, YYYY-MM-DD. Sent in the link for a few booking sites; the site may ignore it."
      • changedInput schema / properties / partySize / description
        Previous value: -"Optional number of people."New value: +"Optional number of people. Sent in the link for some permit booking sites; the site may ignore it."
      • changedInput schema / properties / startDate / description
        Previous value: -"Optional first date, YYYY-MM-DD."New value: +"Optional first date, YYYY-MM-DD. Sent in the link for some booking sites; the site may ignore it."
      • changedOutput schema / description
        Previous value: -"The official booking page for a permit or campground, or found: false. Nothing is booked."New value: +"A link to the booking page, the agency's page or the PermitSnag page for a permit or campground, or found: false. Nothing is booked."
  3. 6 tool updates
    • Changedcheck_availability1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "anyOf": [
        +    {
        +      "required": [
        +        "subject",
        +        "depth",
        +        "dates",
        +        "staleAfterHours",
        +        "freshness",
        +        "days",
        +        "alert",
        +        "source",
        +        "checkedAt"
        +      ]
        +    },
        +    {
        +      "required": [
        +        "found"
        +      ]
        +    },
        +    {
        +      "required": [
        +        "past"
        +      ]
        +    }
        +  ],
        +  "description": "PermitSnag's recorded checks of one permit or campground on the asked dates, each with its age. Not a live look at the booking site. Or found: false, or past: true.",
        +  "properties": {
        +    "alert": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "available": {
        +          "description": "True only when PermitSnag can send an alert for this place right now.",
        +          "type": "boolean"
        +        },
        +        "pageUrl": {
        +          "description": "The PermitSnag page where an alert is set up, or where to read what to do instead.",
        +          "type": "string"
        +        },
        +        "reason": {
        +          "description": "Why an alert is or is not on offer.",
        +          "enum": [
        +            "eligible",
        +            "lottery_period",
        +            "out_of_season",
        +            "closed",
        +            "no_quota_now",
        +            "lottery_draw_only",
        +            "not_sold_online",
        +            "not_tracked"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "available",
        +        "reason",
        +        "pageUrl"
        +      ],
        +      "type": "object"
        +    },
        +    "checkedAt": {
        +      "type": "string"
        +    },
        +    "dates": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "calendar": {
        +          "const": "local_day"
        +        },
        +        "end": {
        +          "type": "string"
        +        },
        +        "start": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "start",
        +        "end",
        +        "calendar"
        +      ],
        +      "type": "object"
        +    },
        +    "days": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "ageMinutes": {
        +            "description": "Minutes since that check.",
        +            "type": "integer"
        +          },
        +          "date": {
        +            "description": "YYYY-MM-DD, the place's own local calendar day.",
        +            "type": "string"
        +          },
        +          "lastSeenState": {
        +            "description": "For a stale date: what that old check saw.",
        +            "enum": [
        +              "observed_opening",
        +              "observed_no_match"
        +            ]
        +          },
        +          "observedAt": {
        +            "description": "When the check behind an observed or stale state was made, ISO 8601.",
        +            "type": "string"
        +          },
        +          "openSites": {
        +            "description": "Campgrounds at site level only: sites seen open.",
        +            "type": "integer"
        +          },
        +          "releaseKind": {
        +            "enum": [
        +              "lottery",
        +              "reservations",
        +              null
        +            ]
        +          },
        +          "releasesOn": {
        +            "description": "For an unreleased date: the sourced day it goes on sale, when known.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "state": {
        +            "description": "What PermitSnag recorded for this date. unknown is never sold out.",
        +            "enum": [
        +              "observed_opening",
        +              "observed_no_match",
        +              "stale",
        +              "unknown",
        +              "unreleased",
        +              "off_season",
        +              "closed",
        +              "unsupported"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "date",
        +          "state"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 62,
        +      "type": "array"
        +    },
        +    "depth": {
        +      "enum": [
        +        "permit_level",
        +        "site_level",
        +        "campground_level"
        +      ]
        +    },
        +    "found": {
        +      "const": false,
        +      "description": "Present, and false, only when nothing matched."
        +    },
        +    "freshness": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "band": {
        +          "enum": [
        +            "none",
        +            "recent",
        +            "stale"
        +          ]
        +        },
        +        "newestObservedAt": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "oldestObservedAt": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "band",
        +        "newestObservedAt",
        +        "oldestObservedAt"
        +      ],
        +      "type": "object"
        +    },
        +    "partialScope": {
        +      "description": "Permits only: true when our checks may cover only some zones or entry points, so no date is called \"no opening\".",
        +      "type": "boolean"
        +    },
        +    "past": {
        +      "const": true,
        +      "description": "Present only when every asked date has passed."
        +    },
        +    "publicDelayMinutes": {
        +      "description": "Permits only: dates are described as they stood this many minutes ago.",
        +      "type": "number"
        +    },
        +    "scanRoute": {
        +      "description": "How PermitSnag reaches this permit for cancellation openings: direct, through a zone or starting area, through its entry points, or none.",
        +      "enum": [
        +        "direct",
        +        "via_zone",
        +        "via_children",
        +        "none",
        +        null
        +      ]
        +    },
        +    "source": {
        +      "const": "permitsnag_recorded_checks"
        +    },
        +    "staleAfterHours": {
        +      "description": "A check older than this is reported as stale.",
        +      "type": "number"
        +    },
        +    "subject": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "id": {
        +          "type": "string"
        +        },
        +        "kind": {
        +          "enum": [
        +            "permit",
        +            "campground"
        +          ]
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "pageUrl": {
        +          "type": "string"
        +        },
        +        "slug": {
        +          "description": "Permits only.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "kind",
        +        "id",
        +        "name",
        +        "pageUrl"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_booking_link1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "anyOf": [
        +    {
        +      "required": [
        +        "subject",
        +        "url",
        +        "destination",
        +        "datePrefill",
        +        "executesNothing"
        +      ]
        +    },
        +    {
        +      "required": [
        +        "found"
        +      ]
        +    }
        +  ],
        +  "description": "The official booking page for a permit or campground, or found: false. Nothing is booked.",
        +  "properties": {
        +    "datePrefill": {
        +      "description": "Whether the asked date reaches the booking page.",
        +      "enum": [
        +        "applied",
        +        "ignored",
        +        "unknown"
        +      ]
        +    },
        +    "destination": {
        +      "enum": [
        +        "booking_page",
        +        "official_page",
        +        "permitsnag_page"
        +      ]
        +    },
        +    "executesNothing": {
        +      "const": true,
        +      "description": "This tool only returns a link."
        +    },
        +    "found": {
        +      "const": false,
        +      "description": "Present, and false, only when nothing matched."
        +    },
        +    "providerHomeUrl": {
        +      "description": "Permits only: the booking site's front page, when that is all we can name.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "subject": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "id": {
        +          "type": "string"
        +        },
        +        "kind": {
        +          "enum": [
        +            "permit",
        +            "campground"
        +          ]
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "pageUrl": {
        +          "type": "string"
        +        },
        +        "slug": {
        +          "description": "Permits only.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "kind",
        +        "id",
        +        "name",
        +        "pageUrl"
        +      ],
        +      "type": "object"
        +    },
        +    "url": {
        +      "description": "The page to open.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_campground_details1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "anyOf": [
        +    {
        +      "required": [
        +        "id",
        +        "name",
        +        "state",
        +        "bookingSystem",
        +        "provider",
        +        "depth",
        +        "pageUrl",
        +        "bookingUrl",
        +        "totalSites",
        +        "siteTypes",
        +        "amenities",
        +        "maxStayNights",
        +        "reservationWindowDays",
        +        "priceRange",
        +        "releaseRule",
        +        "alert",
        +        "season",
        +        "description",
        +        "checkedAt"
        +      ]
        +    },
        +    {
        +      "required": [
        +        "found"
        +      ]
        +    }
        +  ],
        +  "description": "The details of one US campground, or found: false.",
        +  "properties": {
        +    "alert": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "available": {
        +          "description": "True only when PermitSnag can send an alert for this place right now.",
        +          "type": "boolean"
        +        },
        +        "pageUrl": {
        +          "description": "The PermitSnag page where an alert is set up, or where to read what to do instead.",
        +          "type": "string"
        +        },
        +        "reason": {
        +          "description": "Why an alert is or is not on offer.",
        +          "enum": [
        +            "eligible",
        +            "lottery_period",
        +            "out_of_season",
        +            "closed",
        +            "no_quota_now",
        +            "lottery_draw_only",
        +            "not_sold_online",
        +            "not_tracked"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "available",
        +        "reason",
        +        "pageUrl"
        +      ],
        +      "type": "object"
        +    },
        +    "amenities": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "maxItems": 8,
        +      "type": "array"
        +    },
        +    "bookingSystem": {
        +      "type": "string"
        +    },
        +    "bookingUrl": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "checkedAt": {
        +      "type": "string"
        +    },
        +    "depth": {
        +      "description": "site_level: our checks count individual sites. campground_level: the booking system reports the campground as a whole.",
        +      "enum": [
        +        "site_level",
        +        "campground_level"
        +      ]
        +    },
        +    "description": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "found": {
        +      "const": false,
        +      "description": "Present, and false, only when nothing matched."
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "maxStayNights": {
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "pageUrl": {
        +      "type": "string"
        +    },
        +    "priceRange": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "max": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "min": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "min",
        +        "max"
        +      ],
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "provider": {
        +      "type": "string"
        +    },
        +    "releaseRule": {
        +      "additionalProperties": false,
        +      "description": "When sites go on sale, from the listing itself.",
        +      "properties": {
        +        "agencyQuote": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "daysAhead": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "kind": {
        +          "type": "string"
        +        },
        +        "monthsAhead": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "readAt": {
        +          "type": "string"
        +        },
        +        "sourceUrl": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "kind",
        +        "monthsAhead",
        +        "daysAhead",
        +        "sourceUrl",
        +        "agencyQuote",
        +        "readAt"
        +      ],
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "reservationWindowDays": {
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "season": {
        +      "additionalProperties": true,
        +      "description": "The agency's season or closure state, with agency words in quoted fields.",
        +      "properties": {
        +        "agency": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "agencyQuote": {
        +          "description": "The agency's own words, capped.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "closedParts": {
        +          "description": "Named parts that are closed while the rest stays open.",
        +          "items": {
        +            "additionalProperties": true,
        +            "properties": {
        +              "agencyQuote": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "name": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "reopensOn": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "since": {
        +                "type": "string"
        +              },
        +              "url": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "maxItems": 5,
        +          "type": "array"
        +        },
        +        "closesOn": {
        +          "description": "YYYY-MM-DD the agency says the season closes.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "closure": {
        +          "additionalProperties": true,
        +          "description": "A closure of the whole place, when the agency posted one.",
        +          "properties": {
        +            "agency": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "incident": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "readAt": {
        +              "type": "string"
        +            },
        +            "reopensOn": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "since": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "url": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "offer": {
        +          "description": "What the page offers in this season.",
        +          "type": "string"
        +        },
        +        "opensOn": {
        +          "description": "YYYY-MM-DD the agency says the season opens.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "sourceUrl": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "state": {
        +          "description": "The season state code, or null when nothing is published.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "offer",
        +        "state"
        +      ],
        +      "type": "object"
        +    },
        +    "siteTypes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "maxItems": 6,
        +      "type": "array"
        +    },
        +    "state": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "totalSites": {
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_permit_details1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "anyOf": [
        +    {
        +      "required": [
        +        "id",
        +        "slug",
        +        "name",
        +        "park",
        +        "usState",
        +        "pageUrl",
        +        "officialUrl",
        +        "issuance",
        +        "scanRoute",
        +        "alert",
        +        "season",
        +        "agencyDates",
        +        "releaseRules",
        +        "groupSizeLimit",
        +        "description",
        +        "checkedAt"
        +      ]
        +    },
        +    {
        +      "required": [
        +        "found"
        +      ]
        +    }
        +  ],
        +  "description": "The rules and sourced dates of one US backcountry or wilderness permit, or found: false.",
        +  "properties": {
        +    "agencyDates": {
        +      "description": "Upcoming dates from an agency source (lottery opens, closes, results, claims).",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "agencyQuote": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "date": {
        +            "description": "YYYY-MM-DD.",
        +            "type": "string"
        +          },
        +          "sourceUrl": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "type": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "date",
        +          "sourceUrl",
        +          "agencyQuote"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 8,
        +      "type": "array"
        +    },
        +    "alert": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "available": {
        +          "description": "True only when PermitSnag can send an alert for this place right now.",
        +          "type": "boolean"
        +        },
        +        "pageUrl": {
        +          "description": "The PermitSnag page where an alert is set up, or where to read what to do instead.",
        +          "type": "string"
        +        },
        +        "reason": {
        +          "description": "Why an alert is or is not on offer.",
        +          "enum": [
        +            "eligible",
        +            "lottery_period",
        +            "out_of_season",
        +            "closed",
        +            "no_quota_now",
        +            "lottery_draw_only",
        +            "not_sold_online",
        +            "not_tracked"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "available",
        +        "reason",
        +        "pageUrl"
        +      ],
        +      "type": "object"
        +    },
        +    "checkedAt": {
        +      "description": "When this answer was composed, ISO 8601.",
        +      "type": "string"
        +    },
        +    "description": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "found": {
        +      "const": false,
        +      "description": "Present, and false, only when nothing matched."
        +    },
        +    "groupSizeLimit": {
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "issuance": {
        +      "description": "How the permit is issued, in plain words.",
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "officialUrl": {
        +      "description": "The agency's own permit page.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "pageUrl": {
        +      "type": "string"
        +    },
        +    "park": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "releaseRules": {
        +      "description": "The agency schedule for when dates go on sale.",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "agencyQuote": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "kind": {
        +            "type": "string"
        +          },
        +          "sourceUrl": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "kind",
        +          "sourceUrl",
        +          "agencyQuote"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 4,
        +      "type": "array"
        +    },
        +    "scanRoute": {
        +      "description": "How PermitSnag reaches this permit for cancellation openings: direct, through a zone or starting area, through its entry points, or none.",
        +      "enum": [
        +        "direct",
        +        "via_zone",
        +        "via_children",
        +        "none",
        +        null
        +      ]
        +    },
        +    "season": {
        +      "additionalProperties": true,
        +      "description": "The agency's season or closure state, with agency words in quoted fields.",
        +      "properties": {
        +        "agency": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "agencyQuote": {
        +          "description": "The agency's own words, capped.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "closedParts": {
        +          "description": "Named parts that are closed while the rest stays open.",
        +          "items": {
        +            "additionalProperties": true,
        +            "properties": {
        +              "agencyQuote": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "name": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "reopensOn": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "since": {
        +                "type": "string"
        +              },
        +              "url": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "maxItems": 5,
        +          "type": "array"
        +        },
        +        "closesOn": {
        +          "description": "YYYY-MM-DD the agency says the season closes.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "closure": {
        +          "additionalProperties": true,
        +          "description": "A closure of the whole place, when the agency posted one.",
        +          "properties": {
        +            "agency": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "incident": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "readAt": {
        +              "type": "string"
        +            },
        +            "reopensOn": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "since": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "url": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "offer": {
        +          "description": "What the page offers in this season.",
        +          "type": "string"
        +        },
        +        "opensOn": {
        +          "description": "YYYY-MM-DD the agency says the season opens.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "sourceUrl": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "state": {
        +          "description": "The season state code, or null when nothing is published.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "offer",
        +        "state"
        +      ],
        +      "type": "object"
        +    },
        +    "slug": {
        +      "type": "string"
        +    },
        +    "usState": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsearch_campgrounds1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "description": "US campgrounds that match the search.",
        +  "properties": {
        +    "query": {
        +      "type": "string"
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "bookingSystem": {
        +            "type": "string"
        +          },
        +          "depth": {
        +            "description": "site_level: our checks count individual sites. campground_level: the booking system reports the campground as a whole.",
        +            "enum": [
        +              "site_level",
        +              "campground_level"
        +            ]
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "pageUrl": {
        +            "type": "string"
        +          },
        +          "scannable": {
        +            "description": "True when PermitSnag checks this campground for openings. Whether an alert is on offer today is in get_campground_details.",
        +            "type": "boolean"
        +          },
        +          "state": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "state",
        +          "bookingSystem",
        +          "depth",
        +          "pageUrl",
        +          "scannable"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 10,
        +      "type": "array"
        +    },
        +    "state": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "query",
        +    "state",
        +    "results"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_permits1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "description": "US backcountry and wilderness permits that match the search.",
        +  "properties": {
        +    "query": {
        +      "description": "The search as asked.",
        +      "type": "string"
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "pageUrl": {
        +            "description": "The permit page on permitsnag.com.",
        +            "type": "string"
        +          },
        +          "park": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "scanRoute": {
        +            "description": "How PermitSnag reaches this permit for cancellation openings: direct, through a zone or starting area, through its entry points, or none.",
        +            "enum": [
        +              "direct",
        +              "via_zone",
        +              "via_children",
        +              "none",
        +              null
        +            ]
        +          },
        +          "scannable": {
        +            "description": "True when PermitSnag scans this permit for cancellation openings. Whether an alert is on offer today is in get_permit_details.",
        +            "type": "boolean"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "usState": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "slug",
        +          "name",
        +          "park",
        +          "usState",
        +          "pageUrl",
        +          "scanRoute",
        +          "scannable"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 10,
        +      "type": "array"
        +    },
        +    "state": {
        +      "description": "The two-letter state filter, or null.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "query",
        +    "state",
        +    "results"
        +  ],
        +  "type": "object"
        +}
  4. 6 tool updates
    • First observedcheck_availability
    • First observedget_booking_link
    • First observedget_campground_details
    • First observedget_permit_details
    • First observedsearch_campgrounds
    • First observedsearch_permits

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources