tax-engine
Deterministic Czech OSVC tax tools for 2026: tax, insurance, deadlines, VAT and exchange rates.
使うべきか
品質と安全性
検出事項(4)
- LOWcompare_regimes 内
- LOWget_filing_deadlines 内
- LOWget_prehled_deadlines 内
- LOWcheck_flat_tax_eligibility 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"tax-engine": {
"url": "https://freelax.cz/api/mcp"
}
}
}リモートエンドポイント
https://freelax.cz/api/mcpstreamable-httpできること
ツール一覧
ツール(14)
🟢compute_year(taxYear, monthlyBusinessIncome, annualBusinessIncome, rentalMonthlyIncome, taxRegime, ...)
Computes a full Czech OSVČ tax year from personal facts: income tax with credits (children, spouse, deductions), social and health insurance, monthly set-aside, safe-to-spend, flat-tax band and regime-eligibility evaluation. All figures come from the deterministic Freelax engine, never from the model.
入力スキーマ
{
"type": "object",
"properties": {
"taxYear": {
"default": 2026,
"description": "Only 2026 is supported because the engine currently has a 2026 ruleset",
"type": "number",
"const": 2026
},
"monthlyBusinessIncome": {
"description": "Gross monthly business income in CZK (§ 7 ZDP)",
"type": "number",
"minimum": 0,
"maximum": 100000000
},
"annualBusinessIncome": {
"description": "Exact annual business income in CZK; takes precedence over the monthly figure",
"type": "number",
"minimum": 0,
"maximum": 100000000
},
"rentalMonthlyIncome": {
"default": 0,
"type": "number",
"minimum": 0,
"maximum": 100000000
},
"taxRegime": {
"default": "standard",
"type": "string",
"enum": [
"standard",
"pausal_band_1",
"pausal_band_2",
"pausal_band_3"
]
},
"targetRegime": {
"description": "Simulate a different regime without changing the stored facts",
"type": "string",
"enum": [
"standard",
"pausal_band_1",
"pausal_band_2",
"pausal_band_3"
]
},
"activityType": {
"default": "main",
"type": "string",
"enum": [
"main",
"secondary"
]
},
"flatRatePercent": {
"default": 0.6,
"description": "Flat-rate expense percentage as a decimal (0.4 / 0.6 / 0.8)",
"anyOf": [
{
"type": "number",
"const": 0.4
},
{
"type": "number",
"const": 0.6
},
{
"type": "number",
"const": 0.8
}
]
},
"citizenshipType": {
"default": "eu",
"type": "string",
"enum": [
"eu",
"non_eu_public",
"non_eu_private"
]
},
"publicHealthStatus": {
"type": "string",
"enum": [
"public",
"outside",
"unknown"
]
},
"isCzechTaxResident": {
"default": true,
"type": "boolean"
},
"isVATRegistered": {
"default": false,
"type": "boolean"
},
"employerCoversHealth": {
"default": false,
"type": "boolean"
},
"isNewOsvc": {
"default": false,
"type": "boolean"
},
"hasReducedSocialMinimum": {
"default": false,
"type": "boolean"
},
"isExemptFromMonthlyZalohy": {
"default": false,
"type": "boolean"
},
"isMarried": {
"default": false,
"type": "boolean"
},
"spouseIncomeUnderLimit": {
"description": "Spouse annual income under the sleva na manžela limit",
"type": "boolean"
},
"hasChildUnder3": {
"type": "boolean"
},
"children": {
"default": [],
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"birthYear": {
"type": "integer",
"minimum": 1950,
"maximum": 2030
},
"hasZTP": {
"default": false,
"type": "boolean"
},
"isStudying": {
"default": false,
"type": "boolean"
}
},
"required": [
"birthYear"
],
"additionalProperties": false
}
},
"disabilityGrade": {
"default": "none",
"type": "string",
"enum": [
"none",
"grade_1_2",
"grade_3"
]
},
"hasZTP": {
"default": false,
"type": "boolean"
},
"deductions": {
"type": "object",
"properties": {
"pensionContributions": {
"type": "number",
"minimum": 0
},
"lifeInsuranceContributions": {
"type": "number",
"minimum": 0
},
"dipContributions": {
"type": "number",
"minimum": 0
},
"mortgageInterestPaid": {
"type": "number",
"minimum": 0
},
"mortgageLoanYear": {
"type": "integer",
"minimum": 1990,
"maximum": 2030
},
"mortgageIsOwnHousing": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢calc_set_aside(monthlyIncome, rentalMonthlyIncome, taxRegime, activityType, flatRatePercent, ...)
How much of a monthly OSVČ income to set aside for Czech income tax, social and health insurance, and what remains safe to spend. Supports mixed §7 business + §9 rental income and the paušální daň (flat tax) regimes.
入力スキーマ
{
"type": "object",
"properties": {
"monthlyIncome": {
"type": "number",
"minimum": 0,
"maximum": 100000000,
"description": "Gross monthly business income in CZK (§ 7 ZDP)"
},
"rentalMonthlyIncome": {
"description": "Monthly rental income in CZK (§ 9 ZDP); triggers the mixed-income calculation",
"type": "number",
"minimum": 0,
"maximum": 100000000
},
"taxRegime": {
"default": "standard",
"type": "string",
"enum": [
"standard",
"pausal_band_1",
"pausal_band_2",
"pausal_band_3"
]
},
"activityType": {
"default": "main",
"type": "string",
"enum": [
"main",
"secondary"
]
},
"flatRatePercent": {
"default": 0.6,
"anyOf": [
{
"type": "number",
"const": 0.4
},
{
"type": "number",
"const": 0.6
},
{
"type": "number",
"const": 0.8
}
],
"description": "Flat-rate expense percentage as a decimal: 0.4 (other business), 0.6 (most freelancers / živnost volná), 0.8 (craft trades)"
},
"advanceExempt": {
"default": false,
"type": "boolean"
},
"reducedMinimumBase": {
"default": false,
"description": "New OSVČ in the first 2 years (lower social minimum)",
"type": "boolean"
},
"employerCoversHealth": {
"default": false,
"type": "boolean"
},
"secondaryThresholdExceeded": {
"default": false,
"type": "boolean"
}
},
"required": [
"monthlyIncome"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢compare_regimes(annualIncome, flatRatePercent, isMarried, numberOfChildren, spouseIncomeUnderLimit, ...)
Compares the standard OSVČ regime against paušální daň (flat tax) for a yearly income, including tax credits that would be lost with the flat tax (children, spouse), and recommends the cheaper regime.
入力スキーマ
{
"type": "object",
"properties": {
"annualIncome": {
"type": "number",
"minimum": 0,
"maximum": 100000000,
"description": "Gross annual business income in CZK"
},
"flatRatePercent": {
"default": 0.6,
"anyOf": [
{
"type": "number",
"const": 0.4
},
{
"type": "number",
"const": 0.6
},
{
"type": "number",
"const": 0.8
}
],
"description": "Flat-rate expense percentage as a decimal: 0.4 (other business), 0.6 (most freelancers / živnost volná), 0.8 (craft trades)"
},
"isMarried": {
"type": "boolean"
},
"numberOfChildren": {
"type": "integer",
"minimum": 0,
"maximum": 10
},
"spouseIncomeUnderLimit": {
"description": "Spouse annual income under the credit limit (sleva na manžela/manželku)",
"type": "boolean"
},
"hasChildUnder3": {
"type": "boolean"
},
"rentalAnnualIncome": {
"type": "number",
"minimum": 0,
"maximum": 100000000
},
"deductions": {
"type": "object",
"properties": {
"pensionContributions": {
"type": "number",
"minimum": 0
},
"lifeInsuranceContributions": {
"type": "number",
"minimum": 0
},
"dipContributions": {
"type": "number",
"minimum": 0
},
"mortgageInterestPaid": {
"type": "number",
"minimum": 0
},
"mortgageLoanYear": {
"type": "integer",
"minimum": 1990,
"maximum": 2030
},
"mortgageIsOwnHousing": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"required": [
"annualIncome"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢calc_flat_tax_settlement(currentBand, actualAnnualIncome, monthsInRegime, isProjection, flatRatePercent)
Given the paušální daň band you paid and the actual annual income, computes whether you owe a doplatek (top-up), get a vratka (refund), or must exit the flat-tax regime (income above 2,000,000 CZK).
入力スキーマ
{
"type": "object",
"properties": {
"currentBand": {
"type": "string",
"enum": [
"band1",
"band2",
"band3"
],
"description": "Band actually paid during the year"
},
"actualAnnualIncome": {
"type": "number",
"minimum": 0,
"maximum": 100000000
},
"monthsInRegime": {
"default": 12,
"type": "integer",
"minimum": 1,
"maximum": 12
},
"isProjection": {
"default": false,
"description": "True for a mid-year projection instead of a final settlement",
"type": "boolean"
},
"flatRatePercent": {
"anyOf": [
{
"type": "number",
"const": 0.4
},
{
"type": "number",
"const": 0.6
},
{
"type": "number",
"const": 0.8
}
],
"description": "Flat-rate expense percentage as a decimal: 0.4 (other business), 0.6 (most freelancers / živnost volná), 0.8 (craft trades)"
}
},
"required": [
"currentBand",
"actualAnnualIncome"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢estimate_penalty(obligationType, owedAmount, daysOverdue, gracePeriodActive, dueDate)
Estimates the Czech penalty/interest for a late payment or filing: repo rate + 8 p.p. for insurance and tax interest (3.5% H1 / 3.75% H2 2026), 3 grace days for tax payments, 200 CZK health aggregation floor and the 1,000 CZK tax non-assessment threshold. A dated estimate is rejected when its required rate period falls outside the implemented history.
入力スキーマ
{
"type": "object",
"properties": {
"obligationType": {
"type": "string",
"enum": [
"health",
"social",
"tax_advance",
"pausal",
"pausal_oznameni",
"pausal_doplatek",
"tax_return",
"prehled_social",
"prehled_health",
"annual_social"
],
"description": "Obligation family: health/social insurance debt, tax_advance (záloha na daň), pausal (paušální daň payment), tax_return (late filing), prehled_* (late Přehled), annual_social (doplatek)"
},
"owedAmount": {
"type": "number",
"minimum": 0,
"maximum": 100000000,
"description": "Outstanding amount in CZK"
},
"daysOverdue": {
"type": "integer",
"minimum": 0,
"maximum": 3650
},
"gracePeriodActive": {
"default": false,
"type": "boolean"
},
"dueDate": {
"description": "Original due date (YYYY-MM-DD); anchors the correct half-year repo rate",
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
}
},
"required": [
"obligationType",
"owedAmount",
"daysOverdue"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢convert_eur_czk(amountEur)
Converts an EUR amount to CZK using the Czech National Bank daily exchange rate (the rate used for Czech tax purposes). Reports the rate, its publication date and whether a stale cached ČNB publication had to be used. Fails closed when no verified ČNB rate is available.
入力スキーマ
{
"type": "object",
"properties": {
"amountEur": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000000,
"description": "Amount in EUR"
}
},
"required": [
"amountEur"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_filing_deadlines(taxYear, route)
Deadline for the Czech personal income tax return (DPFO) for a given tax year, per filing route: paper, self-filed electronic, or via tax advisor. Weekend and holiday shifts are applied.
入力スキーマ
{
"type": "object",
"properties": {
"taxYear": {
"type": "integer",
"minimum": 2020,
"maximum": 2030,
"description": "The tax year the return is FOR (e.g. 2025 return is filed in 2026)"
},
"route": {
"type": "string",
"enum": [
"standard_deadline",
"self_electronic_extension",
"advisor_extension"
],
"description": "Filing route: standard_deadline = paper/no extension (1 April), self_electronic_extension = filed electronically after 1 April (+1 month), advisor_extension = filed by a tax advisor (1 July)"
}
},
"required": [
"taxYear"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_prehled_deadlines(taxYear, route)
Filing deadlines for the annual OSVČ Přehled o příjmech a výdajích for both social insurance (ČSSZ) and the health insurer, per tax-return filing route, plus the payment due date (8 calendar days after the filing deadline).
入力スキーマ
{
"type": "object",
"properties": {
"taxYear": {
"type": "integer",
"minimum": 2020,
"maximum": 2030
},
"route": {
"type": "string",
"enum": [
"standard_deadline",
"self_electronic_extension",
"advisor_extension"
],
"description": "Filing route: standard_deadline = paper/no extension (1 April), self_electronic_extension = filed electronically after 1 April (+1 month), advisor_extension = filed by a tax advisor (1 July)"
}
},
"required": [
"taxYear"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢czech_working_days(year, date)
Czech public holidays for a year (including movable Easter feasts) and, for a specific date, whether it is a working day and the next working day a statutory deadline would shift to.
入力スキーマ
{
"type": "object",
"properties": {
"year": {
"type": "integer",
"minimum": 2020,
"maximum": 2030
},
"date": {
"description": "Optional date (YYYY-MM-DD) to test for working-day status",
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
}
},
"required": [
"year"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢check_flat_tax_eligibility(annualIncome, citizenshipType, publicHealthStatus, isVATRegistered, activityType, ...)
Screens whether an OSVČ may enter or stay in the paušální daň (flat tax) regime: public health insurance participation (decisive for foreigners), VAT-payer status, income ceiling 2,000,000 CZK, side income and secondary activity. Returns reasons with severity.
入力スキーマ
{
"type": "object",
"properties": {
"annualIncome": {
"type": "number",
"minimum": 0,
"maximum": 100000000,
"description": "Expected annual business income in CZK"
},
"citizenshipType": {
"description": "eu = EU/EEA citizen; non_eu_public = non-EU participating in Czech public health insurance (e.g. dočasná ochrana, employment); non_eu_private = non-EU with private/commercial insurance only",
"type": "string",
"enum": [
"eu",
"non_eu_public",
"non_eu_private"
]
},
"publicHealthStatus": {
"type": "string",
"enum": [
"public",
"outside",
"unknown"
]
},
"isVATRegistered": {
"description": "Full VAT payer (plátce DPH). Identifikovaná osoba is NOT blocking.",
"type": "boolean"
},
"activityType": {
"type": "string",
"enum": [
"main",
"secondary"
]
},
"rentalAnnualIncome": {
"type": "number",
"minimum": 0,
"maximum": 100000000
}
},
"required": [
"annualIncome"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_flat_tax_band(annualIncome, flatRatePercent)
Which paušální daň band (pásmo 1/2/3) an annual income falls into given the expense flat-rate, the current monthly payment for that band, and the next income threshold to watch.
入力スキーマ
{
"type": "object",
"properties": {
"annualIncome": {
"type": "number",
"minimum": 0,
"maximum": 100000000
},
"flatRatePercent": {
"default": 0.6,
"anyOf": [
{
"type": "number",
"const": 0.4
},
{
"type": "number",
"const": 0.6
},
{
"type": "number",
"const": 0.8
}
],
"description": "Flat-rate expense percentage as a decimal: 0.4 (other business), 0.6 (most freelancers / živnost volná), 0.8 (craft trades)"
}
},
"required": [
"annualIncome"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢check_thresholds(annualIncome)
Checks an annual income against the four statutory thresholds: VAT registration 2,000,000 CZK, immediate VAT registration 2,536,500 CZK, the 23% higher tax bracket, and the paušální daň eligibility ceiling. Reports approaching (90%), exceeded and remaining amounts.
入力スキーマ
{
"type": "object",
"properties": {
"annualIncome": {
"type": "number",
"minimum": 0,
"maximum": 100000000
}
},
"required": [
"annualIncome"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢check_io_trigger(vatStatus, vatStatusConfirmedAt, foreignServicePurchase, foreignServicePurchaseConfirmedAt, purchaseDate, ...)
Checks whether buying services from abroad (Google Ads, Meta, ChatGPT, hosting…) or selling services to EU businesses has made an OSVČ an identifikovaná osoba under § 6h/§ 6i ZDPH, with the 15-day registration deadline (§ 97) and fact-freshness handling. Verdict: ok / check / act_now.
入力スキーマ
{
"type": "object",
"properties": {
"vatStatus": {
"type": "string",
"enum": [
"unknown",
"not_registered",
"identified_person",
"vat_payer"
],
"description": "Current VAT status of the OSVČ"
},
"vatStatusConfirmedAt": {
"description": "When the VAT status was last confirmed (freshness window 180 days)",
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"foreignServicePurchase": {
"type": "string",
"enum": [
"unknown",
"none_confirmed",
"possible",
"qualifying_confirmed"
],
"description": "Foreign service purchases: none_confirmed = verified none, possible = maybe (e.g. runs online ads), qualifying_confirmed = a qualifying purchase from a non-CZ supplier is confirmed"
},
"foreignServicePurchaseConfirmedAt": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"purchaseDate": {
"description": "Date of the qualifying purchase; drives the 15-day § 97 registration deadline",
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"foreignSales": {
"description": "Year-to-date foreign client income for the sales-side (§ 6i) check",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"minimum": 0,
"maximum": 100000000
},
"clientLocation": {
"type": "string",
"enum": [
"cz",
"eu",
"non_eu",
"unknown"
]
},
"clientVatStatus": {
"type": "string",
"enum": [
"business_vat_id",
"business_no_vat_id",
"consumer",
"unknown"
]
}
},
"required": [
"amount"
],
"additionalProperties": false
}
},
"today": {
"description": "Evaluation date; defaults to today",
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
}
},
"required": [
"vatStatus",
"foreignServicePurchase"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_rule_source(topic, locale)
For a Czech OSVČ tax topic, returns the governing rule with current values, primary-source citations (zákon, ČSSZ, VZP, Finanční správa) with verification dates, and related Freelax articles. Topics: pausalni_dan, identifikovana_osoba, dph_registrace, zalohy, prehledy, penale, danove_pasmo_23, vedlejsi_cinnost.
入力スキーマ
{
"type": "object",
"properties": {
"topic": {
"type": "string",
"enum": [
"pausalni_dan",
"identifikovana_osoba",
"dph_registrace",
"zalohy",
"prehledy",
"penale",
"danove_pasmo_23",
"vedlejsi_cinnost"
]
},
"locale": {
"default": "en",
"type": "string",
"enum": [
"en",
"cs"
]
}
},
"required": [
"topic"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}コミュニティ
エビデンス