Travel Per Diem & Allowance Calculator

Compliant per diems in one call: official US GSA, German BMF and UK HMRC rates, with a trip…

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
74%
Qualität der Benennung
100%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~6,460Tokens (Tool-Definitionen)
~17.8 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (5.05% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "travel-per-diem": {
      "url": "https://syntropicapi.com/mcp/travel-per-diem/mcp"
    }
  }
}

Remote-Endpunkte

https://syntropicapi.com/mcp/travel-per-diem/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (4)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢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).

Eingabe-Schema

{
  "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"
  ]
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "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"
  ]
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "required": []
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "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"
  ]
}

Ausgabe-Schema

{
  "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"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet4 Tools