Upsalt Booking
Server Details
Search Upsalt venues, check availability, and book, view, or cancel a reservation.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
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. Dates show when Glama detected each change.
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
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
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.
Search and book appointments at local businesses. Barbershops, salons, spas, and more.
Book a table, appointment or class at a real local business. Instant confirmation, no API key.
Related MCP Servers
- AlicenseAqualityAmaintenanceManage Resy reservations via natural language: search restaurants, book tables, and manage reservations, favorites, and Priority Notify.154561MIT
- 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.714MIT
- FlicenseNot gradedqualityDmaintenanceEnables restaurant reservation management through SevenRooms API, allowing users to create reservations and query available time slots with guest details and party size information.-
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
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.