Changelog
A running log of what changed in the Ultra Public API, MCP server, CLI, and SDKs.
The OpenAPI document's info.version is the canonical version of the API surface. This changelog adds context: what shipped, what's new, what to migrate.
Dates are UTC.
2026-05-16
API
- Rate limiting is now enforced on every
/api/v1/*endpoint. Org-bound keys: 60/min + 1000/hour. Cross-org master keys: 120/min + 5000/hour. Per-org safety cap of 10,000/hour across all keys an org issues. Exceeded buckets return429 rate_limitedwithRetry-After. See authentication § rate limits. - Clean
operationIdon every operation:listTrips,createTrip,getTrip,listTripItems,appendTripItem,updateTripItem,deleteTripItem,listSuppliers,getSupplier,listBookings,createBooking,getBooking,updateBooking. These propagate through to MCP tool names and CLI subcommand names automatically. /api/v1/openapi.jsonis now served dynamically —servers[0].urlcorrectly reflects the request origin (was leakinghttp://localhost:3000from build-time rendering).
CLI
- First release of
ultra— spec-driven CLI exposing every v1 operation as a subcommand. See the CLI docs. - Validates
ulk_…key format before passing tofetch(prevents leaks via runtime error messages).
MCP
- MCP server refactored to share a common client package with the CLI — no behavior change, but new endpoints now propagate to both surfaces automatically.
- Published to npm:
@ultra-network/mcp@0.1.0.npm install -g @ultra-network/mcpand configure via~/.claude.json.
CLI
- Published to npm:
@ultra-network/cli@0.1.0.npm install -g @ultra-network/cliand runultra --help.
Developer materials
- This repo (
timebinder/ultra-developers) opened with first-cut docs covering getting started, authentication, API reference, MCP, CLI, errors, pagination.
2026-05-15
API
POST /api/v1/bookingsnow dispatches live bookings through 10 supplier adapters:hbt,drivado,nuitee,ratestellar,saltours,mews,apaleo,tue,limohawk,oracle_ohip. Setsupplier_sourceand supply aplan_item_id— the server handles search → quote → book.PATCH /api/v1/bookings/{id}withstatus: "cancelled"now dispatches cancellations through the same adapters.- Conservative status transition matrix enforced server-side — see bookings reference.
- Price-tolerance guard: adapter dispatch aborts with 503 when the re-quoted price exceeds 5% of the expected price (or $20 floor, whichever is larger). Refresh the plan item and retry to consent to the new price.
2026-05-13
API
parseVenueIdnow uses greedy longest-prefix matching — fixesoracle_ohip_*venue IDs that were mis-parsed asoracle/*. No client-facing change; closes a class of 400s oncreateBooking.
2026-05-12
API
- First end-to-end write operations:
createTrip,appendTripItem,updateTripItem,deleteTripItem. Optimistic concurrency with 3 retries before 409.
Planned
The next wave is about making Ultra the substrate for autonomous and semi-autonomous travel workflows — agents that act on their own, agents that hand back to humans at the right moments, and the plumbing that lets both coordinate.
- Webhooks — push notifications for trip, item, and booking state changes. Today integrations poll; webhooks let agents react. An agent waiting on a supplier confirmation doesn't ask every 30 seconds — it gets told the moment the answer arrives. This is the shift from query-response integrations to event-driven ones, and it's the step that makes long-running autonomous workflows practical.
POST /api/v1/keys— self-serve key minting. Operators (and the agents acting on their behalf) provision scoped keys without waiting on us. Returns{ id, prefix, plaintext }once; only the SHA-256 hash is persisted server-side.GET /api/v1/keys+DELETE /api/v1/keys/{id}— list and revoke your own keys. Programmatic key lifecycle is the prerequisite for agents that mint scoped, short-lived credentials for sub-tasks.- Official TypeScript SDK (
@ultra-network/sdk) — type-safe wrapper over the OpenAPI surface. Auto-generated, type-checked end-to-end. - Official Python SDK (
ultra-network) — for data work, ML pipelines, and scripted agents. - Additional supplier adapters —
momorooms,shiji(channel managers), and more. Every new adapter widens what an agent can book end-to-end without leaving Ultra.
Subscribe to this repo's releases for shipping notifications. The direction is steady: every release should make the surface easier for agents and humans to work on together.
Versioning
The API surface is versioned via URL prefix (/api/v1). Breaking changes ship as /api/v2; /api/v1 stays stable for 12 months after a successor ships.
Non-breaking additions (new operations, new optional fields) ship continuously without bumping the version.
This changelog logs everything — both additive changes and (rare) breaking changes within a major version.