@striderlabs/mcp-ihg
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@striderlabs/mcp-ihgSearch for hotels in Chicago from June 15 to June 18 for 2 guests"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@striderlabs/mcp-ihg
MCP server connector for IHG Hotels (InterContinental, Holiday Inn, Kimpton, Crowne Plaza, and more) using Playwright browser automation.
Installation
npm install -g @striderlabs/mcp-ihg
npx playwright install chromiumOr install from source:
git clone https://github.com/markswendsen-code/mcp-ihg
cd mcp-ihg
npm install
npm run build
npx playwright install chromiumRelated MCP server: mcp-hilton
Claude Desktop Configuration
Add to your ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"ihg": {
"command": "striderlabs-mcp-ihg"
}
}
}Or with npx:
{
"mcpServers": {
"ihg": {
"command": "npx",
"args": ["-y", "@striderlabs/mcp-ihg"]
}
}
}Tools
Authentication
ihg_login
Log in to your IHG One Rewards account. Required before booking, viewing reservations, or accessing rewards.
{
"email": "your@email.com",
"password": "yourpassword"
}Hotel Search
ihg_search_hotels
Search for available hotels by location and dates.
{
"location": "Chicago, IL",
"check_in": "2025-06-15",
"check_out": "2025-06-18",
"guests": 2,
"brand": "Holiday Inn"
}Supported brands: InterContinental, Kimpton, Hotel Indigo, Crowne Plaza, voco, Holiday Inn, Holiday Inn Express, Candlewood Suites, Staybridge Suites, avid, Even Hotels
Returns: List of hotels with ID, name, brand, address, star rating, and lowest nightly rate.
ihg_get_hotel_details
Get full details for a specific hotel.
{
"hotel_id": "ORDHA"
}Returns: Amenities, policies, check-in/out times, contact info, images.
ihg_get_room_rates
Get available room types and rates for specific dates.
{
"hotel_id": "ORDHA",
"check_in": "2025-06-15",
"check_out": "2025-06-18"
}Returns: Room types with rates, refundability, breakfast inclusion, and points earning.
Reservations
ihg_book_room
Book a hotel room (requires login).
{
"hotel_id": "ORDHA",
"room_type": "King Standard",
"check_in": "2025-06-15",
"check_out": "2025-06-18",
"guest_info": {
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com",
"phone": "+1-555-0100",
"cardNumber": "4111111111111111",
"cardExpiry": "12/27",
"cardCvv": "123",
"specialRequests": "High floor please"
}
}Returns: Confirmation number and booking details.
ihg_get_reservations
Get all upcoming reservations (requires login).
Returns: List of reservations with dates, hotel, and status.
ihg_get_reservation_details
Get full details for a reservation (requires login).
{
"confirmation_number": "12345678"
}ihg_cancel_reservation
Cancel a reservation (requires login).
{
"confirmation_number": "12345678"
}ihg_modify_reservation
Modify dates or details of a reservation (requires login).
{
"confirmation_number": "12345678",
"changes": {
"check_in": "2025-06-16",
"check_out": "2025-06-19",
"special_requests": "Early check-in requested"
}
}IHG One Rewards
ihg_get_rewards_balance
Get current points balance and tier status (requires login).
Returns: Points balance, tier, expiration info, nights to next tier.
ihg_get_rewards_history
Get points transaction history (requires login).
Returns: List of points earned/redeemed with dates and descriptions.
ihg_redeem_points
Check points redemption options for a stay (requires login).
{
"hotel_id": "ORDHA",
"check_in": "2025-06-15",
"check_out": "2025-06-18"
}Returns: Points required and available redemption options.
Environment Variables
Variable | Description |
| Set to |
How It Works
This MCP server uses Playwright to automate a Chromium browser session on the IHG website. It:
Maintains a persistent browser session across tool calls
Handles login state so you only need to authenticate once
Navigates the IHG website to perform searches, bookings, and account management
Returns structured JSON data for all operations
Supported IHG Brands
InterContinental Hotels & Resorts
Kimpton Hotels & Restaurants
Hotel Indigo
Crowne Plaza
voco Hotels
Holiday Inn
Holiday Inn Express
Holiday Inn Club Vacations
Candlewood Suites
Staybridge Suites
avid Hotels
Even Hotels
Regent Hotels & Resorts
Six Senses Hotels Resorts Spas
HUALUXE Hotels & Resorts
Requirements
Node.js 18+
Playwright Chromium (
npx playwright install chromium)An IHG One Rewards account (free to create at ihg.com)
License
MIT
Available Tools
12 toolsihg_book_roomA
Book a hotel room at an IHG property. Requires login. Will complete the full booking flow.
| Name | Required | Description | Default |
|---|---|---|---|
| check_in | Yes | Check-in date YYYY-MM-DD | |
| hotel_id | Yes | IHG hotel code | |
| check_out | Yes | Check-out date YYYY-MM-DD | |
| room_type | Yes | Room type name or code from ihg_get_room_rates | |
| guest_info | Yes | Guest and payment information |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the need for login and indicates the tool completes an end-to-end booking flow, but it does not state explicit side effects such as creating a confirmed reservation, charging a card, or the possibility of non-refundable bookings. 'Full booking flow' hints at these but leaves key behavioral details implicit.
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 three short, front-loaded sentences: purpose, prerequisite, and behavior. Every sentence earns its place; there is no redundant or filler content.
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?
This is a high-complexity booking tool with five required parameters, a nested object, and no output schema, yet the description omits crucial return information (e.g., reservation confirmation) and side effects (e.g., card charge, cancellation policy). While the schema covers parameters, the description does not explain what happens on success or failure, making it incomplete for an agent to set expectations.
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 the schema itself includes clear descriptions for all parameters, including the nested guest_info and a reference to ihg_get_room_rates for room_type. The tool description adds no parameter-level detail, but because the schema covers everything, 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 ('Book') and resource ('a hotel room at an IHG property'), clearly distinguishing it from sibling tools like ihg_modify_reservation or ihg_cancel_reservation. The added phrase 'Will complete the full booking flow' reinforces that this is a comprehensive booking action, not just a partial step.
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?
Requires login' gives a clear prerequisite, and 'Book a hotel room' establishes when to use this tool versus modifying or canceling a reservation. However, it does not explicitly mention that one should first retrieve room rates via ihg_get_room_rates or compare with other tools, though the schema references that dependency.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ihg_cancel_reservationA
Cancel an IHG hotel reservation. Requires login. Check cancellation policy before cancelling.
| Name | Required | Description | Default |
|---|---|---|---|
| confirmation_number | Yes | IHG confirmation number to cancel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does warn about the cancellation policy, hinting at potential consequences, and notes the login requirement. However, it doesn't explicitly state that cancellation is destructive or irreversible, nor does it describe what happens after cancellation (e.g., confirmation or refund).
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 concise, with three short sentences each serving a distinct purpose: stating the action, noting the login prerequisite, and advising on policy check. There is no redundancy or unnecessary detail, earning a top score.
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 has only one parameter and no output schema, so the description should cover essential context. It includes login requirements and a policy warning, but omits expected outcomes (e.g., confirmation of cancellation, refund information). For a destructive action, more clarity about the effect would improve completeness.
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 full coverage (100%) for the single parameter 'confirmation_number' with description 'IHG confirmation number to cancel.' The tool description adds no extra parameter semantics beyond what the schema already provides, so the baseline score 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 clearly states 'Cancel an IHG hotel reservation' with a specific verb ('Cancel') and resource ('IHG hotel reservation'), which distinguishes it from sibling tools like ihg_modify_reservation or ihg_book_room. The purpose is unambiguous and directly actionable.
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 provides clear context by specifying 'Requires login' as a prerequisite and advising to 'Check cancellation policy before cancelling.' While it doesn't explicitly mention alternatives or when-not-to-use, the login and policy requirements give practical guidance on when the tool can be invoked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ihg_get_hotel_detailsA
Get detailed information about a specific IHG hotel including amenities, policies, contact info, and photos.
| Name | Required | Description | Default |
|---|---|---|---|
| hotel_id | Yes | The IHG hotel code (e.g. 'NYCDO', 'LAXCA') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Get' implies a read-only operation, and the listed content (amenities, policies, contact info, photos) indicates return value. Missing behavioral details include whether authentication is required, error handling, or any response format caveats.
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?
A single, focused sentence that immediately states the tool's purpose and key content areas. No wasted words or redundant technical details.
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 single-parameter detail lookup, the description is adequate but leaves gaps: no mention of authentication despite a login sibling, no output schema to clarify structure, and no guidance on valid hotel_id formats beyond the schema example.
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 hotel_id parameter is already described with an example. The description adds little beyond 'specific hotel', so it does not significantly enhance parameter understanding 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 clearly states the tool retrieves detailed information for a specific IHG hotel, listing concrete categories (amenities, policies, contact info, photos). This distinguishes it from siblings like ihg_search_hotels and ihg_get_room_rates.
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?
Usage context is implied: the user must already have a specific hotel_id and wants comprehensive details. However, there is no explicit guidance on prerequisites (e.g., login via ihg_login) or differentiation from alternatives like ihg_get_room_rates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ihg_get_reservation_detailsA
Get full details for a specific IHG reservation by confirmation number.
| Name | Required | Description | Default |
|---|---|---|---|
| confirmation_number | Yes | IHG confirmation number (e.g. '12345678') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get full details' is vague and does not disclose expected response format, required authentication (especially with a sibling ihg_login), or any potential errors. It is a read operation, but the lack of behavioral detail such as pagination, authorization, or return fields makes this weak.
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, clear sentence that achieves its purpose without unnecessary words. It is front-loaded and to the point.
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 and no annotations, the description should compensate by explaining what 'full details' means, potential prerequisites (e.g., login), and how this tool differs from listing or modifying reservations. It does not, making it incomplete for a tool that likely returns a complex reservation object.
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, including an example. The tool description adds minimal extra value beyond 'confirmation number' being the key parameter. Baseline 3 is appropriate because the schema carries the explanatory load.
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 clearly states the tool's function: retrieving full details for a specific reservation using a confirmation number. It uses a specific verb ('Get') and resource ('IHG reservation'), and distinguishes itself from the sibling 'ihg_get_reservations' (likely list) by focusing on a single reservation.
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 when to use this tool: when you have a confirmation number and need full details for a single reservation, versus listing all reservations. It does not explicitly name alternatives or exclusions, but the 'by confirmation number' phrase provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ihg_get_reservationsA
Get all upcoming and recent reservations for the logged-in IHG account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral transparency burden. It does note the 'logged-in' requirement, which is a useful prerequisite, but it does not describe error behavior, pagination, or what counts as 'recent.'
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, clear sentence with no redundancy. It front-loads the action and scope.
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 the tool's simplicity (no parameters, no output schema), the description is largely complete. However, it could clarify whether 'recent' has a defined time window and whether the response includes full reservation details or summaries, especially since a detail sibling exists.
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 tool has zero parameters, and the schema is empty, so the baseline score is 4. The description doesn't need to explain any parameters.
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 'Get' with the resource 'reservations' and clearly scopes to 'upcoming and recent' for the logged-in IHG account. This distinguishes it from sibling tools like ihg_get_reservation_details, which implies a single-reservation lookup.
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 provides no explicit guidance on when to use this tool versus alternatives such as ihg_get_reservation_details. It does not state exclusions or mention that this is the list endpoint while the sibling is the detail endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ihg_get_rewards_balanceA
Get IHG One Rewards points balance, tier status, and account summary for the logged-in user.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It indicates a read operation ('Get') and defines the user scope, but does not explicitly state that no data is modified, whether authentication is required, or how errors are handled. It adds some context but falls short of full transparency.
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 sentence of 15 words, directly stating the action and the resource. It is front-loaded with 'Get' and contains no filler, making it efficient and well-structured.
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 the simplicity of the tool (no parameters, no output schema), the description is quite complete: it states what is retrieved (balance, tier status, summary) and for whom (logged-in user). It could be more explicit about prerequisites or return format, but for this scope it 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?
The tool has zero parameters, so there is nothing to explain. The description does not need to add parameter details, and with no schema properties, the description vocabulary is not needed to compensate. Baseline 4 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 clearly states the tool retrieves IHG One Rewards points balance, tier status, and account summary for the logged-in user. It uses a specific verb 'Get' and names the exact resource, distinguishing it from sibling tools like ihg_get_rewards_history or ihg_get_hotel_details.
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 the tool is used to query the current user's rewards account by mentioning 'logged-in user', providing clear context. However, it does not explicitly state when to use this tool vs alternatives like ihg_get_rewards_history, nor does it mention exclusions. This is clear context but lacks explicit exclusions, so a 4 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ihg_get_rewards_historyA
Get IHG One Rewards points transaction history (earnings and redemptions).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that it retrieves transaction history, but does not mention authentication requirements, pagination, data format, or any constraints on the returned data. For a read operation this is somewhat acceptable, but it leaves the agent without important context.
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, clear sentence that directly states the tool's purpose. Every word earns its place, and there is no fluff or unnecessary detail.
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 the tool has no parameters and no output schema, the description is mostly sufficient. It states the resource and the type of data (earnings and redemptions), but could be slightly more complete by mentioning whether authentication is required (sibling tools include ihg_login) or noting the typical return format. Still, for a simple read operation, it covers the core.
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 tool has zero parameters, and the schema coverage is 100% (empty schema). The description adds no parameter details because there are none needed, earning the baseline score of 4 for tools with no parameters.
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 and resource: 'Get IHG One Rewards points transaction history' and adds the scope '(earnings and redemptions)'. This clearly differentiates it from sibling tools like ihg_get_rewards_balance and ihg_redeem_points.
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 the tool is for viewing past reward transactions, and the parenthetical clarifies it covers both earnings and redemptions. However, it does not explicitly state when to use this over alternatives, such as saying 'if you need current balance, use ihg_get_rewards_balance instead.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ihg_get_room_ratesA
Get available room types and rates for a hotel on specific dates, including points options.
| Name | Required | Description | Default |
|---|---|---|---|
| check_in | Yes | Check-in date in YYYY-MM-DD format | |
| hotel_id | Yes | The IHG hotel code | |
| check_out | Yes | Check-out date in YYYY-MM-DD format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but does not disclose side effects, permissions, rate limits, error handling, or the return format beyond 'including points options.' This is a significant gap for a tool that may involve network calls or data retrieval.
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 sentence that conveys the core functionality without unnecessary words. It is front-loaded with the action and resource, and every word adds value. This is an example of efficient, concise writing.
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 the tool's simplicity (3 fully described parameters, no output schema), the description covers the basic purpose but lacks context on when to use it (e.g., after searching for a hotel) and what the response structure will be. The description mentions return content ('room types, rates, points options') but does not elaborate on format or potential errors. Without annotations or an output schema, more detail would improve completeness.
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 provides full descriptions for all three parameters (hotel_id, check_in, check_out), so schema coverage is 100%. The description adds no additional meaning to the parameters themselves, only noting 'points options' as part of the output. Per the rubric, baseline 3 is appropriate when schema fully covers parameters.
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 clearly states the tool's function with a specific verb ('Get') and resource ('available room types and rates for a hotel on specific dates'), and adds 'including points options' to define scope. It distinguishes itself from sibling tools like 'ihg_get_hotel_details' and 'ihg_search_hotels' by focusing on rates and room types for specific dates.
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 usage context (checking room rates for specific dates) but provides no explicit guidance on when to choose this tool over alternatives, nor does it mention exclusions or prerequisites. It lacks the explicit 'use this when...' guidance seen in well-documented tools, but the purpose is clear enough for basic selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ihg_loginA
Log in to your IHG One Rewards account. Required before using most other tools. Maintains a browser session for subsequent calls.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Your IHG account email address | ||
| password | Yes | Your IHG account password |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavior. It mentions the browser session persistence, which is a key trait. However, it doesn't disclose failure modes, authentication errors, or idempotency, so it's useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the action, no filler.
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 2-param login tool, the description covers purpose, prerequisite status, and session behavior. Given no annotations or output schema, it's reasonably complete, though could mention what happens on failure.
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?
Input schema has descriptions for both parameters (email and password) with 100% coverage. The tool description adds no extra param 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?
Clearly states it logs into an IHG One Rewards account, using a specific verb and resource. It also notes it's required before most other tools, distinguishing it as a prerequisite among the sibling 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?
Explicitly says 'Required before using most other tools' and 'Maintains a browser session for subsequent calls,' giving clear when-to-use context. It doesn't mention exceptions or alternatives, but for a login tool that's sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ihg_modify_reservationA
Modify an existing IHG reservation (dates, guests, special requests, room type).
| Name | Required | Description | Default |
|---|---|---|---|
| changes | Yes | Fields to change | |
| confirmation_number | Yes | IHG confirmation number to modify |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Modify an existing IHG reservation' without detailing side effects, whether changes are immediately applied, if pricing is recalculated, or if any prerequisites (e.g., authentication, modifiable reservation status) exist. The lack of such behavior context leaves the agent uncertain.
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, concise sentence that front-loads the action and resource, with no wasteful words. It is appropriately sized and easy to parse quickly.
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 modification tool with no output schema and no annotations, the description is too sparse. It does not mention what the tool returns (e.g., updated reservation), whether it is a partial or full update, or any prerequisites/limits. The provided schema covers parameter structure, but the description lacks behavioral and outcome context needed for a complete understanding.
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% with descriptive parameter fields, so the baseline is 3. The description adds marginal value by listing the same categories (dates, guests, special requests, room type) but does not explain partial-update semantics (e.g., only provided fields change) or the meaning of the 'changes' object beyond what the schema already states.
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 clearly states the verb 'Modify' and the resource 'existing IHG reservation', and enumerates the specific attributes that can be changed (dates, guests, special requests, room type). This distinguishes it from sibling tools like ihg_cancel_reservation or ihg_book_room, which have different actions.
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 provides clear context that this tool is for altering an existing reservation. It does not explicitly mention alternatives or exclusions (e.g., 'use for date/guest changes, not for cancellations'), but the action and resource are unambiguous, making it evident when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ihg_redeem_pointsC
Check points redemption options for a hotel stay and initiate a points booking.
| Name | Required | Description | Default |
|---|---|---|---|
| check_in | Yes | Check-in date YYYY-MM-DD | |
| hotel_id | Yes | IHG hotel code | |
| check_out | Yes | Check-out date YYYY-MM-DD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description alone must disclose side effects. It states the tool 'initiates a points booking,' which implies a mutation, but does not clarify whether this completes a reservation, requires confirmation, or has cancellations/refund policies. Lacking any behavioral context beyond the action itself is insufficient for a booking-related tool.
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, focused sentence that front-loads the core action ('Check points redemption options') and includes the secondary action ('initiate a points booking'). No filler or redundant information, making it exceptionally concise.
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 involves both a read operation (checking options) and a write operation (initiating a booking), yet there is no output schema, no annotations, and no elaboration on what 'initiate' entails (e.g., booking confirmation, payment, or modification of existing reservations). The description is too thin for a tool with side effects.
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% for all three parameters (hotel_id, check_in, check_out), and each has a clear description. The tool description adds no additional parameter meaning, so the 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 clearly states the tool's function with specific verbs: 'Check points redemption options' and 'initiate a points booking.' It identifies the resource (points for a hotel stay) and likely distinguishes from siblings like ihg_get_room_rates (cash rates) and ihg_book_room (general booking) by emphasizing points. However, the dual action could be slightly ambiguous, so it doesn't fully reach a 5.
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 provides no guidance on when to use this tool versus alternatives. It does not mention exclusions or explicitly reference sibling tools like ihg_book_room or ihg_get_room_rates. The points-specific phrasing implies usage for points bookings, but without explicit direction, it falls short.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ihg_search_hotelsA
Search for IHG hotels by location, dates, and guest count. Supports all IHG brands (Holiday Inn, InterContinental, Kimpton, Crowne Plaza, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | Filter by IHG brand (optional). Options: 'InterContinental', 'Kimpton', 'Hotel Indigo', 'Crowne Plaza', 'voco', 'Holiday Inn', 'Holiday Inn Express', 'Candlewood Suites', 'Staybridge Suites', 'avid', 'Even Hotels' | |
| guests | No | Number of adult guests (default: 1) | |
| check_in | Yes | Check-in date in YYYY-MM-DD format | |
| location | Yes | City, airport code, address, or landmark (e.g. 'New York, NY', 'LAX', 'Times Square') | |
| check_out | Yes | Check-out date in YYYY-MM-DD format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that it searches across IHG brands, but does not describe output structure, pagination, or whether results include availability/pricing. As a search tool, the behavior is straightforward, but some transparency is missing.
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 purpose, and includes a useful brand list. Every word earns its place without unnecessary detail.
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 description is sufficient for a basic search tool, covering the main parameters. It does not explain return values, but no output schema exists and the tool's scope is narrow. Slightly more detail (e.g., result contents) could improve completeness.
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 already covers all parameters (100% coverage). The description adds a summary of key criteria and brand support, but does not add deeper semantics beyond what the schema descriptions provide.
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 clearly states a specific action ('Search for IHG hotels') with a defined scope (location, dates, guest count). It also lists supported brands, distinguishing it from sibling tools like ihg_get_hotel_details or ihg_book_room.
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 is for finding hotels, but it does not explicitly say when to use it versus alternatives or mention any prerequisites (e.g., whether login is needed). It provides context but lacks clear exclusions or alternative references.
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.
12 tool updates
v1.0.0- First observed
ihg_book_room - First observed
ihg_cancel_reservation - First observed
ihg_get_hotel_details - First observed
ihg_get_reservation_details - First observed
ihg_get_reservations - First observed
ihg_get_rewards_balance - First observed
ihg_get_rewards_history - First observed
ihg_get_room_rates - First observed
ihg_login - First observed
ihg_modify_reservation - First observed
ihg_redeem_points - First observed
ihg_search_hotels
TDQS
Each tool targets a distinct action: login, hotel search, hotel details, room rates, booking, reservation management, and rewards. Even similar tools like get_reservations vs get_reservation_details are clearly separate list vs detail operations.
All tool names follow a consistent 'ihg_<verb>_<noun>' pattern using snake_case. Verbs are clear and consistent (get, search, book, cancel, modify, redeem), making the API predictable.
The 12 tools are well-scoped for the IHG hotel booking and rewards domain. Each tool covers a necessary function without redundancy, and the count is within the ideal 3-15 range.
The tool set covers the full lifecycle: authentication, hotel search/details/rates, booking, reservation retrieval/modification/cancellation, and rewards balance/history/redemption. No obvious gaps for the intended domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hotel booking MCP server. Search, book, and manage reservations across 250K+ properties worldwide.
Manage hotels via the apaleo PMS API: reservations, folios, invoices, rates and availability.
Google Hotels prices, ratings, reviews, and photos via an Apify Actor, hosted MCP.
Automate any website: discover, run and create browser scripts that work behind logins.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables searching and retrieving VRBO vacation rental listings using browser automation. Supports filtering by location, dates, guests, price range, and property features to find and compare vacation rentals.-
- AlicenseAqualityDmaintenanceAn MCP server that enables AI agents to search Hilton hotels, manage reservations, and check Hilton Honors status through browser automation. It supports the full booking flow, points redemption, and digital key access via natural language commands.1617MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with the Hertz car rental service through headless browser automation. It supports searching for vehicles, managing reservations, checking loyalty status, and retrieving rental policies directly from the Hertz website.1018MIT
- AlicenseAqualityBmaintenanceEnables AI agents to search hotels, check availability, manage reservations, and book rooms on Booking.com via browser automation.215335MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/markswendsen-code/mcp-ihg'
If you have feedback or need assistance with the MCP directory API, please join our Discord server