therapy-booking

Check live availability and book therapy sessions with a Malayalam-speaking psychologist.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
87%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,042Tokens (tool definitions)
~2.0 KBTypical response size
Moderate attention impact (1.60% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "therapy-booking": {
      "url": "https://mcp.ellomind.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.ellomind.com/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_services

List session types, prices and plans for booking therapy with ElloMind. Call before creating a booking so you use a valid session_type and plan_code. Plans: 4, 8 or 12 sessions at 10, 20 or 30% off, valid 6 months, paid upfront. In-person individual sessions (Kakkanad clinic, one at a time) are priced separately.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_availability(session_type, from, to, mode, psychologist)

Real open start times (IST) for a session type over a date range (YYYY-MM-DD, at most 14 days): `days` (all times) and `by_psychologist` (each psychologist's own times, with slug, name and role). Past times and times starting within 10 minutes are never listed. Times are not held until create_booking_draft. Use mode 'in_person' for the Kakkanad clinic (individual sessions, Teresa James). ElloMind matches clients to a psychologist: offer a specific person only when the customer asks for one (by name, or the same psychologist as before); pass psychologist to see only theirs. If this tool returns an error, never tell the customer they are fully booked.

Input Schema

{
  "type": "object",
  "properties": {
    "session_type": {
      "type": "string",
      "enum": [
        "individual",
        "couples",
        "teen"
      ]
    },
    "from": {
      "type": "string",
      "maxLength": 10,
      "description": "start date YYYY-MM-DD"
    },
    "to": {
      "type": "string",
      "maxLength": 10,
      "description": "end date YYYY-MM-DD"
    },
    "mode": {
      "description": "default online",
      "type": "string",
      "enum": [
        "online",
        "in_person"
      ]
    },
    "psychologist": {
      "description": "slug from by_psychologist (e.g. 'nithya-s'), only if the customer asked for that person",
      "type": "string",
      "maxLength": 64
    }
  },
  "required": [
    "session_type",
    "from",
    "to"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_booking_draft(session_type, plan_code, slot_date, slot_time, mode, ...)

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

{
  "type": "object",
  "properties": {
    "session_type": {
      "type": "string",
      "enum": [
        "individual",
        "couples",
        "teen"
      ]
    },
    "plan_code": {
      "type": "string",
      "enum": [
        "single",
        "plan4",
        "plan8",
        "plan12"
      ],
      "description": "'single' for one session; 'plan4', 'plan8' or 'plan12' for a plan (see list_services)"
    },
    "slot_date": {
      "type": "string",
      "maxLength": 20,
      "description": "YYYY-MM-DD from check_availability"
    },
    "slot_time": {
      "type": "string",
      "maxLength": 20,
      "description": "HH:MM 24h IST from check_availability"
    },
    "mode": {
      "description": "default online; in_person = Kakkanad clinic",
      "type": "string",
      "enum": [
        "online",
        "in_person"
      ]
    },
    "psychologist": {
      "description": "slug (e.g. 'nithya-s'), ONLY if the customer asked for that psychologist",
      "type": "string",
      "maxLength": 64
    },
    "name": {
      "type": "string",
      "maxLength": 200,
      "description": "the contact: the client, or for teen sessions the parent or guardian"
    },
    "phone": {
      "type": "string",
      "maxLength": 40,
      "description": "with country code, e.g. +91 98xxxxxxxx"
    },
    "email": {
      "type": "string",
      "maxLength": 200
    },
    "email_checked": {
      "description": "true only after the customer confirmed an unusual email domain",
      "type": "boolean"
    },
    "partner_2": {
      "description": "couples only: the second partner",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 200
        },
        "email": {
          "type": "string",
          "maxLength": 200
        },
        "phone": {
          "type": "string",
          "maxLength": 40
        }
      },
      "required": [
        "name"
      ]
    },
    "teen_name": {
      "description": "teen only: the young person's name",
      "type": "string",
      "maxLength": 200
    },
    "teen_age": {
      "description": "teen only, if known: 13 to 17",
      "type": "integer",
      "minimum": 0,
      "maximum": 120
    },
    "lead_source": {
      "type": "string",
      "enum": [
        "whatsapp",
        "instagram",
        "facebook",
        "google",
        "youtube",
        "website",
        "referral",
        "returning_client",
        "ai_assistant",
        "other"
      ],
      "description": "how the customer found ElloMind"
    },
    "lead_detail": {
      "description": "required for referral (who referred them) and other",
      "type": "string",
      "maxLength": 200
    },
    "source_ref": {
      "description": "an EM-XXXX ref the customer was given, if any",
      "type": "string",
      "maxLength": 120
    },
    "booked_by": {
      "type": "string",
      "maxLength": 100,
      "description": "'customer' if the customer books for themselves; otherwise your name"
    }
  },
  "required": [
    "session_type",
    "plan_code",
    "slot_date",
    "slot_time",
    "name",
    "phone",
    "email",
    "lead_source",
    "booked_by"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_booking_status(ref, poll_key)

Read a booking's state to show the customer: draft (waiting for payment), confirmed (with the Meet link), paid (payment in, booking being completed), expired or cancelled; plus the psychologist, consent progress and whether the one free move has been used. It changes nothing. REQUIRES the poll_key from create_booking_draft; without it the answer is 'not found'.

Input Schema

{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "maxLength": 20,
      "description": "the booking ref, e.g. EM-XXXX"
    },
    "poll_key": {
      "type": "string",
      "maxLength": 64,
      "description": "the poll_key returned by create_booking_draft"
    }
  },
  "required": [
    "ref",
    "poll_key"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴cancel_booking_draft(ref, poll_key)

Cancel a draft the customer has NOT paid for: frees the held time at once and the pay link stops working. A paid or confirmed session cannot be cancelled here (refunds and the 24-hour rule are handled by ElloMind on WhatsApp).

Input Schema

{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "maxLength": 20,
      "description": "the booking ref, e.g. EM-XXXX"
    },
    "poll_key": {
      "type": "string",
      "maxLength": 64,
      "description": "the poll_key returned by create_booking_draft"
    }
  },
  "required": [
    "ref",
    "poll_key"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴reschedule_booking(ref, poll_key, slot_date, slot_time)

Move a CONFIRMED session to another time with the same psychologist. Allowed once per session, at no charge, when the session is 24 hours or more away. A second change counts as a cancellation and anything inside 24 hours carries the full fee, so those go to ElloMind on WhatsApp. Check the new time with check_availability (same psychologist) first. The Meet link stays the same and everyone is emailed.

Input Schema

{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "maxLength": 20,
      "description": "the booking ref, e.g. EM-XXXX"
    },
    "poll_key": {
      "type": "string",
      "maxLength": 64,
      "description": "the poll_key returned by create_booking_draft"
    },
    "slot_date": {
      "type": "string",
      "maxLength": 20,
      "description": "new date YYYY-MM-DD"
    },
    "slot_time": {
      "type": "string",
      "maxLength": 20,
      "description": "new start time HH:MM 24h IST"
    }
  },
  "required": [
    "ref",
    "poll_key",
    "slot_date",
    "slot_time"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools