MCP Server

fixed-assets

io.github.theluckystrike/fixed-assets
Business & Operations Finance & Investing Public & reachable MCP 2026-07-28

What this MCP does

Maintains a fixed-asset register and calculates depreciation, disposals, net book values, and related accounting journals.

asset_add
Add a fixed asset
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.
Input schema
{'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}
asset_delete
Delete an asset
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.
Destructive
Input schema
{'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}
asset_dispose
Dispose of an asset
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.
Input schema
{'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}
asset_journal
Journal the month's depreciation
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.
Input schema
{'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}
asset_list
List the fixed asset register
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.
Read only Idempotent
Input schema
{'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}
asset_report
Report the register
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.
Read only Idempotent
Input schema
{'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}
asset_schedule
Build a depreciation schedule
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.
Input schema
{'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}
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.
Input schema
{'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}
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.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Added
license_activate
Sept. 24, 2026, 2:40 a.m.
Added
license_status
Sept. 24, 2026, 2:40 a.m.
Added
asset_report
Sept. 24, 2026, 2:40 a.m.
Added
asset_delete
Sept. 24, 2026, 2:40 a.m.
Added
asset_dispose
Sept. 24, 2026, 2:40 a.m.
Added
asset_journal
Sept. 24, 2026, 2:40 a.m.
Added
asset_schedule
Sept. 24, 2026, 2:40 a.m.
Added
asset_list
Sept. 24, 2026, 2:40 a.m.
Added
asset_add
Sept. 24, 2026, 2:40 a.m.