Skip to main content
Glama

German Real Estate Depreciation & Restnutzungsdauer

Book a free AfAMax initial call

book_appointment
Destructive

Books a free 15-minute initial phone call with the AfAMax team, in two steps.

STEP 1: after the user picked a slot from get_available_appointments, confirm the slot, their name and their own e-mail address with them, then call with startDateTime, name, email (and optionally phone, locale). AfAMax e-mails a 6-digit code to that address and returns status "verification_required" with a verificationId.

STEP 2: ask the user for the code from that e-mail and call again with only verificationId and otp. The code proves the address belongs to the user: use only the code the user gives you — never guess, invent or repeatedly retry codes. On success status is "booked" and a calendar invitation goes to the user.

Codes expire after 15 minutes and allow 5 attempts. If the slot was taken meanwhile, list slots again and offer another. If the e-mail belongs to an existing AfAMax account, the user must log in and book on the website (link in the error). Only book for the person you are talking to.

Input Schema

NameRequiredDescriptionDefault
otpNoStep 2 — the 6-digit code the user received by e-mail. Only ever the code the user gives you; never guess or retry codes. / Der 6-stellige Code aus der E-Mail.
nameNoStep 1 — the user's full name. / Vor- und Nachname.
emailNoStep 1 — the user's own e-mail address; the 6-digit confirmation code is sent there. Confirm it with the user before calling. / E-Mail-Adresse für den Bestätigungscode.
phoneNoStep 1, optional — phone number for the call. / Telefonnummer für das Gespräch.
localeNoStep 1 — language of the confirmation e-mail, the appointment and the links (`de` if omitted); match the user's language. Step 2 keeps step 1's language unless set. / Sprache der E-Mails und des Termins.
startDateTimeNoStep 1 — the chosen slot, copied exactly from get_available_appointments `startDateTime`.
verificationIdNoStep 2 — the `verificationId` returned by step 1.

Output Schema

NameRequiredDescriptionDefault
metaYes
statusYes`verification_required`: ask the user for the code sent to `verification.maskedEmail`, then call again with verificationId + otp. `booked`: the appointment exists.
requestIdYes
appointmentYes
attributionYes
verificationYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior4/5

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

Well beyond the annotations, it discloses the e-mail verification side effect, the 15-minute code expiry, the 5-attempt limit, the 'verification_required'/'booked' status transitions, the calendar invitation, and the existing-account error path. The only gap is that destructiveHint=true is never reconciled with what is actually consumed (a slot), though the booking context makes that implicit.

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?

Two clearly labelled steps with the critical constraint ('never guess, invent or repeatedly retry codes') stated inline. It is dense but front-loaded and nearly every sentence carries operational information; the German-language duplication lives in the schema, not here, so the description itself stays lean.

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 multi-step, stateful, non-idempotent booking tool, the description covers prerequisites, both call shapes, failure modes, and success outcome. An output schema exists, yet the status values are still named, which removes any ambiguity about how to interpret the two-step response.

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 100%, so baseline is 3, but the description adds genuine meaning: it partitions parameters into step 1 (startDateTime, name, email, phone, locale) versus step 2 (verificationId, otp), and stresses that startDateTime must be copied exactly from get_available_appointments and that otp must never be guessed. That goes beyond the per-field schema text.

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 a specific verb and resource ('Books a free 15-minute initial phone call with the AfAMax team') and immediately frames the two-step structure. It is clearly distinguishable from the sibling get_available_appointments, which only lists slots, so an agent can pick the right tool 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?

Explicitly sequences the workflow: pick a slot from get_available_appointments first, then call step 1, then step 2 with verificationId and otp. It also gives exclusions and fallbacks — existing AfAMax accounts must book on the website, taken slots require re-listing, and bookings are limited to the person being spoken to.

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.