Upsalt Booking
Server Details
Search Upsalt venues, check availability, and book, view, or cancel a reservation.
- Status
- Healthy
- Uptime
- 99.9% over 41 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 5 tools
Each tool has a clear, distinct role: find-company for lookup, list-available-slots for availability, create-booking for reservations, get-booking-info for retrieval, and cancel-booking for cancellation. No overlapping purposes.
All tool names follow a consistent verb-noun pattern with lowercase hyphenated style (cancel-booking, create-booking, find-company, get-booking-info, list-available-slots). Perfectly predictable.
Five tools are well-scoped for a booking system, covering the essential guest-facing operations without unnecessary additions. The count feels appropriate and focused.
The core booking lifecycle (create, read, cancel) is covered, along with prerequisites like company lookup and slot listing. An update/modify booking operation is missing, which is a minor gap but not critical for the primary use case.
Available Tools
5 toolscancel-bookingCancel BookingADestructiveInspect
Cancel an existing booking using the management token returned by create-booking. This action is irreversible; confirm with the guest before calling it.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | The booking management token returned by create-booking. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, and the description goes further by stating the action is irreversible and instructing to confirm with the guest. This adds meaningful context about consequences beyond the annotation, though it doesn't detail other potential side effects.
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?
The description is two sentences, front-loaded with the core action, and every clause contributes meaning. It efficiently conveys purpose, prerequisite, and warnings without redundancy.
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?
Given this is a simple destructive tool with one parameter and no output schema, the description is fully complete. It covers what the tool does, where the input comes from, the irreversible nature, and a required user confirmation, making it sufficient for an AI agent to invoke 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?
The schema provides 100% coverage for the token parameter, including its origin from create-booking. The description repeats this without adding extra semantic detail, so it provides no value beyond the schema baseline.
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 uses the specific verb 'Cancel' with the resource 'an existing booking', making the action unambiguous. It also specifies the required management token from create-booking, distinguishing it from sibling tools like get-booking-info or list-available-slots.
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 description clearly states the prerequisite (token from create-booking) and advises confirming with the guest before calling, which acts as a usage guardrail. It doesn't explicitly name alternatives or exclusions, but the sibling context makes it evident this is the sole cancellation tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-bookingCreate BookingAInspect
Create a booking for a company as a guest. Requires a date (YYYY/MM/DD), an hour and shift_id obtained from list-available-slots, and the guest contact details. On success, returns the reservation details including a token that can be used with get-booking-info and cancel-booking.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Guest city. | |
| date | Yes | Booking date in YYYY/MM/DD format (e.g. 2026/07/20). Note the slashes. | |
| hour | Yes | Booking hour in HH:MM format, taken from list-available-slots. | |
| name | Yes | Guest first name. | |
| pets | No | Number of pets. | |
| Yes | Guest email address. The booking confirmation and management token are sent here. | ||
| optin | No | Marketing opt-in flag (1 or 0). | |
| phone | Yes | Guest phone number. | |
| vegan | No | Whether the party includes vegan guests. | |
| adults | Yes | Number of adults. | |
| babies | No | Number of babies. | |
| country | No | Guest country. | |
| message | No | Optional message for the business. | |
| surname | Yes | Guest last name. | |
| children | No | Number of children. | |
| latitude | No | Guest latitude, if known. | |
| shift_id | Yes | The shift id, taken from list-available-slots. | |
| highchair | No | Number of highchairs. | |
| longitude | No | Guest longitude, if known. | |
| pushchair | No | Number of pushchairs. | |
| company_id | Yes | The company id, as returned by the find-company tool. | |
| vegetarian | No | Whether the party includes vegetarian guests. | |
| wheelchair | No | Number of wheelchairs. | |
| gluten_free | No | Whether the party needs gluten-free options. | |
| guest_token | No | Existing guest token, if the guest has booked before. | |
| nuts_allergy | No | Whether the party has a nut allergy. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include destructiveHint=false, so the description carries the transparency burden. It discloses the return behavior (reservation details with a token) and its downstream use. It doesn't mention failure modes or email side effects, but the core behavior is clearer than typical for a create operation.
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: the first states the purpose, the second covers requirements and return behavior. No filler, front-loaded, and every word 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?
For a 26-parameter tool with no output schema, the description provides a concise overview of the workflow, prerequisites, and return token. It doesn't mention side effects like confirmation email, but that's covered in the schema. The description is sufficient for an agent to select and invoke the tool 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 coverage is 100%, and the description mostly repeats key schema facts (date format, shift_id source) without adding new meaning. It groups contact details but doesn't explain optional parameters. Baseline 3 is appropriate since the schema already documents all parameter semantics.
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 uses a specific verb ('Create') and resource ('a booking'), with clear context ('for a company as a guest'). It distinguishes from sibling tools like cancel-booking and get-booking-info by explicitly focusing on creation.
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 description clearly states prerequisites: requires a date (YYYY/MM/DD), an hour, shift_id from list-available-slots, and guest contact details. It also explains how the returned token is used with get-booking-info and cancel-booking, providing workflow context. It doesn't explicitly state when not to use, but the sibling differentiation is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-companyFind CompanyARead-onlyInspect
Find a company by its slug and return its public profile: services, opening hours, and booking configuration. Use this first to obtain the company_id needed by the other tools.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The company slug, as found in its booking page URL. | |
| business_type | No | Optional business type filter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already establishes the safe read-only nature. The description adds that it returns a public profile with services, opening hours, and booking configuration, but does not disclose other behavioral traits such as auth requirements or rate limits. This is useful context but not rich.
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?
The description is two focused sentences, front-loaded with the main action and return value, with no filler or repetition.
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?
The tool is a simple lookup with no output schema, but the description covers the primary return fields and the key purpose of obtaining company_id. The optional business_type parameter is not mentioned in the description, but it is fully documented in the schema, so overall completeness is adequate.
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 100%, with slug described as 'The company slug, as found in its booking page URL' and business_type as an optional filter. The description repeats the slug lookup but adds no new parameter semantics beyond the schema.
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 states a specific verb and resource ('Find a company by its slug') and explicitly lists the returned content (services, opening hours, booking configuration). It also differentiates from sibling tools by noting it provides the company_id needed by the other tools.
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 description explicitly says 'Use this first to obtain the company_id needed by the other tools', giving clear context that it is a prerequisite lookup. It does not list explicit when-not-to-use cases, but the sibling tool names make the boundary obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-booking-infoGet Booking InfoARead-onlyInspect
Retrieve the details of an existing booking using the management token returned by create-booking.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | The booking management token returned by create-booking. | |
| company_id | Yes | The company id the booking belongs to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds the behavioral prerequisite that a management token from create-booking must be supplied. This provides useful auth-level context beyond the annotation. No side effects or return format are described, but the bar is lower given the readOnlyHint.
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?
The description is a single, well-structured sentence that front-loads the action and resource. It contains no redundant words and directly states the required token condition. Every word 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?
For a simple two-parameter read-only tool with fully documented schema and readOnlyHint annotation, the description is adequate. It states the purpose and the token prerequisite. The only minor gap is lack of error-case behavior or return format, but these are not required given the simplicity and existing structured data.
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?
The input schema has 100% description coverage for both parameters, so the schema already carries all parameter semantics. The description reiterates the token's origin but does not add new meaning beyond what the schema provides. Baseline of 3 applies.
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 uses the specific verb 'Retrieve' and identifies the resource as 'details of an existing booking', clearly distinguishing it from siblings like cancel-booking, create-booking, find-company, and list-available-slots. It also references the originating create-booking token, giving unambiguous purpose.
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 description implies clear usage context: it is the counterpart to create-booking, used after booking creation to retrieve details. It does not explicitly state when not to use this tool or name alternatives, but the context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-available-slotsList Available SlotsARead-onlyInspect
List the available booking slots for a company on a given date. Returns shifts and bookable hours; use the shift_id and hour when creating a booking.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | The date to check, in YYYY-MM-DD format (e.g. 2026-07-20). | |
| company_id | Yes | The company id, as returned by the find-company tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true, the description adds useful behavioral context by stating it returns shifts and bookable hours, and that shift_id and hour are used for booking creation. This goes beyond the annotation without contradicting it.
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 short sentences with no filler. The purpose and key downstream usage are conveyed efficiently, making it easy for an agent to scan and act.
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?
For a simple read-only tool with two well-documented parameters and no output schema, the description fully covers what the tool returns and how the result should be used. No additional context is needed.
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 100%, and both parameters are already clearly documented. The description reinforces that the date and company_id identify the slots but adds no new parameter-level detail, so a baseline of 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 uses a specific verb ('List') with a clear resource ('available booking slots for a company on a given date'), which precisely distinguishes this read-only tool from sibling tools like create-booking and cancel-booking.
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 description implies this tool should be used before creating a booking by instructing to use the returned shift_id and hour when creating a booking. It clearly positions the tool in the booking workflow, though it does not explicitly state when not to use it.
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.
5 tool updates
- First observed
cancel-booking - First observed
create-booking - First observed
find-company - First observed
get-booking-info - First observed
list-available-slots
Related MCP Connectors
Find availability and book across a network of independent venues via your AI assistant.
Discover local services and availability, then create, track, reschedule, or cancel bookings.
Find and book local services, classes and rentals; businesses set up and manage their pages.
Search and book appointments at local businesses. Barbershops, salons, spas, and more.
Related MCP Servers
- AlicenseAqualityAmaintenanceManage Resy reservations via natural language: search restaurants, book tables, and manage reservations, favorites, and Priority Notify.15962 npm1MIT
- FlicenseNot gradedqualityBmaintenanceEnables customers and AI agents to check restaurant table availability and create bookings, returning confirmations or nearby alternative times when a slot is full, with atomic capacity control and idempotent handling.-
- FlicenseBqualityFmaintenanceEnables users to search, check availability, and book restaurant reservations across Resy and OpenTable platforms. It supports direct booking for Resy and includes an automated reservation 'sniper' for securing high-demand slots the moment they become available.124-
- AlicenseAqualityDmaintenanceSearch 8,000+ corporate event venues across 40+ cities. Tools for venue search by capacity/category, pricing guides, expert advice articles, and inquiry handoff. Read-only, PII-redacted, UTM-attributed.74 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.