Daily travel allowances from bundled public rate tables: Poland, HMRC and GSA CONUS.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer <Pro license key or anonymous token from GET https://mcp.zovo.one/mcp/token>
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.
License key from checkout, MCPL1.<payload>.<signature>
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.
| Argument | Type | Description |
|---|---|---|
| key* | string | License key from checkout, MCPL1.<payload>.<signature> |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"description": "License key from checkout, MCPL1.<payload>.<signature>"
}
},
"additionalProperties": false
}Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Calculate the daily travel allowance for one trip: the amount per day and the total in the scheme's currency, with the partial-day fraction and the meal deductions the scheme's own rule applies. Free and unlimited.
| Argument | Type | Description |
|---|---|---|
| end* | string | When it ended, same form as start. It must be after start as an instant |
| start* | string | When the trip began, ISO 8601 WITH a zone: "2026-03-28T22:00:00+01:00", or "2026-03-28T22:00" together with timezone |
| scheme* | string | "pl" Polish delegation regulation, "uk" HMRC benchmark scale rates, "us" GSA CONUS standard |
| timezone | string | IANA id such as "Europe/Warsaw". Required when start or end carries no offset; also the zone the US scheme counts calendar days in |
| destination* | string | Country or locality, e.g. "Germany", "Poland", "United Kingdom", "United States" |
| fiscal_year | string | US only, e.g. "FY2025". Defaults to the current bundled fiscal year |
| late_evening | array | UK only, per day: the journey was ongoing at 8pm and a meal was bought after it, which adds the 10.00 GBP supplement |
List a scheme's bundled daily allowance rates with the authority, instrument, source URL and effective date they came from. Filter by country or city. Free and unlimited.
| Argument | Type | Description |
|---|---|---|
| city | string | City or locality name, for the schemes that publish per-city rates |
| scheme | string | "pl" Polish delegation regulation, "uk" HMRC benchmark scale rates, "us" GSA CONUS standard. Omit for every scheme |
| country | string | Country name or ISO code, e.g. Germany or DE. Matched exactly first, then as a substring |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"city": {
"type": "string",
"description": "City or locality name, for the schemes that publish per-city rates"
},
"scheme": {
"enum": [
"pl",
"uk",
"us"
],
"type": "string",
"description": "\"pl\" Polish delegation regulation, \"uk\" HMRC benchmark scale rates, \"us\" GSA CONUS standard. Omit for every scheme"
},
"country": {
"type": "string",
"description": "Country name or ISO code, e.g. Germany or DE. Matched exactly first, then as a substring"
}
},
"additionalProperties": false
}Total saved trips per scheme and calendar month, bucketed by start date: trips, days, subsistence and lodging, each in the scheme's own currency, with the trip ids behind every figure. Pro.
| Argument | Type | Description |
|---|---|---|
| to | string | YYYY-MM, latest month by start date |
| from | string | YYYY-MM, earliest month by start date |
| scheme | string | Default "all" |
| traveller | string | Only this traveller |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"to": {
"type": "string",
"description": "YYYY-MM, latest month by start date"
},
"from": {
"type": "string",
"description": "YYYY-MM, earliest month by start date"
},
"scheme": {
"enum": [
"pl",
"uk",
"us",
"all"
],
"type": "string",
"description": "Default \"all\""
},
"traveller": {
"type": "string",
"description": "Only this traveller"
}
},
"additionalProperties": false
}Delete one saved trip and free the free-tier slot it held that month. A trip that has been exported or has an expense booked against it is refused with the blocker named, and nothing is written. Free and unlimited.
| Argument | Type | Description |
|---|---|---|
| trip* | string | Trip id such as TRIP-2026-0001, or an exact or partial trip name. A partial name matching more than one trip is refused with the list |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"trip"
],
"properties": {
"trip": {
"type": "string",
"minLength": 1,
"description": "Trip id such as TRIP-2026-0001, or an exact or partial trip name. A partial name matching more than one trip is refused with the list"
}
},
"additionalProperties": false
}Return the exact expense_add arguments for a saved trip: one payload for subsistence and, with split_lodging, one for lodging. It writes nothing in the expense-tracker server; only mark_exported changes this trip. Pro.
| Argument | Type | Description |
|---|---|---|
| trip* | string | Trip id such as TRIP-2026-0001, or an exact or partial trip name |
| billable | boolean | Rebillable to the client. Default: true when the trip has a project, false otherwise |
| category | string | Expense category to put on the payload. Default "travel" |
| mark_exported | boolean | Stamp exported_at on the trip so a later export can see it already went out. Default false |
| split_lodging | boolean | Return lodging as its own expense rather than folded into the subsistence total. Default true |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"trip"
],
"properties": {
"trip": {
"type": "string",
"minLength": 1,
"description": "Trip id such as TRIP-2026-0001, or an exact or partial trip name"
},
"billable": {
"type": "boolean",
"description": "Rebillable to the client. Default: true when the trip has a project, false otherwise"
},
"category": {
"type": "string",
"maxLength": 200,
"description": "Expense category to put on the payload. Default \"travel\""
},
"mark_exported": {
"type": "boolean",
"description": "Stamp exported_at on the trip so a later export can see it already went out. Default false"
},
"split_lodging": {
"type": "boolean",
"description": "Return lodging as its own expense rather than folded into the subsistence total. Default true"
}
},
"additionalProperties": false
}List saved trips with the scheme, destination, dates and total on each, and a total per currency. Filter by scheme, destination, traveller, project and start date range. Free and unlimited.
| Argument | Type | Description |
|---|---|---|
| to | string | YYYY-MM-DD, latest start date |
| from | string | YYYY-MM-DD, earliest start date |
| scheme | string | Default "all" |
| project | string | Only trips on this project |
| traveller | string | Only trips by this traveller |
| destination | string | Only trips to a destination containing this text |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"to": {
"type": "string",
"description": "YYYY-MM-DD, latest start date"
},
"from": {
"type": "string",
"description": "YYYY-MM-DD, earliest start date"
},
"scheme": {
"enum": [
"pl",
"uk",
"us",
"all"
],
"type": "string",
"description": "Default \"all\""
},
"project": {
"type": "string",
"description": "Only trips on this project"
},
"traveller": {
"type": "string",
"description": "Only trips by this traveller"
},
"destination": {
"type": "string",
"description": "Only trips to a destination containing this text"
}
},
"additionalProperties": false
}Calculate a trip and save it under a name, traveller taken from the shared business profile; returns the TRIP-YYYY-NNNN id. An identical record is refused and named, spending no slot. Free: 5 trips a calendar month.
| Argument | Type | Description |
|---|---|---|
| end* | string | When it ended, same form as start. It must be after start as an instant |
| name* | string | What to call it, e.g. "Berlin client workshop" |
| start* | string | When the trip began, ISO 8601 WITH a zone: "2026-03-28T22:00:00+01:00", or "2026-03-28T22:00" together with timezone |
| scheme* | string | "pl" Polish delegation regulation, "uk" HMRC benchmark scale rates, "us" GSA CONUS standard |
| project | string | Project or client this belongs to; carried onto the expense payload |
| purpose | string | Why the trip happened; kept on the record and carried onto the expense payload |
| timezone | string | IANA id such as "Europe/Warsaw". Required when start or end carries no offset; also the zone the US scheme counts calendar days in |
| traveller | string |
| lodging_nights | integer | Nights of accommodation. What this pays depends on the scheme and the answer says so |
| meals_provided | array | Per day, in order: the free meals the traveller was given that day, e.g. [["breakfast"],["breakfast","lunch"]]. Each one reduces that day's allowance by the scheme's own percentage or amount |
| meals_provided_daily | any | The same free meals on every day. Ignored for any day that meals_provided already names |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"scheme",
"destination",
"start",
"end"
],
"properties": {
"end": {
"type": "string",
"minLength": 1,
"description": "When it ended, same form as start. It must be after start as an instant"
},
"start": {
"type": "string",
"minLength": 1,
"description": "When the trip began, ISO 8601 WITH a zone: \"2026-03-28T22:00:00+01:00\", or \"2026-03-28T22:00\" together with timezone"
},
"scheme": {
"enum": [
"pl",
"uk",
"us"
],
"type": "string",
"description": "\"pl\" Polish delegation regulation, \"uk\" HMRC benchmark scale rates, \"us\" GSA CONUS standard"
},
"timezone": {
"type": "string",
"description": "IANA id such as \"Europe/Warsaw\". Required when start or end carries no offset; also the zone the US scheme counts calendar days in"
},
"destination": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Country or locality, e.g. \"Germany\", \"Poland\", \"United Kingdom\", \"United States\""
},
"fiscal_year": {
"type": "string",
"description": "US only, e.g. \"FY2025\". Defaults to the current bundled fiscal year"
},
"late_evening": {
"type": "array",
"items": {
"type": "boolean"
},
"description": "UK only, per day: the journey was ongoing at 8pm and a meal was bought after it, which adds the 10.00 GBP supplement"
},
"lodging_nights": {
"type": "integer",
"maximum": 366,
"minimum": 0,
"description": "Nights of accommodation. What this pays depends on the scheme and the answer says so"
},
"meals_provided": {
"type": "array",
"items": {
"type": "array",
"items": {
"enum": [
"breakfast",
"lunch",
"dinner"
],
"type": "string"
}
},
"description": "Per day, in order: the free meals the traveller was given that day, e.g. [[\"breakfast\"],[\"breakfast\",\"lunch\"]]. Each one reduces that day's allowance by the scheme's own percentage or amount"
},
"meals_provided_daily": {
"$ref": "#/properties/meals_provided/items",
"description": "The same free meals on every day. Ignored for any day that meals_provided already names"
}
},
"additionalProperties": false
}| Who travelled. Defaults to the shared business profile's name |
| destination* | string | Country or locality, e.g. "Germany", "Poland", "United Kingdom", "United States" |
| fiscal_year | string | US only, e.g. "FY2025". Defaults to the current bundled fiscal year |
| late_evening | array | UK only, per day: the journey was ongoing at 8pm and a meal was bought after it, which adds the 10.00 GBP supplement |
| lodging_nights | integer | Nights of accommodation. What this pays depends on the scheme and the answer says so |
| meals_provided | array | Per day, in order: the free meals the traveller was given that day, e.g. [["breakfast"],["breakfast","lunch"]]. Each one reduces that day's allowance by the scheme's own percentage or amount |
| meals_provided_daily | any | The same free meals on every day. Ignored for any day that meals_provided already names |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"scheme",
"destination",
"start",
"end"
],
"properties": {
"end": {
"type": "string",
"minLength": 1,
"description": "When it ended, same form as start. It must be after start as an instant"
},
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "What to call it, e.g. \"Berlin client workshop\""
},
"start": {
"type": "string",
"minLength": 1,
"description": "When the trip began, ISO 8601 WITH a zone: \"2026-03-28T22:00:00+01:00\", or \"2026-03-28T22:00\" together with timezone"
},
"scheme": {
"enum": [
"pl",
"uk",
"us"
],
"type": "string",
"description": "\"pl\" Polish delegation regulation, \"uk\" HMRC benchmark scale rates, \"us\" GSA CONUS standard"
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Project or client this belongs to; carried onto the expense payload"
},
"purpose": {
"type": "string",
"maxLength": 2000,
"description": "Why the trip happened; kept on the record and carried onto the expense payload"
},
"timezone": {
"type": "string",
"description": "IANA id such as \"Europe/Warsaw\". Required when start or end carries no offset; also the zone the US scheme counts calendar days in"
},
"traveller": {
"type": "string",
"maxLength": 200,
"description": "Who travelled. Defaults to the shared business profile's name"
},
"destination": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Country or locality, e.g. \"Germany\", \"Poland\", \"United Kingdom\", \"United States\""
},
"fiscal_year": {
"type": "string",
"description": "US only, e.g. \"FY2025\". Defaults to the current bundled fiscal year"
},
"late_evening": {
"type": "array",
"items": {
"type": "boolean"
},
"description": "UK only, per day: the journey was ongoing at 8pm and a meal was bought after it, which adds the 10.00 GBP supplement"
},
"lodging_nights": {
"type": "integer",
"maximum": 366,
"minimum": 0,
"description": "Nights of accommodation. What this pays depends on the scheme and the answer says so"
},
"meals_provided": {
"type": "array",
"items": {
"type": "array",
"items": {
"enum": [
"breakfast",
"lunch",
"dinner"
],
"type": "string"
}
},
"description": "Per day, in order: the free meals the traveller was given that day, e.g. [[\"breakfast\"],[\"breakfast\",\"lunch\"]]. Each one reduces that day's allowance by the scheme's own percentage or amount"
},
"meals_provided_daily": {
"$ref": "#/properties/meals_provided/items",
"description": "The same free meals on every day. Ignored for any day that meals_provided already names"
}
},
"additionalProperties": false
}