Skip to main content
Glama

Check the chosen company’s availability

select_service_option
Idempotent

Called only by the protected contact form after an explicit Confirm action. It rechecks the company already chosen in chat, creates a temporary hold and returns the protected contact session. Never use it to present a company picker or on card startup. It does not create a booking.

Input Schema

NameRequiredDescriptionDefault
option_keyYes
request_idYes
idempotency_keyYes
expected_state_versionYes

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / result / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "arrival_window": {
      -        "type": "string"
      -      },
      -      "next_action": {
      -        "const": "complete_protected_form",
      -        "type": "string"
      -      },
      -      "option_key": {
      -        "type": "string"
      -      },
      -      "provider_public_name": {
      -        "type": "string"
      -      },
      -      "request_id": {
      -        "type": "string"
      -      },
      -      "service_date": {
      -        "type": "string"
      -      },
      -      "state_version": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "request_id",
      -      "state_version",
      -      "option_key",
      -      "provider_public_name",
      -      "service_date",
      -      "arrival_window",
      -      "next_action"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "category": {
      -            "type": "string"
      -          },
      -          "code": {
      -            "type": "string"
      -          },
      -          "correlation_id": {
      -            "type": "string"
      -          },
      -          "details": {
      -            "additionalProperties": {},
      -            "propertyNames": {
      -              "type": "string"
      -            },
      -            "type": "object"
      -          },
      -          "message": {
      -            "type": "string"
      -          },
      -          "retryable": {
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "code",
      -          "category",
      -          "message",
      -          "retryable",
      -          "correlation_id",
      -          "details"
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "error"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "arrival_window": {
      +        "type": "string"
      +      },
      +      "next_action": {
      +        "enum": [
      +          "complete_protected_form",
      +          "confirmed"
      +        ],
      +        "type": "string"
      +      },
      +      "option_key": {
      +        "type": "string"
      +      },
      +      "provider_public_name": {
      +        "type": "string"
      +      },
      +      "request_id": {
      +        "type": "string"
      +      },
      +      "service_date": {
      +        "type": "string"
      +      },
      +      "state_version": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "request_id",
      +      "state_version",
      +      "option_key",
      +      "provider_public_name",
      +      "service_date",
      +      "arrival_window",
      +      "next_action"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "category": {
      +            "type": "string"
      +          },
      +          "code": {
      +            "type": "string"
      +          },
      +          "correlation_id": {
      +            "type": "string"
      +          },
      +          "details": {
      +            "additionalProperties": {},
      +            "propertyNames": {
      +              "type": "string"
      +            },
      +            "type": "object"
      +          },
      +          "message": {
      +            "type": "string"
      +          },
      +          "retryable": {
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "code",
      +          "category",
      +          "message",
      +          "retryable",
      +          "correlation_id",
      +          "details"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "error"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, but the description adds real context: a temporary hold is created and the protected contact session is returned, while no booking is created. Gaps remain on hold duration/expiry and on failure behavior for state-version conflicts, so not a 5.

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?

Four short sentences, each load-bearing: trigger first, then effect, then exclusions, then the non-effect clarification. No redundancy or filler.

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

Completeness3/5

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

For a stateful mutation requiring a version token and idempotency key, the description omits the concurrency/retry contract an agent needs to call it without errors. The return surface is covered by the existing output schema and the when/when-not guidance is strong, so the definition is workable but incomplete.

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

Parameters2/5

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

Schema description coverage is 0% across four required parameters, and the description names none of them—no guidance on expected_state_version (optimistic concurrency), idempotency_key (retry safety), request_id, or option_key format. The phrase 'rechecks the company already chosen' only loosely implies option_key, which is not enough compensation for a fully undocumented schema.

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 specific actions—rechecking the already-chosen company, creating a temporary hold, returning the protected contact session—attached to a named trigger (the protected contact form after Confirm). It also explicitly negates sibling behaviors ('not to present a company picker', 'does not create a booking'), so it is distinguishable from get_service_options and create_service_booking.

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?

Explicit when: only from the protected contact form after an explicit Confirm action. Explicit when-not: never to present a company picker and never on card startup. That is a full routing rule with exclusions, leaving little to inference.

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