KARVE Booking
Live KARVE Pilates class schedule and availability in Jeddah, with booking links. Read-only.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"booking": {
"url": "https://karve.sa/api/mcp"
}
}
}Remote endpoints
https://karve.sa/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟢search_classes(startDate, endDate, days, query, category, ...)
Live KARVE (Jeddah) class schedule with real-time availability. Answers what's on, spots left, trainer, and returns a per-class booking link. Read-only. Dates DD/MM/YYYY (KSA). Search in English.
Input Schema
{
"type": "object",
"properties": {
"startDate": {
"type": "string",
"pattern": "^\\d{2}\\/\\d{2}\\/\\d{4}$"
},
"endDate": {
"type": "string",
"pattern": "^\\d{2}\\/\\d{2}\\/\\d{4}$"
},
"days": {
"type": "integer",
"minimum": 1,
"maximum": 31
},
"query": {
"type": "string"
},
"category": {
"type": "string"
},
"trainer": {
"type": "string"
},
"onlyAvailable": {
"type": "boolean"
},
"includePast": {
"type": "boolean"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"header": {
"type": "string"
},
"classes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"idSchedule": {
"type": "number"
},
"title": {
"type": "string"
},
"trainer": {
"type": "string"
},
"studio": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"day": {
"type": "string"
},
"start": {
"type": "string"
},
"end": {
"type": "string"
},
"spotsLeft": {
"type": "number"
},
"capacity": {
"type": "number"
},
"isFull": {
"type": "boolean"
},
"waitlist": {
"type": "number"
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bookLink": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"idSchedule",
"title",
"trainer",
"studio",
"day",
"start",
"end",
"spotsLeft",
"capacity",
"isFull",
"waitlist",
"note",
"bookLink",
"description"
],
"additionalProperties": false
}
}
},
"required": [
"header",
"classes"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢next_available(query, withinDays, limit)
Soonest upcoming KARVE classes that still have an open spot, optionally matching an English query (e.g. 'transformer', 'Sarah', 'beginners'). Returns booking links.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"withinDays": {
"type": "integer",
"minimum": 1,
"maximum": 31
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"header": {
"type": "string"
},
"classes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"idSchedule": {
"type": "number"
},
"title": {
"type": "string"
},
"trainer": {
"type": "string"
},
"studio": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"day": {
"type": "string"
},
"start": {
"type": "string"
},
"end": {
"type": "string"
},
"spotsLeft": {
"type": "number"
},
"capacity": {
"type": "number"
},
"isFull": {
"type": "boolean"
},
"waitlist": {
"type": "number"
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bookLink": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"idSchedule",
"title",
"trainer",
"studio",
"day",
"start",
"end",
"spotsLeft",
"capacity",
"isFull",
"waitlist",
"note",
"bookLink",
"description"
],
"additionalProperties": false
}
}
},
"required": [
"header",
"classes"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢class_detail(idSchedule, withinDays)
Full detail for one KARVE class by its idSchedule (from search_classes' JSON): description, trainer, studio, live availability, and a booking link.
Input Schema
{
"type": "object",
"properties": {
"idSchedule": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"withinDays": {
"type": "integer",
"minimum": 1,
"maximum": 31
}
},
"required": [
"idSchedule"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"header": {
"type": "string"
},
"classes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"idSchedule": {
"type": "number"
},
"title": {
"type": "string"
},
"trainer": {
"type": "string"
},
"studio": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"day": {
"type": "string"
},
"start": {
"type": "string"
},
"end": {
"type": "string"
},
"spotsLeft": {
"type": "number"
},
"capacity": {
"type": "number"
},
"isFull": {
"type": "boolean"
},
"waitlist": {
"type": "number"
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bookLink": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"idSchedule",
"title",
"trainer",
"studio",
"day",
"start",
"end",
"spotsLeft",
"capacity",
"isFull",
"waitlist",
"note",
"bookLink",
"description"
],
"additionalProperties": false
}
}
},
"required": [
"header",
"classes"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢studio_info
Authoritative KARVE facts — pricing & passes, first-timer info, policies (women-only, grip socks, cancellation, age), hours, location and contact. Use instead of guessing.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}Recommended Prompts
search_classessearch_classesCommunity
Evidence