Skip to content
MCP · Model Context Protocol

One MCP integration.
Every supplier.

The unified distribution interface for AI agents: search, live rates, and two-phase confirmed booking — with quotes that carry their own evidence and pricing rules you configure.

The new integration tax

Hotel suppliers are each shipping their own MCP. Every integration means another account, another ID space, another pricing black box — your agent rebuilds the same plumbing per supplier, forever.

supplier-MCP × N → N × (auth + ids + pricing + ops)
HotelByte

Aggregate once

Every supplier connector (Dida, Tourmind, Yalago, Hotelbeds, ...) lives behind one MCP tool surface. When a supplier ships their own MCP tomorrow, it becomes one more upstream lane for us — not one more integration for you.

your-agent → /mcp → all suppliers

Three ways in

Same tool surface, same contract — pick the path that matches where your agent runs.

Local gateway

Machines you control (Claude Code / Cursor / Codex): hbcli runs a local stdio gateway; the key stays in the local credential store and agent configs carry zero secrets.

{ "mcpServers": { "hotelbyte":
  { "command": "hbcli", "args": ["mcp", "serve"] } } }

Static key

Hosted platforms and CI: mint a long-idle static key (dies only after 30 idle days; absolute lifetime server-capped at 365 days) and put it straight into the config.

$ hbcli mcp token
{ "type": "http", "url": "https://…/mcp",
  "headers": { "Authorization": "Bearer <token>" } }

OAuth 2.1 platform connectors

Claude web / ChatGPT connectors: standard RFC 9728/8414 discovery, dynamic registration, and PKCE. The consent page is hosted on our side; the token is a platform JWT.

GET /.well-known/oauth-protected-resource
→ 401 WWW-Authenticate: resource_metadata=…

Connect your agent in one minute

Every card starts with one command — hbcli mcp setup <client> — which writes the config (or prints your token + the exact fields to paste) and verifies the connection. Write tools still require explicit confirmation.

Zero signup — try now

hbcli mcp setup <client> --demo works right now — the shared sandbox identity is built into the CLI, no account, no credentials. Search real hotels in seconds; upgrade to your own tenant whenever you want more.

Bring your own tenant

Register on the portal, issue API credentials, then hbcli auth set-credentials && hbcli mcp setup — your supplier rules, your markup, your customers. One user can hold both identities.

Claude CodeCLI

One-liner remote HTTP; or the local stdio gateway to keep keys off the wire.

hbcli mcp setup claude-code
# runs: claude mcp add hotelbyte --scope user -- hbcli mcp serve
# (no claude on PATH? prints a paste-ready snippet instead)
CursorIDE

Global ~/.cursor/mcp.json, or per-project .cursor/mcp.json.

hbcli mcp setup cursor
# merges hotelbyte into ~/.cursor/mcp.json
# (your other MCP servers are preserved)
ChatGPTConnector

Custom plugin (developer mode): MCP URL + API-key auth — pick API key, not OAuth, or creation fails at the probe.

hbcli mcp setup chatgpt
# prints your token + the exact form fields:
#   Server URL:     https://api-test.hotelbyte.com/mcp
#   Authentication: API key   ← NOT OAuth
#   Header: Authorization · Value: Bearer <token>
GrokConnector · xAI

Grok connectors — custom MCP server on grok.com, web and mobile.

hbcli mcp setup grok
# writes [mcp_servers.hotelbyte] into ~/.grok/config.toml
# web/mobile connectors instead: grok.com/connectors → Custom
#   (hbcli mcp setup generic prints a token for it)
CodexCLI

~/.codex/config.toml — the stdio gateway.

hbcli mcp setup codex
# appends [mcp_servers.hotelbyte] to ~/.codex/config.toml
AntigravityIDE · Google

Google's agent-first IDE (2.0 at I/O 2026) — native MCP, browser control, agent manager.

hbcli mcp setup generic   # token + fields, then paste into mcp_config.json
{ "mcpServers": { "hotelbyte":
  { "command": "hbcli", "args": ["mcp", "serve"] } } }
# note: no "type" field in Antigravity configs
Devin DesktopAgent · Cognition

Cognition's autonomous agent desktop — formerly Windsurf (June 2026).

hbcli mcp setup generic   # token + URL
# Devin → Settings → MCP Marketplace → Add Your Own → paste
# (needs the Manage MCP Servers permission)
Claude Desktop · WebConnectors

Settings → Extensions / Connectors → Add custom connector: paste the endpoint URL, auth = Bearer. Directory-style platform connectors use the OAuth 2.1 discovery flow above.

hbcli mcp setup claude-connectors
# prints your token, then:
#   Add custom connector → paste URL → auth: Bearer <token>
# order.book / order.cancel always require confirm=true
VS Code · CopilotIDE

Workspace .vscode/mcp.json (stdio type).

hbcli mcp setup vscode
# writes .vscode/mcp.json in the current folder (servers key)
Any agent · self-builtJSON-RPC

No SDK required: MCP over streamable-http is three JSON-RPC calls. Works from any language, framework, or runtime — including agents you build yourself. Official SDKs (Python mcp, TypeScript @modelcontextprotocol/sdk) point at the same URL.

POST https://api-test.hotelbyte.com/mcp
Authorization: Bearer <token> · Accept: application/json, text/event-stream

# 1) initialize — protocol version + client info
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{
  "protocolVersion":"2025-06-18","capabilities":{},
  "clientInfo":{"name":"my-agent","version":"1.0"}}}

# 2) tools/list — discover the tools and their schemas
{"jsonrpc":"2.0","id":2,"method":"tools/list"}

# 3) tools/call — search hotels in Dubai for two adults
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{
  "name":"hotel.list","arguments":{
    "destinationName":"Dubai","checkIn":"2026-11-20","checkOut":"2026-11-22",
    "rooms":[{"adultCount":2}]}}}

Every result returns { response, evidence } — keep the traceId for reconciliation. order.book needs check_avail first and confirm=true; retries reuse customerReferenceNo.

Token source: hbcli mcp token (static key, dies after 30 idle days) or any portal-issued ticket. Never paste supplier credentials here — the token is your HotelByte identity.

The tool surface

The tools cover the whole transaction. Write tools exist only when a deployment enables them — and never execute without explicit confirmation.

hotel.listreadSearch hotels; returns the sessionId used across the flow
hotel.ratesreadRoom types and live rates, with refundability and cancel fees
hotel.check_availreadPhase 1 of two: re-verify inventory and price before booking
order.queryreadOrder status and confirmation lookups
order.bookwrite · confirmRequires confirm=true; customerReferenceNo is the idempotency key
order.cancelwrite · confirmRequires confirm=true; cancellation may be charged and irreversible

Quotes that carry evidence

Every tool result returns { response, evidence }. The response mirrors the HTTP API; the evidence envelope makes each quote citable and traceable — hand the traceId to support and they can reconstruct that exact quote.

{
  "response": { "list": [ … ] },
  "evidence": {
    "tool": "hotel.list",
    "traceId": "20261003…",
    "sessionId": "S-2026…",
    "currency": "USD"
  }
}

Bookings with a hard confirmation boundary

  1. hotel.rates — present price, refundability and cancel fees to the user.
  2. hotel.check_avail — re-verify the exact rate; live prices can move.
  3. order.book with confirm=true — only after the user consents. Anything less is rejected server-side before the order flow starts.
  4. Retries reuse customerReferenceNo — idempotent by key, duplicates surface as a soft warning you must confirm.

Try the sandbox now

UAT · no SLA

The sandbox endpoint is publicly reachable. Any MCP client can initialize against it with a valid ticket:

curl -X POST https://api-test.hotelbyte.com/mcp \
  -H "Authorization: Bearer <ticket>" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Procurement view

What to check when evaluating an AI distribution interface

Vendor-neutral. Three questions separate an aggregation layer from another single-inventory MCP — and how to prove each on the spot.

What to check

Is this yet another single-inventory supplier MCP

What we do

No. We are the aggregation layer: every supplier connector sits behind one tool surface, and every new supplier MCP is just another upstream lane for us.

How to verify

Run hotel.list for one destinationName and check whether results span multiple suppliers with a true minimum price.

What to check

Can the agent accidentally fire a real booking

What we do

No. order.book requires confirm=true (after the user consents to the exact price, dates and cancellation policy); missing or false confirm is rejected server-side before the order flow starts.

How to verify

Call order.book without confirm and check for an explicit rejection and zero side effects.

What to check

How transparent is pricing

What we do

Every quote carries an evidence envelope (traceId / sessionId / currency / time) that is citable and traceable; cost and markup composition opens in tiers via configurable rules, not a black box.

How to verify

Take the traceId from a response and ask the vendor to reconstruct the full chain of that one quote.