DriveLab Booking
Server Details
Find Swiss driving lessons, live availability, VKU, first aid and WAB courses; book on the website.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: two search tools target different offering types (group courses vs. individual driving lessons), one lists locations, and one checks availability. The descriptions explicitly clarify boundaries and dependencies, so an agent can reliably select the right tool.
All tool names use snake_case and follow a verb-first pattern (get_, list_, search_). The small variation in verbs (get, list, search) is natural and predictable for the actions performed.
Four tools is a reasonable, focused set for a search-and-availability surface. It is slightly thin for a server named 'Booking' that would traditionally include reservation or management operations.
Despite the 'Booking' name, the tool set provides no booking, reservation, payment, or cancellation operations. It only covers pre-booking discovery and availability, leaving a significant gap for the stated domain.
Available Tools
4 toolsget_lesson_availabilityCheck lesson availabilityARead-onlyIdempotentInspect
Read actual free appointment slots for a public instructor/service pair returned by search_driving_lessons. Up to seven days from start_date, within the next 90 days. Times are Europe/Zurich. A slot is not held; the existing website rechecks it during booking.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| language | No | Response and checkout language; does not filter the teaching language. Default de. | |
| service_id | Yes | ||
| start_date | Yes | Local calendar date YYYY-MM-DD in Europe/Zurich. | |
| instructor_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so the safety profile is covered. The description goes beyond them with concrete behavioral facts: a 7-day max window, a 90-day horizon, Europe/Zurich times, and the important caveat that slots are not reserved and are re-verified by the website at checkout.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with what is read and its prerequisite, then constraints, then the booking caveat. Dense and mostly waste-free, though the trailing 'existing website rechecks it' sentence could be tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should convey the return shape, and it does state that what comes back is free slots expressed in Europe/Zurich. It stops short of describing the response structure (e.g. per-day grouping, slot fields) but the window and timezone details are the operationally critical parts for calling this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40% (days, service_id, instructor_id undocumented), and the description partially compensates by conveying the 7-day cap and the 90-day horizon on the date range plus the Europe/Zurich timezone. It adds nothing about the language enum beyond what the schema already says, and the interaction between days and the 90-day limit is implied rather than explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('actual free appointment slots') and scopes it to 'a public instructor/service pair returned by search_driving_lessons', which distinguishes it from search_driving_lessons (finds instructor/service) and search_courses. An agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the upstream tool that supplies the required ids, which is real routing guidance, and warns that a returned slot is not held and is rechecked at booking. It does not state a when-not condition or contrast against list_course_locations, but for a leaf availability tool the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_course_locationsList group-course coverageARead-onlyIdempotentInspect
List towns with published upcoming DriveLab group-course listings and the WAB partner calendars supported by search_courses. Listing a town is not a promise of free seats.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Response and checkout language; does not filter the teaching language. Default de. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds real behavioral context beyond that: it scopes results to *published upcoming* listings and warns that a listed town is not a promise of free seats, which prevents the agent from misreading coverage as availability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose, and the caveat sentence earns its place by guarding against a common misread. The first sentence is dense with product-specific jargon but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description adequately conveys what comes back (towns plus partnership calendars), and annotations carry the safety profile. It omits any note on result size, ordering, or pagination, which is a minor gap for a listing endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single optional parameter with 100% schema description coverage, including the note that language affects response/checkout and not teaching language. The description contributes nothing further about the language parameter, so the schema baseline of 3 stands.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: towns with published upcoming group-course listings, plus the partner calendars behind search_courses. It is clearly a coverage/discovery listing rather than a search, but it does not explicitly contrast itself with get_lesson_availability or search_driving_lessons.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The reference to search_courses implies this tool supplies the valid town/calendar values for that search, so usage is inferable. However, there is no explicit when-to-use/when-not statement and no stated prerequisite ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_coursesFind group coursesARead-onlyIdempotentInspect
Find upcoming VKU, first aid/Nothelfer or WAB courses by town, with teaching language, prices, all sessions, availability and existing booking links. list_course_locations gives coverage. WAB can use existing partner booking calendars; unknown/stale availability is explicitly labelled. Does not reserve or pay.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | Swiss town name or canonical town slug, for example Zürich, zuerich, Zug, Luzern. | |
| limit | No | ||
| language | No | Response and checkout language; does not filter the teaching language. Default de. | |
| from_date | No | Local calendar date YYYY-MM-DD in Europe/Zurich. | |
| course_type | Yes | ||
| teaching_language | No | Only offers taught in this language. Omit to see all teaching languages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: WAB courses may use external partner booking calendars, unknown/stale availability is explicitly labelled, and the tool does not reserve or pay. That goes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with purpose and result contents, then routing, then behavior caveats. Slightly dense but every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the return contents (language, prices, all sessions, availability, booking links). Combined with annotations, an agent has enough to invoke it correctly, though it doesn't mention pagination or the limit default.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the schema documents city, language (response vs teaching distinction), from_date, and teaching_language. The description restates teaching language and touches course types but adds no syntax or format detail for limit or course_type beyond the enum values. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Find') plus the exact resource and scope ('upcoming VKU, first aid/Nothelfer or WAB courses by town'), and enumerates what the result carries (language, prices, sessions, availability, booking links). It also differentiates from the sibling by pointing to list_course_locations for coverage, so an agent can distinguish it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes coverage/lookups to list_course_locations and states the hard boundary 'Does not reserve or pay'. It gives clear context for when this search applies, though it doesn't spell out the selection condition against search_driving_lessons or get_lesson_availability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_driving_lessonsFind driving lessonsARead-onlyIdempotentInspect
Find published driving-school profiles and bookable individual services for a Swiss town. Reuses DriveLab location coverage and ordering. Prices are per listed service; fees and final total are checked on the website. Use get_lesson_availability with returned instructor_id and service_id for free slots. Does not book.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | Swiss town name or canonical town slug, for example Zürich, zuerich, Zug, Luzern. | |
| category | No | ||
| language | No | Response and checkout language; does not filter the teaching language. Default de. | |
| teaching_language | No | Only offers taught in this language. Omit to see all teaching languages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is covered. The description adds genuinely non-redundant behavior: pricing is per listed service, fees and the final total are confirmed only on the website, results reuse DriveLab location coverage and ordering, and it explicitly does not book. It omits any return-shape or pagination notes, but the extra context is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the purpose, then the pricing caveat, then the routing handoff, then the scope limit. Almost every sentence earns its place. The one soft spot is 'Reuses DriveLab location coverage and ordering,' which is internal jargon of limited use to an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent what identifiers come back (instructor_id, service_id) and that prices are per service, which is the minimum needed to chain into get_lesson_availability. It does not describe result ordering in user-facing terms or result volume, leaving a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, which is near the threshold where the schema carries the load: city, language, and teaching_language are documented in the schema. The description only echoes the town concept and adds no syntax or semantics for category (which has no schema description at all) or for the language-vs-teaching_language distinction. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb plus two concrete resources — 'published driving-school profiles' and 'bookable individual services' — for a bounded geography (a Swiss town). It separates itself from get_lesson_availability by reserving slot lookup for that sibling. It does not, however, explicitly distinguish itself from search_courses or list_course_locations, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a positive routing instruction: 'Use get_lesson_availability with returned instructor_id and service_id for free slots,' and a clear exclusion: 'Does not book.' That covers the most likely next step. It stops short of contrasting against the other siblings (search_courses, list_course_locations), which limits it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
get_lesson_availability - First observed
list_course_locations - First observed
search_courses - First observed
search_driving_lessons
Related MCP Connectors
Find and book Thai-massage salons in Switzerland with live availability.
- bookingOAuthch.cowork24
Search, price and book Swiss coworking spaces, offices and meeting rooms on cowork24.ch.
Swiss homes to rent or buy, with walking distances, noise, sun and commute times for any address.
- UviqoraOAuthch.uviqora
Find and book people for short on-site tasks in Switzerland. Free public pilot, early stage.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP Server for Swiss road mobility — shared vehicles, EV charging, traffic alerts, Park & Rail, and multimodal trip planning.15142 PyPI1MIT
- AlicenseDqualityDmaintenanceProvides Swiss weather forecast data, allowing users to search for Swiss locations and get detailed hourly and daily weather forecasts.22MIT
- AlicenseNot gradedqualityDmaintenanceProvides real-time Swiss railway information including departures, connections, train composition, occupancy forecasts, disruptions, and pricing, accessible via natural language in over 100 languages.MIT
- FlicenseAqualityDmaintenanceEnables AI assistants to provide authoritative, cited, jurisdiction-correct answers about Switzerland using official federal, cantonal, and municipal sources across multiple languages and topics.13-
Glama MCP Gateway
Add one secure layer between your agents and this server.