Skip to main content
Glama

Pirate Skills

my_bookings

Read-onlyIdempotent

The signed-in person's time with Ben. Their hours with Ben: how many diamonds they hold (one diamond = one hour, one to one), their bookings with status (held, confirmed, cancelled) and join link, and the open hours ahead they can book with book_hour_with_ben. And the free 30-minute intro call (introCall): their upcoming one with its join link, or, when they have none, the open times they can book with book_intro_call. Each booking has its id, label, canCancel and canMove: cancel one with cancel_booking, move one with move_booking to an open time of the same kind (openHours for an hour with Ben, introCall.moveTimes for the free intro call). Booking, moving and cancelling happen here; url is a page to fall back to only if booking here fails. Each open time has label (weekday, date, time and time zone, worked out for the person's time zone, e.g. "Thursday, 17 September · 10:00–10:30 (Berlin time)") and day: quote label exactly as it is, and never work out a weekday or a date from start yourself. Pass start exactly as listed to book. openDays and introCall.openDays group the times by day; bookableUntil is the last day the calendar takes bookings for. Pass their time zone to get the times in it. Pass purpose when the person wants to book (intro_call or hour_with_ben): the next two weeks are listed, and a chat that can show a time picker shows one.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoHow many open hours, and how many intro-call times, to list.
purposeNoWhat the person wants to book right now: intro_call (the free 30-minute call) or hour_with_ben (one diamond). Omit when they only ask about their bookings.
timeZoneNoThe person's time zone, e.g. "Europe/Berlin". Defaults to Berlin.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.2/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, non-destructive), but with no output schema the description must carry return-shape disclosure and it does so in detail: booking fields (`id`, `label`, `canCancel`, `canMove`), open-time structure (`openHours`, `introCall.moveTimes`, `openDays`, `bookableUntil`), and the `url` fallback. It also discloses non-obvious handling rules — quote `label` exactly and never derive a weekday/date from `start`, pass `start` exactly as listed — which are behavioral constraints an agent cannot get from structured fields.

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

Conciseness3/5

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

It is a single dense run-on paragraph that mixes return-value documentation, field semantics, and usage routing without front-loading a purpose statement, so the reader must reconstruct the tool's job from the middle. Nearly every clause carries real content, so it is verbose rather than padded, but it is not structured for fast scanning.

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?

For a read-only aggregation tool with no output schema, the description supplies everything an agent needs: what collections are returned (bookings, open hours, intro call), the field names and their meaning, the status vocabulary (held/confirmed/cancelled), day grouping and `bookableUntil`, and the exact time-handling rules. Nothing material about invoking or interpreting the response is omitted.

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?

Schema description coverage is 100%, so the baseline is 3 and the schema already documents limit, purpose, and timeZone. The description still adds meaning beyond it: it explains what `timeZone` actually does ('Pass their time zone to get the times in it'), clarifies that `purpose` scopes the booking window ('the next two weeks are listed, and a chat that can show a time picker shows one'), and frames `purpose` as conditional on intent. `limit` is not elaborated beyond the schema.

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?

The description clearly establishes the resource and scope — the signed-in person's bookings with Ben plus bookable open hours and the free intro call — and names the siblings that mutate state (book_hour_with_ben, book_intro_call, cancel_booking, move_booking), so an agent can separate it from a pure list or a mutating tool. It is weakened only by opening on a noun phrase ('The signed-in person's time with Ben') rather than a leading verb, so the core action is inferred rather than stated up front.

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?

Routing is explicit: cancel via cancel_booking, move via move_booking, book hours with book_hour_with_ben and intros with book_intro_call, with the `url` page reserved as a fallback 'only if booking here fails'. The schema-adjacent instruction 'Pass `purpose` when the person wants to book... Omit when they only ask about their bookings' is a genuine when/when-not rule. No guidance is given on when NOT to call this at all relative to siblings like my_wallet or my_profile, keeping it just under top marks.

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