Fixed assets and depreciation from bundled Polish KST, HMRC and IRS MACRS tables.
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.
Add one fixed asset to the register and return its id with the rate, useful life and convention taken from the bundled tax table. Cost and residual are whole minor units. Free tier holds ten assets.
What the asset is, e.g. "MacBook Pro 16" or "Delivery van"
A code or name from the bundled table, e.g. "487" or "Computers and computer sets" (pl), "main" (uk), "5-year" (us). Read assets://categories for the list
Acquisition cost in MINOR units (integer cents/grosze), e.g. 549900 for 5499.00. Never a decimal
ISO date YYYY-MM-DD the asset was bought
"straight-line" or "declining-balance". Default: the table row method, straight-line for the Polish annex and the reducing-balance pool rate for the UK
"pl" Polish KST annex rates, "uk" HMRC capital allowance pools, "us" IRS MACRS GDS. Omit to derive it from the shared business profile currency
Project, department or cost centre this asset belongs to
ISO code. Defaults to the shared business profile currency, else the scheme table currency
Override the annual percentage derived from the table. Use for a lowered Polish rate under art. 16i
Override the useful life derived from the table, in years. The answer reports that it was an override
Residual or salvage value in MINOR units, default 0. Must be less than cost. MACRS ignores it and the answer says so
ISO date YYYY-MM-DD the asset entered use and the register. Defaults to purchase_date
Declining-balance coefficient. Polish default 2.0, capped by the table; ignored with straight-line
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Add one fixed asset to the register and return its id with the rate, useful life and convention taken from the bundled tax table. Cost and residual are whole minor units. Free tier holds ten assets.
| Argument | Type | Description |
|---|---|---|
| name* | string | What the asset is, e.g. "MacBook Pro 16" or "Delivery van" |
| note | string | |
| method | string | "straight-line" or "declining-balance". Default: the table row method, straight-line for the Polish annex and the reducing-balance pool rate for the UK |
| scheme | string | "pl" Polish KST annex rates, "uk" HMRC capital allowance pools, "us" IRS MACRS GDS. Omit to derive it from the shared business profile currency |
| project | string | Project, department or cost centre this asset belongs to |
| category* | string | A code or name from the bundled table, e.g. "487" or "Computers and computer sets" (pl), "main" (uk), "5-year" (us). Read assets://categories for the list |
| currency | string | ISO code. Defaults to the shared business profile currency, else the scheme table currency |
| rate_pct | number | Override the annual percentage derived from the table. Use for a lowered Polish rate under art. 16i |
| cost_minor* | integer | Acquisition cost in MINOR units (integer cents/grosze), e.g. 549900 for 5499.00. Never a decimal |
| life_years | number | Override the useful life derived from the table, in years. The answer reports that it was an override |
| purchase_date* | string | ISO date YYYY-MM-DD the asset was bought |
| residual_minor | integer | Residual or salvage value in MINOR units, default 0. Must be less than cost. MACRS ignores it and the answer says so |
| in_service_date | string | ISO date YYYY-MM-DD the asset entered use and the register. Defaults to purchase_date |
| declining_coefficient | number | Declining-balance coefficient. Polish default 2.0, capped by the table; ignored with straight-line |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"category",
"cost_minor",
"purchase_date"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "What the asset is, e.g. \"MacBook Pro 16\" or \"Delivery van\""
},
"note": {
"type": "string",
"maxLength": 2000
},
"method": {
"enum": [
"straight-line",
"declining-balance"
],
"type": "string",
"description": "\"straight-line\" or \"declining-balance\". Default: the table row method, straight-line for the Polish annex and the reducing-balance pool rate for the UK"
},
"scheme": {
"enum": [
"pl",
"uk",
"us"
],
"type": "string",
"description": "\"pl\" Polish KST annex rates, \"uk\" HMRC capital allowance pools, \"us\" IRS MACRS GDS. Omit to derive it from the shared business profile currency"
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Project, department or cost centre this asset belongs to"
},
"category": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A code or name from the bundled table, e.g. \"487\" or \"Computers and computer sets\" (pl), \"main\" (uk), \"5-year\" (us). Read assets://categories for the list"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO code. Defaults to the shared business profile currency, else the scheme table currency"
},
"rate_pct": {
"type": "number",
"description": "Override the annual percentage derived from the table. Use for a lowered Polish rate under art. 16i"
},
"cost_minor": {
"type": "integer",
"description": "Acquisition cost in MINOR units (integer cents/grosze), e.g. 549900 for 5499.00. Never a decimal"
},
"life_years": {
"type": "number",
"description": "Override the useful life derived from the table, in years. The answer reports that it was an override"
},
"purchase_date": {
"type": "string",
"maxLength": 10,
"description": "ISO date YYYY-MM-DD the asset was bought"
},
"residual_minor": {
"type": "integer",
"description": "Residual or salvage value in MINOR units, default 0. Must be less than cost. MACRS ignores it and the answer says so"
},
"in_service_date": {
"type": "string",
"maxLength": 10,
"description": "ISO date YYYY-MM-DD the asset entered use and the register. Defaults to purchase_date"
},
"declining_coefficient": {
"type": "number",
"description": "Declining-balance coefficient. Polish default 2.0, capped by the table; ignored with straight-line"
}
},
"additionalProperties": false
}Remove one asset from the register when nothing depends on it: not disposed of, never journaled. Its free-tier slot is free again. An asset with a dependent is refused and the dependent is named. Free.
| Argument | Type | Description |
|---|---|---|
| asset* | string | Asset id such as ASSET-2026-0001, or an exact or partial name |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"asset"
],
"properties": {
"asset": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Asset id such as ASSET-2026-0001, or an exact or partial name"
}
},
"additionalProperties": false
}Record that an asset left the business on a date and return the gain or loss against net book value. proceeds_minor is in MINOR units. Depreciation stops here, and a second disposal is refused.
| Argument | Type | Description |
|---|---|---|
| date* | string | ISO date YYYY-MM-DD the asset left the business. It cannot be before the in-service date |
| note | string | What happened, e.g. sold to a dealer, written off after a fire |
| asset* | string | Asset id such as ASSET-2026-0001, or an exact or partial name |
| proceeds_minor | integer | Sale proceeds in MINOR units, default 0 for a scrapping or a write-off |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"asset",
"date"
],
"properties": {
"date": {
"type": "string",
"maxLength": 10,
"description": "ISO date YYYY-MM-DD the asset left the business. It cannot be before the in-service date"
},
"note": {
"type": "string",
"maxLength": 2000,
"description": "What happened, e.g. sold to a dealer, written off after a fire"
},
"asset": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Asset id such as ASSET-2026-0001, or an exact or partial name"
},
"proceeds_minor": {
"type": "integer",
"description": "Sale proceeds in MINOR units, default 0 for a scrapping or a write-off"
}
},
"additionalProperties": false
}Return the depreciation journal for one month: debit depreciation expense and credit accumulated depreciation, per asset and in total, plus an expense_add-ready payload per currency. It writes no expense. Pro.
| Argument | Type | Description |
|---|---|---|
| month* | string | The month to journal, YYYY-MM. A date YYYY-MM-DD is read as its month |
| scheme | string | Only assets on this tax scheme |
| project | string | Only assets on this project or cost centre |
| category | string | Expense category to put on the expense_add payload. Default "depreciation" |
| expense_account | string | Debit account name. Default "Depreciation expense" |
| accumulated_account | string | Credit account name. Default "Accumulated depreciation" |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"month"
],
"properties": {
"month": {
"type": "string",
"maxLength": 10,
"description": "The month to journal, YYYY-MM. A date YYYY-MM-DD is read as its month"
},
"scheme": {
"enum": [
"pl",
"uk",
"us"
],
"type": "string",
"description": "Only assets on this tax scheme"
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Only assets on this project or cost centre"
},
"category": {
"type": "string",
"maxLength": 200,
"description": "Expense category to put on the expense_add payload. Default \"depreciation\""
},
"expense_account": {
"type": "string",
"maxLength": 200,
"description": "Debit account name. Default \"Depreciation expense\""
},
"accumulated_account": {
"type": "string",
"maxLength": 200,
"description": "Credit account name. Default \"Accumulated depreciation\""
}
},
"additionalProperties": false
}List the assets in the register with cost, method, rate and net book value at a date, filtered by scheme, category, project, currency or disposal state. Free and unlimited.
| Argument | Type | Description |
|---|---|---|
| as_of | string | Value the register at this month or date, YYYY-MM or YYYY-MM-DD. Default today |
| limit | integer | Maximum rows, default and ceiling 2000 |
| scheme | string | Only assets on this tax scheme |
| project | string | Only assets on this project or cost centre |
| category | string | Only assets in this table category code or name |
| currency | string | Only assets held in this currency |
| include_disposed | boolean | Include assets already disposed of. Default false |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"as_of": {
"type": "string",
"maxLength": 10,
"description": "Value the register at this month or date, YYYY-MM or YYYY-MM-DD. Default today"
},
"limit": {
"type": "integer",
"maximum": 2000,
"minimum": 1,
"description": "Maximum rows, default and ceiling 2000"
},
"scheme": {
"enum": [
"pl",
"uk",
"us"
],
"type": "string",
"description": "Only assets on this tax scheme"
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Only assets on this project or cost centre"
},
"category": {
"type": "string",
"maxLength": 200,
"description": "Only assets in this table category code or name"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Only assets held in this currency"
},
"include_disposed": {
"type": "boolean",
"description": "Include assets already disposed of. Default false"
}
},
"additionalProperties": false
}For one year: net book value by category, scheme and currency at as_of, the year's depreciation charge per currency, and every disposal with its gain or loss. Pro; asset_list and asset_schedule are free per-asset views.
| Argument | Type | Description |
|---|---|---|
| year | integer | Calendar year to report, e.g. 2026. Default the year of as_of, else this year |
| as_of | string | Value the register at this month or date, YYYY-MM or YYYY-MM-DD. Default the last day of the year |
| scheme | string | Only assets on this tax scheme |
| project | string | Only assets on this project or cost centre |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"year": {
"type": "integer",
"description": "Calendar year to report, e.g. 2026. Default the year of as_of, else this year"
},
"as_of": {
"type": "string",
"maxLength": 10,
"description": "Value the register at this month or date, YYYY-MM or YYYY-MM-DD. Default the last day of the year"
},
"scheme": {
"enum": [
"pl",
"uk",
"us"
],
"type": "string",
"description": "Only assets on this tax scheme"
},
"project": {
"type": "string",
"maxLength": 200,
"description": "Only assets on this project or cost centre"
}
},
"additionalProperties": false
}Build the depreciation schedule for a stored asset, or price one not in the register, per year or per month, to residual or zero, with the table's rate, life and convention. Periods sum exactly to the base.
| Argument | Type | Description |
|---|---|---|
| asset | string | Asset id such as ASSET-2026-0001, or an exact or partial name. Omit and pass the fields below to price an asset that is not in the register |
| method | string | "straight-line" or "declining-balance" |
| scheme | string | Scheme, when pricing an asset that is not in the register |
| category | string | Table category code or name, when pricing an asset that is not in the register |
| currency | string | ISO code, when pricing an asset that is not in the register |
| rate_pct | number | Override the annual percentage from the table |
| cost_minor | integer | Cost in MINOR units, when pricing an asset that is not in the register |
| life_years | number | Override the useful life from the table, in years |
| granularity | string |
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": {}
}| "year" for one row per period, "month" for the monthly charge. Default "year" |
| purchase_date | string | ISO date YYYY-MM-DD, when pricing an asset that is not in the register |
| residual_minor | integer | Residual in MINOR units, default 0 |
| in_service_date | string | ISO date YYYY-MM-DD the asset entered use. Defaults to purchase_date |
| declining_coefficient | number | Declining-balance coefficient; ignored with straight-line |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"asset": {
"type": "string",
"maxLength": 200,
"description": "Asset id such as ASSET-2026-0001, or an exact or partial name. Omit and pass the fields below to price an asset that is not in the register"
},
"method": {
"enum": [
"straight-line",
"declining-balance"
],
"type": "string",
"description": "\"straight-line\" or \"declining-balance\""
},
"scheme": {
"enum": [
"pl",
"uk",
"us"
],
"type": "string",
"description": "Scheme, when pricing an asset that is not in the register"
},
"category": {
"type": "string",
"maxLength": 200,
"description": "Table category code or name, when pricing an asset that is not in the register"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO code, when pricing an asset that is not in the register"
},
"rate_pct": {
"type": "number",
"description": "Override the annual percentage from the table"
},
"cost_minor": {
"type": "integer",
"description": "Cost in MINOR units, when pricing an asset that is not in the register"
},
"life_years": {
"type": "number",
"description": "Override the useful life from the table, in years"
},
"granularity": {
"enum": [
"year",
"month"
],
"type": "string",
"description": "\"year\" for one row per period, \"month\" for the monthly charge. Default \"year\""
},
"purchase_date": {
"type": "string",
"maxLength": 10,
"description": "ISO date YYYY-MM-DD, when pricing an asset that is not in the register"
},
"residual_minor": {
"type": "integer",
"description": "Residual in MINOR units, default 0"
},
"in_service_date": {
"type": "string",
"maxLength": 10,
"description": "ISO date YYYY-MM-DD the asset entered use. Defaults to purchase_date"
},
"declining_coefficient": {
"type": "number",
"description": "Declining-balance coefficient; ignored with straight-line"
}
},
"additionalProperties": false
}