# cz.freelax/tax-engine

> Deterministic Czech OSVC tax tools for 2026: tax, insurance, deadlines, VAT and exchange rates.

- name: cz.freelax/tax-engine
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 89/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/cz.freelax%2Ftax-engine
- tools: https://api.protogrid.dev/v1/servers/cz.freelax%2Ftax-engine/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "tax-engine": {
      "type": "http",
      "url": "https://freelax.cz/api/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 85
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% ~updated-80d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 89/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 14 of 14 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: calc_set_aside (destructiveHint, idempotentHint, openWorldHint); compare_regimes (destructiveHint, idempotentHint, openWorldHint); calc_flat_tax_settlement (destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 4,359 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 14, about 4,359 tokens to load them all
- tool set hash: 5536d394de5d4f078c6c5431cf23f1a7
- badge: [![protogrid quality](https://protogrid.dev/badge/cz.freelax/tax-engine.svg)](https://protogrid.dev/servers/cz.freelax/tax-engine)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://freelax.cz/api/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (14)

- `calc_flat_tax_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).
- `calc_set_aside`: 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.
- `check_flat_tax_eligibility`: 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.
- `check_io_trigger`: 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.
- `check_thresholds`: 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.
- `compare_regimes`: 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.
- `compute_year`: 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.
- `convert_eur_czk`: 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.
- `czech_working_days`: 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.
- `estimate_penalty`: 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.
- `get_filing_deadlines`: 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.
- `get_flat_tax_band`: 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.
- `get_prehled_deadlines`: 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).
- `get_rule_source`: 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.
