Skip to main content
Glama

Get Mountain Pass Conditions

wsdot_get_mountain_passes
Read-only

Returns current road conditions for all Washington State mountain passes: status, weather, road condition, traction laws, temperature, and elevation. Includes all 16 passes (Snoqualmie, Stevens, White, Blewett, Cayuse, etc.). Use for "is the pass open?", traction law status, or winter driving planning.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
noticeNoOptional notice when no pass data is available — e.g. API temporarily unavailable. Absent on normal results.
passesNoAll WA mountain pass conditions.
totalCountNoTotal number of passes returned.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed6 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "passes",
      +      "totalCount"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present when the call failed. Absent on success.",
      +  "properties": {
      +    "code": {
      +      "description": "JSON-RPC error code for this failure.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "description": "Machine-readable failure mode. Declared by this tool: `api_unavailable`: WSDOT Traffic API is unreachable or returns a non-2xx response after retries. `invalid_access_code`: WSDOT rejected the request because WSDOT_ACCESS_CODE is missing, invalid, or not registered. Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "api_unavailable",
      +            "invalid_access_code"
      +          ],
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "passes",
      -  "totalCount"
      -]
  2. Changed11 schema fields changed
    • changedOutput schema / properties / passes / items / properties / dateUpdated / description
      Previous value: -"Timestamp of the last condition update."New value: +"Timestamp of the last condition update (ISO 8601)."
    • changedOutput schema / properties / passes / items / properties / restrictionOne / description
      Previous value: -"Primary travel restriction, if any."New value: +"Primary travel/traction restriction (typically one direction of travel)."
    • removedOutput schema / properties / passes / items / properties / restrictionOne / properties / comment
      Removed value: -{
      -  "description": "Restriction description (e.g. \"Traction Tires Required\").",
      -  "type": "string"
      -}
    • addedOutput schema / properties / passes / items / properties / restrictionOne / properties / text
      Added value: +{
      +  "description": "Restriction / traction-law text (e.g. \"Traction Tires Required, Chains Required (Except All Wheel Drive)\"). Reads \"No current information available\" or \"No restrictions\" when nothing is in effect.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / passes / items / properties / restrictionOne / properties / travelDirection
      Added value: +{
      +  "description": "Direction this restriction applies to (e.g. \"Northbound\", \"Eastbound\", \"Both directions\").",
      +  "type": "string"
      +}
    • removedOutput schema / properties / passes / items / properties / restrictionOne / properties / type
      Removed value: -{
      -  "description": "Restriction type code.",
      -  "type": "string"
      -}
    • changedOutput schema / properties / passes / items / properties / restrictionTwo / description
      Previous value: -"Secondary travel restriction, if any."New value: +"Secondary travel/traction restriction (typically the opposite direction)."
    • removedOutput schema / properties / passes / items / properties / restrictionTwo / properties / comment
      Removed value: -{
      -  "description": "Restriction description.",
      -  "type": "string"
      -}
    • addedOutput schema / properties / passes / items / properties / restrictionTwo / properties / text
      Added value: +{
      +  "description": "Restriction / traction-law text for the second direction.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / passes / items / properties / restrictionTwo / properties / travelDirection
      Added value: +{
      +  "description": "Direction this restriction applies to (e.g. \"Southbound\", \"Westbound\").",
      +  "type": "string"
      +}
    • removedOutput schema / properties / passes / items / properties / restrictionTwo / properties / type
      Removed value: -{
      -  "description": "Restriction type code.",
      -  "type": "string"
      -}
  3. Changed3 schema fields changed
    • addedOutput schema / properties / notice
      Added value: +{
      +  "description": "Optional notice when no pass data is available — e.g. API temporarily unavailable. Absent on normal results.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / totalCount
      Added value: +{
      +  "description": "Total number of passes returned.",
      +  "type": "number"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "passes"
      -]New value: +[
      +  "passes",
      +  "totalCount"
      +]
  4. First observed

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds context about the data returned (status, weather, etc.) and the full scope of 16 passes, which is useful behavioral context beyond the annotation. However, there is no disclosure of rate limits, authentication needs, or any side effects, and the description does not go beyond what the annotation plus its own purpose statement already communicate.

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

Conciseness5/5

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

The description is three sentences with no waste. The first sentence states purpose and data fields, the second lists the passes, and the third gives usage examples. It is front-loaded with the core function and efficiently structured.

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

Completeness5/5

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

With zero parameters, a read-only hint, and an output schema present, the description covers everything an agent needs to call this tool: what it returns, the full scope of passes, and typical use cases. There is no missing information for correct invocation.

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

Parameters4/5

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

The tool accepts zero parameters, and the schema coverage is 100% (there is nothing to document). The description properly indicates the tool needs no input and focuses on the output scope. Per the rubric, a 0-parameter tool receives a baseline of 4, and the description does not need to add parameter details.

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?

The description states a specific verb ('Returns') and a precise resource ('current road conditions for all Washington State mountain passes'), and lists the data fields it provides (status, weather, road condition, traction laws, temperature, elevation). It also mentions all 16 passes by name, clearly distinguishing this tool from siblings that handle ferries, borders, and cameras.

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

Usage Guidelines4/5

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

The description gives explicit use cases: 'Use for "is the pass open?", traction law status, or winter driving planning.' This provides clear context for when to call the tool. However, it does not explicitly mention alternatives or when not to use it, though the sibling differentiation is implicit given the highly specific scope.

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.

TDQS

A4.5/5.0
Disambiguation5/5

Every tool targets a distinct resource and action: border waits, ferry routes/schedules/alerts/terminals/space/vessel positions, mountain passes, toll rates, travel times, highway alerts, and cameras. No two tools overlap in purpose; even the two alert tools (ferry vs highway) are clearly separated by domain.

Naming Consistency5/5

All tools follow the wsdot_verb_noun pattern with snake_case. Most use 'get' (get_ferry_routes, get_border_waits, get_mountain_passes) and two use 'search' (search_alerts, search_cameras), which is appropriate for filtering operations. The single deviation (get_terminal_space instead of get_ferry_terminal_space) is minor and does not harm predictability.

Tool Count5/5

12 tools cover a broad but well-scoped domain of WSDOT transportation data. The ferry subsystem alone has 6 focused tools (routes, schedule, alerts, terminals, space, vessel locations), and other areas each have a dedicated tool. The count feels neither inflated nor sparse for the server's purpose.

Completeness5/5

The tool surface covers the full lifecycle of WSDOT information needs: real-time border waits, ferry operations (routes, schedule, alerts, terminal IDs, space, vessel tracking), road conditions (mountain passes, travel times, toll rates), safety alerts, and camera feeds. No obvious dead ends—every query type has a corresponding tool.