Koskamo

ElloMind MCP

An official MCP server provided by ElloMind that allows AI agents to check live availability and book therapy sessions with qualified psychologists. It supports tools for listing services, checking slot availability, creating booking drafts with pay links, and retrieving booking status.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

ElloMind MCP logo, by ElloMindVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by ElloMind
MCP endpoint (Streamable HTTP)
https://mcp.ellomind.com/mcp
Vendor documentation

What its tools do

6 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

6 of 6 have a description · 6 of 6 declare behavior hints · 3 of 5 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to ellomind.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Check live availability for therapy sessions
  • Book individual, couples, or teen therapy
  • Retrieve booking status and details
  • List available therapy services

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
ellomind-booking 0.1.0
MCP protocol negotiated in check
2025-11-25
Tools
6 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Tools

6 advertised

list_services — List ElloMind services
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

list_services input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
list_services annotations
{
  "title": "List ElloMind services",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_availability — Check availability
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

check_availability input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "session_type",
    "from",
    "to"
  ],
  "properties": {
    "to": {
      "type": "string",
      "maxLength": 10,
      "description": "end date YYYY-MM-DD"
    },
    "from": {
      "type": "string",
      "maxLength": 10,
      "description": "start date YYYY-MM-DD"
    },
    "mode": {
      "enum": [
        "online",
        "in_person"
      ],
      "type": "string",
      "description": "default online"
    },
    "psychologist": {
      "type": "string",
      "maxLength": 64,
      "description": "slug from by_psychologist (e.g. 'nithya-s'), only if the customer asked for that person"
    },
    "session_type": {
      "enum": [
        "individual",
        "couples",
        "teen"
      ],
      "type": "string"
    }
  }
}
check_availability annotations
{
  "title": "Check availability",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_booking_draft — Create booking draft and pay link
Advertised by the server during the last successful anonymous check.

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.

create_booking_draft input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "session_type",
    "plan_code",
    "slot_date",
    "slot_time",
    "name",
    "phone",
    "email",
    "lead_source",
    "booked_by"
  ],
  "properties": {
    "mode": {
      "enum": [
        "online",
        "in_person"
      ],
      "type": "string",
      "description": "default online; in_person = Kakkanad clinic"
    },
    "name": {
      "type": "string",
      "maxLength": 200,
      "description": "the contact: the client, or for teen sessions the parent or guardian"
    },
    "email": {
      "type": "string",
      "maxLength": 200
    },
    "phone": {
      "type": "string",
      "maxLength": 40,
      "description": "with country code, e.g. +91 98xxxxxxxx"
    },
    "teen_age": {
      "type": "integer",
      "maximum": 120,
      "minimum": 0,
      "description": "teen only, if known: 13 to 17"
    },
    "booked_by": {
      "type": "string",
      "maxLength": 100,
      "description": "'customer' if the customer books for themselves; otherwise your name"
    },
    "partner_2": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 200
        },
        "email": {
          "type": "string",
          "maxLength": 200
        },
        "phone": {
          "type": "string",
          "maxLength": 40
        }
      },
      "description": "couples only: the second partner"
    },
    "plan_code": {
      "enum": [
        "single",
        "plan4",
        "plan8",
        "plan12"
      ],
      "type": "string",
      "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"
    },
    "teen_name": {
      "type": "string",
      "maxLength": 200,
      "description": "teen only: the young person's name"
    },
    "source_ref": {
      "type": "string",
      "maxLength": 120,
      "description": "an EM-XXXX ref the customer was given, if any"
    },
    "lead_detail": {
      "type": "string",
      "maxLength": 200,
      "description": "required for referral (who referred them) and other"
    },
    "lead_source": {
      "enum": [
        "whatsapp",
        "instagram",
        "facebook",
        "google",
        "youtube",
        "website",
        "referral",
        "returning_client",
        "ai_assistant",
        "other"
      ],
      "type": "string",
      "description": "how the customer found ElloMind"
    },
    "psychologist": {
      "type": "string",
      "maxLength": 64,
      "description": "slug (e.g. 'nithya-s'), ONLY if the customer asked for that psychologist"
    },
    "session_type": {
      "enum": [
        "individual",
        "couples",
        "teen"
      ],
      "type": "string"
    },
    "email_checked": {
      "type": "boolean",
      "description": "true only after the customer confirmed an unusual email domain"
    }
  }
}
create_booking_draft annotations
{
  "title": "Create booking draft and pay link",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
get_booking_status — Get booking status
Advertised by the server during the last successful anonymous check.
Advertised read-only

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'.

get_booking_status input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ref",
    "poll_key"
  ],
  "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"
    }
  }
}
get_booking_status annotations
{
  "title": "Get booking status",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
cancel_booking_draft — Cancel an unpaid booking draft
Advertised by the server during the last successful anonymous check.
Advertised destructive

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).

cancel_booking_draft input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ref",
    "poll_key"
  ],
  "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"
    }
  }
}
cancel_booking_draft annotations
{
  "title": "Cancel an unpaid booking draft",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
reschedule_booking — Move a confirmed session
Advertised by the server during the last successful anonymous check.
Advertised destructive

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.

reschedule_booking input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ref",
    "poll_key",
    "slot_date",
    "slot_time"
  ],
  "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"
    }
  }
}
reschedule_booking annotations
{
  "title": "Move a confirmed session",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1961 ms
95th percentile latency
1961 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1961 ms · metadata changed · 6 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http ellomind-mcp https://mcp.ellomind.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add ellomind-mcp --url https://mcp.ellomind.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable ellomind-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "ellomind-mcp": {
      "url": "https://mcp.ellomind.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "ellomind-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.ellomind.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start ellomind-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "ellomind-mcp": {
      "type": "http",
      "url": "https://mcp.ellomind.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http ellomind-mcp https://mcp.ellomind.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://mcp.ellomind.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "ellomind-mcp": {
      "serverUrl": "https://mcp.ellomind.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like ElloMind MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run ElloMind MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing