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.
https://api.algotrips.com/mcpWhat its tools do
5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (4)
Can change data (1)
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
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
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
5 advertised
destination_facts — Destination facts
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.
{
"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\"."
}
}
}{
"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
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}my_trips — My trips
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"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
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}plan_trip — Plan a trip
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.
{
"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": {}
}{
"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
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}trip_status — Trip status
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.
{
"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."
}
}
}{
"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
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}search_flights — Search flights
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).
{
"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."
}
}
}{
"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
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
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.
- 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.
Claude Code
claude mcp add --transport http algotrips-mcp https://api.algotrips.com/mcpCodex
codex mcp add algotrips-mcp --url https://api.algotrips.com/mcpCursor
{
"mcpServers": {
"algotrips-mcp": {
"url": "https://api.algotrips.com/mcp"
}
}
}Cline
{
"mcpServers": {
"algotrips-mcp": {
"type": "streamableHttp",
"url": "https://api.algotrips.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"algotrips-mcp": {
"type": "http",
"url": "https://api.algotrips.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http algotrips-mcp https://api.algotrips.com/mcpClaude Desktop
https://api.algotrips.com/mcpWindsurf
{
"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.
Other productivity and knowledge servers
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.