Koskamo

iQuota Hotels MCP

An official MCP server by iQuota that enables AI assistants to search for live hotel availability, check rates, and book independent hotels, apartments, and villas. It supports tools for searching, retrieving hotel details, checking rates, booking, and managing reservations, with payments collected directly by the property.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

iQuota Hotels MCP logo, by iQuotaVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by iQuota
MCP endpoint (Streamable HTTP)
https://iquota.io/mcp
Vendor documentation

What you can do with it

  • Search for hotels by destination, dates, and guests
  • Check live availability and prices for specific hotels
  • Book hotel rooms with explicit traveler confirmation
  • Retrieve or cancel existing bookings

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
iquota 1.0.0
MCP protocol
2025-06-18
Tools
6 advertised
Resources
0 advertised
Resource templates
0 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

iQuota gives you live availability, prices and instant booking for hotels, apartments and villas that contract directly with their owners. Typical flow: search_hotels → (get_hotel for details) → check_rate → book_hotel. Prices are final for the stay unless stated; local tourist taxes, if any, are paid at the property. Payment is collected by the property itself (see payment_terms): never ask the traveller for card details. Before calling book_hotel, show the traveller the property, dates, room, board, total price, cancellation policy and payment terms, and get their explicit confirmation.

Tools

6 advertised

search_hotels — Search hotels
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search live availability and prices of directly-contracted hotels, apartments and villas. destination: city, area, region, hotel name or ISO country code (not needed on a hotel's own connector). Dates YYYY-MM-DD. adults and children_ages are per room. currency: EUR, USD… (if the property sells in it). board: Room only, Bed & breakfast, Half board, Full board or All inclusive. Returns hotels with options; each option has a rate_key (valid 30 minutes) for check_rate and book_hotel, and each hotel a booking_url (its official page with these dates) that the traveller can open to see prices and book.

search_hotels input schema
{
  "type": "object",
  "title": "_searchArguments",
  "required": [
    "checkin",
    "checkout"
  ],
  "properties": {
    "board": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Board",
      "default": null
    },
    "rooms": {
      "type": "integer",
      "title": "Rooms",
      "default": 1
    },
    "adults": {
      "type": "integer",
      "title": "Adults",
      "default": 2
    },
    "checkin": {
      "type": "string",
      "title": "Checkin"
    },
    "checkout": {
      "type": "string",
      "title": "Checkout"
    },
    "currency": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Currency",
      "default": null
    },
    "destination": {
      "type": "string",
      "title": "Destination",
      "default": ""
    },
    "children_ages": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Children Ages",
      "default": null
    },
    "max_total_price": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Total Price",
      "default": null
    }
  }
}
search_hotels annotations
{
  "title": "Search hotels",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_hotel — Hotel details
Advertised by the server during the last successful anonymous check.
Advertised read-only

Full details of a hotel: description, amenities, photos, location, rooms, check-in times, children policy and payment terms (hotel_code not needed on a hotel's own connector).

get_hotel input schema
{
  "type": "object",
  "title": "_getArguments",
  "properties": {
    "hotel_code": {
      "type": "string",
      "title": "Hotel Code",
      "default": ""
    }
  }
}
get_hotel annotations
{
  "title": "Hotel details",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_rate — Check rate
Advertised by the server during the last successful anonymous check.
Advertised read-only

Re-check price and availability of an option right before booking.

check_rate input schema
{
  "type": "object",
  "title": "_checkArguments",
  "required": [
    "rate_key"
  ],
  "properties": {
    "rate_key": {
      "type": "string",
      "title": "Rate Key"
    }
  }
}
check_rate annotations
{
  "title": "Check rate",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
book_hotel — Book hotel
Advertised by the server during the last successful anonymous check.
Open-world

Confirm a booking. Only call after the traveller has explicitly confirmed the hotel, dates, room, total price, cancellation policy and payment terms (set traveller_confirmed=true). Payment is collected by the property: never ask for card details. Returns the booking reference.

book_hotel input schema
{
  "type": "object",
  "title": "_bookArguments",
  "required": [
    "rate_key",
    "guest_name",
    "guest_email",
    "guest_phone",
    "traveller_confirmed"
  ],
  "properties": {
    "rate_key": {
      "type": "string",
      "title": "Rate Key"
    },
    "guest_name": {
      "type": "string",
      "title": "Guest Name"
    },
    "guest_email": {
      "type": "string",
      "title": "Guest Email"
    },
    "guest_phone": {
      "type": "string",
      "title": "Guest Phone"
    },
    "special_requests": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Special Requests",
      "default": null
    },
    "traveller_confirmed": {
      "type": "boolean",
      "title": "Traveller Confirmed"
    }
  }
}
book_hotel annotations
{
  "title": "Book hotel",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_booking — Get booking
Advertised by the server during the last successful anonymous check.
Advertised read-only

Look up a booking made through iQuota, using its reference and the guest email.

get_booking input schema
{
  "type": "object",
  "title": "_getbArguments",
  "required": [
    "booking_reference",
    "guest_email"
  ],
  "properties": {
    "guest_email": {
      "type": "string",
      "title": "Guest Email"
    },
    "booking_reference": {
      "type": "string",
      "title": "Booking Reference"
    }
  }
}
get_booking annotations
{
  "title": "Get booking",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
cancel_booking — Cancel booking
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Cancel a booking. First call with confirm=false to get the cancellation fee, tell the traveller, and only if they agree call again with confirm=true.

cancel_booking input schema
{
  "type": "object",
  "title": "_cancelArguments",
  "required": [
    "booking_reference",
    "guest_email"
  ],
  "properties": {
    "confirm": {
      "type": "boolean",
      "title": "Confirm",
      "default": false
    },
    "guest_email": {
      "type": "string",
      "title": "Guest Email"
    },
    "booking_reference": {
      "type": "string",
      "title": "Booking Reference"
    }
  }
}
cancel_booking annotations
{
  "title": "Cancel booking",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}

Prompts

0 advertised

No prompt definitions available.

Resources

0 advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1683 ms
95th percentile latency
1683 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1683 ms · metadata changed · 6 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http iquota-hotels-mcp https://iquota.io/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add iquota-hotels-mcp --url https://iquota.io/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable iquota-hotels-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "iquota-hotels-mcp": {
      "url": "https://iquota.io/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "iquota-hotels-mcp": {
      "type": "streamableHttp",
      "url": "https://iquota.io/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start iquota-hotels-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "iquota-hotels-mcp": {
      "type": "http",
      "url": "https://iquota.io/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http iquota-hotels-mcp https://iquota.io/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "iquota-hotels-mcp": {
      "url": "https://iquota.io/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "iquota-hotels-mcp": {
      "serverUrl": "https://iquota.io/mcp"
    }
  }
}

Let your agent find its tools

Find servers like iQuota Hotels MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run iQuota Hotels MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing