Skip to main content
OnArrival

The travel platform built for AI agents.

Connect an MCP-capable agent to travel search, pricing, booking and refund tools. Each key defines the allowed tools, spend limits and approval rules.

Why agents run on us

Typed tools with explicit permissions.

01
Native MCP server
flights.search, policy.check, bookings.create: real tool names with JSON schemas the agent reads and calls directly.
02
Guardrails as code
Per-traveller and per-policy limits enforced server-side. The agent can only do what you allow.
03
Audit-grade trace
Every tool call, decision and booking logged immutably: replayable, exportable, attributable.
How an agent books

One install. Real bookings.

Add the MCP server to your agent runtime, then choose the tools and transaction limits available to it.

THE AGENT LOOP · TRACED END TO ENDagentintenttool callflights.searchgatepolicy.checkticketedbookings.createbooking.create · signed · 142msTRACE · immutable · replayabletrace
  1. Connect

    Add the MCP server

    A single config block wires OnArrival into Claude Desktop, your IDE, or any MCP-capable runtime.

  2. Reason

    Agent searches & prices

    Natural-language intent becomes typed tool calls across flights, stays and more, priced live.

  3. Guard

    Policy enforces

    Budget, cabin and traveller rules are checked before any booking tool can fire.

  4. Book

    Confirm & trace

    The trip is ticketed atomically, and the full decision trail is written to your audit log.

In the loop

Watch it book, step by step.

A prompt becomes typed tool calls for search, policy checks and booking. Each call remains visible and attributable.

Natural-language in

“Book the cheapest refundable non-stop, under budget.”

Typed tools out

flights.search → policy.check → bookings.create.

Every step traced

Inputs, outputs and approvals logged for replay.
Scope, not trust

The agent only does what you allow.

Transactional authority stays in server-side policy. Each key has a tool allow-list, spend ceiling, approval threshold and revocation control.

Scoped credentials

Each MCP key has a tool allow-list, from search-only access to booking under an explicit cap.

Hard spend ceilings

Per-call and per-session budget caps are enforced before bookings.create can fire, not reconciled after. A fare over the ceiling is refused at the tool layer.

Human approval gates

A tool call above your threshold pauses for an approve or deny callback in your application.

Revocation

Revoking a key blocks subsequent tool calls from that agent.
Capabilities

Tools, permissions and audit controls.

Tools
  • Search + price
  • Book + cancel
  • Refund + exchange
  • Bundle compose
  • Manage booking
Runtimes
  • Claude Desktop
  • GPT tool calling
  • LangGraph + custom
  • Local + hosted
  • Streaming results
Guardrails
  • Per-traveller budgets
  • Policy at tool layer
  • Spend + rate caps
  • Human-in-the-loop
  • Scoped credentials
Trust
  • Immutable trace log
  • Replayable sessions
  • PII redaction
  • Idempotent calls
  • SOC 2 Type II
Works with

Bring your own agent.

Connect any MCP-capable runtime while keeping the agent and transcript in your environment.

Claude

Desktop and API, native MCP.

GPT

Responses API and tool calling.

Your agent

Any MCP-capable runtime.
Add to your runtime

One stanza. Then your agent can book.

Drop the server into any MCP-capable runtime. For Claude Desktop, add it to claude_desktop_config.json under mcpServers. Restart, and the travel tools appear. Scope and caps travel with the key, not the config.

claude_desktop_config.json
"mcpServers": {
"onarrival": {
"command": "npx",
"args": ["-y", "@onarrival/mcp"],
"env": { "ONARRIVAL_KEY": "sk_live_••••••••" }
}
}
zsh — install
npx -y @onarrival/mcp
What the key carries
  • Tool allow-list (search / book / refund)
  • Per-call and per-session spend ceilings
  • Human-in-the-loop threshold
  • Traveller and policy bindings
  • Revocable in one call
First call
  • flights.search → typed offers back
  • policy.check → pass / fail with reason
  • bookings.create → real PNR, idempotent
  • Every call written to the audit trace
  • No travel-domain code on your side
The guarantees

Built for agents that move money.

Get started
Review MCP permissions and limits.
Related

Pairs well with

Most of our customers use two or three of these together.

Related reading

All field notes →