---
title: Travefy API Integration on Truto
slug: travefy
category: Travel
canonical: "https://truto.one/integrations/detail/travefy/"
---

# Travefy API Integration on Truto



**Category:** Travel  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 88 tools for Travefy that AI agents can call directly.

- **list_all_travefy_bookings** — 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 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 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 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 a Travefy booking by id. Returns an empty 204 response on success. Required: id.
- **list_all_travefy_contacts** — 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 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 a Travefy contact by id. Returns the contact with id, IsActive, and CreatedDate. Required: id.
- **update_a_travefy_contact_by_id** — 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 a Travefy contact by id. Returns an empty 204 response on success. Required: id.
- **list_all_travefy_contact_custom_fields** — List the custom field values set on a Travefy contact. Returns: Id. Required: contact_id.
- **travefy_contact_custom_fields_bulk_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 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 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 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 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 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 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 a custom field by id in Travefy. Returns an empty 204 response on success. Required: id.
- **list_all_travefy_echos** — 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** — 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 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 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** — 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 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 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 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 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 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 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 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 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** — 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** — 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** — 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** — 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** — 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** — 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** — 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** — 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** — 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** — 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** — 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** — 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 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 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 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 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 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 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.
- **update_a_travefy_trip_day_by_id** — Update an existing trip day on the authorized Travefy trip. Returns the updated day with id, TripId, Date, Ordinal, IsSupplemental, and IsActive. Setting IsActive to false soft-deletes the day (the last remaining regular itinerary day cannot be deactivated), and changing Date triggers flight update automation for all flight events on the trip. Required: id.
- **delete_a_travefy_trip_day_by_id** — Delete a trip day by soft-deleting it (sets IsActive to false) and return the deactivated day with id, TripId, Date, Ordinal, IsSupplemental, and IsActive. Returns 400 if the day is the supplemental Info & Documents day or the trip's last remaining regular itinerary day. Required: id.
- **list_all_travefy_trip_events** — List all trip events for the authorized trip in Travefy, across all trip days, with each event's TripIdeas attachments included. Returns: Id, Name, Description, id.
- **create_a_travefy_trip_event** — Create a trip event on the authorized trip in Travefy. Returns the created event including id, TripDayId, EventType, Ordinal, and TripIdeas. Requires TripDayId and EventType (only type 12, Info, may be used on a supplemental Info & Documents day); Ordinal, if provided, must be strictly between 0 and 1.
- **get_single_travefy_trip_event_by_id** — Get a single trip event by its Travefy id. Returns the event including id, TripDayId, EventType, Ordinal, TripIdeas, and IsActive. The event must belong to a trip day on the authorized trip. Required: id.
- **update_a_travefy_trip_event_by_id** — Update an existing trip event in Travefy by id. Returns the updated event including id, TripDayId, EventType, Ordinal, and TripIdeas. Included TripIdeas are synced against the event's existing ideas; omitted TripIdeas are left unchanged. Required: id.
- **delete_a_travefy_trip_event_by_id** — Soft-delete a trip event in Travefy by id: the event is deactivated by setting IsActive to false, not removed. Returns the deactivated event including id, TripDayId, EventType, Ordinal, TripIdeas, and IsActive. Required: id.
- **list_all_travefy_trips** — List all Travefy trips accessible to the authenticated user. Returns trip records with id, Name, TripCoverPhotoUrl, Status, PartnerIdentifier, and TripDays. Pass partnerIdentifier to retrieve a single trip by your platform's unique identifier; set includeProposalDetails to true to add proposal approval details.
- **create_a_travefy_trip** — Create a Travefy trip, optionally passing TripDays and TripEvents to build a full itinerary in a single request. Returns the created trip with id, Name, TripCoverPhotoUrl, Status, PartnerIdentifier, and TripDays. PartnerIdentifier must be unique across your platform; IsSupplemental is required on each TripDay.
- **get_single_travefy_trip_by_id** — Get a single Travefy trip by its encoded shared itinerary path (e.g. trip/6yw9rqtqc4lwqz2avkc25ylgmd3yzfq). Returns the trip with id, Name, TripCoverPhotoUrl, Status, PartnerIdentifier, and TripDays. Required: id.
- **update_a_travefy_trip_by_id** — Update a Travefy trip's metadata and itinerary, including reordering days and events. Returns the updated trip with id, Name, TripCoverPhotoUrl, Status, PartnerIdentifier, and TripDays. Omit TripDays to leave days untouched; an empty TripDays array deletes all days; set Id on children to update them and IsActive to false to remove them. Required: id.
- **delete_a_travefy_trip_by_id** — Delete a Travefy trip by id. By default the trip is archived (soft-deleted) and remains accessible via the API; pass hard=true to permanently deactivate it instead. Returns the archived trip with id, Name, Status, PartnerIdentifier, and TripDays. Required: id.
- **travefy_trips_approve_proposal** — Approve a Travefy trip proposal. Records the proposal approval with the signer's name, email address, and IP address and marks the proposal as approved. Returns: Id, VerificationKey, ShareUrlPath, Name, Active, CreatedOn, InviteMessage, TripCoverPhotoUrl, EstimatedCost, IsProposal, IsCostPerPerson, IsChatDisabled, IsPdfEnabled, IsAppEnabled, PublishingStatus, TripDays, SecondaryLogoUrl,…. Required: trip_id.
- **travefy_trips_change_trip_type** — Change a Travefy trip's type by converting it to or from a proposal; a converted trip can be reviewed and approved by the traveler. Returns the updated trip: id, Status, PartnerIdentifier, TripDays, TripEvents, VerificationKey. Required: trip_id.
- **travefy_trips_copy** — Copy a Travefy trip. Creates a new trip with " - Copy" appended to the name, copying its TripDays, TripEvents, and TripIdeas (TripUsers are not copied). Returns the new trip: id, Status, PartnerIdentifier, TripDays, TripEvents, VerificationKey. Required: trip_id, key.
- **list_all_travefy_users** — List all Travefy users associated with your platform. Returns: id. A lookup by authorization code or partner identifier returns a single-item list, and an expired authorization code returns 410 Gone.
- **create_a_travefy_user** — Create a Travefy user on your platform and provision a Travefy agent account for them. Returns the created user including id, Username, AccessToken, and PublicKey. Returns 401 if the email already belongs to a Travefy user not yet linked to your platform.
- **get_single_travefy_user_by_id** — Get a single Travefy user by their Travefy user ID. Returns the user including id, Username, FullName, and ImageUrl. The user must be associated with your platform. Required: id.
- **update_a_travefy_user_by_id** — Update profile fields for an existing Travefy platform user by id. Currently only FullName, ImageUrl, and Username (email) can be updated. Returns the updated user including id, Username, FullName, and ImageUrl. Required: id.
- **delete_a_travefy_user_by_id** — Delete a Travefy user by id, removing them from your platform. Returns the deactivated user profile with Id, FullName, Username, ImageUrl, AccessToken, and PublicKey. Required: id.
- **travefy_trip_users_bulk_update** — Batch update the roles of multiple trip users on a Travefy trip in a single request. The trip organizer cannot be updated, the Organizer role cannot be assigned, and setting a user's role to Uninvited deactivates (removes) them from the trip. Returns an empty response on success. Required: trip_id.
- **delete_a_travefy_trip_user_by_id** — Remove a user from a Travefy trip by deactivating their trip membership. Returns the deactivated trip user: Id, TripId, UserId, Role, and User (full name and email). The trip host (organizer) cannot be removed. Required: id, trip_id.
- **get_single_travefy_trip_user_by_id** — Get a single Travefy trip user (member) by id. Returns: Id, TripId, UserId, Role, User. Required: id, trip_id.
- **travefy_trip_users_invite** — Invite one or more users to a Travefy trip by email. No invitation email is sent; unknown emails get a new Travefy user account automatically, duplicate emails in one request are rejected, and the Organizer role cannot be assigned. Returns an empty response on success. Required: trip_id.
- **list_all_travefy_trip_users** — List all Travefy trip users (members) on a trip, including each member's role and user information. Returns: Id, TripId, UserId, Role, User. Required: trip_id.
- **update_a_travefy_trip_user_by_id** — Update an existing trip user's role in a Travefy trip. Returns the updated trip user record including Id, Email, FullName, and Role. The trip organizer cannot be updated and the Organizer role cannot be assigned; setting Role to Uninvited deactivates (removes) the user from the trip. Required: id, trip_id.
- **travefy_webhook_documentation_booking_created** — View the Travefy booking.created webhook payload contract. Returns: AppId, EventType, Payload, Timestamp. This endpoint exists for API documentation only.
- **travefy_webhook_documentation_booking_deleted** — View the Travefy booking.deleted webhook payload contract. Returns: AppId, EventType, Payload, Timestamp. This endpoint exists for API documentation only.
- **travefy_webhook_documentation_booking_synced** — View the Travefy booking.synced webhook payload contract. Returns: AppId, EventType, Payload, Timestamp. This endpoint exists for API documentation only.
- **travefy_webhook_documentation_booking_updated** — View the Travefy booking.updated webhook payload contract. Returns: AppId, EventType, Payload, Timestamp. This endpoint exists for API documentation only.
- **travefy_webhook_documentation_booking_v_2_created** — View the Travefy v2.booking.created webhook payload contract. Returns: AppId, EventType, Payload, Timestamp. This endpoint exists for API documentation only.
- **travefy_webhook_documentation_booking_v_2_deleted** — Get the v2.booking.deleted webhook payload contract for Travefy bookings. This documentation-only endpoint takes no caller inputs and returns the event envelope: AppId, EventType, a booking Payload (agent, supplier, items, tickets, travelers), and Timestamp.
- **travefy_webhook_documentation_booking_v_2_synced** — Get the v2.booking.synced webhook payload contract for Travefy bookings. This documentation-only endpoint takes no caller inputs and returns the event envelope: AppId, EventType, a booking Payload (agent, supplier, items, tickets, travelers), and Timestamp.
- **travefy_webhook_documentation_booking_v_2_updated** — Get the v2.booking.updated webhook payload contract for Travefy bookings. This documentation-only endpoint takes no caller inputs and returns the event envelope: AppId, EventType, a booking Payload (agent, supplier, items, tickets, travelers), and Timestamp.
- **travefy_webhook_documentation_contact_created** — Get the contact.created webhook payload contract for Travefy contacts. This documentation-only endpoint returns the webhook payload object with webhook-model-specific fields and takes no caller inputs.
- **travefy_webhook_documentation_contact_deleted** — Get the contact.deleted webhook payload contract for Travefy contacts. This documentation-only endpoint returns the webhook payload object with webhook-model-specific fields and takes no caller inputs.
- **travefy_webhook_documentation_contact_synced** — View the payload contract of the Travefy contact.synced webhook. This documentation-only endpoint returns the webhook payload Travefy sends when a contact sync completes; the payload's field shape is defined by Travefy's webhook contract and is not enumerated in the docs. No required parameters.
- **travefy_webhook_documentation_contact_updated** — View the payload contract of the Travefy contact.updated webhook. This documentation-only endpoint returns the webhook payload Travefy sends when a contact is updated; the payload's field shape is defined by Travefy's webhook contract and is not enumerated in the docs. No required parameters.

## How it works

1. **Link your customer's Travefy account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Travefy.** The Proxy API is a 1-to-1 mapping of the Travefy API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Push bookings from your platform into Travefy trips** — Let travel suppliers, marketplaces, and booking engines export flights, tours, and lodging directly into an advisor's Travefy itinerary, so advisors never have to copy-paste trip details into client-facing proposals.
- **Sync advisor CRM contacts bi-directionally** — Keep traveler profiles, loyalty programs, and custom preferences aligned between your CRM or back-office tool and Travefy, so advisors work off a single source of truth for every client.
- **Automate commission tracking from confirmed bookings** — Subscribe to Travefy booking webhooks to pull supplier, cost, and traveler data into your accounting or commission-tracking SaaS the moment an advisor confirms a booking, eliminating double data entry.
- **Auto-provision agents for host agency networks** — Programmatically create Travefy user accounts and push standardized library content when a new agent is onboarded in your host agency portal, replacing hours of manual IT setup per contractor.
- **Trigger lifecycle marketing off trip and traveler data** — Use Travefy trip dates, contact custom fields, and webhook events to fire personalized campaigns like pre-departure reminders, welcome-home messages, or passport renewal nudges from your marketing automation platform.

## What you can build

- **One-click trip export to Travefy** — Generate a full Travefy trip with chronological days and rich events (flights, activities, lodging) from a booking held in your platform using create_a_travefy_trip, create_a_travefy_trip_day, and create_a_travefy_trip_event.
- **Real-time booking sync via webhooks** — Ingest booking.created, booking.updated, booking.synced, and booking.deleted events to keep back-office records, invoicing, and commission ledgers up to date without polling.
- **Two-way contact and traveler preference sync** — Read and write Travefy contacts along with their traveler_preferences, loyalty_programs, and custom_fields so traveler data stays consistent across your CRM and the advisor's Travefy account.
- **Proposal lifecycle automation** — Convert trips into proposals with travefy_trips_change_trip_type and track client sign-off via travefy_trips_approve_proposal to advance deals in your pipeline automatically.
- **Library content provisioning** — Inject branded templates, compliance documents, and supplier marketing materials into an advisor's Travefy library using create_a_travefy_library_content and create_a_travefy_library_event.
- **Agent seat provisioning and trip collaboration** — Create Travefy users on demand with create_a_travefy_user and invite them onto specific trips via travefy_trip_users_invite as part of your onboarding or team management flow.

## FAQs

### What CRUD operations are supported on Travefy trips and bookings?

Full CRUD is available for trips, trip days, trip events, bookings, contacts, users, library contents, and library events. You can list, create, read, update, and delete each of these resources through Truto's Travefy tools.

### How do we get real-time updates when advisors change data in Travefy?

Truto surfaces Travefy's native webhooks for booking.created, booking.updated, booking.synced, booking.deleted (including v2 variants), and contact.created, contact.updated, contact.synced, contact.deleted. Subscribe through Truto to react to changes without polling.

### Can we sync custom fields and travel-specific data on contacts?

Yes. Travefy contacts expose traveler_preferences, loyalty_programs, and custom_fields. You can list and bulk update contact custom fields, and manage custom field definitions with full CRUD via the contacts custom fields endpoints.

### Does the integration support proposal workflows?

Yes. You can convert a trip into a proposal using the change trip type action and check or trigger proposal approvals through the approve proposal action, which is useful for pipeline automation and client sign-off tracking.

### Can we provision new Travefy user accounts programmatically?

Yes. The users endpoints support creating, updating, reading, and deleting Travefy users, and trip-users endpoints let you invite collaborators to specific trips and bulk manage their access—ideal for host agency auto-provisioning.

### How does authentication work for our end users?

Truto handles the Travefy authentication flow, token storage, and refresh on your behalf. Your end users connect their Travefy account once through Truto's connect flow, and your app calls a unified set of tools without managing credentials directly.

## Related reading

- [Connect Travefy to ChatGPT: Manage Itineraries, Trips, and Bookings](https://truto.one/blog/connect-travefy-to-chatgpt-manage-itineraries-trips-and-bookings/) — Learn how to connect Travefy to ChatGPT using an MCP server. Automate itinerary creation, track bookings, and manage travel operations via natural language.
- [Connect Travefy to Claude: Sync Travel Contacts, Ideas, and Trips](https://truto.one/blog/connect-travefy-to-claude-sync-travel-contacts-ideas-and-trips/) — A complete engineering guide to building a managed Travefy MCP server for Claude. Learn how to automate itineraries, trip approvals, and travel contacts.
- [Connect Travefy to AI Agents: Automate Proposals and Trip Logistics](https://truto.one/blog/connect-travefy-to-ai-agents-automate-proposals-and-trip-logistics/) — Learn how to connect Travefy to AI Agents using Truto's /tools endpoint. Fetch tools, automate travel proposals, and build reliable multi-step workflows.
