Skip to main content
Glama

Create booking draft and pay link

create_booking_draft

Hold one time with one psychologist (for 30 minutes, and never later than 15 minutes before the session) and return a single-use pay link for the customer. Call check_availability first and use one of its times. psychologist (optional): the slug of the person the customer asked for (from by_psychologist); the time is then held for that person only, or refused with 'not free'. Without it ElloMind assigns someone free at that time. Either way the response names the psychologist (slug, name, role), and that is who the session is booked with. Collect the customer's name, phone (with country code) and email first. Couples: also partner_2 (their own name and email or phone; each partner signs their own consent form before the first joint session). Teen (13 to 17): the contact is the parent or guardian, who pays and signs the teen consent form; also give teen_name. Also required: lead_source (how the customer found ElloMind; ai_assistant if they are booking for themselves through you and did not say) and booked_by ('customer' when the customer books for themselves, otherwise your own name). The price is set by ElloMind; you cannot set an amount. Plans: plan4, plan8 or plan12 (see list_services). In person: individual single sessions only. Every problem with the details comes back at once. Bookings close 10 minutes before the session. Limits: at most 3 unpaid drafts per phone at a time (cancel_booking_draft frees one) and 8 new drafts per hour from one network.

Input Schema

NameRequiredDescriptionDefault
modeNodefault online; in_person = Kakkanad clinic
nameYesthe contact: the client, or for teen sessions the parent or guardian
emailYes
phoneYeswith country code, e.g. +91 98xxxxxxxx
teen_ageNoteen only, if known: 13 to 17
booked_byYes'customer' if the customer books for themselves; otherwise your name
partner_2Nocouples only: the second partner
plan_codeYes'single' for one session; 'plan4', 'plan8' or 'plan12' for a plan (see list_services)
slot_dateYesYYYY-MM-DD from check_availability
slot_timeYesHH:MM 24h IST from check_availability
teen_nameNoteen only: the young person's name
source_refNoan EM-XXXX ref the customer was given, if any
lead_detailNorequired for referral (who referred them) and other
lead_sourceYeshow the customer found ElloMind
psychologistNoslug (e.g. 'nithya-s'), ONLY if the customer asked for that psychologist
session_typeYes
email_checkedNotrue only after the customer confirmed an unusual email domain

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed18 schema fields changed
    • addedInput schema / properties / booked_by
      Added value: +{
      +  "description": "'customer' if the customer books for themselves; otherwise your name",
      +  "maxLength": 100,
      +  "type": "string"
      +}
    • addedInput schema / properties / email / maxLength
      Added value: +200
    • addedInput schema / properties / email_checked
      Added value: +{
      +  "description": "true only after the customer confirmed an unusual email domain",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / lead_detail
      Added value: +{
      +  "description": "required for referral (who referred them) and other",
      +  "maxLength": 200,
      +  "type": "string"
      +}
    • addedInput schema / properties / lead_source
      Added value: +{
      +  "description": "how the customer found ElloMind",
      +  "enum": [
      +    "whatsapp",
      +    "instagram",
      +    "facebook",
      +    "google",
      +    "youtube",
      +    "website",
      +    "referral",
      +    "returning_client",
      +    "ai_assistant",
      +    "other"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / name / maxLength
      Added value: +200
    • addedInput schema / properties / partner_2 / properties / email / maxLength
      Added value: +200
    • addedInput schema / properties / partner_2 / properties / name / maxLength
      Added value: +200
    • addedInput schema / properties / partner_2 / properties / phone / maxLength
      Added value: +40
    • addedInput schema / properties / phone / maxLength
      Added value: +40
    • addedInput schema / properties / psychologist / maxLength
      Added value: +64
    • addedInput schema / properties / slot_date / maxLength
      Added value: +20
    • addedInput schema / properties / slot_time / maxLength
      Added value: +20
    • addedInput schema / properties / source_ref
      Added value: +{
      +  "description": "an EM-XXXX ref the customer was given, if any",
      +  "maxLength": 120,
      +  "type": "string"
      +}
    • changedInput schema / properties / teen_age / maximum
      Previous value: -9007199254740991New value: +120
    • changedInput schema / properties / teen_age / minimum
      Previous value: --9007199254740991New value: +0
    • addedInput schema / properties / teen_name / maxLength
      Added value: +200
    • changedInput schema / required
      Previous value: -[
      -  "session_type",
      -  "plan_code",
      -  "slot_date",
      -  "slot_time",
      -  "name",
      -  "phone",
      -  "email"
      -]New value: +[
      +  "session_type",
      +  "plan_code",
      +  "slot_date",
      +  "slot_time",
      +  "name",
      +  "phone",
      +  "email",
      +  "lead_source",
      +  "booked_by"
      +]
  2. Changed6 schema fields changed
    • addedInput schema / properties / mode
      Added value: +{
      +  "description": "default online; in_person = Kakkanad clinic",
      +  "enum": [
      +    "online",
      +    "in_person"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / name / description
      Added value: +"the contact: the client, or for teen sessions the parent or guardian"
    • addedInput schema / properties / partner_2
      Added value: +{
      +  "description": "couples only: the second partner",
      +  "properties": {
      +    "email": {
      +      "type": "string"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "phone": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "name"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / psychologist
      Added value: +{
      +  "description": "slug (e.g. 'nithya-s'), ONLY if the customer asked for that psychologist",
      +  "type": "string"
      +}
    • addedInput schema / properties / teen_age
      Added value: +{
      +  "description": "teen only, if known: 13 to 17",
      +  "maximum": 9007199254740991,
      +  "minimum": -9007199254740991,
      +  "type": "integer"
      +}
    • addedInput schema / properties / teen_name
      Added value: +{
      +  "description": "teen only: the young person's name",
      +  "type": "string"
      +}
  3. Changed2 schema fields changed
    • addedInput schema / properties / plan_code / description
      Added value: +"'single' for one session; 'plan4', 'plan8' or 'plan12' for a plan (see list_services)"
    • changedInput schema / properties / plan_code / enum
      Previous value: -[
      -  "single",
      -  "starter5",
      -  "preferred9",
      -  "committed11"
      -]New value: +[
      +  "single",
      +  "plan4",
      +  "plan8",
      +  "plan12"
      +]
  4. First observed

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare non-read-only, non-idempotent, non-destructive, so the write profile is known. The description still adds substantial behavior: the hold window (30 minutes, never later than 15 minutes before), that the pay link is single-use, that ElloMind sets the price and the agent cannot, that the psychologist may be refused with 'not free', that all validation problems return at once, and concrete rate limits (3 unpaid drafts per phone, 8 drafts per hour per network). These are real value-adds beyond the annotations.

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?

Front-loaded with the core action and the check_availability dependency, and every sentence carries operational content. It is delivered as one dense wall of text with nested asides (a reference to a 'by_psychologist' field that is not in this schema), which makes the branch conditions harder to scan than they need to be.

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 17-parameter, 9-required, nested-object mutation with no output schema, the description covers what comes back (psychologist slug, name, role; the pay link), the failure modes ('not free', batched validation errors), the temporal constraints, and the quota limits. An agent has enough to call it correctly and interpret the result.

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 88%, so the baseline is 3, and the description goes beyond it by explaining conditional semantics the schema only hints at: psychologist is the slug and, when omitted, ElloMind assigns anyone free but the response names who was assigned; lead_source defaults to ai_assistant if the customer did not say; booked_by is 'customer' for self-booking; partner_2 needs each partner's own contact and consent; teen contact must be the parent/guardian. It leaves source_ref, lead_detail, email_checked and teen_age entirely to the schema, so not a 5.

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 with scope: hold one time slot with one psychologist and return a single-use pay link. It distinguishes itself from check_availability (which supplies the time) and from cancel_booking_draft (which frees a draft), so an agent can route correctly without opening a sibling 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?

Explicit prerequisites ('Call check_availability first and use one of its times'), explicit conditional branches for psychologist / no psychologist, couples, and teen, plus a hard cutoff ('Bookings close 10 minutes before the session') and a named fallback tool (cancel_booking_draft frees a draft). Alternatives and when-not conditions are stated, not implied.

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