Skip to main content

Use with AI

Connect does not ship official HTTP SDKs. Assistants should read the contract and OpenAPI, then generate a client in your language. A second “docs MCP” is unnecessary.

Two different tools:

GoalUse
Generate a production clientContract card + OpenAPI YAML
Let a chat agent call search/quote/bookBooking MCP (Streamable HTTP)

Do not use MCP as a codegen source of truth. Do not book production inventory from a Custom GPT Action.

Stable URLs

ResourceURL
Contract (short)https://docs.bundleport.com/ai/contract
AGENTS.md (drop into a repo)https://docs.bundleport.com/AGENTS.md
llms.txthttps://docs.bundleport.com/llms.txt
llms-full.txt (handoff + errors + auth)https://docs.bundleport.com/llms-full.txt
Booking OpenAPIhttps://docs.bundleport.com/openapi/hotels.yaml
Content OpenAPIhttps://docs.bundleport.com/openapi/content.yaml

Human docs root: https://docs.bundleport.com

Cursor

  1. Docs: Settings → Indexing & Docs → add https://docs.bundleport.com (or @Docs this site).
  2. Rules: copy AGENTS.md into the buyer repo as AGENTS.md (or a project rule that says “follow that file”).
  3. Optional booking MCP (runtime only) — .cursor/mcp.json. Put the key in env; do not commit it.
{
"mcpServers": {
"bundleport-hotels": {
"url": "https://api.connect.bundleport.com/mcp",
"headers": {
"Authorization": "ApiKey ${BUNDLEPORT_API_KEY}"
}
}
}
}

Use sk_test_* until the agent is restricted. MCP tools are availability, quote, book, bookingDetail, cancel.

ChatGPT

  • Knowledge / codegen: upload or fetch llms-full.txt plus openapi/hotels.yaml. Prefer generating REST code over Actions that execute book in production.
  • Custom GPT Actions (test only): import https://docs.bundleport.com/openapi/hotels.yaml, server https://test-api.bundleport.com, auth header Authorization: ApiKey sk_test_*. Never attach sk_prod_*.

Claude

  • Project knowledge: add https://docs.bundleport.com/llms.txt and the contract URL. Fetch OpenAPI when writing code.
  • Claude Code: project instruction = AGENTS.md. Optional MCP booking endpoint as above.

Gemini

Gem or URL context: https://docs.bundleport.com/llms.txt and https://docs.bundleport.com/openapi/hotels.yaml. Paste the contract card if the context window is tight.

Any language (OpenAPI Generator / curl)

Generate types from the YAML, or call REST directly. Always parse errors[] on HTTP 200. Search occupancies use age only. There is no destination field on availability — resolve hotel codes via the Content API, then send criteria.hotels as in Search.

const res = await fetch('https://test-api.bundleport.com/connect/hotels/v1/availability', {
method: 'POST',
headers: {
Authorization: `ApiKey ${process.env.BUNDLEPORT_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
criteria: {
checkIn: '2026-11-01T00:00:00Z',
checkOut: '2026-11-03T00:00:00Z',
occupancies: [{ paxes: [{ age: 30 }, { age: 30 }] }],
currency: 'EUR',
language: 'en',
},
settings: {
connectionCodes: ['testb-conn-1876'],
timeout: 10000,
},
}),
});
const data = await res.json();
if (!res.ok) throw new Error(`HTTP ${res.status}`);
if (Array.isArray(data.errors) && data.errors.length) {
console.error(data.errors);
}

Quickstart has full occupancy and book examples. HTTP clients — no published SDK packages.