Koskamo

AlgoTrips MCP

An official MCP server by AlgoTrips that allows AI assistants to plan day-by-day trips with live prices for flights, hotels, activities, and transfers. It enables users to check trip readiness, view existing trips, and access destination facts, though actual booking and payment must be done on the AlgoTrips website.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

AlgoTrips MCP logo, by AlgoTripsVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by AlgoTrips
You need:Sign in with your AlgoTrips account (email and a one-time code)Each new trip counts toward your plan’s monthly trips (3 on the free plan)
MCP endpoint (Streamable HTTP)
https://api.algotrips.com/mcp
Vendor documentation

What its tools do

5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

Can change data (1)

5 of 5 have a description · 5 of 5 declare behavior hints · 4 of 4 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to algotrips.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Plan a day-by-day trip with live prices
  • Check if a trip plan is ready
  • View existing trips in account
  • Get destination facts and guides

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
algotrips 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Plan and price real trips with AlgoTrips: facts about destinations, and, once the person signs in, full trips with live prices. Use plan_trip when the person wants a real, priced trip built (flights, hotels, activities and transfers). Before calling it, confirm with the person: the cities and nights in each, the exact start date (a month alone is not enough; given only a month, plan_trip suggests a day to confirm with the person), how many adults, each child's age, and the home city they fly from. Do not guess any of these. Pass the kind of hotel (hotelStars) and what they enjoy (interests) when the person has said so; leave hotelStars out when the person has no preference, and then pass choicesConfirmed true. When the person has given a budget, send it in budgetInr as a whole number of Indian rupees (₹4.5 lakh = 450000); leave budgetInr out only when the person has no budget. plan_trip may answer needs_choices (after needs_date, nothing built): the budget, hotels, pace, activities, getting around and, with 2 or more cities, the city order not given yet. Show the person all of those questions in ONE message, with the default for each, then call plan_trip again with their answers, or with choicesConfirmed true when they say to use the defaults for the rest. plan_trip answers at once with a build id. The trip takes about 3 to 6 minutes, and AlgoTrips emails the person when it is ready (the price and the link), or if it could not build it, when it has their email (the plan_trip answer says so): tell the person that, and do not keep checking. Call trip_status with the build id only if the person asks, or if nothing arrives in about 10 minutes. Booking and payment happen on algotrips.com, never in this chat. Use search_flights when the person wants flights only, not a whole trip. Before calling it, confirm with the person where from, where to, the day and how many travel; do not guess the day. Show the person the options with their links and the price note. The person books and pays on algotrips.com, where the price is checked again before payment; nothing is booked or paid in this chat.

Tools

5 advertised

destination_facts — Destination facts
Advertised by the server during the last successful anonymous check.
Advertised read-only

Facts about a travel destination (a city or region) from the AlgoTrips destination guides: country, a short overview, what the full guide covers, and links to the guide and to plan a trip there when available. If the place is not found, it names close matches to try instead.

destination_facts input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "place"
  ],
  "properties": {
    "place": {
      "type": "string",
      "maxLength": 80,
      "minLength": 2,
      "description": "A city or region, for example \"Kyoto\" or \"Bali\"."
    }
  }
}
destination_facts output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "found"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "found": {
      "type": "boolean"
    },
    "guide": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "title"
        ],
        "properties": {
          "text": {
            "type": "string"
          },
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "title": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "links": {
      "type": "object",
      "properties": {
        "guide": {
          "type": "string"
        },
        "planTrip": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "country": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "hasGuide": {
      "type": "boolean"
    },
    "suggestions": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "country": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "guideSections": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false
}
destination_facts annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
my_trips — My trips
Advertised by the server during the last successful anonymous check.
Advertised read-only

The signed-in AlgoTrips account's 10 most recent trips, newest first: title, cities, dates, status and a link to open each one on AlgoTrips. Needs the person to be signed in to AlgoTrips.

my_trips input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
my_trips output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "trips"
  ],
  "properties": {
    "trips": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "cities",
          "startDate",
          "endDate",
          "status",
          "link"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "link": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "cities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "status": {
            "type": "string"
          },
          "endDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "startDate": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
my_trips annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
plan_trip — Plan a trip
Advertised by the server during the last successful anonymous check.
Open-world

Builds a full day-by-day trip with live prices in the signed-in AlgoTrips account: flights from the home city (unless gettingAround is none), hotels, activities and transfers for each city, for the cities, start date, travellers and home city given. The kind of hotel (hotelStars) and what the travellers enjoy (interests) shape the hotels and activities picked. A field name the tool does not take is refused: nothing is built, and the answer names the right field. Returns a build id at once. The trip takes about 3 to 6 minutes, and AlgoTrips emails the person when it is ready (the price and the link), or if it could not build it, when it has their email (the answer says so). With choicesConfirmed not true and any of the budget, the kind of hotel, pace, activities, getting around or (2 or more cities) the city order left out, nothing is built: the answer lists those choices with their questions and defaults. Booking and payment happen on algotrips.com. Needs the person to be signed in to AlgoTrips.

plan_trip input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "cities",
    "adults",
    "homeCity"
  ],
  "properties": {
    "pace": {
      "enum": [
        "relaxed",
        "balanced",
        "fast"
      ],
      "type": "string",
      "description": "How full each day is: relaxed, balanced or fast."
    },
    "year": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 2000,
      "description": "The year of travel, with month."
    },
    "month": {
      "type": "integer",
      "maximum": 12,
      "minimum": 1,
      "description": "The month of travel (1 to 12), when the person has no exact day yet. With month + year and no startDate nothing is built: the answer suggests a start date (suggestedStartDate)."
    },
    "adults": {
      "type": "integer",
      "maximum": 9,
      "minimum": 1,
      "description": "Adults travelling (1 to 9)."
    },
    "cities": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 80,
            "minLength": 2,
            "description": "A city to stay in, for example \"Kyoto\", or \"Kyoto, Japan\" when the name is shared."
          },
          "nights": {
            "type": "integer",
            "maximum": 14,
            "minimum": 1,
            "description": "Nights in this city (1 to 14)."
          }
        },
        "additionalProperties": {}
      },
      "maxItems": 6,
      "minItems": 1,
      "description": "The cities to stay in, in order (1 to 6)."
    },
    "homeCity": {
      "type": "string",
      "maxLength": 80,
      "minLength": 2,
      "description": "The city the travellers fly from and come back to."
    },
    "budgetInr": {
      "type": "integer",
      "maximum": 100000000,
      "minimum": 1000,
      "description": "The whole trip budget in Indian rupees, a whole number (₹4.5 lakh = 450000). Left out: a typical amount for this trip is used."
    },
    "interests": {
      "type": "array",
      "items": {
        "enum": [
          "Culture",
          "Food & Dining",
          "Art & Museums",
          "Beach",
          "Nightlife",
          "Shopping",
          "History",
          "Nature"
        ],
        "type": "string"
      },
      "maxItems": 8,
      "minItems": 1,
      "description": "What the travellers enjoy, the choices on the website: Culture, Food & Dining, Art & Museums, Beach, Nightlife, Shopping, History, Nature. Left out: a bit of everything."
    },
    "startDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The exact day the trip starts, YYYY-MM-DD. Needed to build: without it nothing is built."
    },
    "hotelStars": {
      "type": "array",
      "items": {
        "type": "integer",
        "maximum": 5,
        "minimum": 1
      },
      "maxItems": 5,
      "minItems": 1,
      "description": "The kinds of hotel the person wants, the choices on the website: 1 = hostels, 2 = value for money, 3 = 3-star (mid-range), 4 = 4-star (comfortable), 5 = 5-star (luxury). The best rated hotel of these kinds is picked. When given, it is used instead of hotelStandard. Left out: no preference for a kind of hotel."
    },
    "totalNights": {
      "type": "integer",
      "maximum": 30,
      "minimum": 1,
      "description": "Nights for the whole trip, when some cities have no nights of their own (split between them)."
    },
    "childrenAges": {
      "type": "array",
      "items": {
        "type": "integer",
        "maximum": 17,
        "minimum": 0
      },
      "maxItems": 6,
      "description": "Each child's age (0 to 17), at most 6 children."
    },
    "activityStyle": {
      "enum": [
        "mix",
        "self_guided",
        "all_inclusive"
      ],
      "type": "string",
      "description": "mix (some tours, some on your own), self_guided (mostly on your own) or all_inclusive (guided tours)."
    },
    "gettingAround": {
      "enum": [
        "auto",
        "all",
        "edge",
        "none"
      ],
      "type": "string",
      "description": "How the travellers get there and between cities, the choices on the website: auto (AlgoTrips picks a flight or road / rail for each hop), all (a flight on every hop that has one), edge (flights to the first city and home from the last, road or rail in between), none (no flights: hotels, activities and transfers only). Left out: auto."
    },
    "hotelStandard": {
      "enum": [
        "budget",
        "comfort",
        "luxury"
      ],
      "type": "string",
      "description": "Hotel standard: budget, comfort or luxury."
    },
    "keepCityOrder": {
      "type": "boolean",
      "description": "true keeps the cities in the order given. false or left out lets AlgoTrips pick the best order for flights and getting around."
    },
    "choicesConfirmed": {
      "type": "boolean",
      "description": "true: any of budgetInr, the kind of hotel (hotelStars or hotelStandard), pace, activityStyle, gettingAround and (2 or more cities) keepCityOrder left out gets its default. false or left out: with any of them left out nothing is built, and the answer (status needs_choices) lists them with a question, the allowed values and the default for each."
    }
  },
  "additionalProperties": {}
}
plan_trip output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "status",
    "message"
  ],
  "properties": {
    "link": {
      "type": "string"
    },
    "cities": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "city",
          "nights"
        ],
        "properties": {
          "city": {
            "type": "string"
          },
          "nights": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "status": {
      "enum": [
        "building",
        "refused",
        "needs_changes",
        "needs_date",
        "needs_choices"
      ],
      "type": "string"
    },
    "buildId": {
      "type": "string"
    },
    "choices": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "field",
          "question",
          "options",
          "default",
          "defaultLabel"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "default": {
            "type": [
              "string",
              "number",
              "boolean",
              "null"
            ]
          },
          "options": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "value",
                "label"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "value": {
                  "type": [
                    "string",
                    "number",
                    "boolean"
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "question": {
            "type": "string"
          },
          "defaultLabel": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "description": "The choices left out (status needs_choices): for each, the input field, a question, the allowed values and the default used when it stays out."
    },
    "message": {
      "type": "string"
    },
    "startDate": {
      "type": "string"
    },
    "suggestions": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "for",
          "names"
        ],
        "properties": {
          "for": {
            "type": "string"
          },
          "names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      }
    },
    "suggestedStartDate": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
plan_trip annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
trip_status — Trip status
Advertised by the server during the last successful anonymous check.
Advertised read-only

How a trip build is going, by its build id: while it builds, what it is working on; when it is ready, the total price, nights, hotel (with its star rating and guest score out of 10) and number of activities per city, the order of the cities and why when AlgoTrips changed it, a day-by-day outline with the flights, and the link to open and book it on AlgoTrips. Needs the person to be signed in.

trip_status input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "buildId"
  ],
  "properties": {
    "buildId": {
      "type": "string",
      "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
      "description": "The build id returned when the trip build started."
    }
  }
}
trip_status output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "status",
    "message"
  ],
  "properties": {
    "days": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "day",
          "date",
          "city",
          "items"
        ],
        "properties": {
          "day": {
            "type": "number"
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "date": {
            "type": [
              "string",
              "null"
            ]
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name",
                "partOfDay"
              ],
              "properties": {
                "name": {
                  "type": "string"
                },
                "partOfDay": {
                  "anyOf": [
                    {
                      "enum": [
                        "morning",
                        "afternoon",
                        "evening"
                      ],
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          }
        },
        "additionalProperties": false
      }
    },
    "link": {
      "type": "string"
    },
    "order": {
      "type": "object",
      "required": [
        "cities",
        "why"
      ],
      "properties": {
        "why": {
          "type": "string"
        },
        "cities": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "description": "The order the cities are visited in and why, only when AlgoTrips changed the order the person gave.",
      "additionalProperties": false
    },
    "steps": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "step",
          "state"
        ],
        "properties": {
          "step": {
            "type": "string"
          },
          "state": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "title": {
      "type": "string"
    },
    "total": {
      "type": "object",
      "required": [
        "amount",
        "currency"
      ],
      "properties": {
        "amount": {
          "type": "number"
        },
        "currency": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "cities": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "city",
          "nights",
          "hotel",
          "activities"
        ],
        "properties": {
          "city": {
            "type": "string"
          },
          "hotel": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "name",
                  "stars",
                  "guestScore",
                  "reviewCount"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "stars": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "description": "Star rating (1-5), as the trip page shows it; null when unknown."
                  },
                  "guestScore": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "description": "Guest review score out of 10; null when unknown."
                  },
                  "reviewCount": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "description": "Number of guest reviews behind the score; null when unknown."
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "nights": {
            "type": [
              "number",
              "null"
            ]
          },
          "activities": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "status": {
      "enum": [
        "building",
        "done",
        "failed",
        "not_found"
      ],
      "type": "string"
    },
    "flights": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "date",
          "from",
          "to",
          "departs",
          "arrives",
          "airline",
          "stops"
        ],
        "properties": {
          "to": {
            "type": "string"
          },
          "date": {
            "type": [
              "string",
              "null"
            ]
          },
          "from": {
            "type": "string"
          },
          "stops": {
            "type": [
              "number",
              "null"
            ]
          },
          "airline": {
            "type": [
              "string",
              "null"
            ]
          },
          "arrives": {
            "type": [
              "string",
              "null"
            ]
          },
          "departs": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "message": {
      "type": "string"
    },
    "policyLink": {
      "type": "string"
    },
    "flightsWithoutFare": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
trip_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_flights — Search flights
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Searches one-way flights on AlgoTrips for one day between two cities or airports, with current prices. Returns up to 5 options (airline, flight numbers, times, duration, stops, baggage, refund, fare and price for all passengers), each with a link to book it on AlgoTrips, and a link to see every flight. Nothing is booked or paid here. The prices are the signed-in AlgoTrips account's own; needs the person to be signed in to AlgoTrips. A city that is not found or is shared by several cities returns close matches instead (status needs_changes).

search_flights input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "from",
    "to",
    "date"
  ],
  "properties": {
    "to": {
      "type": "string",
      "maxLength": 80,
      "minLength": 2,
      "description": "Where the flight goes: a city or a 3-letter airport code, as for from."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The day of the flight, YYYY-MM-DD, from today up to 330 days ahead."
    },
    "from": {
      "type": "string",
      "maxLength": 80,
      "minLength": 2,
      "description": "Where the flight leaves from: a city (\"Mumbai\", or \"Hyderabad, India\" when the name is shared) or a 3-letter airport code (\"BOM\")."
    },
    "cabin": {
      "enum": [
        "economy",
        "premium_economy",
        "business",
        "first"
      ],
      "type": "string",
      "description": "Cabin: economy, premium_economy, business or first. Left out: every cabin."
    },
    "adults": {
      "type": "integer",
      "maximum": 9,
      "minimum": 1,
      "description": "Adults (12 and over) travelling, 1 to 9. Left out: 1."
    },
    "infants": {
      "type": "integer",
      "maximum": 4,
      "minimum": 0,
      "description": "Infants under 2 (on a lap), 0 to 4, no more than the adults."
    },
    "directOnly": {
      "type": "boolean",
      "description": "true: nonstop flights only."
    },
    "departAfter": {
      "type": "string",
      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
      "description": "The earliest departure time, HH:MM (24-hour clock, local time at the departure airport)."
    },
    "childrenAges": {
      "type": "array",
      "items": {
        "type": "integer",
        "maximum": 11,
        "minimum": 2
      },
      "maxItems": 8,
      "description": "Each child's age, 2 to 11. Adults and children together are at most 9."
    },
    "departBefore": {
      "type": "string",
      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
      "description": "The latest departure time, HH:MM (24-hour clock, local time at the departure airport)."
    },
    "preferredTime": {
      "type": "string",
      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
      "description": "A preferred departure time, HH:MM. Without departAfter or departBefore, only flights leaving within 2 hours of it are returned. The flight nearest to it is always among the options."
    }
  }
}
search_flights output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "status",
    "message"
  ],
  "properties": {
    "to": {
      "type": "object",
      "required": [
        "code",
        "city",
        "country"
      ],
      "properties": {
        "city": {
          "type": "string"
        },
        "code": {
          "type": "string"
        },
        "country": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "date": {
      "type": "string"
    },
    "from": {
      "type": "object",
      "required": [
        "code",
        "city",
        "country"
      ],
      "properties": {
        "city": {
          "type": "string"
        },
        "code": {
          "type": "string"
        },
        "country": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "party": {
      "type": "object",
      "required": [
        "adults",
        "children",
        "infants"
      ],
      "properties": {
        "adults": {
          "type": "number"
        },
        "infants": {
          "type": "number"
        },
        "children": {
          "type": "number"
        }
      },
      "description": "The travellers the search was for (adults left out = 1).",
      "additionalProperties": false
    },
    "status": {
      "enum": [
        "ok",
        "no_flights",
        "needs_changes",
        "refused"
      ],
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "options": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "airline",
          "flightNumbers",
          "from",
          "to",
          "departs",
          "arrives",
          "durationMinutes",
          "stops",
          "baggage",
          "refundable",
          "fareType",
          "price",
          "currency",
          "link"
        ],
        "properties": {
          "to": {
            "type": "object",
            "required": [
              "code",
              "city",
              "airport"
            ],
            "properties": {
              "city": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "code": {
                "type": "string"
              },
              "airport": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "additionalProperties": false
          },
          "from": {
            "type": "object",
            "required": [
              "code",
              "city",
              "airport"
            ],
            "properties": {
              "city": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "code": {
                "type": "string"
              },
              "airport": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "additionalProperties": false
          },
          "link": {
            "type": "string"
          },
          "price": {
            "type": [
              "number",
              "null"
            ],
            "description": "Every passenger together, rounded up; null when no price can be given."
          },
          "stops": {
            "type": "number"
          },
          "airline": {
            "type": "string"
          },
          "arrives": {
            "type": [
              "string",
              "null"
            ],
            "description": "Local time at the arrival airport, YYYY-MM-DDTHH:MM."
          },
          "baggage": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "checkIn",
                  "cabin"
                ],
                "properties": {
                  "cabin": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "checkIn": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "departs": {
            "type": "string",
            "description": "Local time at the departure airport, YYYY-MM-DDTHH:MM."
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "fareType": {
            "type": [
              "string",
              "null"
            ]
          },
          "refundable": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "flightNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "durationMinutes": {
            "type": [
              "number",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "priceNote": {
      "type": "string"
    },
    "suggestions": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "for",
          "names"
        ],
        "properties": {
          "for": {
            "type": "string"
          },
          "names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      }
    },
    "allFlightsLink": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
search_flights annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1054 ms
95th percentile latency
1054 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1054 ms · metadata changed · 5 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http algotrips-mcp https://api.algotrips.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add algotrips-mcp --url https://api.algotrips.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable algotrips-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "algotrips-mcp": {
      "url": "https://api.algotrips.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "algotrips-mcp": {
      "type": "streamableHttp",
      "url": "https://api.algotrips.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start algotrips-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "algotrips-mcp": {
      "type": "http",
      "url": "https://api.algotrips.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http algotrips-mcp https://api.algotrips.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://api.algotrips.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "algotrips-mcp": {
      "serverUrl": "https://api.algotrips.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like AlgoTrips MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run AlgoTrips MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing