Skip to main content
Glama

Show a bus seat map

explain_seat_map
Read-onlyIdempotent

Draws a bus seat map from seat data to show numbers, prices and sold seats, then suggests available seats matching user preferences for one bus.

Instructions

Draw a bus's seat map with seat numbers, prices and booked seats, and suggest seats.

Use when the user asks about one bus. The seat data must be read from the official site's seat selection page; this tool does not fetch it. The user then names the seats they want.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "operator": "<operator>",
      "departure": "<departure>",
      "seats": "<seats>"
    },
    "name": "explain_seat_map"
  }
}

Input Schema

NameRequiredDescriptionDefault
siteNoSite the map was read from, e.g. redBus.
frontNoWhere the front of the bus (driver) is on screen: top, bottom, left or right. Leave empty to detect.
seatsYesEvery seat read from the site's seat map. Never invent seats.
operatorYesOperator name as shown.
departureYesDeparture time, HH:MM.
preferencesNoWhat the user prefers: window, aisle, front, back, together, lower, upper, cheapest, sleeper (a berth, on buses with both), seater.
seats_wantedNoHow many seats the user needs (default 1).
labels_are_positionsNoTrue when the site shows no seat numbers and you labelled seats by position (always the case on MakeMyTrip).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.7.0

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered; the description adds the non-obvious behavioral fact that the tool performs no data fetching and that it will suggest seats, plus the post-call workflow (the user names seats afterward). It does not describe the rendering output format, which is the main remaining gap.

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?

Four short sentences, front-loaded with what is drawn, then scope, then the data-source prerequisite, then the follow-up interaction. Nothing is padding, though the final sentence about the user naming seats is more workflow hint than tool definition.

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?

For a read-only renderer with no output schema, the description covers the essential points: it renders rather than fetches, so the agent must supply seat data, and it produces suggestions. A brief word on what the rendered output or suggestion payload looks like would make it fully self-sufficient.

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 description coverage is 100%, so the schema already defines all eight parameters, including the preferences enum values and the labels_are_positions caveat. The description mentions prices and booked seats (mapping loosely to price/status) and seat suggestions (preferences), but adds no syntax, defaults, or constraint detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

"Draw a bus's seat map with seat numbers, prices and booked seats, and suggest seats" gives a concrete verb and resource plus the rendered content, and the clause "this tool does not fetch it" separates it from the fetch/read_page siblings. It stops short of naming the sibling that does fetch, so the differentiation is implicit rather than explicit.

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?

"Use when the user asks about one bus" scopes the trigger, and the prerequisite that seat data must already have been read from the official site's seat selection page is a genuinely useful when-to-use condition that keeps the agent from calling this before it has data. There is no explicit when-not-to or named alternative, so it falls short of the 5 bar.

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