Skip to main content
Glama

Initiate Handoff

initiate_handoff
DestructiveIdempotent

Begin a handoff from the agent to either a human operator (SMS/email via lead_routing_json) or another agent (signed continuation URL). In human mode the notification body is composed by the server from the contact and reason fields — callers supply those fields, not the message text. Idempotent: re-using the same idempotency_key returns the original handoff.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeYesHandoff mode: human (SMS/email) or agent (continuation URL)
slugYesBusiness slug identifier
reasonNoWhy the user wants to reach a human
messageNoDeprecated alias for `reason`. The notification body is composed by the server from the fields above; this value is delivered as the reason line, not as the message itself. Supplying both is an error.
purposeNoPurpose description for agent-mode continuation
urgencyNoHow time-sensitive (default: normal)
agent_idNoOptional agent identifier
contact_nameNoEnd-user's name
contact_emailNoEnd-user's email
contact_phoneNoEnd-user's phone
reservation_idNoOptional link to a prior reservation
idempotency_keyYesUnique key for idempotent handoff

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare destructiveHint=true, openWorldHint=true, and idempotentHint=true. The description adds valuable context: it explains the idempotency mechanism concretely (re-using the key returns original handoff), specifies that the server composes the notification body, and notes that supplying both message and reason is an error. This complements the annotations rather than merely restating them, though it doesn't detail auth requirements or what the response contains.

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?

Three sentences, each earning its place: the first defines the tool's two modes, the second clarifies field responsibilities (server composes body, callers supply contact/reason), and the third documents idempotency. No Waste words, though it could arguably be slightly tighter. Front-loaded with the core purpose.

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 12-parameter, no-output-schema tool with complex mode-dependent field semantics, the description covers the key ambiguity well: explaining mode-specific fields, the server-composed body behavior, the message/reason alias trap, and idempotency. It doesn't enumerate which fields map to which mode explicitly (e.g., purpose/agent_id for agent mode, contact_* for human), but the schema descriptions partially cover this and the description gives the critical guidance needed.

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 all 12 parameters have individual descriptions. The tool description adds general field-roles guidance (which mode uses which fields, and that message is a deprecated alias for reason). However, most of the parameter meaning is already carried by the schema descriptions, so the description provides marginal incremental value beyond flagging the message/reason relationship and mode-field mapping.

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 uses a specific verb (initiate/begin), names the resource (handoff), and clearly identifies the two modes (human operator vs. agent continuation). It distinguishes itself from siblings like request_callback (which likely just schedules a callback) by explaining the two-mode structure and the idempotent key behavior, adding scoping details.

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?

The description explicitly explains when to use human vs. agent mode ('SMS/email via lead_routing_json' vs. 'signed continuation URL'), clarifies that callers supply contact and reason fields rather than message text, and documents idempotency behavior (re-using a key returns the original handoff). This provides clear context for choosing this tool over request_callback or query_business_agent.

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.3/5.0
Disambiguation5/5

Each tool targets a distinct action or resource: searching, quoting, reserving, confirming, payment handoff, callback, subscription, and business queries. Even related tools like reserve_slot and confirm_booking have clearly separated roles (holding vs. claiming). No overlapping purposes or ambiguous boundaries.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., search_businesses, get_quote, reserve_slot, confirm_booking). The verbs are varied but each is intuitive and fits the action. There are no mixed naming conventions or vague verb choices.

Tool Count5/5

13 tools cover the core booking and business-intelligence workflow without redundancy. The scope is well-defined—discovery, pricing, reservation, confirmation, payment, handoff, and subscription—so each tool earns its place. Not too thin, not overloaded.

Completeness3/5

The surface covers search, pricing, reservation, confirmation, payment, and handoff, but missing explicit cancellation or modification tools for bookings. A user asking to cancel a reservation would have no direct tool; get_cancellation_policy only provides text. Also no way to list a customer's existing bookings. This leaves notable gaps for a booking-focused server.