Skip to main content
Glama

US backcountry permit rules and dates

get_permit_details
Read-onlyIdempotent

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.

Input Schema

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

Output Schema

NameRequiredDescriptionDefault
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

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema 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"
      +}
  2. First observed

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's added value is provenance and caveats: 'Every date comes from an agency source; a date we cannot source is left out' tells the agent that missing dates are intentional, not a failure. It also discloses that the tool reports whether PermitSnag can send an opening alert, which is behavior an agent could not infer from annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what is retrieved, then routing, then data-quality caveats. The middle enumeration of fields is dense but slightly list-like; still, every clause carries information an agent can act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation here. The description covers routing, data provenance, and the alert-capability signal, which is complete for a single-parameter read tool; nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter already documents accepted forms (id, slug, permitsnag.com URL). The description only hints that a user-named permit is acceptable, which is marginally additive but largely restates schema capability, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the rules for one US backcountry or wilderness permit') and then enumerates the exact facets returned: issuance method, season, lottery/release dates, closures, group size, agency page. This is clearly distinguishable from siblings like search_permits or check_availability without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to call it: 'Use it after search_permits, or when the person names a specific permit.' That names both the sibling it follows and the natural-language trigger condition, leaving no routing ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources