Serveur MCP

Travel Per Diem & Allowance Calculator

com.syntropicapi/travel-per-diem
Entreprise et opérations Voyage et hôtellerie Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Looks up and calculates US, German, and UK travel per diem allowances for locations and itineraries.

calculate_trip_allowance
Calculate per diem allowances for a trip
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. - us-state: the same FTR rules as us-gsa with State Dept foreign rates per post (country 'Other' and 'Other Foreign Localities' fallbacks) and the FTR Appendix B meal amounts. - 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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['regime', 'legs'], 'properties': {'legs': {'type': 'array', 'items': {'type': 'object', 'title': 'LegIn', 'required': ['country', 'arrive', 'depart'], 'properties': {'city': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'City', 'description': 'City (BMF city rows, GSA destination, HMRC city)'}, 'state': {'anyOf': [{'type': 'string', 'maxLength': 2}, {'type': 'null'}], 'title': 'State', 'description': 'US state code (us-gsa)'}, 'arrive': {'type': 'string', 'title': 'Arrive', 'format': 'date-time', 'description': 'Local arrival time at this destination (ISO 8601)'}, 'depart': {'type': 'string', 'title': 'Depart', 'format': 'date-time', 'description': 'Local departure time from this destination (ISO 8601)'}, 'country': {'type': 'string', 'title': 'Country', 'maxLength': 60, 'minLength': 2, 'description': 'ISO alpha-2 code or English/German country name'}, 'transport': {'enum': ['flight', 'ship', 'train', 'car', 'other'], 'type': 'string', 'title': 'Transport', 'default': 'other', 'description': 'How this destination was reached (de-bmf: multi-day flights use Austria, days at sea use Luxembourg)'}, 'postal_code': {'anyOf': [{'type': 'string', 'maxLength': 10}, {'type': 'null'}], 'title': 'Postal Code', 'description': 'US ZIP (us-gsa) or French postcode (de-bmf Paris region)'}, 'returns_home_before': {'type': 'boolean', 'title': 'Returns Home Before', 'default': False, 'description': 'de-bmf: the traveller went home between the previous leg and this one (new trip; shared day gets the higher rate)'}}}, 'title': 'Legs', 'maxItems': 20, 'minItems': 1, 'description': 'Destinations in chronological order (1-20)'}, 'regime': {'enum': ['de-bmf', 'us-gsa', 'us-state', 'uk-hmrc'], 'type': 'string', 'title': 'Regime', 'description': 'Which rule set to apply'}, 'overnight': {'type': 'boolean', 'title': 'Overnight', 'default': True, 'description': 'False for a trip across midnight without an overnight stay (de-bmf/us-gsa: combine hours)'}, 'leave_home': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Leave Home', 'description': 'When the traveller leaves home / the first place of work (de-bmf, us-gsa). Default: first arrive'}, 'return_home': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Return Home', 'description': 'When the traveller is back home. Default: last depart'}, 'meals_provided': {'type': 'array', 'items': {'type': 'object', 'title': 'MealsIn', 'required': ['date'], 'properties': {'date': {'type': 'string', 'title': 'Date', 'format': 'date', 'description': 'Calendar day the meals were provided'}, 'lunch': {'type': 'boolean', 'title': 'Lunch', 'default': False, 'description': 'Lunch was provided'}, 'dinner': {'type': 'boolean', 'title': 'Dinner', 'default': False, 'description': 'Dinner was provided'}, 'breakfast': {'type': 'boolean', 'title': 'Breakfast', 'default': False, 'description': 'Breakfast was provided'}}}, 'title': 'Meals Provided', 'maxItems': 92, 'description': 'Meals provided by employer/host'}, 'lodging_provided': {'type': 'boolean', 'title': 'Lodging Provided', 'default': False, 'description': 'Lodging paid directly by the employer: no lodging lines'}}}
Schéma de sortie
{'type': 'object', 'title': 'TripOut', 'required': ['regime', 'currency', 'total', 'meals_total', 'deductions_total', 'lodging_total', 'totals', 'days', 'lines', 'notes', 'sources', 'disclaimer'], 'properties': {'days': {'type': 'integer', 'title': 'Days', 'description': 'Calendar days touched by the trip'}, 'lines': {'type': 'array', 'items': {'type': 'object', 'title': 'TripLine', 'required': ['date', 'kind', 'location', 'amount', 'currency', 'rule'], 'properties': {'date': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Date', 'description': 'Calendar day (HMRC: day the period starts)'}, 'kind': {'enum': ['meals', 'deduction', 'lodging'], 'type': 'string', 'title': 'Kind', 'description': 'meals = allowance, deduction = provided-meal deduction (negative), lodging = per-night lodging'}, 'meal': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Meal', 'description': 'Meal a deduction refers to'}, 'rate': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Rate', 'description': 'Underlying full rate the line is based on'}, 'rule': {'type': 'string', 'title': 'Rule', 'description': 'The rule applied to produce this line'}, 'amount': {'type': 'number', 'title': 'Amount', 'description': 'Amount of this line (deductions are negative)'}, 'currency': {'type': 'string', 'title': 'Currency', 'description': 'ISO 4217 currency of amount'}, 'location': {'type': 'string', 'title': 'Location', 'description': 'Location whose rate was used'}, 'period_end': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Period End', 'description': 'uk-hmrc: end of the period'}, 'period_start': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Period Start', 'description': 'uk-hmrc: start of the 24 h / residual period'}}}, 'title': 'Lines', 'description': 'One line per day/period, deduction and night, each with its rule'}, 'notes': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Notes', 'description': 'Assumptions and caveats that applied'}, 'total': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Total', 'description': 'Grand total (null if several currencies are involved; see totals)'}, 'regime': {'enum': ['de-bmf', 'us-gsa', 'us-state', 'uk-hmrc'], 'type': 'string', 'title': 'Regime', 'description': 'Regime applied'}, 'totals': {'type': 'array', 'items': {'type': 'object', 'title': 'CurrencyTotal', 'required': ['currency', 'meals', 'deductions', 'lodging', 'total'], 'properties': {'meals': {'type': 'number', 'title': 'Meals', 'description': 'Meal allowances before deductions'}, 'total': {'type': 'number', 'title': 'Total', 'description': 'meals + deductions (floored at 0) + lodging'}, 'lodging': {'type': 'number', 'title': 'Lodging', 'description': 'Lodging amounts'}, 'currency': {'type': 'string', 'title': 'Currency', 'description': 'ISO 4217 currency'}, 'deductions': {'type': 'number', 'title': 'Deductions', 'description': 'Meal deductions (negative; capped so meals never go below 0)'}}}, 'title': 'Totals', 'description': 'Totals per currency'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'title': 'Source', 'required': ['name', 'url', 'license', 'data_as_of'], 'properties': {'url': {'type': 'string', 'title': 'Url', 'description': 'Where to find it'}, 'name': {'type': 'string', 'title': 'Name', 'description': 'Official publication the numbers come from'}, 'license': {'type': 'string', 'title': 'License', 'description': 'Reuse terms of the source'}, 'valid_to': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Valid To', 'description': 'Last day the table applies (null if open-ended)'}, 'data_as_of': {'type': 'string', 'title': 'Data As Of', 'format': 'date', 'description': 'Date the bundled snapshot was taken from the source'}, 'valid_from': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Valid From', 'description': 'First day the table applies (null if the publisher gives none)'}}}, 'title': 'Sources', 'description': 'Official publications used'}, 'currency': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Currency', 'description': 'Currency of total, if the trip has a single currency'}, 'disclaimer': {'type': 'string', 'title': 'Disclaimer', 'description': 'Informational use only, not tax advice'}, 'meals_total': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Meals Total', 'description': 'Meal allowances before deductions (single-currency trips, else null)'}, 'lodging_total': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Lodging Total', 'description': 'Lodging total (single-currency trips, else null)'}, 'deductions_total': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Deductions Total', 'description': 'Meal deductions, negative (single-currency trips, else null)'}}, 'x-fastmcp-top-level-schema': 'TripOut'}
get_per_diem_rates
Per diem rate for a place and date
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).
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['regime'], 'properties': {'city': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'City', 'description': "City; unlisted cities fall back per the regime's rules"}, 'date': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Date', 'description': 'Travel date (ISO 8601). Default: today (UTC)'}, 'state': {'anyOf': [{'type': 'string', 'maxLength': 2}, {'type': 'null'}], 'title': 'State', 'description': 'US state code (us-gsa)'}, 'regime': {'enum': ['de-bmf', 'us-gsa', 'us-state', 'uk-hmrc'], 'type': 'string', 'title': 'Regime', 'description': 'de-bmf (Germany), us-gsa (US CONUS), us-state (US State Dept foreign) or uk-hmrc (UK overseas scale rates)'}, 'country': {'anyOf': [{'type': 'string', 'maxLength': 60, 'minLength': 2}, {'type': 'null'}], 'title': 'Country', 'description': 'ISO alpha-2 code or English/German name. Default: DE for de-bmf, US for us-gsa'}, 'postal_code': {'anyOf': [{'type': 'string', 'maxLength': 10}, {'type': 'null'}], 'title': 'Postal Code', 'description': 'US ZIP (us-gsa) or French postcode (de-bmf)'}}}
Schéma de sortie
{'type': 'object', 'title': 'RatesOut', 'required': ['regime', 'date', 'currency', 'location', 'lodging', 'meals_full_day', 'meals_partial_day', 'other_locations', 'notes', 'source', 'disclaimer'], 'properties': {'date': {'type': 'string', 'title': 'Date', 'format': 'date', 'description': 'Date the rate applies to'}, 'notes': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Notes', 'description': 'Fallbacks and caveats that applied'}, 'de_bmf': {'anyOf': [{'type': 'object', 'title': 'BmfDetail', 'required': ['full_day', 'partial_day', 'lodging_flat', 'deduction_breakfast', 'deduction_lunch', 'deduction_dinner', 'domestic'], 'properties': {'domestic': {'type': 'boolean', 'title': 'Domestic', 'description': 'True for trips inside Germany'}, 'full_day': {'type': 'number', 'title': 'Full Day', 'description': 'Allowance for 24 h absence (EUR)'}, 'partial_day': {'type': 'number', 'title': 'Partial Day', 'description': 'Allowance for arrival/departure day or >8 h one-day trip (EUR)'}, 'lodging_flat': {'type': 'number', 'title': 'Lodging Flat', 'description': 'Ã\x9cbernachtungspauschale per night for employer reimbursement (EUR)'}, 'deduction_lunch': {'type': 'number', 'title': 'Deduction Lunch', 'description': 'Deduction if lunch is provided: 40 % of full_day'}, 'deduction_dinner': {'type': 'number', 'title': 'Deduction Dinner', 'description': 'Deduction if dinner is provided: 40 % of full_day'}, 'deduction_breakfast': {'type': 'number', 'title': 'Deduction Breakfast', 'description': 'Deduction if breakfast is provided: 20 % of full_day'}}}, {'type': 'null'}], 'description': 'de-bmf breakdown (only for regime de-bmf)'}, 'regime': {'enum': ['de-bmf', 'us-gsa', 'us-state', 'uk-hmrc'], 'type': 'string', 'title': 'Regime', 'description': 'Regime the rate comes from'}, 'source': {'type': 'object', 'title': 'Source', 'required': ['name', 'url', 'license', 'data_as_of'], 'properties': {'url': {'type': 'string', 'title': 'Url', 'description': 'Where to find it'}, 'name': {'type': 'string', 'title': 'Name', 'description': 'Official publication the numbers come from'}, 'license': {'type': 'string', 'title': 'License', 'description': 'Reuse terms of the source'}, 'valid_to': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Valid To', 'description': 'Last day the table applies (null if open-ended)'}, 'data_as_of': {'type': 'string', 'title': 'Data As Of', 'format': 'date', 'description': 'Date the bundled snapshot was taken from the source'}, 'valid_from': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Valid From', 'description': 'First day the table applies (null if the publisher gives none)'}}, 'description': 'Official publication the rate comes from'}, 'us_gsa': {'anyOf': [{'type': 'object', 'title': 'GsaDetail', 'required': ['fiscal_year', 'destination', 'state', 'county', 'lodging', 'mie', 'breakfast', 'lunch', 'dinner', 'incidentals', 'first_last_day', 'seasons', 'standard'], 'properties': {'mie': {'type': 'integer', 'title': 'Mie', 'description': 'Meals & incidental expenses rate per full day (USD)'}, 'lunch': {'type': 'integer', 'title': 'Lunch', 'description': 'M&IE breakdown: lunch'}, 'state': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'State', 'description': 'US state code'}, 'county': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'County', 'description': 'County / location defined by GSA'}, 'dinner': {'type': 'integer', 'title': 'Dinner', 'description': 'M&IE breakdown: dinner'}, 'lodging': {'type': 'integer', 'title': 'Lodging', 'description': 'Maximum lodging rate for the requested date (USD, taxes excluded)'}, 'seasons': {'type': 'array', 'items': {'type': 'object', 'title': 'GsaSeason', 'required': ['start', 'end', 'lodging', 'mie'], 'properties': {'end': {'type': 'string', 'title': 'End', 'description': 'Season end as MM-DD'}, 'mie': {'type': 'integer', 'title': 'Mie', 'description': 'M&IE rate per day (USD)'}, 'start': {'type': 'string', 'title': 'Start', 'description': 'Season start as MM-DD'}, 'lodging': {'type': 'integer', 'title': 'Lodging', 'description': 'Maximum lodging rate per night (USD)'}}}, 'title': 'Seasons', 'description': 'Lodging seasons of this destination for the fiscal year'}, 'standard': {'type': 'boolean', 'title': 'Standard', 'description': 'True if the standard CONUS rate applies'}, 'breakfast': {'type': 'integer', 'title': 'Breakfast', 'description': 'M&IE breakdown: breakfast'}, 'destination': {'type': 'string', 'title': 'Destination', 'description': "GSA destination name or 'Standard CONUS rate'"}, 'fiscal_year': {'type': 'integer', 'title': 'Fiscal Year', 'description': 'US federal fiscal year (Oct 1 â\x80\x93 Sep 30)'}, 'incidentals': {'type': 'integer', 'title': 'Incidentals', 'description': 'M&IE breakdown: incidental expenses'}, 'first_last_day': {'type': 'number', 'title': 'First Last Day', 'description': '75 % of M&IE for the first and last day of travel'}}}, {'type': 'null'}], 'description': 'us-gsa breakdown (only for regime us-gsa)'}, 'lodging': {'type': 'number', 'title': 'Lodging', 'description': 'Per-night lodging figure (BMF flat rate, GSA maximum, HMRC room rate)'}, 'uk_hmrc': {'anyOf': [{'type': 'object', 'title': 'HmrcDetail', 'required': ['city', 'currency', 'over_5_hours', 'over_10_hours', 'rate_24_hours', 'room', 'room_currency', 'breakfast', 'lunch', 'dinner', 'other', 'drinks', 'hotel_to_office', 'total_residual', 'breakfast_included_in_room'], 'properties': {'city': {'type': 'string', 'title': 'City', 'description': 'City as listed by HMRC'}, 'room': {'type': 'number', 'title': 'Room', 'description': 'Room rate per night'}, 'lunch': {'type': 'number', 'title': 'Lunch', 'description': 'Lunch rate'}, 'other': {'type': 'number', 'title': 'Other', 'description': "'Other' meal/incidentals component of the HMRC table"}, 'dinner': {'type': 'number', 'title': 'Dinner', 'description': 'Dinner rate'}, 'drinks': {'type': 'number', 'title': 'Drinks', 'description': 'Drinks component'}, 'currency': {'type': 'string', 'title': 'Currency', 'description': "ISO 4217 currency of the rates (unless a field's own currency says otherwise)"}, 'breakfast': {'type': 'number', 'title': 'Breakfast', 'description': 'Breakfast rate (0 when included in the room rate)'}, 'over_5_hours': {'type': 'number', 'title': 'Over 5 Hours', 'description': 'Rate for a period of more than 5 hours'}, 'over_10_hours': {'type': 'number', 'title': 'Over 10 Hours', 'description': 'Rate for a period of more than 10 hours'}, 'rate_24_hours': {'type': 'number', 'title': 'Rate 24 Hours', 'description': '24-hour rate, excluding the room rate'}, 'room_currency': {'type': 'string', 'title': 'Room Currency', 'description': 'Currency of the room rate'}, 'total_residual': {'type': 'number', 'title': 'Total Residual', 'description': 'Subsistence per 24 h when the room is paid separately'}, 'hotel_to_office': {'type': 'number', 'title': 'Hotel To Office', 'description': 'Hotel-to-office travel component'}, 'breakfast_included_in_room': {'type': 'boolean', 'title': 'Breakfast Included In Room', 'description': 'HMRC marks breakfast as included in the room rate'}}}, {'type': 'null'}], 'description': 'uk-hmrc breakdown (only for regime uk-hmrc)'}, 'currency': {'type': 'string', 'title': 'Currency', 'description': 'ISO 4217 currency of the summary fields'}, 'location': {'type': 'object', 'title': 'Location', 'required': ['country', 'country_name', 'label', 'matched_by'], 'properties': {'label': {'type': 'string', 'title': 'Label', 'description': 'Location as named by the source'}, 'country': {'type': 'string', 'title': 'Country', 'description': "ISO 3166-1 alpha-2 code of the rate's country (after any fallback)"}, 'matched_by': {'type': 'string', 'title': 'Matched By', 'description': 'How the input was matched: city, county, postal_code, country, fallback or standard'}, 'country_name': {'type': 'string', 'title': 'Country Name', 'description': 'English country name'}}, 'description': 'The location that was resolved from the input'}, 'us_state': {'anyOf': [{'type': 'object', 'title': 'StateDetail', 'required': ['post', 'country_label', 'lodging', 'mie', 'breakfast', 'lunch', 'dinner', 'incidentals', 'first_last_day', 'seasons', 'effective_from', 'footnotes', 'footnote_url'], 'properties': {'mie': {'type': 'integer', 'title': 'Mie', 'description': 'Meals & incidental expenses rate per full day (USD)'}, 'post': {'type': 'string', 'title': 'Post', 'description': "Post (location) as named by the State Dept; 'Other' = rest of the country"}, 'lunch': {'type': 'number', 'title': 'Lunch', 'description': 'M&IE breakdown: lunch'}, 'dinner': {'type': 'number', 'title': 'Dinner', 'description': 'M&IE breakdown: dinner'}, 'lodging': {'type': 'integer', 'title': 'Lodging', 'description': 'Maximum lodging rate for the requested date (USD)'}, 'seasons': {'type': 'array', 'items': {'type': 'object', 'title': 'GsaSeason', 'required': ['start', 'end', 'lodging', 'mie'], 'properties': {'end': {'type': 'string', 'title': 'End', 'description': 'Season end as MM-DD'}, 'mie': {'type': 'integer', 'title': 'Mie', 'description': 'M&IE rate per day (USD)'}, 'start': {'type': 'string', 'title': 'Start', 'description': 'Season start as MM-DD'}, 'lodging': {'type': 'integer', 'title': 'Lodging', 'description': 'Maximum lodging rate per night (USD)'}}}, 'title': 'Seasons', 'description': 'Seasons of this post (a season may wrap the year end, e.g. 10-01..04-30)'}, 'breakfast': {'type': 'number', 'title': 'Breakfast', 'description': 'M&IE breakdown (FTR ch. 301 Appendix B): breakfast'}, 'footnotes': {'type': 'array', 'items': {'type': 'integer'}, 'title': 'Footnotes', 'description': 'State Dept footnote numbers for this post (see footnote_url)'}, 'incidentals': {'type': 'number', 'title': 'Incidentals', 'description': 'M&IE breakdown: incidental expenses'}, 'footnote_url': {'type': 'string', 'title': 'Footnote Url', 'description': 'Where the footnotes are explained'}, 'country_label': {'type': 'string', 'title': 'Country Label', 'description': 'Country as named by the State Dept'}, 'effective_from': {'type': 'string', 'title': 'Effective From', 'format': 'date', 'description': "Date the State Dept made this post's current rate effective"}, 'first_last_day': {'type': 'number', 'title': 'First Last Day', 'description': '75 % of M&IE for the first and last day of travel'}}}, {'type': 'null'}], 'description': 'us-state breakdown (only for regime us-state)'}, 'disclaimer': {'type': 'string', 'title': 'Disclaimer', 'description': 'Informational use only, not tax advice'}, 'meals_full_day': {'type': 'number', 'title': 'Meals Full Day', 'description': 'Meals allowance for a full day (BMF 24 h rate, GSA M&IE, HMRC 24-hour rate)'}, 'other_locations': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Other Locations', 'description': 'Other listed locations in the same country for this regime'}, 'meals_partial_day': {'type': 'number', 'title': 'Meals Partial Day', 'description': 'Reduced day (BMF arrival/departure/>8 h, GSA 75 % first/last day, HMRC over-10-hours)'}}, 'x-fastmcp-top-level-schema': 'RatesOut'}
list_per_diem_regimes
Supported regimes, validity and data freshness
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': [], 'properties': {}}
Schéma de sortie
{'type': 'object', 'title': 'RegimesOut', 'required': ['regimes', 'disclaimer'], 'properties': {'regimes': {'type': 'array', 'items': {'type': 'object', 'title': 'RegimeOut', 'required': ['id', 'name', 'jurisdiction', 'status', 'currency', 'coverage', 'rules'], 'properties': {'id': {'type': 'string', 'title': 'Id', 'description': 'Regime id used in the other endpoints'}, 'name': {'type': 'string', 'title': 'Name', 'description': 'Human-readable regime name'}, 'rules': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Rules', 'description': 'Rules the trip calculator applies'}, 'status': {'enum': ['available', 'planned'], 'type': 'string', 'title': 'Status', 'description': "'available' or 'planned' (not yet served)"}, 'sources': {'type': 'array', 'items': {'type': 'object', 'title': 'Source', 'required': ['name', 'url', 'license', 'data_as_of'], 'properties': {'url': {'type': 'string', 'title': 'Url', 'description': 'Where to find it'}, 'name': {'type': 'string', 'title': 'Name', 'description': 'Official publication the numbers come from'}, 'license': {'type': 'string', 'title': 'License', 'description': 'Reuse terms of the source'}, 'valid_to': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Valid To', 'description': 'Last day the table applies (null if open-ended)'}, 'data_as_of': {'type': 'string', 'title': 'Data As Of', 'format': 'date', 'description': 'Date the bundled snapshot was taken from the source'}, 'valid_from': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Valid From', 'description': 'First day the table applies (null if the publisher gives none)'}}}, 'title': 'Sources', 'description': 'Official publications used'}, 'coverage': {'type': 'string', 'title': 'Coverage', 'description': 'What locations and years are covered'}, 'currency': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Currency', 'description': 'Currency of the rates (uk-hmrc: local currency per city)'}, 'valid_to': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Valid To', 'description': 'Last day covered by the bundled tables'}, 'data_as_of': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Data As Of', 'description': 'Date the bundled snapshot was taken'}, 'valid_from': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Valid From', 'description': 'First day covered by the bundled tables'}, 'jurisdiction': {'type': 'string', 'title': 'Jurisdiction', 'description': 'Country/authority that publishes the rates'}, 'location_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Location Count', 'description': 'Number of locations with their own rate'}}}, 'title': 'Regimes', 'description': 'All regimes, available and planned'}, 'disclaimer': {'type': 'string', 'title': 'Disclaimer', 'description': 'Informational use only, not tax advice'}}, 'x-fastmcp-top-level-schema': 'RegimesOut'}
search_per_diem_locations
Search the locations of a regime
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['regime'], 'properties': {'q': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'title': 'Q', 'description': 'Case- and accent-insensitive text search over city, country, state, county and aliases'}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 50, 'maximum': 500.0, 'minimum': 1.0, 'description': 'Maximum items to return'}, 'state': {'anyOf': [{'type': 'string', 'maxLength': 2}, {'type': 'null'}], 'title': 'State', 'description': 'Only this US state (us-gsa)'}, 'offset': {'type': 'integer', 'title': 'Offset', 'default': 0, 'maximum': 10000.0, 'minimum': 0.0, 'description': 'Items to skip'}, 'regime': {'enum': ['de-bmf', 'us-gsa', 'us-state', 'uk-hmrc'], 'type': 'string', 'title': 'Regime', 'description': 'Regime to search'}, 'country': {'anyOf': [{'type': 'string', 'maxLength': 60, 'minLength': 2}, {'type': 'null'}], 'title': 'Country', 'description': 'Only this country (ISO alpha-2 or name)'}}}
Schéma de sortie
{'type': 'object', 'title': 'LocationsOut', 'required': ['regime', 'total', 'items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'title': 'LocationItem', 'required': ['regime', 'country', 'country_name', 'city'], 'properties': {'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'City', 'description': "City/destination label; null for the country-wide or 'rest of country' rate"}, 'state': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'State', 'description': 'US state (us-gsa)'}, 'county': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'County', 'description': 'GSA county / location defined'}, 'regime': {'enum': ['de-bmf', 'us-gsa', 'us-state', 'uk-hmrc'], 'type': 'string', 'title': 'Regime', 'description': 'Regime this row belongs to'}, 'aliases': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Aliases', 'description': 'Other names that match this row'}, 'country': {'type': 'string', 'title': 'Country', 'description': "ISO 3166-1 alpha-2 ('*' for the us-state 'Other Foreign Localities' rate)"}, 'country_name': {'type': 'string', 'title': 'Country Name', 'description': 'English country name'}}}, 'title': 'Items', 'description': 'Matching locations (after limit/offset)'}, 'total': {'type': 'integer', 'title': 'Total', 'description': 'Number of matching locations before limit/offset'}, 'regime': {'enum': ['de-bmf', 'us-gsa', 'us-state', 'uk-hmrc'], 'type': 'string', 'title': 'Regime', 'description': 'Regime searched'}}, 'x-fastmcp-top-level-schema': 'LocationsOut'}
Modifié
search_per_diem_locations
30 September 2026 02:40
Modifié
list_per_diem_regimes
30 September 2026 02:40
Modifié
calculate_trip_allowance
30 September 2026 02:40
Modifié
get_per_diem_rates
30 September 2026 02:40
Ajouté
search_per_diem_locations
28 September 2026 02:40
Ajouté
list_per_diem_regimes
28 September 2026 02:40
Ajouté
calculate_trip_allowance
28 September 2026 02:40
Ajouté
get_per_diem_rates
28 September 2026 02:40