theluckystrike MCP Per Diem
Calculates statutory travel allowances using bundled Polish, HMRC, and GSA rate tables. Supports partial day calculations, meal deductions, trip recording, and monthly reporting for expense tracking.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.zovo.one/mcp/per-diemWhat its tools do
9 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Can change data (4)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Calculate daily travel allowance for a specific trip with partial-day rules
- List bundled daily allowance rates with source authority and effective date
- Total saved trips per month by scheme and currency
- Export expense arguments for subsistence and lodging to an expense tracker
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- mcp-per-diem 0.22.6
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 9 advertised
- Resources
- 2 advertised
- Resource templates
- 0 advertised
- Prompts
- 2 advertised
{
"tools": {
"listChanged": true
},
"prompts": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
9 advertised
perdiem_rates — List the bundled per diem rates
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.
{
"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
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}perdiem_calc — Calculate a travel allowance
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.
{
"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
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}trip_record — Save a calculated trip
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.
{
"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
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}trip_list — List saved trips
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.
{
"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
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}trip_delete — Delete a saved trip
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.
{
"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
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}trip_export — Export a trip as expenses
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.
{
"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
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}perdiem_report — Totals per scheme and month
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.
{
"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
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}license_status — License status
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}license_activate — Activate license
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.
{
"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
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}Prompts
2 advertised
upgrade_to_pro — Explain the upgrade
Explain what Pro on the per-diem server costs and exactly what the user has to do, without leaving the conversation.
- feature
- The capped feature that prompted this, if there was one
claim_trip — Turn a trip into a per diem claim
Work out the allowance for a trip, save it, and produce the expense lines for it.
Resources
2 advertised
pricing — Pricing and upgrade
What per-diem costs, what Pro unlocks, the checkout link that carries this connection's token, and the one step a person has to take. Machine-readable; read it before telling a user how to lift a free-tier cap.
pricing://per-diemschemes — Bundled per diem schemes
Every bundled table with its authority, source URL, effective date and coverage, as JSON.
perdiem://schemes30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1535 ms
- 95th percentile latency
- 1535 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1535 ms · metadata changed · 9 tool(s), 2 resource(s), 0 resource template(s), 2 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http mcp-per-diem https://mcp.zovo.one/mcp/per-diemCodex
codex mcp add mcp-per-diem --url https://mcp.zovo.one/mcp/per-diemCursor
{
"mcpServers": {
"mcp-per-diem": {
"url": "https://mcp.zovo.one/mcp/per-diem"
}
}
}Cline
{
"mcpServers": {
"mcp-per-diem": {
"type": "streamableHttp",
"url": "https://mcp.zovo.one/mcp/per-diem",
"disabled": false
}
}
}VS Code
{
"servers": {
"mcp-per-diem": {
"type": "http",
"url": "https://mcp.zovo.one/mcp/per-diem"
}
}
}Gemini CLI
gemini mcp add --transport http mcp-per-diem https://mcp.zovo.one/mcp/per-diemClaude Desktop
https://mcp.zovo.one/mcp/per-diemWindsurf
{
"mcpServers": {
"mcp-per-diem": {
"serverUrl": "https://mcp.zovo.one/mcp/per-diem"
}
}
}Let your agent find its tools
Find servers like theluckystrike MCP Per Diem from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.