Tourist and hotel taxes from official sources, worked out night by night for your dates and guests.
Maintained by@jimiwalters-cmyk(verified)Also a maintainer?
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
What Stay Cost Brain covers: the researched places, how the tax figures are sourced and dated, what it does not do (no room prices, no booking), and the sister services.
This tool takes no arguments.
What Stay Cost Brain covers: the researched places, how the tax figures are sourced and dated, what it does not do (no room prices, no booking), and the sister services.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}A link to live hotel and rental prices for a place or any town and the given dates and guests (Stay22, showing Booking.com, Expedia, Agoda, Vrbo and others). The person sees prices and books there; this tool returns no prices and books nothing. Stay Cost Brain may earn a commission on bookings.
| Argument | Type | Description |
|---|---|---|
| town | string | Town inside the place to search in (e.g. 'Albufeira' in the Algarve); omit for the whole place |
| place* | string | A researched place ('Lisbon', 'Algarve', 'Paris') or any town ('Quarteira', 'Funchal', 'Kyoto') |
| adults | integer | Adults staying (default 2) |
| nights | integer | Number of nights from check_in (1-60) |
| check_in | string | YYYY-MM-DD |
| child_ages | array | Age of each child on check-in, one entry per child (many taxes exempt under-12s, -16s or -18s); omit for none |
{
"type": "object",
"required": [
"place"
],
"properties": {
"town": {
"type": "string",
"description": "Town inside the place to search in (e.g. 'Albufeira' in the Algarve); omit for the whole place"
},
"place": {
"type": "string",
"description": "A researched place ('Lisbon', 'Algarve', 'Paris') or any town ('Quarteira', 'Funchal', 'Kyoto')"
},
"adults": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Adults staying (default 2)"
},
"nights": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"description": "Number of nights from check_in (1-60)"
},
"check_in": {
"type": "string",
"description": "YYYY-MM-DD"
},
"child_ages": {
"type": "array",
"items": {
"type": "integer",
"maximum": 17,
"minimum": 0
},
"description": "Age of each child on check-in, one entry per child (many taxes exempt under-12s, -16s or -18s); omit for none"
}
},
"additionalProperties": false
}Every place with a researched tourist-tax table: name, country, today's headline rate, the date it was checked, the next re-check date, the towns that set their own tax, and the page with every rate and source.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Every tourist-tax rule for one researched place: each tax with its authority, legal basis, rates by type of stay, season and area, night caps, exemptions, how it is paid, valid dates and status (verified, inferred, announced), with source links and dates.
| Argument | Type | Description |
|---|---|---|
| place* | string | A researched place ('Lisbon', 'Algarve', 'Paris') or any town ('Quarteira', 'Funchal', 'Kyoto') |
{
"type": "object",
"required": [
"place"
],
"properties": {
"place": {
"type": "string",
"description": "A researched place ('Lisbon', 'Algarve', 'Paris') or any town ('Quarteira', 'Funchal', 'Kyoto')"
}
},
"additionalProperties": false
}The tourist tax for one stay, worked out night by night: each tax that applies (regional and city parts separately), the amount or the range when the star rating or type of stay is not given, how many nights are charged, how it is paid, announced changes in force on those nights, and the official source and date for each. Accepts a researched place or any town; towns outside the researched places return researched=false. Percentage taxes need room_price_total. Residents', medical and other special exemptions are listed in `rules`, not applied.
| Argument | Type | Description |
|---|---|---|
| area | string | Area/zone code where a place has zones (e.g. Venice) |
| town | string | Town or municipality inside a region (e.g. 'Albufeira' in the Algarve) |
| place* | string | A researched place ('Lisbon', 'Algarve', 'Paris') or any town ('Quarteira', 'Funchal', 'Kyoto') |
| rooms | integer | Default 1 (for per-room taxes) |
| adults | integer | Default 2 |
| nights* | integer | Number of nights from check_in (1-60) |
| check_in* | string | YYYY-MM-DD |
| child_ages | array | Age of each child on check-in, one entry per child (many taxes exempt under-12s, -16s or -18s); omit for none |
| type_of_stay | string | Hotel stars, apartment, holiday rental, etc. |
| adults_70_plus | integer | How many of the adults are 70 or over |
| local_category | string | The authority's own category label, as returned in options |
| room_price_total | number | Room price for the whole stay, for percentage taxes |
{
"type": "object",
"required": [
"place",
"check_in",
"nights"
],
"properties": {
"area": {
"type": "string",
"description": "Area/zone code where a place has zones (e.g. Venice)"
},
"town": {
"type": "string",
"description": "Town or municipality inside a region (e.g. 'Albufeira' in the Algarve)"
},
"place": {
"type": "string",
"description": "A researched place ('Lisbon', 'Algarve', 'Paris') or any town ('Quarteira', 'Funchal', 'Kyoto')"
},
"rooms": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Default 1 (for per-room taxes)"
},
"adults": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Default 2"
},
"nights": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"description": "Number of nights from check_in (1-60)"
},
"check_in": {
"type": "string",
"description": "YYYY-MM-DD"
},
"child_ages": {
"type": "array",
"items": {
"type": "integer",
"maximum": 17,
"minimum": 0
},
"description": "Age of each child on check-in, one entry per child (many taxes exempt under-12s, -16s or -18s); omit for none"
},
"type_of_stay": {
"enum": [
"hotel_1",
"hotel_2",
"hotel_3",
"hotel_4",
"hotel_4_sup",
"hotel_5",
"hotel_5_luxury",
"apartment",
"holiday_rental",
"guesthouse",
"hostel",
"campsite",
"cruise",
"other"
],
"type": "string",
"description": "Hotel stars, apartment, holiday rental, etc."
},
"adults_70_plus": {
"type": "integer",
"maximum": 20,
"minimum": 0,
"description": "How many of the adults are 70 or over"
},
"local_category": {
"type": "string",
"description": "The authority's own category label, as returned in options"
},
"room_price_total": {
"type": "number",
"description": "Room price for the whole stay, for percentage taxes"
}
},
"additionalProperties": false
}