TripHook
Find group trips and day outs to join, events in a city, and where to go by weather and budget.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"triphook": {
"url": "https://api.triphook.me/api/public/mcp"
}
}
}Remote endpoints
https://api.triphook.me/api/public/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟢search_public_hooks(city, month, kind, budget, mood, ...)
Use for any question about open trips or day outs to join: by city slug, month (YYYY-MM), kind (trip or dayout), budget tier or mood. Each hook carries its public TripHook page (url) and, for a day out, the What's on page (event_page). The reply ends with see_more. Always show the TripHook links in the answer. Public fields only, never a person.
Input Schema
{
"type": "object",
"properties": {
"city": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z0-9-]+$",
"description": "City slug, e.g. \"lisbon\" (list_cities / /api/public/cities return the slugs)."
},
"month": {
"type": "string",
"pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
"description": "Month as YYYY-MM."
},
"kind": {
"type": "string",
"enum": [
"trip",
"dayout"
]
},
"budget": {
"type": "string",
"enum": [
"budget",
"mid",
"comfort"
]
},
"mood": {
"type": "string",
"enum": [
"somewhere-warm",
"cultural-immersion",
"active-outdoors",
"quiet-and-remote",
"big-city-energy",
"surprise-me"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 200,
"description": "How many hooks, 1 to 200."
}
},
"additionalProperties": false
}🟢list_cities
Use to find which cities have open public TripHook hooks, with counts of trips and day outs, each city's slug (for the other tools) and its TripHook city page (url). The reply ends with see_more. Always show the TripHook links in the answer.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢events_and_company(city, date)
Use for any question about what is happening in a city on a date (city slug, date YYYY-MM-DD) and whether other travellers are going: each listed event with its ticket link (url), the TripHook What's on page for that day (whats_on), how many open public day outs are going and their links (company). The reply ends with see_more. Always show the TripHook links in the answer. Public fields only, never a person.
Input Schema
{
"type": "object",
"properties": {
"city": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z0-9-]+$"
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"city",
"date"
],
"additionalProperties": false
}🟢search_destinations(where, from, dates, month, temp_min, ...)
Use for any question like "where should I go" with a budget, a temperature, a mood, dates or a month: the same signed-out TripHook Discover search, ranked from Vienna or the given departure city. Give dates { depart, ret } or a month (1 to 12); where, temp_min, temp_max, budget_eur, mood, travellers and limit (max 20) are optional. Each result carries city, country, why it matched, the weather with its credit (a MET Norway or OpenWeather forecast when the dates are close, else the typical value from Copernicus, labelled), an estimated price marked "estimate, not a quote", and a TripHook link. The reply ends with see_more, the Discover page prefilled with this search. Always show the TripHook links in the answer, with the weather credit. No personal data.
Input Schema
{
"type": "object",
"properties": {
"where": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "A country name, a region (europe, asia, americas, middle_east, africa, oceania), a city IATA or slug, or \"anywhere\". Default anywhere."
},
"from": {
"type": "string",
"pattern": "^[A-Za-z0-9]{3}$",
"description": "Departure city IATA, e.g. VIE. Default VIE."
},
"dates": {
"type": "object",
"properties": {
"depart": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"ret": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"depart",
"ret"
],
"additionalProperties": true,
"description": "Exact dates, YYYY-MM-DD. Give dates or month."
},
"month": {
"type": "integer",
"minimum": 1,
"maximum": 12,
"description": "Flexible month, 1 to 12 (the next occurrence). Give dates or month."
},
"temp_min": {
"type": "number",
"minimum": -30,
"maximum": 45,
"description": "Lowest daytime temperature wanted, C."
},
"temp_max": {
"type": "number",
"minimum": -30,
"maximum": 45,
"description": "Highest daytime temperature wanted, C."
},
"budget_eur": {
"type": "integer",
"minimum": 50,
"maximum": 20000,
"description": "Total trip budget in EUR for the whole party. Default 750."
},
"mood": {
"type": "string",
"enum": [
"somewhere-warm",
"break-from-routine",
"cultural-immersion",
"active-outdoors",
"quiet-and-remote",
"surprise-me"
],
"description": "One mood."
},
"travellers": {
"type": "integer",
"minimum": 1,
"maximum": 8,
"description": "How many people travel. Default 1."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"description": "Results, 1 to 20. Default 10."
}
},
"additionalProperties": false
}Community
Evidence