Skip to main content
Glama

DJfindr

Withdraw before anything is paid

withdraw_booking
Destructive

Withdraw before anything is paid. Needs bookings:write. Two calls. The first changes nothing: it checks the arguments as the change would (a field this tool does not take is refused, by name) and answers a summary and a confirm_token. Show the summary to the person; only after they agree, call again with the same arguments plus confirm_token. Once anything is paid, a booking is cancelled through get_cancel_link instead.

Input Schema

NameRequiredDescriptionDefault
proposal_idYes
confirm_tokenNoLeave out on the first call. On the second call, the confirm_token the first call answered.
expected_updated_atNoThe booking's `updated_at` as you read it: a booking that changed since is refused (precondition_failed). Leave it out to have the first call read the booking and pin it.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: the required scope 'bookings:write', the fact that the first call changes nothing, that unknown fields are refused by name, and the 'precondition_failed' error. What it leaves out is the resulting state of the booking after withdrawal and any expiry window on confirm_token, which matters for a tool annotated destructiveHint=true and idempotentHint=false.

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?

Roughly five short sentences, front-loaded with the precondition and the permission requirement, then the call sequence, then the escalation path. No sentence is redundant and the ordering matches how an agent must act.

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 destructive, non-idempotent mutation with no output schema, the description covers permission requirements, the confirmation handshake, error naming, and the alternate path. It stops short of describing the post-withdrawal state and token lifetime, which an agent handling retries or failures would want.

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 coverage is 67%, and the two documented parameters already carry their own meaning. The description still adds real value by describing the sequencing rule ('call again with the same arguments plus confirm_token') and by explaining why expected_updated_at may be omitted (the first call reads and pins it). proposal_id itself is never explained in either the schema or the description.

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?

Names a specific verb and resource ('withdraw ... a booking') and pins the scope with a hard precondition ('before anything is paid'). It also explicitly distinguishes itself from the sibling get_cancel_link, so an agent can route without opening either 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?

Gives an explicit when-to-use (nothing paid yet) and when-not-to-use with the named alternative ('Once anything is paid, a booking is cancelled through get_cancel_link instead'). The two-step invocation sequence is spelled out, including the condition for the second call (only after the person agrees).

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