# Travefy MCP connector

Connect Travefy to Elaichi and Claude, ChatGPT, Cursor, or any MCP client can look up and update your bookings, contacts, traveler preferences, loyalty programs, and library content, with every call running as the signed-in advisor and logged.

Source: https://elaichi.ai/connectors/travefy/

## Facts

| | |
| --- | --- |
| Application | Travefy |
| Category | Travel |
| AI tools | 88 |
| Authentication | Connects with an API key |
| Bring your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once Travefy is connected

- Which Travefy bookings depart in the next two weeks?
- Show Maria Lopez's traveler preferences and loyalty programs.
- Update the anniversary field for every contact traveling in June.

## Connect Travefy in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Travefy.
2. Optionally set Share with, then press Connect.
3. Paste a Travefy API key. One person generates a token in Travefy and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Travefy tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Travefy MCP connector for Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Travefy MCP connector for ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Travefy MCP connector for Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Travefy to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Travefy tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Travefy through Elaichi

### Catch a contact up after a discovery call

Travel advisors. Tell the agent what you learned on the call and it updates the Travefy contact, including the custom fields your agency tracks, so the record matches the conversation before you build the proposal.

### See every booking departing this month

Operations. Ask for the Travefy bookings leaving in the next thirty days and get a plain list you can work through, then update any booking whose dates or details have shifted.

### Check preferences before you book

Client services. Pull a traveler's stored preferences and loyalty programs from Travefy in one ask, so seat choices, room types, and frequent flyer numbers make it onto the booking the first time.

### Clean up duplicate and stale contacts

Agency owners. Have the agent list Travefy contacts that look like duplicates, merge the details into the right record, and remove the leftovers, with each change recorded in the log.

### Refresh the content library for a new season

Marketing. Add fresh hotel and destination descriptions to your Travefy library and clear out last season's entries in bulk, so advisors are building itineraries from current material.

### Turn a confirmed proposal into a booking

Sales. When a client says yes, ask the agent to create the Travefy booking with the traveler, dates, and details already in the contact record, instead of retyping them.

## Frequently asked questions

### How do I connect Travefy to Claude?

In Elaichi, choose Travefy and paste the API key from your Travefy account, then open Claude, go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. There is no OAuth application to register and no client ID or secret to generate. Once Travefy is connected, sign in to Elaichi from Claude and you can start asking about bookings and contacts.

### Does Travefy work with ChatGPT and Cursor as well as Claude?

Yes. Travefy is connected once in Elaichi, and the same endpoint, https://api.elaichi.ai/mcp, is added to Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi Agent. You do not connect Travefy separately for each client.

### What can an AI agent actually do with my Travefy data?

With Travefy connected, an agent can list, create, update, and remove bookings and contacts, read a traveler's preferences and loyalty programs, fill in and bulk update contact custom fields, and add or clear out library content. Short concrete asks work best, such as which bookings depart next week or update this contact's passport expiry. The agent cannot do anything with Travefy beyond those tasks.

### Does connecting Travefy give the AI access to every booking and contact in the agency?

No. Every call to Travefy runs under the API key and access of the person who connected it in Elaichi, so the agent sees what that person sees in Travefy and nothing more. Elaichi can narrow that access further, for example to reading only, but it can never widen it beyond what Travefy already allows.

### Can my team share one Travefy connection?

Yes. One person connects Travefy with the agency's API key, shares the connection with a team in Elaichi, and nobody else ever handles the key. Each teammate still signs in to Elaichi as themselves, so the audit log names the person who changed a Travefy booking, not a shared account.

### Can I stop an agent from deleting or changing things in Travefy?

Yes. In Elaichi, each Travefy action can be restricted on its own, so you can allow reading bookings and contacts while blocking deletion or edits. A restricted action is never advertised to Claude, ChatGPT, Cursor, or any other client, so no prompt can reach it.

### What happens to a Travefy connection when someone leaves?

Offboarding a person in Elaichi ends their access to Travefy at once, in every client they used. A Travefy connection shared with the team keeps working for everyone else. If you ever want Travefy gone entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor, and every other client at the same time.

### Does the Travefy MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. Travefy is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

## All 88 Travefy tools

Every tool below is callable through https://api.elaichi.ai/mcp once Travefy is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Travefy bookings** (List). List Travefy bookings. Without filters, returns the authorized user's bookings ordered by CreatedDate descending. Returns: Id, Items. Optional filters: ids (max 50) and partnerIdentifier (ignored when ids is provided). Max 50 per page.
- **Create a Travefy booking** (Create). Create a new booking in Travefy. Returns the created booking record including id, CreatedDate, and attributes holding the remaining upstream booking fields. Requires the booking details as a CrmApiBooking request body.
- **Get single Travefy booking by ID** (Get). Get a single Travefy booking by id. Returns the booking record including id, CreatedDate, and attributes holding the remaining upstream booking fields. Required: id.
- **Update a Travefy booking by ID** (Update). Update an existing Travefy booking by id. Returns the updated booking record including id, CreatedDate, and attributes holding the remaining upstream booking fields. Required: id.
- **Delete a Travefy booking by ID** (Delete). Delete a Travefy booking by id. Returns an empty 204 response on success. Required: id.
- **List all Travefy contacts** (List). List Travefy contacts, optionally filtered by ids or partnerIdentifier. Returns contact objects with id, IsActive, and CreatedDate, ordered by CreatedDate descending. Page size is limited to 50; partnerIdentifier is ignored if ids is also provided.
- **Create a Travefy contact** (Create). Create a Travefy contact. Returns the created contact with id, IsActive, and CreatedDate; new contacts are created with IsActive = true. Emails must be unique across contacts.
- **Get single Travefy contact by ID** (Get). Get a Travefy contact by id. Returns the contact with id, IsActive, and CreatedDate. Required: id.
- **Update a Travefy contact by ID** (Update). Update a Travefy contact by id. Returns the updated contact with id, IsActive, and CreatedDate. Emails must be unique across contacts. Required: id.
- **Delete a Travefy contact by ID** (Delete). Delete a Travefy contact by id. Returns an empty 204 response on success. Required: id.
- **List all Travefy contact custom fields** (List). List the custom field values set on a Travefy contact. Returns: Id. Required: contact_id.
- **Travefy contact custom fields bulk update** (Update). Replace all custom field values on a Travefy contact — existing values omitted from the request are deleted. Returns: Id. Required: contact_id.
- **List all Travefy contacts traveler preferences** (List). List the valid traveler preferences in Travefy that can be set on contacts when creating or updating them. Returns: Id. When IsFreeformPreferenceOption is true, PreferenceOption is null and any value may be supplied; when false, values passed up with the contact are ignored and Travefy's set value is used.
- **List all Travefy contacts loyalty programs** (List). List the Travefy loyalty programs that can be associated with contacts when creating or updating them via the API. Returns: id, attributes (the upstream CrmApiLoyaltyProgram fields; field-level shape is defined upstream).
- **List all Travefy contacts custom fields** (List). List all active custom fields for the authorized Travefy account. Returns each custom field with its Id and label. Max 50 per page.
- **Create a Travefy contacts custom field** (Create). Create a new custom field in Travefy. Returns the created custom field with its id and label. Required: Label.
- **Get single Travefy contacts custom field by ID** (Get). Get a single custom field by id in Travefy. Returns the custom field definition including its Id and label. Required: id.
- **Update a Travefy contacts custom field by ID** (Update). Update a custom field in Travefy by id. Only the label can be updated. Returns: Id. Required: id, Label.
- **Delete a Travefy contacts custom field by ID** (Delete). Delete a custom field by id in Travefy. Returns an empty 204 response on success. Required: id.
- **List all Travefy echos** (List). Echo a connectivity test against the Travefy API to verify your request setup is working. Returns an opaque response body with no documented fields; a 200 OK confirms the API credentials are configured correctly. No parameters required.
- **List all Travefy health checks** (List). Check the health of the Travefy API connection. Returns a 200 OK response with an empty, undocumented body on success.
- **List all Travefy library contents** (List). List Travefy library content items accessible to the authorized user. By default only items created by the user are returned; pass createdByUser=false to also include team-shared items. Returns an array of item records (upstream SavedIdeaApiDisplay), each including its id.
- **Create a Travefy library content** (Create). Create a Travefy library content item for the authorized user; when the user belongs to a team, the item is also shared at the team scope. Body: the SavedIdeaApiDisplay item to create (see the Travefy API docs for the full field list). Returns the created item record including its id.
- **Travefy library contents bulk delete** (Delete). Batch delete multiple Travefy library content items in a single request by their Travefy ids. Returns the list of deleted items; the upstream API does not document the fields of each item. Returns 403 Forbidden if any specified item does not belong to the authorized user or their team.
- **Get single Travefy library content by ID** (Get). Get a single Travefy library content item by id. Returns the item record (upstream SavedIdeaApiDisplay) including its id. Returns 403 Forbidden if the item does not belong to the authorized user or their team. Required: id.
- **Update a Travefy library content by ID** (Update). Update an existing Travefy library content item by id. Body: the updated SavedIdeaApiDisplay values (see the Travefy API docs for the full field list). Returns the updated item record including its id. Required: id.
- **Delete a Travefy library content by ID** (Delete). Delete a single library content item in Travefy by its Travefy ID. Returns the deleted library content item, including its id. Returns 403 Forbidden if the item does not belong to the authorized user or their team. Required: id.
- **List all Travefy library events** (List). List Travefy library event templates accessible to the authorized user. By default only templates created by the user are returned. Returns for each template: id, IsActive.
- **Create a Travefy library event** (Create). Create a Travefy library event template for the authorized user; if the user belongs to a team, the template is also accessible to team members. Returns the created template: id, IsActive.
- **Get single Travefy library event by ID** (Get). Get a single Travefy library event template by its Travefy ID. Returns the template's id and IsActive status. Required: id.
- **Update a Travefy library event by ID** (Update). Update a Travefy library event template by id. Setting IsActive to false deactivates (soft-deletes) the template. Returns the updated template: id, IsActive. Required: id.
- **Delete a Travefy library event by ID** (Delete). Delete a Travefy library event template by id — the template is soft-deleted (deactivated), not permanently removed. Returns the deactivated event: id, IsActive. Required: id.
- **List all Travefy secure echos** (List). Send a secure echo request to verify your Travefy API connection and key setup; a 200 OK response confirms the platform's API keys are working. Returns an opaque JSON acknowledgement whose body fields are not documented upstream. No additional request parameters.
- **List all Travefy codes 200 s** (List). Test the Travefy API's 200 status code endpoint to verify connectivity and correct response handling. Returns an HTTP 200 OK response; the JSON body shape is not documented upstream, so no response fields are enumerated.
- **List all Travefy codes 400 s** (List). Send a GET request to Travefy's 400 status-code endpoint (StatusCodes group). No query or body parameters are required. Returns a 200 response with a JSON body whose field structure is not documented upstream.
- **Create a Travefy codes 400** (Create). Send a POST request to Travefy's 400 status-code endpoint (StatusCodes group). No request body fields are documented for this call. Returns a 200 response with a JSON body whose field structure is not documented upstream.
- **List all Travefy codes 401 s** (List). Trigger the 401 status-code test endpoint in Travefy's StatusCodes group to exercise how your client handles unauthorized responses. Takes no parameters and returns an empty response body with no documented fields.
- **List all Travefy codes 401 as** (List). Retrieve a sample 401a status-code response from Travefy's status-code reference endpoints. Returns a 200 OK with a JSON body whose fields are not documented upstream, so the payload shape is opaque. No request parameters required.
- **List all Travefy codes 403 s** (List). Call Travefy's StatusCodes test endpoint for the 403 code. Returns a JSON payload whose fields are not documented upstream. No query or body parameters are required.
- **List all Travefy codes 404 s** (List). Trigger Travefy's 404 status-code diagnostic endpoint to inspect how the API surfaces Not Found responses. Returns a JSON payload whose field-level shape the upstream documentation does not enumerate.
- **List all Travefy codes 404 as** (List). Get the 404a status-code response from travefy. Returns a 200 OK response with an unspecified JSON body — no response fields are documented upstream. No caller-supplied parameters are required.
- **List all Travefy codes 500 s** (List). Get the 500 status-code sample from Travefy's StatusCodes endpoints. Returns a 200 OK response with a JSON body whose fields are not documented upstream, so the payload is treated as opaque. Requires no caller-supplied query or body parameters.
- **List all Travefy codes unauthorizedresults** (List). Get the unauthorized-result status code response from Travefy's StatusCodes endpoints. Returns a JSON payload whose body shape is not documented upstream; treat the response as opaque. No required parameters.
- **List all Travefy codes throw exceptions** (List). Trigger a test exception in Travefy to verify your platform's error handling. No request parameters are required; the documented 200 OK response carries no body.
- **List all Travefy codes status code objects** (List). List status code objects in Travefy. Returns records with id and attributes; the remaining fields are not enumerated in Travefy's developer documentation. Takes no query or body parameters.
- **List all Travefy codes status codes** (List). List Travefy status codes. Returns an opaque JSON response whose field set is not documented upstream. No query parameters are required.
- **Travefy codes validate trips validate trip** (Validate). Validate a trip payload against Travefy's trip rules before creating it. Expects the same trip object schema used by trip creation endpoints. Returns a 200 OK response whose body is not specified by Travefy's documentation.
- **List all Travefy trip days** (List). List all trip days on the authorized Travefy trip, ordered by Ordinal, including both regular itinerary days and the supplemental Info & Documents day. Returns days with id, TripId, Date, Ordinal, IsSupplemental, and IsActive.
- **Create a Travefy trip day** (Create). Create a trip day on the authorized Travefy trip. Returns the created day with id, TripId, Date, Ordinal, IsSupplemental, and IsActive. IsSupplemental defaults to false, and only one supplemental Info & Documents day is allowed per trip — a second returns a 400 error.
- **Get single Travefy trip day by ID** (Get). Get a single trip day by its Travefy id on the authorized trip. Returns the day with id, TripId, Date, Ordinal, IsSupplemental, and IsActive. Required: id.
- ...and 38 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
