Skip to main content
Glama

@roompanda/mcp

A Model Context Protocol server for the Roompanda booking API. Point any MCP-compatible AI client at it and the agent can search availability, price rooms, and make real bookings — scoped to a single property by the API key.

Built on @roompanda/sdk.

Use it

Add to your MCP client (e.g. Claude Desktop claude_desktop_config.json):

{
  "mcpServers": {
    "roompanda": {
      "command": "npx",
      "args": ["-y", "@roompanda/mcp"],
      "env": { "ROOMPANDA_API_KEY": "sk_live_…" }
    }
  }
}

(Use an sk_test_… key while developing — bookings are simulated.)

Related MCP server: Amadeus Hotel API MCP Server

Tools

Tool

Does

get_property

The connected property

get_calendar

Per-date open/closed/min-stay (date picker)

list_rooms

Room content, photos, facilities

search_availability

Bookable rooms + priced rates for a stay

list_rates

Rate plans & cancellation policies

list_extras

Add-ons / upsells

create_booking

Make a booking (returns a payment_url if a deposit is due)

get_booking

Retrieve a booking

list_bookings

List bookings

Config

Env

ROOMPANDA_API_KEY

requiredsk_live_… or sk_test_…

ROOMPANDA_BASE_URL

optional API base override

License

MIT

Available Tools

9 tools
create_bookingCreate bookingA

Create a real booking. Use room ids + rate ids from search_availability. Pay-at-hotel rates confirm immediately; rates needing an online deposit return a payment_url to send the guest to.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestYes
roomsYesOne entry per room to book
checkinYesYYYY-MM-DD
checkoutYesYYYY-MM-DD
currencyNo
promo_codeNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behaviors. It reveals that pay-at-hotel rates confirm immediately while deposit rates require a payment_url, addressing a key uncertainly. However, it omits side effects like idempotency and authorization needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose ('Create a real booking'), no redundant information. Every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks details on return value (e.g., booking ID, confirmation status) and error handling. Given the tool's complexity (nested objects, conditional payment), the description could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%; the description adds value by linking room_id and rate_id to search_availability and explaining payment implications. However, it does not elaborate on fields like guest, currency, or promo_code, which remain covered only by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a real booking' and specifies input sources (room ids + rate ids from search_availability), distinguishing it from read-only tools like get_booking and list_bookings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context on when to use this tool (after search_availability) and conditional behavior (pay-at-hotel vs deposit rates), but does not explicitly state when not to use it or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bookingGet bookingB

Retrieve a booking by its id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. It only states 'retrieve' without mentioning permissions, error handling, rate limits, or any side effects. This leaves the agent uninformed about important behavioral aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise, but it is too sparse. While it avoids waste, it could be slightly expanded to include minimal behavioral or parameter context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is insufficient. It does not explain the response structure, what happens if the id is invalid, or any other contextual details needed for a complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no descriptions, and the tool description only adds 'by its id' without explaining the parameter format, constraints, or possible values. With 0% schema coverage, the description should compensate but fails to provide meaningful semantic detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (retrieve), the resource (booking), and the identifier (by its id). It effectively distinguishes from siblings like create_booking, list_bookings, and search_availability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you have a booking id, which is clear for a retrieval tool. However, it does not explicitly mention when not to use it or provide alternatives like list_bookings or search_availability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_calendarGet calendarA

Per-date availability for a date range: which dates are closed, closed-to-arrival/departure, and min-stay. Use to drive a date picker before searching.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd date YYYY-MM-DD
fromYesStart date YYYY-MM-DD

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavior. It describes the type of data returned but omits other traits like read-only nature, authorization, or rate limits. Acceptable but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences conveying purpose and usage without redundancy. Front-loaded with essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given lack of output schema, description explains key output types (closed, closed-to-arrival/departure, min-stay) sufficient for driving a date picker, though more structural detail would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters with descriptions. Description adds context of date range but no new meaning beyond schema. Baseline score applies due to high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns per-date availability for a date range, specifying closed dates, closed-to-arrival/departure, and min-stay. This distinguishes it from sibling search tools like search_availability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs 'Use to drive a date picker before searching', indicating when to use it. Lacks explicit exclusions or alternatives but context is clear given sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_propertyGet propertyB

Get the property this key is connected to (name + id).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavior. It only states that the tool retrieves property name+id, implying a non-destructive read, but omits details like authentication, rate limits, or 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, precise sentence conveys the entire purpose without any extraneous information. It is effectively front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description minimally covers what the tool returns (name+id). However, it lacks details on input context (e.g., how 'this key' is provided) and potential variations, making it moderately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so schema coverage is 100%. The description does not add beyond the schema, but with zero parameters, a baseline of 4 is appropriate as no further explanation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'property', with additional context 'this key is connected to (name + id)'. It distinguishes the tool from siblings like get_booking or get_calendar by targeting a different entity, but does not explicitly differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as get_booking or list_rooms. There are no exclusions or context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_bookingsList bookingsC

List the property's bookings, newest first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description implies a read operation, but without annotations it does not explicitly state idempotence or safety. It mentions ordering and lists bookings, which is fairly transparent, but lacks details on pagination, return format, or 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise (one sentence) but at the cost of omitting important details. It earns its place but could be expanded to include parameter info and usage context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is insufficient. It does not mention that all bookings are listed, how to paginate, or what fields are returned. The tool's behavior is incomplete for an AI agent to use confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Parameter description coverage is 0%, and the tool description does not explain the purpose or usage of 'limit' and 'offset'. The description entirely fails to add meaning beyond the schema's basic type constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists the property's bookings ordered newest first. It uses a specific verb ('list') and resource ('bookings'), and the ordering distinguishes it from other tools like search_availability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool vs alternatives such as get_booking (single booking) or search_availability (filtered search). The description fails to mention that it lists all bookings with no filtering capability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_extrasList extrasA

List the add-ons / upsells catalogue.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only states 'List' without disclosing behavioral traits such as side effects, data freshness, or pagination. The tool appears read-only but lacks explicit transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the tool's function without any unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (no parameters, no output schema), the description adequately explains its purpose. However, mentioning the output format could enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With no parameters, the description does not need to add parameter meaning. Following the baseline of 4 for zero parameters is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly uses a specific verb ('List') and resource ('add-ons / upsells catalogue'), distinguishing it from sibling tools focused on bookings, rates, rooms, and availability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing the catalogue of extras but does not explicitly state when to use or avoid this tool versus alternatives like search_availability or list_bookings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ratesList ratesB

List rate-plan definitions and cancellation policies.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must carry full burden. It only states what the tool lists, without disclosing side effects, authentication needs, or data scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It could be slightly more structured but is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no parameters, the description is minimally adequate. It does not describe the return format or pagination, which would be helpful for a list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the baseline is 4. The description adds no parameter info but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resources 'rate-plan definitions' and 'cancellation policies', distinguishing it from sibling tools like list_bookings or list_extras.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description lacks context such as prerequisites or conditions for listing rates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_roomsList roomsA

List the property's rooms with descriptions, photos and facilities (unpriced).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It states the tool lists rooms with certain details, which is basic behavior. However, it does not disclose authentication requirements, whether it returns only active rooms, or any rate limits. For a simple 0-param tool, this is adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single 12-word sentence that is front-loaded and contains no redundant information. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with 0 params and no output schema, the description adequately explains the response content. However, it does not specify the return format or any potential limitations like pagination. A slightly more detailed output structure would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters (0 params, baseline 4). The description adds value by specifying the output content (descriptions, photos, facilities, unpriced), compensating for the lack of parameter descriptions. Schema coverage is 100% vacuously.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'the property's rooms', specifying included content (descriptions, photos, facilities) and a limitation (unpriced). This uniquely distinguishes it from sibling tools like list_bookings or list_extras.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given about when to use this tool versus alternatives. The '(unpriced)' hint suggests not using it for pricing, but no alternative tools (e.g., list_rates, search_availability) are recommended for pricing queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_availabilitySearch availabilityA

Find bookable rooms and priced rate plans for a stay. Returns each room's rates with total_price and a rate id to book.

ParametersJSON Schema
NameRequiredDescriptionDefault
adultsNoAdults (default 2)
checkinYesCheck-in date YYYY-MM-DD
checkoutYesCheck-out date YYYY-MM-DD
currencyNo
children_agesNoAges of any children

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses return values (total_price, rate id) but does not mention behavior like auth requirements, rate limits, or whether the tool is read-only. A score of 3 is appropriate as it is partially transparent but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with purpose, and contains no redundant information. Every word adds value, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters, no output schema, and no annotations, the description is relatively brief. It covers the basic purpose and return values but omits details like pagination, error handling, or what happens when no rooms are available. Completeness is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80%, so the input schema already documents most parameters. The description does not add additional meaning beyond the schema; it only mentions output fields (total_price, rate id). Baselined at 3 due to high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool finds bookable rooms and priced rate plans for a stay, with a specific verb (Find) and resource (bookable rooms and rate plans). It distinguishes from siblings like create_booking or list_rooms by focusing on availability checking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (checking availability before booking) but does not explicitly state when not to use or provide alternative tools. No exclusion criteria or prerequisites are mentioned, leaving some ambiguity for the AI agent.

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.

  1. 9 tool updatesv0.1.0
    • First observedcreate_booking
    • First observedget_booking
    • First observedget_calendar
    • First observedget_property
    • First observedlist_bookings
    • First observedlist_extras
    • First observedlist_rates
    • First observedlist_rooms
    • First observedsearch_availability

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: creating bookings, retrieving them, checking availability, listing rooms/rates/extras, and property info. There is no confusion or overlap.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (e.g., create_booking, list_rooms, search_availability), making them predictable and easy to understand.

Tool Count5/5

9 tools is well-scoped for a property management and booking system. Each tool covers a necessary operation without excess or deficiency.

Completeness4/5

The set covers the core workflow (search, create, retrieve, list bookings, and property details). Minor gaps exist: no update or cancel booking, but these are secondary operations.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers