MCP server

Plan trips from your agent.

The Tucanoo MCP server lets your agent create, read and edit day-by-day itineraries. The trip lives in Tucanoo, with a map, times and offline access; places come from our map, never made up.

Server URL
https://tucanoo.app/mcp
Streamable HTTP · OAuth 2.1 · tucanoo.app
Connect your account

Free to start. Sign in with Google or Apple.

claude mcp add --transport http tucanoo https://tucanoo.app/mcp
  1. 1Run the command in your terminal.
  2. 2In Claude Code, type /mcp and sign in. Or run claude mcp login from the shell.

Tokens are stored and refreshed by Claude Code.

Give this to your agent

Paste it once after connecting. It tells the agent how to use the tools well.

You have the Tucanoo MCP server connected (https://tucanoo.app/mcp). Use it to plan my trips. Call get_account first to see what my plan allows. Read a trip with list_trips and get_trip before changing it. Never pick places yourself: add stops by name with add_stops and let Tucanoo match them to real places. Always send me the trip link.

Then ask

Create a trip to Lisbon from May 12 to 16 for two of us and send me the link.

Add Pena Palace at 10 am on day 3 of my Lisbon trip.

Which of my trips is next, and what is on its first day?

Tools

Read straight from the server definitions: the same list your agent gets from tools/list. Names and fields are in English; your agent talks to you in your language.

  • get_accountAccount and plan · read only
    Shows the connected Tucanoo account: whether it has the Pro plan, how many itinerary generations through the assistant are left this year, and what the free plan allows. Call it before generating an itinerary or using AI edits.
    Outputplangenerations_left_this_yearpro_url
    Free · Pro
  • list_tripsList trips · read only
    Lists the trips of the connected person (as owner or companion), with dates and the link to open each one in the app.
    Outputtrips[]
    Free · Pro
  • get_tripGet trip · read only
    Shows one trip: dates, travelers and every day with its stops (time and title). Use get_day for the full details of a day, including stop ids for editing.
    Inputtrip_id
    Outputdays[]itinerary_statusurl
    Free · Pro
  • get_dayGet day · read only
    Shows one day of a trip with every stop in order: id, time, duration, category, note, place and who added it. Stops added by an assistant without a place from our map are marked verified_place: false.
    Inputtrip_idday
    Outputstops[]summaryurl
    Free · Pro
  • create_tripCreate trip
    Creates a trip from a description in the person's own words ("10 days in Japan in April, Tokyo and Kyoto, with my wife"), plus dates and travelers when you know them. The trip starts empty; with generate_itinerary: true and the Pro plan, we also build the day-by-day itinerary (we pick real places, never you). On the free plan the person gets the itinerary for free by opening the trip in the app, or you can add stops by hand with add_stops.Free: the trip starts empty. Pro: can build the itinerary right away.
    Inputdescriptionstart_date?end_date?adults?children?generate_itinerary?request_id?
    Outputtrip_idurlitinerary_status
    Free · Pro
  • generate_itineraryGenerate itinerary
    Pro only (6 per year through the assistant): builds the day-by-day itinerary of a trip that has no stops yet. We pick the places from our map; it takes about two minutes, then read it with get_trip.
    Inputtrip_id
    Outputitinerary_statusgenerations_left_this_year
    Pro
  • get_pro_linkPro plan link · read only
    Returns the link where the person buys the Pro plan (itinerary generation and AI edits through the assistant, among other things). Payment happens on our site, never in the chat.
    Outputplanpro_url
    Free · Pro
  • propose_changePropose a change
    Pro only. Sends a change request to the trip chat in the person's words ("swap the museum on day 2 for something outdoors", "move dinner to 8pm"). Nothing changes yet: you get a summary and a preview. If it returns choices, ask the person and pass the chosen numbers to apply_change; otherwise call apply_change to confirm.
    Inputtrip_idrequest
    Outputsummarypreviewchoicescan_apply
    Pro
  • apply_changeApply the proposed change
    Pro only. Applies the last change proposed with propose_change for this trip. When the proposal had choices, pass the numbers the person picked.
    Inputtrip_idchoices?
    Outputapplieddroppedurl
    Pro
  • add_stopsAdd stops
    Adds up to 20 stops to a trip by hand, on any days, in one call (free plan included). Each stop with a place is matched against our map; when we do not have it, the stop is still saved, marked as added by you and not verified. The stops show your name in the app. On the Pro plan, bookings the person already has (flight, hotel, tickets) go through add_booking instead; on the free plan, write them in as stops here. On a trip that has no itinerary yet, the first stop added by hand means the app will no longer build one: ask the person first and send build_by_hand: true.Free: places from our map. Pro: also checked on Google.
    Inputtrip_idstopsbuild_by_hand?
    Outputresults[]url
    Free · Pro
  • update_stopEdit a stop
    Changes the title, time, duration or note of one stop (get the stop_id from get_day). Fields you leave out stay as they are. Changing the time moves the following stops when they no longer fit.
    Inputtrip_idstop_idtitle?time?duration_min?note?
    Outputchangedfollowing_stops_moved
    Free · Pro
  • move_stopMove a stop
    Moves one stop to another position in its day (position 1 = first) or to another day (it keeps its time and goes where that time falls). Stops with a booked time do not move.
    Inputtrip_idstop_idto_day?to_position?
    Outputchangedmoved_to_day
    Free · Pro
  • remove_stopsRemove stops
    Takes stops out of the trip (the person can bring them back in the app). Get the stop ids from get_day.
    Inputtrip_idstop_ids
    Outputresults[]
    Free · Pro
  • add_bookingAdd a booking
    Pro only. Saves a booking the person already has (flight, hotel, ticket, train, rental car) from its details, for example from a confirmation email: it goes to the trip vault with the confirmation code (shown offline on the day of travel) and into the trip bookings. Trains, rental cars, flights between cities and tickets also show up as a stop on their day; a stop that is already there is marked as booked instead of repeated. Send only what the booking says; leave unknown fields out.
    Inputtrip_idtypetitle?confirmation_code?airline?flight_number?from?to?direction?start_datestart_time?end_date?end_time?place?address?city?names?details?
    Outputbooking_idin_trip_bookingsstopvault_url
    Pro
  • next_stopNext stop · read only
    During the trip: the stop happening now (if any) and the next one, from the trip Buddy, by the local time at the destination. Before the trip, the first stop of day 1. Use route_to_next for how to get there.
    Inputtrip_id
    Outputnownextphase
    Free · Pro
  • route_to_nextRoute to the next stop · read only
    How to get to the next stop of the day: from the previous stop or the hotel, the travel mode, minutes, when to leave and, for public transport, the line, direction and stations when we have them. Same route the trip Buddy shows.
    Inputtrip_id
    Outputroutenote
    Free · Pro
  • buddy_statusTrip status · read only
    Where the trip stands, from the trip Buddy: before, during or after the trip, today's day number, the stops already done and still to go today, and what needs attention: stops to book in advance and stops that passed without being marked as visited.
    Inputtrip_id
    Outputphaseday_numberleft_todayto_book_in_advancemissed
    Free · Pro
  • share_linkShare link
    Returns the public read-only link of the trip itinerary (day by day, places, times and where they sleep; no bookings vault, no chat, no editing), creating it the first time. Anyone with the link can see it; it also prints or saves as PDF.
    Inputtrip_id
    Outputshare_url
    Free · Pro
  • undoUndo
    Without stop_ids: undoes the last change applied through the trip chat (apply_change) by this person, within 30 minutes and only if nobody changed those stops since. With stop_ids: brings back stops that were removed (from remove_stops, the chat or the app), in their old place. When there is nothing to undo, the answer lists the recently removed stops.
    Inputtrip_idstop_ids?
    Outputundoneresults[]removed_stops
    Free · Pro

Rules the server keeps

Real places only
We build itineraries from real places. Stops your agent adds by name are matched against our map (on Pro, also Google); anything not found is saved as the person’s own stop, labeled "not checked".
Labeled
Every stop the agent adds or changes shows its name in the app ("Added by Claude").
Your trips only
The token reads and edits the trips of the person who signed in. No Vault documents, no payments.
Text stays with us
What the agent sends is stored in our database like what the person types, and never goes to our analytics tool.
Errors your agent can relay
Errors come in English for the agent, plus message_for_user in the account’s language. When the app would ask something (a city with two matches, missing dates), the tool returns the questions and a link to finish in the app.
Same checks as the app
Each tool runs the same action the app runs, with the same access checks and AI limits.

Free and Pro

Free

  • Create empty trips
  • Read trips and days
  • Add, edit, move and remove stops, with places from our map

Pro

Annual Pro, with a one-time payment for the year

  • Everything in Free
  • Build itineraries from the agent: 6 a year
  • Change a trip through the trip chat (propose_change, apply_change)
  • Places checked on Google

On a free account, Pro tools answer with the upgrade link (get_pro_link). In the app, building the itinerary works as it always has.

Auth

Tucanoo is its own OAuth 2.1 authorization server. Clients with dynamic registration connect with just the URL.

Server
https://tucanoo.app/mcpStreamable HTTP, stateless, JSON responses. Without a token: 401 pointing to the resource metadata.
Protected resource
/.well-known/oauth-protected-resource/mcpRFC 9728
Authorization server
/.well-known/oauth-authorization-serverRFC 8414
Registration
/oauth/registerDynamic (RFC 7591). Public clients; https redirect, or http on localhost.
Authorize
/oauth/authorizePKCE S256 required. The person signs in with Google or Apple and taps Allow.
Token
/oauth/tokenAccess token: 1 hour. Refresh token: 90 days, rotated on every use.
Revoke
/oauth/revokeRFC 7009. Disconnecting in the app revokes too.
Scope
tripsOne scope: the person’s trips.

No browser sign in inside the agent?

  1. 1In Tucanoo, open You, then Connected assistants.
  2. 2Tap Get a code: 6 digits, valid for 10 minutes, once.
  3. 3Type it on the connection screen and tap Allow.

Connect your account.

Sign in and open Connected assistants: the server URL, the pairing code and your connected agents are there.

Connect your account

Free to start. Sign in with Google or Apple.

Terms · Privacy ·

TUCANOO VENTURES DESENVOLVIMENTO DE SOFTWARE CUSTOMIZAVEL LTDA · CNPJ 69.619.489/0001-80 · Rua Visconde de Pirajá, 414, sala 718, Ipanema, Rio de Janeiro, RJ, CEP 22410-002