MCPサーバー

tax-engine

cz.freelax/tax-engine

このMCPでできること

Calculates and explains Czech OSVČ taxes, insurance, VAT obligations, filing deadlines, penalties, exchange rates, and flat-tax eligibility.

calc_flat_tax_settlement
Paušální daň year-end settlement
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', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['currentBand', 'actualAnnualIncome'], 'properties': {'currentBand': {'enum': ['band1', 'band2', 'band3'], 'type': 'string', 'description': 'Band actually paid during the year'}, 'isProjection': {'type': 'boolean', 'default': False, 'description': 'True for a mid-year projection instead of a final settlement'}, 'monthsInRegime': {'type': 'integer', 'default': 12, 'maximum': 12, 'minimum': 1}, '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)'}, 'actualAnnualIncome': {'type': 'number', 'maximum': 100000000, 'minimum': 0}}, 'additionalProperties': False}
calc_set_aside
Monthly tax set-aside calculator
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', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['monthlyIncome'], 'properties': {'taxRegime': {'enum': ['standard', 'pausal_band_1', 'pausal_band_2', 'pausal_band_3'], 'type': 'string', 'default': 'standard'}, 'activityType': {'enum': ['main', 'secondary'], 'type': 'string', 'default': 'main'}, 'advanceExempt': {'type': 'boolean', 'default': False}, 'monthlyIncome': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Gross monthly business income in CZK (§ 7 ZDP)'}, 'flatRatePercent': {'anyOf': [{'type': 'number', 'const': 0.4}, {'type': 'number', 'const': 0.6}, {'type': 'number', 'const': 0.8}], 'default': 0.6, 'description': 'Flat-rate expense percentage as a decimal: 0.4 (other business), 0.6 (most freelancers / živnost volná), 0.8 (craft trades)'}, 'reducedMinimumBase': {'type': 'boolean', 'default': False, 'description': 'New OSVÄ\x8c in the first 2 years (lower social minimum)'}, 'rentalMonthlyIncome': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Monthly rental income in CZK (§ 9 ZDP); triggers the mixed-income calculation'}, 'employerCoversHealth': {'type': 'boolean', 'default': False}, 'secondaryThresholdExceeded': {'type': 'boolean', 'default': False}}, 'additionalProperties': False}
check_flat_tax_eligibility
Paušální daň eligibility check
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', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['annualIncome'], 'properties': {'activityType': {'enum': ['main', 'secondary'], 'type': 'string'}, 'annualIncome': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Expected annual business income in CZK'}, 'citizenshipType': {'enum': ['eu', 'non_eu_public', 'non_eu_private'], 'type': 'string', 'description': 'eu = EU/EEA citizen; non_eu_public = non-EU participating in Czech public health insurance (e.g. doÄ\x8dasná ochrana, employment); non_eu_private = non-EU with private/commercial insurance only'}, 'isVATRegistered': {'type': 'boolean', 'description': 'Full VAT payer (plátce DPH). Identifikovaná osoba is NOT blocking.'}, 'publicHealthStatus': {'enum': ['public', 'outside', 'unknown'], 'type': 'string'}, 'rentalAnnualIncome': {'type': 'number', 'maximum': 100000000, 'minimum': 0}}, 'additionalProperties': False}
check_io_trigger
Identified person (identifikovaná osoba) trigger check
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', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['vatStatus', 'foreignServicePurchase'], 'properties': {'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])))$', 'description': 'Evaluation date; defaults to today'}, 'vatStatus': {'enum': ['unknown', 'not_registered', 'identified_person', 'vat_payer'], 'type': 'string', 'description': 'Current VAT status of the OSVÄ\x8c'}, 'foreignSales': {'type': 'array', 'items': {'type': 'object', 'required': ['amount'], 'properties': {'amount': {'type': 'number', 'maximum': 100000000, 'minimum': 0}, 'clientLocation': {'enum': ['cz', 'eu', 'non_eu', 'unknown'], 'type': 'string'}, 'clientVatStatus': {'enum': ['business_vat_id', 'business_no_vat_id', 'consumer', 'unknown'], 'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Year-to-date foreign client income for the sales-side (§ 6i) check'}, 'purchaseDate': {'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])))$', 'description': 'Date of the qualifying purchase; drives the 15-day § 97 registration deadline'}, 'vatStatusConfirmedAt': {'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])))$', 'description': 'When the VAT status was last confirmed (freshness window 180 days)'}, 'foreignServicePurchase': {'enum': ['unknown', 'none_confirmed', 'possible', 'qualifying_confirmed'], 'type': 'string', '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])))$'}}, 'additionalProperties': False}
check_thresholds
Statutory income threshold monitor
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', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['annualIncome'], 'properties': {'annualIncome': {'type': 'number', 'maximum': 100000000, 'minimum': 0}}, 'additionalProperties': False}
compare_regimes
Standard vs paušální daň comparison
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', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['annualIncome'], 'properties': {'isMarried': {'type': 'boolean'}, 'deductions': {'type': 'object', 'properties': {'dipContributions': {'type': 'number', 'minimum': 0}, 'mortgageLoanYear': {'type': 'integer', 'maximum': 2030, 'minimum': 1990}, 'mortgageInterestPaid': {'type': 'number', 'minimum': 0}, 'mortgageIsOwnHousing': {'type': 'boolean'}, 'pensionContributions': {'type': 'number', 'minimum': 0}, 'lifeInsuranceContributions': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, 'annualIncome': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Gross annual business income in CZK'}, 'hasChildUnder3': {'type': 'boolean'}, 'flatRatePercent': {'anyOf': [{'type': 'number', 'const': 0.4}, {'type': 'number', 'const': 0.6}, {'type': 'number', 'const': 0.8}], 'default': 0.6, 'description': 'Flat-rate expense percentage as a decimal: 0.4 (other business), 0.6 (most freelancers / živnost volná), 0.8 (craft trades)'}, 'numberOfChildren': {'type': 'integer', 'maximum': 10, 'minimum': 0}, 'rentalAnnualIncome': {'type': 'number', 'maximum': 100000000, 'minimum': 0}, 'spouseIncomeUnderLimit': {'type': 'boolean', 'description': 'Spouse annual income under the credit limit (sleva na manžela/manželku)'}}, 'additionalProperties': False}
compute_year
Full-year OSVČ tax computation
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', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'hasZTP': {'type': 'boolean', 'default': False}, 'taxYear': {'type': 'number', 'const': 2026, 'default': 2026, 'description': 'Only 2026 is supported because the engine currently has a 2026 ruleset'}, 'children': {'type': 'array', 'items': {'type': 'object', 'required': ['birthYear'], 'properties': {'hasZTP': {'type': 'boolean', 'default': False}, 'birthYear': {'type': 'integer', 'maximum': 2030, 'minimum': 1950}, 'isStudying': {'type': 'boolean', 'default': False}}, 'additionalProperties': False}, 'default': [], 'maxItems': 10}, 'isMarried': {'type': 'boolean', 'default': False}, 'isNewOsvc': {'type': 'boolean', 'default': False}, 'taxRegime': {'enum': ['standard', 'pausal_band_1', 'pausal_band_2', 'pausal_band_3'], 'type': 'string', 'default': 'standard'}, 'deductions': {'type': 'object', 'properties': {'dipContributions': {'type': 'number', 'minimum': 0}, 'mortgageLoanYear': {'type': 'integer', 'maximum': 2030, 'minimum': 1990}, 'mortgageInterestPaid': {'type': 'number', 'minimum': 0}, 'mortgageIsOwnHousing': {'type': 'boolean'}, 'pensionContributions': {'type': 'number', 'minimum': 0}, 'lifeInsuranceContributions': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, 'activityType': {'enum': ['main', 'secondary'], 'type': 'string', 'default': 'main'}, 'targetRegime': {'enum': ['standard', 'pausal_band_1', 'pausal_band_2', 'pausal_band_3'], 'type': 'string', 'description': 'Simulate a different regime without changing the stored facts'}, 'hasChildUnder3': {'type': 'boolean'}, 'citizenshipType': {'enum': ['eu', 'non_eu_public', 'non_eu_private'], 'type': 'string', 'default': 'eu'}, 'disabilityGrade': {'enum': ['none', 'grade_1_2', 'grade_3'], 'type': 'string', 'default': 'none'}, 'flatRatePercent': {'anyOf': [{'type': 'number', 'const': 0.4}, {'type': 'number', 'const': 0.6}, {'type': 'number', 'const': 0.8}], 'default': 0.6, 'description': 'Flat-rate expense percentage as a decimal (0.4 / 0.6 / 0.8)'}, 'isVATRegistered': {'type': 'boolean', 'default': False}, 'isCzechTaxResident': {'type': 'boolean', 'default': True}, 'publicHealthStatus': {'enum': ['public', 'outside', 'unknown'], 'type': 'string'}, 'rentalMonthlyIncome': {'type': 'number', 'default': 0, 'maximum': 100000000, 'minimum': 0}, 'annualBusinessIncome': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Exact annual business income in CZK; takes precedence over the monthly figure'}, 'employerCoversHealth': {'type': 'boolean', 'default': False}, 'monthlyBusinessIncome': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Gross monthly business income in CZK (§ 7 ZDP)'}, 'spouseIncomeUnderLimit': {'type': 'boolean', 'description': 'Spouse annual income under the sleva na manžela limit'}, 'hasReducedSocialMinimum': {'type': 'boolean', 'default': False}, 'isExemptFromMonthlyZalohy': {'type': 'boolean', 'default': False}}, 'additionalProperties': False}
convert_eur_czk
EUR → CZK conversion (ČNB rate)
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', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['amountEur'], 'properties': {'amountEur': {'type': 'number', 'maximum': 1000000000, 'description': 'Amount in EUR', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
czech_working_days
Czech holidays and working-day shifts
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', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['year'], 'properties': {'date': {'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])))$', 'description': 'Optional date (YYYY-MM-DD) to test for working-day status'}, 'year': {'type': 'integer', 'maximum': 2030, 'minimum': 2020}}, 'additionalProperties': False}
estimate_penalty
Late-payment penalty estimate
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', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['obligationType', 'owedAmount', 'daysOverdue'], 'properties': {'dueDate': {'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])))$', 'description': 'Original due date (YYYY-MM-DD); anchors the correct half-year repo rate'}, 'owedAmount': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Outstanding amount in CZK'}, 'daysOverdue': {'type': 'integer', 'maximum': 3650, 'minimum': 0}, 'obligationType': {'enum': ['health', 'social', 'tax_advance', 'pausal', 'pausal_oznameni', 'pausal_doplatek', 'tax_return', 'prehled_social', 'prehled_health', 'annual_social'], 'type': 'string', 'description': 'Obligation family: health/social insurance debt, tax_advance (záloha na daÅ\x88), pausal (paušálnÃ\xad daÅ\x88 payment), tax_return (late filing), prehled_* (late PÅ\x99ehled), annual_social (doplatek)'}, 'gracePeriodActive': {'type': 'boolean', 'default': False}}, 'additionalProperties': False}
get_filing_deadlines
DPFO filing deadline (daňové přiznání)
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', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['taxYear'], 'properties': {'route': {'enum': ['standard_deadline', 'self_electronic_extension', 'advisor_extension'], 'type': 'string', '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)'}, 'taxYear': {'type': 'integer', 'maximum': 2030, 'minimum': 2020, 'description': 'The tax year the return is FOR (e.g. 2025 return is filed in 2026)'}}, 'additionalProperties': False}
get_flat_tax_band
Paušální daň band lookup
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', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['annualIncome'], 'properties': {'annualIncome': {'type': 'number', 'maximum': 100000000, 'minimum': 0}, 'flatRatePercent': {'anyOf': [{'type': 'number', 'const': 0.4}, {'type': 'number', 'const': 0.6}, {'type': 'number', 'const': 0.8}], 'default': 0.6, 'description': 'Flat-rate expense percentage as a decimal: 0.4 (other business), 0.6 (most freelancers / živnost volná), 0.8 (craft trades)'}}, 'additionalProperties': False}
get_prehled_deadlines
Přehled deadlines (ČSSZ + zdravotní pojišťovna)
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', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['taxYear'], 'properties': {'route': {'enum': ['standard_deadline', 'self_electronic_extension', 'advisor_extension'], 'type': 'string', '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)'}, 'taxYear': {'type': 'integer', 'maximum': 2030, 'minimum': 2020}}, 'additionalProperties': False}
get_rule_source
Rule citation and verification lookup
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', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['topic'], 'properties': {'topic': {'enum': ['pausalni_dan', 'identifikovana_osoba', 'dph_registrace', 'zalohy', 'prehledy', 'penale', 'danove_pasmo_23', 'vedlejsi_cinnost'], 'type': 'string'}, 'locale': {'enum': ['en', 'cs'], 'type': 'string', 'default': 'en'}}, 'additionalProperties': False}
追加
get_rule_source
2026年9月17日12:39
追加
check_io_trigger
2026年9月17日12:39
追加
check_thresholds
2026年9月17日12:39
追加
get_flat_tax_band
2026年9月17日12:39
追加
check_flat_tax_eligibility
2026年9月17日12:39
追加
czech_working_days
2026年9月17日12:39
追加
get_prehled_deadlines
2026年9月17日12:39
追加
get_filing_deadlines
2026年9月17日12:39
追加
convert_eur_czk
2026年9月17日12:39
追加
estimate_penalty
2026年9月17日12:39
追加
calc_flat_tax_settlement
2026年9月17日12:39
追加
compare_regimes
2026年9月17日12:39
追加
calc_set_aside
2026年9月17日12:39
追加
compute_year
2026年9月17日12:39