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:
| Goal | Use |
|---|---|
| Generate a production client | Contract card + OpenAPI YAML |
| Let a chat agent call search/quote/book | Booking 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
| Resource | URL |
|---|---|
| Contract (short) | https://docs.bundleport.com/ai/contract |
AGENTS.md (drop into a repo) | https://docs.bundleport.com/AGENTS.md |
llms.txt | https://docs.bundleport.com/llms.txt |
llms-full.txt (handoff + errors + auth) | https://docs.bundleport.com/llms-full.txt |
| Booking OpenAPI | https://docs.bundleport.com/openapi/hotels.yaml |
| Content OpenAPI | https://docs.bundleport.com/openapi/content.yaml |
Human docs root: https://docs.bundleport.com
Cursor
- Docs: Settings → Indexing & Docs → add
https://docs.bundleport.com(or@Docsthis site). - Rules: copy AGENTS.md into the buyer repo as
AGENTS.md(or a project rule that says “follow that file”). - 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.txtplusopenapi/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, serverhttps://test-api.bundleport.com, auth headerAuthorization: ApiKey sk_test_*. Never attachsk_prod_*.
Claude
- Project knowledge: add
https://docs.bundleport.com/llms.txtand 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.
- JavaScript
- Python
- cURL
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);
}
import os
import httpx
r = httpx.post(
"https://test-api.bundleport.com/connect/hotels/v1/availability",
headers={"Authorization": f"ApiKey {os.environ['BUNDLEPORT_API_KEY']}"},
json={
"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},
},
timeout=30.0,
)
r.raise_for_status()
data = r.json()
if data.get("errors"):
raise RuntimeError(data["errors"])
curl -sS -X POST https://test-api.bundleport.com/connect/hotels/v1/availability \
-H "Authorization: ApiKey $BUNDLEPORT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"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}}'
Quickstart has full occupancy and book examples. HTTP clients — no published SDK packages.