Stay Cost Brain
Server Details
Tourist and hotel taxes from official sources, worked out night by night for your dates and guests.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- jimiwalters-cmyk/stay-cost-brain-mcp
- GitHub Stars
- 0
- Server Listing
- Stay Cost Brain MCP server
TDQS
Scored across 5 tools
Each tool maps to a distinct function: capability discovery, place listing, rule lookup, per-stay tax computation, and a live-price booking link. The only borderline pair is place_rules vs tourist_tax, which both touch tax data for a place, but descriptions clearly separate 'all rules for a place' from 'computed tax for one stay'.
All names are snake_case and readable, but the convention is mixed: get_capabilities and list_places use verb_noun while hotels_link, place_rules, and tourist_tax are bare noun phrases. Predictable enough to navigate, but an agent can't infer verb style uniformly.
Five tools is a tight, well-scoped set for a narrow domain (tourist-tax research plus a booking handoff), with no obviously redundant entries. It sits at the low end, but each tool has a clear role.
The surface covers the full path: discover coverage, list places, fetch detailed rules, compute a stay's tax, and hand off to live pricing. Gaps are minor and largely declared out of scope (no room prices/booking), though there is no bulk or multi-place comparison operation.
Available Tools
5 toolsget_capabilitiesGet capabilitiesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| error | No | |
| method | No | |
| places | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds real value beyond that by disclosing the domain boundaries ('no room prices, no booking') and that tax figures are sourced and dated. It stops short of saying what form the response takes, but an output schema exists to cover that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the coverage statement and then the itemized contents. No filler, no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, rich annotations, and an output schema handling return values, the description only needs to convey scope — which it does, including negative scope. It could be slightly stronger by stating when an agent should reach for it versus the sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; the description correctly does not waste words on parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what the tool returns: researched places, tax figure sourcing/dating, explicit non-goals (no room prices, no booking), and sister services. That is specific enough to distinguish it from tourist_tax or list_places, though it never says plainly that it returns documentation/about-text rather than data records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — an agent can infer this is an orientation/scope call, but there is no explicit 'call this first' or 'use X instead when you need Y'. The four sibling services are mentioned collectively as 'sister services' without routing guidance to any of them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hotels_linkHotels linkARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| town | No | Town inside the place to search in (e.g. 'Albufeira' in the Algarve); omit for the whole place | |
| place | Yes | A researched place ('Lisbon', 'Algarve', 'Paris') or any town ('Quarteira', 'Funchal', 'Kyoto') | |
| adults | No | Adults staying (default 2) | |
| nights | No | Number of nights from check_in (1-60) | |
| check_in | No | YYYY-MM-DD | |
| child_ages | No | Age of each child on check-in, one entry per child (many taxes exempt under-12s, -16s or -18s); omit for none |
Output Schema
| Name | Required | Description |
|---|---|---|
| for | No | |
| url | No | |
| note | No | |
| error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world, and non-destructive behavior. The description adds valuable context beyond that: the link is powered by Stay22, shows Booking.com/Expedia/Agoda/Vrbo, the user books externally, no prices are returned, and a commission may be earned. This clarifies the external, non-transactional nature of the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences and front-loads the core purpose: a link to live prices for a place/town and dates/guests. The second and third sentences add useful behavioral and disclosure context without excess, though the first sentence is slightly overloaded with provider details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so there is no need to explain return values. Given annotations, full schema coverage, and the tool's simple link-generation nature, the description covers the key context: external provider, no prices returned, no booking performed, and potential commission. Minor gaps like link expiration or presentation guidance are not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented with examples and constraints. The description references 'place or any town' and 'given dates and guests,' but adds no syntax, defaults, or edge-case guidance beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this tool provides a link to live hotel and rental prices for a place or town, naming Stay22 and the booking providers. It is distinguishable from siblings like list_places and tourist_tax, though the phrasing is nominal ('A link to...') rather than an explicit verb like 'generates a booking link'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: this is for getting a hotel/rental booking link, not for retrieving prices or booking. The description explicitly says 'this tool returns no prices and books nothing,' which helps avoid misuse, but it does not name alternatives, state when-not-to-use conditions, or mention sibling tools that might provide related information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_placesList placesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| error | No | |
| places | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description contributes freshness context (today's headline rate, date checked, next re-check date) but says nothing about result volume, ordering, or pagination for a catalog-style list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the scope ('every place with a researched tourist-tax table') before the field inventory. It is dense but every clause carries information; only the field enumeration is slightly padded given an output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, an output schema, and annotations covering safety, the definition is nearly complete for a read-only catalog call. The remaining gap is behavioral scale: an agent gets no sense of how large the list is or how to handle a very long result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so parameter semantics fall to the schema and the baseline of 4 applies; there is nothing for the description to clarify beyond the absence of filters, which is consistent with 'every place'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('list') and a precisely scoped resource ('every place with a researched tourist-tax table'), then enumerates the fields returned. This distinguishes it from point-query siblings like tourist_tax, though the description never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'every place' signals a catalog/discovery call that naturally precedes a per-place rate lookup, but the description never says when to use this versus tourist_tax, place_rules, or get_capabilities, and states no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_rulesPlace rulesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| place | Yes | A researched place ('Lisbon', 'Algarve', 'Paris') or any town ('Quarteira', 'Funchal', 'Kyoto') |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| error | No | |
| place | No | |
| taxes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-open-world, non-destructive behavior, so the description's job is extra context — and it delivers the important part: results are tagged verified/inferred/announced, meaning some rates are unconfirmed, and each carries source links and dates. That provenance and confidence signal is genuinely decision-relevant and appears nowhere in the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence that opens with the resource and then spends its length on a dense, useful enumeration of what comes back. Slightly list-heavy and lacking a stated verb, but every clause carries information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be spelled out; the description instead conveys the semantic dimensions of the payload (jurisdiction, legal basis, validity, confidence). Combined with a fully specified single parameter and clear safety annotations, an agent has what it needs — the missing piece is only the routing rule against tourist_tax.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'place' parameter is fully documented with concrete examples, so the baseline is 3. The description adds only the 'researched place' framing, no additional syntax, normalization, or fallback behavior for unknown places, so it neither compensates nor detracts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a precise resource — every tourist-tax rule for one place — and enumerates the fields bundled into it (rates by stay type, season, area, caps, exemptions, payment, validity, status). That is far more specific than the sibling names tourist_tax or list_places imply, but it never states the verb of retrieval or explicitly contrasts itself with tourist_tax, so the boundary with that sibling stays blurry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use / when-not-to-use guidance and no alternative named. The phrase 'one researched place' and the schema hint ('or any town') imply coverage scope but not routing; an agent cannot tell from this text why it should pick place_rules over tourist_tax or list_places.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tourist_taxTourist taxARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Area/zone code where a place has zones (e.g. Venice) | |
| town | No | Town or municipality inside a region (e.g. 'Albufeira' in the Algarve) | |
| place | Yes | A researched place ('Lisbon', 'Algarve', 'Paris') or any town ('Quarteira', 'Funchal', 'Kyoto') | |
| rooms | No | Default 1 (for per-room taxes) | |
| adults | No | Default 2 | |
| nights | Yes | Number of nights from check_in (1-60) | |
| check_in | Yes | YYYY-MM-DD | |
| child_ages | No | 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 | No | Hotel stars, apartment, holiday rental, etc. | |
| adults_70_plus | No | How many of the adults are 70 or over | |
| local_category | No | The authority's own category label, as returned in options | |
| room_price_total | No | Room price for the whole stay, for percentage taxes |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| page | No | |
| error | No | |
| taxes | No | |
| total | No | |
| researched | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnly/idempotent/openWorld=false) by disclosing fallback behavior: a range is returned when star rating or type of stay is not supplied, and out-of-scope towns return researched=false instead of failing. It also flags a parameter dependency (percentage taxes require room_price_total) and a scope limit (exemptions listed, not applied) — exactly the kind of behavior an agent would otherwise have to discover by trial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause and the remainder is a dense enumeration where each item corresponds to a real output dimension. The long comma-separated list is information-dense rather than padded, though it reads as one sprawling sentence and could be split for scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 parameters, 100% schema coverage, full annotations and an output schema, the description covers the remaining gaps: parameter interdependency, fallback outputs, and out-of-scope handling. It is essentially complete for invocation; the enumeration of return fields slightly duplicates the output schema, which is harmless but not additive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description earns above that by explaining the semantic role of two parameters — room_price_total is required for percentage-based taxes, and type_of_stay/star rating determines whether a single amount or a range comes back. The place/town distinction and the researched=false outcome add meaning beyond the schema's own strings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific computation ('the tourist tax for one stay, worked out night by night') and enumerates the exact outputs: regional and city parts separately, amount or range, nights charged, payment, announced changes, source and date. This clearly separates it from list_places (lookup) and place_rules (exemptions), which is confirmed by the description pointing exemptions to `rules`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real context for when it is applicable: accepts a researched place or any town, and towns outside the researched set return researched=false. It also states the precondition 'Percentage taxes need room_price_total' and routes exemptions to `rules` rather than applying them. It stops short of an explicit 'use place_rules instead if...' routing statement, so it is a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- First observed
get_capabilities - First observed
hotels_link - First observed
list_places - First observed
place_rules - First observed
tourist_tax
Publisher details
- Operator
- Stay Cost Brain, run by Jimi Walters · Publisher source
- Operator website
- https://staycostbrain.com/
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://staycostbrain.com/ai/
- Trust center
- Not available
- Restrictions
- None. Free, no sign-up, no API key, no OAuth; read-only. Hotel links go to Stay22, where the person books.
Related MCP Connectors
Works out UK tourist tax for a holiday let booking: Edinburgh, Glasgow, Cardiff and more. Free.
Google Hotels prices for any city and dates: nightly and total price with taxes, ratings, amenities.
Live hotel and resort prices (taxes included) and secure booking links for travelers. Since 1993.
Hotel nightly prices and stay totals for two adults, with city, dates and resolved-place checks.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables verified, bookable hotel price checking with tax-inclusive totals, OTA tax status flags, and durable Booking.com fallback links for budget travel planning.MIT
- AlicenseAqualityAmaintenanceVacation rental software. A signed stay offer on the host’s own domain. Use this when a vacation rental host wants booking software on the host’s own domain, or when a stay offer must be verified against that domain. Returns an Ed25519-signed offer (VRP) and the host’s direct booking URL. The guest books and pays the host. Do not use to compare hosts or prices.6999 npm4Apache 2.0

Departi MCP Serverofficial
AlicenseAqualityCmaintenanceTravel compliance and trip planning for digital nomads — visa requirements, tax residency analysis, Schengen 90/180-day tracking, and curated accommodation, transport, and experience search across 189 European destinations.7MIT- -
Glama MCP Gateway
Add one secure layer between your agents and this server.