{"openapi":"3.1.0","info":{"title":"ksebe.sk booking API","version":"1.0.0","description":"Tier-aware REST surface for the ksebe/terapio booking platform. Anon tier is rate-limited per IP and restricted to read-only tools with a required topic filter. Partner tier (Bearer) grants the full tool catalog including booking mutations.","contact":{"url":"https://www.ksebe.sk/for-agents"}},"servers":[{"url":"https://mcp.ksebe.sk"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Partner API key issued during onboarding. Scoped to one or more market entities (sk, cz)."}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}}},"TherapistSummary":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"photo":{"type":"string","nullable":true},"languages":{"type":"array","items":{"type":"string"}},"accepts_new_clients":{"type":"boolean","nullable":true}}},"SessionType":{"type":"object","properties":{"slug":{"type":"string"},"type":{"type":"string"},"duration":{"type":"integer"},"is_online":{"type":"boolean"},"description":{"type":"string"}}}}},"paths":{"/mcp/list-therapists":{"get":{"operationId":"mcp_list_therapists","summary":"List therapists with filters. Anon must supply filters.topic.","tags":["mcp-public"],"parameters":[{"name":"filters[topic]","in":"query","description":"Topic slug (see /llms/topics/index.md). Required for anon tier.","schema":{"type":"string"}},{"name":"filters[language]","in":"query","schema":{"type":"string"}},{"name":"filters[is_online]","in":"query","schema":{"type":"boolean"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}},{"name":"entity","in":"query","schema":{"type":"string","enum":["sk","cz"]}}],"responses":{"200":{"description":"Array of therapists.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TherapistSummary"}},"meta":{"type":"object","properties":{"total":{"type":"integer"},"limit":{"type":"integer"},"tier":{"type":"string","enum":["anon","partner"]}}}}}}}},"400":{"description":"Missing filters.topic (anon) or malformed parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Pagination requires a partner API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. See Retry-After header."}}}},"/mcp/get-available-slots":{"get":{"operationId":"mcp_get_available_slots","summary":"Available appointment slots for a therapist + session type, over a date range ≤ 30 days.","tags":["mcp-public"],"parameters":[{"name":"therapist_slug","in":"query","required":true,"schema":{"type":"string"}},{"name":"session_type","in":"query","required":true,"schema":{"type":"string"}},{"name":"start_date","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"end_date","in":"query","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Available slot start timestamps."},"400":{"description":"Bad request."},"404":{"description":"Therapist or session type not found."},"429":{"description":"Rate limit exceeded."}}}},"/mcp/get-session-types":{"get":{"operationId":"mcp_get_session_types","summary":"Enumerate supported session types + prices for this market.","tags":["mcp-public"],"parameters":[{"name":"entity","in":"query","schema":{"type":"string","enum":["sk","cz"]}}],"responses":{"200":{"description":"Supported session types for this market.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"entity":{"type":"string","enum":["sk","cz"]},"currency":{"type":"string"},"session_types":{"type":"array","items":{"$ref":"#/components/schemas/SessionType"}}}}}}}}}}}},"/api/v1/therapists":{"get":{"operationId":"partner_list_therapists","summary":"Partner-only list of therapists with full filters and pagination.","tags":["partner"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"language","in":"query","schema":{"type":"string"}},{"name":"online","in":"query","schema":{"type":"boolean"}},{"name":"new_clients","in":"query","schema":{"type":"boolean"}},{"name":"query","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","default":20,"minimum":1,"maximum":100}},{"name":"entity","in":"query","schema":{"type":"string","enum":["sk","cz"]}}],"responses":{"200":{"description":"Paginated therapist list."},"401":{"description":"Missing or invalid Bearer token."},"403":{"description":"API key lacks access to requested entity."}}}},"/api/v1/therapists/{slug}":{"get":{"operationId":"partner_therapist_details","summary":"Full therapist profile including private fields.","tags":["partner"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"entity","in":"query","schema":{"type":"string","enum":["sk","cz"]}}],"responses":{"200":{"description":"Therapist profile."},"401":{"description":"Missing or invalid Bearer token."},"404":{"description":"Therapist not found."}}}},"/api/v1/therapists/{slug}/slots":{"get":{"operationId":"partner_available_slots","summary":"Available slots for a specific therapist + session type.","tags":["partner"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"session_type","in":"query","required":true,"schema":{"type":"string"}},{"name":"start_date","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"entity","in":"query","schema":{"type":"string","enum":["sk","cz"]}}],"responses":{"200":{"description":"Available slot start timestamps."},"401":{"description":"Missing or invalid Bearer token."},"404":{"description":"Therapist or session type not found."}}}}}}