Travel Per Diem & Allowance Calculator
Compliant per diems in one call: official US GSA, German BMF and UK HMRC rates, with a trip…
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"travel-per-diem": {
"url": "https://syntropicapi.com/mcp/travel-per-diem/mcp"
}
}
}Puntos de conexión remotos
https://syntropicapi.com/mcp/travel-per-diem/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (4)
🟢get_per_diem_rates(regime, country, city, state, postal_code, ...)
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).
Esquema de entrada
{
"type": "object",
"properties": {
"regime": {
"type": "string",
"enum": [
"de-bmf",
"us-gsa",
"us-state",
"uk-hmrc"
],
"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"
},
"city": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"title": "City",
"description": "City; unlisted cities fall back per the regime's rules"
},
"state": {
"anyOf": [
{
"type": "string",
"maxLength": 2
},
{
"type": "null"
}
],
"title": "State",
"description": "US state code (us-gsa)"
},
"postal_code": {
"anyOf": [
{
"type": "string",
"maxLength": 10
},
{
"type": "null"
}
],
"title": "Postal Code",
"description": "US ZIP (us-gsa) or French postcode (de-bmf)"
},
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Travel date (ISO 8601). Default: today (UTC)"
}
},
"required": [
"regime"
]
}Esquema de salida
{
"type": "object",
"properties": {
"regime": {
"type": "string",
"enum": [
"de-bmf",
"us-gsa",
"us-state",
"uk-hmrc"
],
"title": "Regime",
"description": "Regime the rate comes from"
},
"date": {
"type": "string",
"format": "date",
"title": "Date",
"description": "Date the rate applies to"
},
"currency": {
"type": "string",
"title": "Currency",
"description": "ISO 4217 currency of the summary fields"
},
"location": {
"properties": {
"country": {
"type": "string",
"title": "Country",
"description": "ISO 3166-1 alpha-2 code of the rate's country (after any fallback)"
},
"country_name": {
"type": "string",
"title": "Country Name",
"description": "English country name"
},
"label": {
"type": "string",
"title": "Label",
"description": "Location as named by the source"
},
"matched_by": {
"type": "string",
"title": "Matched By",
"description": "How the input was matched: city, county, postal_code, country, fallback or standard"
}
},
"type": "object",
"required": [
"country",
"country_name",
"label",
"matched_by"
],
"title": "Location",
"description": "The location that was resolved from the input"
},
"lodging": {
"type": "number",
"title": "Lodging",
"description": "Per-night lodging figure (BMF flat rate, GSA maximum, HMRC room rate)"
},
"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)"
},
"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)"
},
"de_bmf": {
"anyOf": [
{
"properties": {
"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": "Übernachtungspauschale per night for employer reimbursement (EUR)"
},
"deduction_breakfast": {
"type": "number",
"title": "Deduction Breakfast",
"description": "Deduction if breakfast is provided: 20 % of full_day"
},
"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"
},
"domestic": {
"type": "boolean",
"title": "Domestic",
"description": "True for trips inside Germany"
}
},
"type": "object",
"required": [
"full_day",
"partial_day",
"lodging_flat",
"deduction_breakfast",
"deduction_lunch",
"deduction_dinner",
"domestic"
],
"title": "BmfDetail"
},
{
"type": "null"
}
],
"description": "de-bmf breakdown (only for regime de-bmf)"
},
"us_gsa": {
"anyOf": [
{
"properties": {
"fiscal_year": {
"type": "integer",
"title": "Fiscal Year",
"description": "US federal fiscal year (Oct 1 – Sep 30)"
},
"destination": {
"type": "string",
"title": "Destination",
"description": "GSA destination name or 'Standard CONUS rate'"
},
"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"
},
"lodging": {
"type": "integer",
"title": "Lodging",
"description": "Maximum lodging rate for the requested date (USD, taxes excluded)"
},
"mie": {
"type": "integer",
"title": "Mie",
"description": "Meals & incidental expenses rate per full day (USD)"
},
"breakfast": {
"type": "integer",
"title": "Breakfast",
"description": "M&IE breakdown: breakfast"
},
"lunch": {
"type": "integer",
"title": "Lunch",
"description": "M&IE breakdown: lunch"
},
"dinner": {
"type": "integer",
"title": "Dinner",
"description": "M&IE breakdown: dinner"
},
"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"
},
"seasons": {
"items": {
"properties": {
"start": {
"type": "string",
"title": "Start",
"description": "Season start as MM-DD"
},
"end": {
"type": "string",
"title": "End",
"description": "Season end as MM-DD"
},
"lodging": {
"type": "integer",
"title": "Lodging",
"description": "Maximum lodging rate per night (USD)"
},
"mie": {
"type": "integer",
"title": "Mie",
"description": "M&IE rate per day (USD)"
}
},
"type": "object",
"required": [
"start",
"end",
"lodging",
"mie"
],
"title": "GsaSeason"
},
"type": "array",
"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"
}
},
"type": "object",
"required": [
"fiscal_year",
"destination",
"state",
"county",
"lodging",
"mie",
"breakfast",
"lunch",
"dinner",
"incidentals",
"first_last_day",
"seasons",
"standard"
],
"title": "GsaDetail"
},
{
"type": "null"
}
],
"description": "us-gsa breakdown (only for regime us-gsa)"
},
"us_state": {
"anyOf": [
{
"properties": {
"post": {
"type": "string",
"title": "Post",
"description": "Post (location) as named by the State Dept; 'Other' = rest of the country"
},
"country_label": {
"type": "string",
"title": "Country Label",
"description": "Country as named by the State Dept"
},
"lodging": {
"type": "integer",
"title": "Lodging",
"description": "Maximum lodging rate for the requested date (USD)"
},
"mie": {
"type": "integer",
"title": "Mie",
"description": "Meals & incidental expenses rate per full day (USD)"
},
"breakfast": {
"type": "number",
"title": "Breakfast",
"description": "M&IE breakdown (FTR ch. 301 Appendix B): breakfast"
},
"lunch": {
"type": "number",
"title": "Lunch",
"description": "M&IE breakdown: lunch"
},
"dinner": {
"type": "number",
"title": "Dinner",
"description": "M&IE breakdown: dinner"
},
"incidentals": {
"type": "number",
"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"
},
"seasons": {
"items": {
"properties": {
"start": {
"type": "string",
"title": "Start",
"description": "Season start as MM-DD"
},
"end": {
"type": "string",
"title": "End",
"description": "Season end as MM-DD"
},
"lodging": {
"type": "integer",
"title": "Lodging",
"description": "Maximum lodging rate per night (USD)"
},
"mie": {
"type": "integer",
"title": "Mie",
"description": "M&IE rate per day (USD)"
}
},
"type": "object",
"required": [
"start",
"end",
"lodging",
"mie"
],
"title": "GsaSeason"
},
"type": "array",
"title": "Seasons",
"description": "Seasons of this post (a season may wrap the year end, e.g. 10-01..04-30)"
},
"effective_from": {
"type": "string",
"format": "date",
"title": "Effective From",
"description": "Date the State Dept made this post's current rate effective"
},
"footnotes": {
"items": {
"type": "integer"
},
"type": "array",
"title": "Footnotes",
"description": "State Dept footnote numbers for this post (see footnote_url)"
},
"footnote_url": {
"type": "string",
"title": "Footnote Url",
"description": "Where the footnotes are explained"
}
},
"type": "object",
"required": [
"post",
"country_label",
"lodging",
"mie",
"breakfast",
"lunch",
"dinner",
"incidentals",
"first_last_day",
"seasons",
"effective_from",
"footnotes",
"footnote_url"
],
"title": "StateDetail"
},
{
"type": "null"
}
],
"description": "us-state breakdown (only for regime us-state)"
},
"uk_hmrc": {
"anyOf": [
{
"properties": {
"city": {
"type": "string",
"title": "City",
"description": "City as listed by HMRC"
},
"currency": {
"type": "string",
"title": "Currency",
"description": "ISO 4217 currency of the rates (unless a field's own currency says otherwise)"
},
"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": {
"type": "number",
"title": "Room",
"description": "Room rate per night"
},
"room_currency": {
"type": "string",
"title": "Room Currency",
"description": "Currency of the room rate"
},
"breakfast": {
"type": "number",
"title": "Breakfast",
"description": "Breakfast rate (0 when included in the room rate)"
},
"lunch": {
"type": "number",
"title": "Lunch",
"description": "Lunch rate"
},
"dinner": {
"type": "number",
"title": "Dinner",
"description": "Dinner rate"
},
"other": {
"type": "number",
"title": "Other",
"description": "'Other' meal/incidentals component of the HMRC table"
},
"drinks": {
"type": "number",
"title": "Drinks",
"description": "Drinks component"
},
"hotel_to_office": {
"type": "number",
"title": "Hotel To Office",
"description": "Hotel-to-office travel component"
},
"total_residual": {
"type": "number",
"title": "Total Residual",
"description": "Subsistence per 24 h when the room is paid separately"
},
"breakfast_included_in_room": {
"type": "boolean",
"title": "Breakfast Included In Room",
"description": "HMRC marks breakfast as included in the room rate"
}
},
"type": "object",
"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"
],
"title": "HmrcDetail"
},
{
"type": "null"
}
],
"description": "uk-hmrc breakdown (only for regime uk-hmrc)"
},
"other_locations": {
"items": {
"type": "string"
},
"type": "array",
"title": "Other Locations",
"description": "Other listed locations in the same country for this regime"
},
"notes": {
"items": {
"type": "string"
},
"type": "array",
"title": "Notes",
"description": "Fallbacks and caveats that applied"
},
"source": {
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Official publication the numbers come from"
},
"url": {
"type": "string",
"title": "Url",
"description": "Where to find it"
},
"license": {
"type": "string",
"title": "License",
"description": "Reuse terms of 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)"
},
"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",
"format": "date",
"title": "Data As Of",
"description": "Date the bundled snapshot was taken from the source"
}
},
"type": "object",
"required": [
"name",
"url",
"license",
"data_as_of"
],
"title": "Source",
"description": "Official publication the rate comes from"
},
"disclaimer": {
"type": "string",
"title": "Disclaimer",
"description": "Informational use only, not tax advice"
}
},
"required": [
"regime",
"date",
"currency",
"location",
"lodging",
"meals_full_day",
"meals_partial_day",
"other_locations",
"notes",
"source",
"disclaimer"
],
"title": "RatesOut",
"x-fastmcp-top-level-schema": "RatesOut"
}🟢calculate_trip_allowance(regime, legs, leave_home, return_home, meals_provided, ...)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"regime": {
"type": "string",
"enum": [
"de-bmf",
"us-gsa",
"us-state",
"uk-hmrc"
],
"title": "Regime",
"description": "Which rule set to apply"
},
"legs": {
"items": {
"properties": {
"country": {
"type": "string",
"maxLength": 60,
"minLength": 2,
"title": "Country",
"description": "ISO alpha-2 code or English/German country name"
},
"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)"
},
"postal_code": {
"anyOf": [
{
"type": "string",
"maxLength": 10
},
{
"type": "null"
}
],
"title": "Postal Code",
"description": "US ZIP (us-gsa) or French postcode (de-bmf Paris region)"
},
"arrive": {
"type": "string",
"format": "date-time",
"title": "Arrive",
"description": "Local arrival time at this destination (ISO 8601)"
},
"depart": {
"type": "string",
"format": "date-time",
"title": "Depart",
"description": "Local departure time from this destination (ISO 8601)"
},
"transport": {
"type": "string",
"enum": [
"flight",
"ship",
"train",
"car",
"other"
],
"title": "Transport",
"description": "How this destination was reached (de-bmf: multi-day flights use Austria, days at sea use Luxembourg)",
"default": "other"
},
"returns_home_before": {
"type": "boolean",
"title": "Returns Home Before",
"description": "de-bmf: the traveller went home between the previous leg and this one (new trip; shared day gets the higher rate)",
"default": false
}
},
"type": "object",
"required": [
"country",
"arrive",
"depart"
],
"title": "LegIn"
},
"type": "array",
"maxItems": 20,
"minItems": 1,
"title": "Legs",
"description": "Destinations in chronological order (1-20)"
},
"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": {
"items": {
"properties": {
"date": {
"type": "string",
"format": "date",
"title": "Date",
"description": "Calendar day the meals were provided"
},
"breakfast": {
"type": "boolean",
"title": "Breakfast",
"description": "Breakfast was provided",
"default": false
},
"lunch": {
"type": "boolean",
"title": "Lunch",
"description": "Lunch was provided",
"default": false
},
"dinner": {
"type": "boolean",
"title": "Dinner",
"description": "Dinner was provided",
"default": false
}
},
"type": "object",
"required": [
"date"
],
"title": "MealsIn"
},
"type": "array",
"maxItems": 92,
"title": "Meals Provided",
"description": "Meals provided by employer/host"
},
"lodging_provided": {
"type": "boolean",
"title": "Lodging Provided",
"description": "Lodging paid directly by the employer: no lodging lines",
"default": false
},
"overnight": {
"type": "boolean",
"title": "Overnight",
"description": "False for a trip across midnight without an overnight stay (de-bmf/us-gsa: combine hours)",
"default": true
}
},
"required": [
"regime",
"legs"
]
}Esquema de salida
{
"type": "object",
"properties": {
"regime": {
"type": "string",
"enum": [
"de-bmf",
"us-gsa",
"us-state",
"uk-hmrc"
],
"title": "Regime",
"description": "Regime applied"
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Currency",
"description": "Currency of total, if the trip has a single currency"
},
"total": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Total",
"description": "Grand total (null if several currencies are involved; see totals)"
},
"meals_total": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Meals Total",
"description": "Meal allowances before deductions (single-currency trips, else null)"
},
"deductions_total": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Deductions Total",
"description": "Meal deductions, negative (single-currency trips, else null)"
},
"lodging_total": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Lodging Total",
"description": "Lodging total (single-currency trips, else null)"
},
"totals": {
"items": {
"properties": {
"currency": {
"type": "string",
"title": "Currency",
"description": "ISO 4217 currency"
},
"meals": {
"type": "number",
"title": "Meals",
"description": "Meal allowances before deductions"
},
"deductions": {
"type": "number",
"title": "Deductions",
"description": "Meal deductions (negative; capped so meals never go below 0)"
},
"lodging": {
"type": "number",
"title": "Lodging",
"description": "Lodging amounts"
},
"total": {
"type": "number",
"title": "Total",
"description": "meals + deductions (floored at 0) + lodging"
}
},
"type": "object",
"required": [
"currency",
"meals",
"deductions",
"lodging",
"total"
],
"title": "CurrencyTotal"
},
"type": "array",
"title": "Totals",
"description": "Totals per currency"
},
"days": {
"type": "integer",
"title": "Days",
"description": "Calendar days touched by the trip"
},
"lines": {
"items": {
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Calendar day (HMRC: day the period starts)"
},
"kind": {
"type": "string",
"enum": [
"meals",
"deduction",
"lodging"
],
"title": "Kind",
"description": "meals = allowance, deduction = provided-meal deduction (negative), lodging = per-night lodging"
},
"location": {
"type": "string",
"title": "Location",
"description": "Location whose rate was used"
},
"amount": {
"type": "number",
"title": "Amount",
"description": "Amount of this line (deductions are negative)"
},
"currency": {
"type": "string",
"title": "Currency",
"description": "ISO 4217 currency of amount"
},
"rule": {
"type": "string",
"title": "Rule",
"description": "The rule applied to produce this line"
},
"rate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Rate",
"description": "Underlying full rate the line is based on"
},
"meal": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Meal",
"description": "Meal a deduction refers to"
},
"period_start": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Period Start",
"description": "uk-hmrc: start of the 24 h / residual period"
},
"period_end": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Period End",
"description": "uk-hmrc: end of the period"
}
},
"type": "object",
"required": [
"date",
"kind",
"location",
"amount",
"currency",
"rule"
],
"title": "TripLine"
},
"type": "array",
"title": "Lines",
"description": "One line per day/period, deduction and night, each with its rule"
},
"notes": {
"items": {
"type": "string"
},
"type": "array",
"title": "Notes",
"description": "Assumptions and caveats that applied"
},
"sources": {
"items": {
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Official publication the numbers come from"
},
"url": {
"type": "string",
"title": "Url",
"description": "Where to find it"
},
"license": {
"type": "string",
"title": "License",
"description": "Reuse terms of 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)"
},
"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",
"format": "date",
"title": "Data As Of",
"description": "Date the bundled snapshot was taken from the source"
}
},
"type": "object",
"required": [
"name",
"url",
"license",
"data_as_of"
],
"title": "Source"
},
"type": "array",
"title": "Sources",
"description": "Official publications used"
},
"disclaimer": {
"type": "string",
"title": "Disclaimer",
"description": "Informational use only, not tax advice"
}
},
"required": [
"regime",
"currency",
"total",
"meals_total",
"deductions_total",
"lodging_total",
"totals",
"days",
"lines",
"notes",
"sources",
"disclaimer"
],
"title": "TripOut",
"x-fastmcp-top-level-schema": "TripOut"
}🟢list_per_diem_regimes
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.
Esquema de entrada
{
"type": "object",
"properties": {},
"required": []
}Esquema de salida
{
"type": "object",
"properties": {
"regimes": {
"items": {
"properties": {
"id": {
"type": "string",
"title": "Id",
"description": "Regime id used in the other endpoints"
},
"name": {
"type": "string",
"title": "Name",
"description": "Human-readable regime name"
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction",
"description": "Country/authority that publishes the rates"
},
"status": {
"type": "string",
"enum": [
"available",
"planned"
],
"title": "Status",
"description": "'available' or 'planned' (not yet served)"
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Currency",
"description": "Currency of the rates (uk-hmrc: local currency per city)"
},
"coverage": {
"type": "string",
"title": "Coverage",
"description": "What locations and years are covered"
},
"valid_from": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Valid From",
"description": "First day covered by the bundled tables"
},
"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"
},
"location_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Location Count",
"description": "Number of locations with their own rate"
},
"rules": {
"items": {
"type": "string"
},
"type": "array",
"title": "Rules",
"description": "Rules the trip calculator applies"
},
"sources": {
"items": {
"properties": {
"name": {
"type": "string",
"title": "Name",
"description": "Official publication the numbers come from"
},
"url": {
"type": "string",
"title": "Url",
"description": "Where to find it"
},
"license": {
"type": "string",
"title": "License",
"description": "Reuse terms of 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)"
},
"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",
"format": "date",
"title": "Data As Of",
"description": "Date the bundled snapshot was taken from the source"
}
},
"type": "object",
"required": [
"name",
"url",
"license",
"data_as_of"
],
"title": "Source"
},
"type": "array",
"title": "Sources",
"description": "Official publications used"
}
},
"type": "object",
"required": [
"id",
"name",
"jurisdiction",
"status",
"currency",
"coverage",
"rules"
],
"title": "RegimeOut"
},
"type": "array",
"title": "Regimes",
"description": "All regimes, available and planned"
},
"disclaimer": {
"type": "string",
"title": "Disclaimer",
"description": "Informational use only, not tax advice"
}
},
"required": [
"regimes",
"disclaimer"
],
"title": "RegimesOut",
"x-fastmcp-top-level-schema": "RegimesOut"
}🟢search_per_diem_locations(regime, q, country, state, limit, ...)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"regime": {
"type": "string",
"enum": [
"de-bmf",
"us-gsa",
"us-state",
"uk-hmrc"
],
"title": "Regime",
"description": "Regime to search"
},
"q": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"title": "Q",
"description": "Case- and accent-insensitive text search over city, country, state, county and aliases"
},
"country": {
"anyOf": [
{
"type": "string",
"maxLength": 60,
"minLength": 2
},
{
"type": "null"
}
],
"title": "Country",
"description": "Only this country (ISO alpha-2 or name)"
},
"state": {
"anyOf": [
{
"type": "string",
"maxLength": 2
},
{
"type": "null"
}
],
"title": "State",
"description": "Only this US state (us-gsa)"
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"title": "Limit",
"description": "Maximum items to return",
"default": 50
},
"offset": {
"type": "integer",
"maximum": 10000,
"minimum": 0,
"title": "Offset",
"description": "Items to skip",
"default": 0
}
},
"required": [
"regime"
]
}Esquema de salida
{
"type": "object",
"properties": {
"regime": {
"type": "string",
"enum": [
"de-bmf",
"us-gsa",
"us-state",
"uk-hmrc"
],
"title": "Regime",
"description": "Regime searched"
},
"total": {
"type": "integer",
"title": "Total",
"description": "Number of matching locations before limit/offset"
},
"items": {
"items": {
"properties": {
"regime": {
"type": "string",
"enum": [
"de-bmf",
"us-gsa",
"us-state",
"uk-hmrc"
],
"title": "Regime",
"description": "Regime this row belongs to"
},
"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"
},
"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"
},
"aliases": {
"items": {
"type": "string"
},
"type": "array",
"title": "Aliases",
"description": "Other names that match this row"
}
},
"type": "object",
"required": [
"regime",
"country",
"country_name",
"city"
],
"title": "LocationItem"
},
"type": "array",
"title": "Items",
"description": "Matching locations (after limit/offset)"
}
},
"required": [
"regime",
"total",
"items"
],
"title": "LocationsOut",
"x-fastmcp-top-level-schema": "LocationsOut"
}Comunidad
Evidencia