Travel Per Diem & Allowance Calculator
Server Details
Compliant per diems in one call: official US GSA, German BMF and UK HMRC rates, with a trip…
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
The four core tools (calculate_trip_allowance, get_per_diem_rates, list_per_diem_regimes, search_per_diem_locations) have distinct purposes, but the three regime-named tools (de-bmf, us-gsa, uk-hmrc) are poorly defined as actions and overlap with calculate_trip_allowance and list_per_diem_regimes. An agent cannot easily tell when to use them versus the main calculator or regime list.
Four tools follow a consistent snake_case verb_noun pattern, but three tools are hyphenated regime codes with no verb, breaking the convention. This mixed style reduces predictability.
The server lists 7 tools (despite the stated count of 4), which is within a reasonable range, but the three regime tools appear redundant, slightly inflating the set. Still acceptable for the domain.
The core domain of trip allowance calculation, rate lookup, regime listing, and location search is well covered. However, the role of the regime-named tools is unclear, suggesting either a documentation gap or missing integration, but no critical operations are missing.
Available Tools
4 toolscalculate_trip_allowanceCalculate Trip AllowanceAInspect
Applies the regime's rules to an itinerary and returns one line per allowance, deduction and night, each with the rule it applied, plus totals.
de-bmf: >8 h one-day trips (last place of work), partial arrival/departure days, full days at the place reached before midnight, higher rate on a home stop-over day, 20 %/40 % meal deductions of that day's full-day rate (never below 0), Übernachtungspauschale per night. The three-month rule is not applied.
us-gsa: 75 % M&IE on first and last day, M&IE of the lodging location, last day at the last TDY location, 75 % for 12-24 h trips without lodging, full meal-amount deductions with an incidentals floor, max lodging per night by season.
uk-hmrc: 24-hour periods from arrival abroad, over-5/over-10-hour rates for the remainder, room rate per night, provided meals deducted at the HMRC meal rate of the location at 08:00 / 13:00 / 19:00 that day.
| Name | Required | Description | Default |
|---|---|---|---|
| legs | Yes | Destinations in chronological order (1-20) | |
| regime | Yes | Which rule set to apply | |
| overnight | No | False for a trip across midnight without an overnight stay (de-bmf/us-gsa: combine hours) | |
| leave_home | No | When the traveller leaves home / the first place of work (de-bmf, us-gsa). Default: first arrive | |
| return_home | No | When the traveller is back home. Default: last depart | |
| meals_provided | No | Meals provided by employer/host | |
| lodging_provided | No | Lodging paid directly by the employer: no lodging lines |
Output Schema
| Name | Required | Description |
|---|---|---|
| days | Yes | Calendar days touched by the trip |
| lines | Yes | One line per day/period, deduction and night, each with its rule |
| notes | Yes | Assumptions and caveats that applied |
| total | Yes | Grand total (null if several currencies are involved; see totals) |
| regime | Yes | Regime applied |
| totals | Yes | Totals per currency |
| sources | Yes | Official publications used |
| currency | Yes | Currency of total, if the trip has a single currency |
| disclaimer | Yes | Informational use only, not tax advice |
| meals_total | Yes | Meal allowances before deductions (single-currency trips, else null) |
| lodging_total | Yes | Lodging total (single-currency trips, else null) |
| deductions_total | Yes | Meal deductions, negative (single-currency trips, else null) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely meets it: it discloses the output shape (one line per allowance/deduction/night plus totals) and notable behavioral exceptions such as 'The three-month rule is not applied' and 'no lodging lines' for employer-paid lodging. It never states that this is a side-effect-free calculation with nothing persisted, which would have been useful for a tool with no annotations, so it falls short of 5.
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 front-loaded with what the tool does and returns before diving into bulleted regime detail, and each bullet is on-topic. It is long and dives deep into statutory rule minutiae that arguably belongs in documentation, which keeps it from a 5.
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?
For a complex tool with 7 parameters and three rule regimes, the description supplies enough regime-level detail to interpret results, and an output schema exists so return values need not be re-explained. It does not cover error behavior or regime-selection guidance, leaving a small gap.
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 the schema already documents every parameter, and the baseline of 3 applies. The description reinforces the semantics of regime-dependent inputs (meal deductions, Übernachtungspauschale, transport-dependent BMF rules) but adds little syntax or format information beyond what the schema's own field descriptions provide.
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 states a specific verb and resource ('Applies the regime's rules to an itinerary and returns one line per allowance, deduction and night, each with the rule it applied, plus totals'), making the computation nature crystal clear. It nonetheless never names or contrasts itself against the sibling tools (get_per_diem_rates, list_per_diem_regimes, search_per_diem_locations), so a 4 rather than a 5.
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 by the granular per-regime rule breakdowns, which tell the agent what to expect when regime is de-bmf, us-gsa or uk-hmrc. There is no explicit statement of when to choose this tool over the lookup siblings, nor any preconditions or exclusions, so it stays at 'implied usage'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_per_diem_ratesGet Per Diem RatesAInspect
Returns the lodging and meal allowance for one location under one regime, with the regime's breakdown (BMF meal deductions, GSA M&IE breakdown and seasons, HMRC meal/room rates), fallbacks applied, source citation and data freshness. us-gsa picks the fiscal year by date (FY2026: 2025-10-01..2026-09-30, FY2027: 2026-10-01..2027-09-30).
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City; unlisted cities fall back per the regime's rules | |
| date | No | Travel date (ISO 8601). Default: today (UTC) | |
| state | No | US state code (us-gsa) | |
| regime | Yes | de-bmf (Germany), us-gsa (US CONUS) or uk-hmrc (UK overseas scale rates) | |
| country | No | ISO alpha-2 code or English/German name. Default: DE for de-bmf, US for us-gsa | |
| postal_code | No | US ZIP (us-gsa) or French postcode (de-bmf) |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | Yes | Date the rate applies to |
| notes | Yes | Fallbacks and caveats that applied |
| de_bmf | No | de-bmf breakdown (only for regime de-bmf) |
| regime | Yes | Regime the rate comes from |
| source | Yes | Official publication the rate comes from |
| us_gsa | No | us-gsa breakdown (only for regime us-gsa) |
| lodging | Yes | Per-night lodging figure (BMF flat rate, GSA maximum, HMRC room rate) |
| uk_hmrc | No | uk-hmrc breakdown (only for regime uk-hmrc) |
| currency | Yes | ISO 4217 currency of the summary fields |
| location | Yes | The location that was resolved from the input |
| disclaimer | Yes | Informational use only, not tax advice |
| meals_full_day | Yes | Meals allowance for a full day (BMF 24 h rate, GSA M&IE, HMRC 24-hour rate) |
| other_locations | Yes | Other listed locations in the same country for this regime |
| meals_partial_day | Yes | Reduced day (BMF arrival/departure/>8 h, GSA 75 % first/last day, HMRC over-10-hours) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden, and it does disclose meaningful behavior: fallbacks are applied, a source citation and data freshness are included, and the us-gsa fiscal-year selection rule is spelled out (FY2026 vs FY2027 windows). It stops short of stating permission requirements, rate limits, or error behavior.
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?
Two dense sentences, front-loaded with the core purpose and return payload, with the regime-specific rule trailing. Slightly packed but no filler; every clause adds information an agent would otherwise have to guess.
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 the description does not need to explain returns, yet it complements them with freshness, citation, and fallback behavior. The one remaining gap is how the optional locator parameters (city vs. state vs. postal_code) interact, which is left entirely to the schema.
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 the baseline is 3, but the description adds real semantics beyond the schema: the us-gsa date-to-fiscal-year mapping (FY2026: 2025-10-01..2026-09-30) is not derivable from the fields, and the fallback note clarifies how an unlisted city resolves.
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 and resource ('returns the lodging and meal allowance') and pins the scope to 'one location under one regime', which cleanly separates it from search_per_diem_locations and calculate_trip_allowance. It goes further to enumerate what comes back (regime breakdowns, fallbacks, citation, freshness), so an agent knows exactly what this call yields.
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?
The 'one location under one regime' scoping implies the lookup use case, but there is no explicit when-to-use/when-not guidance and none of the sibling tools are named as alternatives. An agent must infer that this is the single-point lookup rather than the search or trip-total tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_per_diem_regimesList Per Diem RegimesAInspect
Lists the available regimes with validity periods, snapshot dates, sources and the rules the trip calculator applies, plus regimes that are planned but not yet available.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| regimes | Yes | All regimes, available and planned |
| disclaimer | Yes | Informational use only, not tax advice |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden, and it does add real behavioral context: the listing includes planned-but-not-yet-available regimes, which would surprise an agent expecting only active data. It stops short of stating read-only nature, auth needs, or that no filtering/pagination applies.
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 front-loaded sentence with the verb and resource first, then the useful contents. No filler and nothing repeated from structured fields.
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 an output schema present and zero parameters, the description only needs to frame what the list contains, which it does. Ordering, scope, and relationship to the rate/trip tools are left unstated, a minor gap given the low complexity.
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 no parameters, so there is nothing to document; baseline is 4. The description correctly does not waste space explaining inputs.
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 and resource ('Lists the available regimes') and enumerates the payload contents (validity periods, snapshot dates, sources, calculator rules, planned regimes). It does not name a sibling or explain how it differs from get_per_diem_rates, but the resource focus on 'regimes' is distinct enough to identify.
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?
The description implies this is the discovery/overview call for regimes but gives no explicit when-to-use statement, no prerequisites, and never mentions the alternatives (get_per_diem_rates, search_per_diem_locations, calculate_trip_allowance). Usage must be inferred from the resource name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_per_diem_locationsSearch Per Diem LocationsBInspect
Lists the locations with their own rate in a regime (us-gsa: current fiscal-year destinations), filtered by text, country or state. Use the returned country/city/state values in /rates and /trip.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Case- and accent-insensitive text search over city, country, state, county and aliases | |
| limit | No | Maximum items to return | |
| state | No | Only this US state (us-gsa) | |
| offset | No | Items to skip | |
| regime | Yes | Regime to search | |
| country | No | Only this country (ISO alpha-2 or name) |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Matching locations (after limit/offset) |
| total | Yes | Number of matching locations before limit/offset |
| regime | Yes | Regime searched |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does disclose that us-gsa is limited to current fiscal-year destinations and that results feed other tools, which is real behavioral context. However it is silent on pagination behavior (limit/offset), result ordering, and whether results are cached or rate-limited.
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?
Two sentences, front-loaded with the purpose and followed by the practical chaining tip; nothing is padded. The only friction is the '/' path notation, which slightly obscures the referenced tools.
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 an output schema present, the description needn't explain return values, and full param coverage is handled by the schema. It covers purpose and chaining adequately, but leaves pagination semantics and result ordering unaddressed — minor gaps for a filtered list tool with six parameters.
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 in the schema, establishing the baseline of 3. The description restates the filter dimensions (text, country, state) and adds the us-gsa fiscal-year nuance, but contributes no syntax or format detail beyond the schema.
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 names a specific verb and resource ('Lists the locations with their own rate in a regime') and scopes it to text/country/state filtering, which is more precise than the bare title. It does not however explicitly distinguish itself from siblings like get_per_diem_rates or list_per_diem_regimes beyond a parenthetical regime note.
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?
It offers downstream guidance ('Use the returned country/city/state values in /rates and /trip'), which is useful chaining advice. But the referenced tools are written as paths ('/rates', '/trip') rather than by name, so the agent must infer which siblings they map to, and there is no statement of when NOT to use this tool versus get_per_diem_rates.
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.
4 tool updates
- First observed
calculate_trip_allowance - First observed
get_per_diem_rates - First observed
list_per_diem_regimes - First observed
search_per_diem_locations
Related MCP Connectors
Policz diete za delegacje krajowa i zagraniczna wedlug rozporzadzenia oraz stawek HMRC i GSA.
Daily travel allowances from bundled public rate tables: Poland, HMRC and GSA CONUS.
Utility data for AI agents: IBAN, EU holidays, VAT rates, time zones, ECB FX. Pay per call.
Pay-per-call data APIs for AI agents: business, compliance, procurement, VAT and IBAN via x402.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables querying GSA Per Diem rates for travel destinations, providing daily lodging and meal allowance data from the U.S. General Services Administration API.160 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables employee eligibility checks, trip validation, and reimbursement calculations for corporate travel policies.-
- AlicenseNot gradedqualityDmaintenanceProvides access to Swedish per diem (traktamente) rates from Skatteverket's official API, enabling queries by country, year, or country code for international travel expense calculations.6 npm1MIT

Departi MCP Serverofficial
AlicenseAqualityBmaintenanceTravel 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.