Skip to main content
Glama

finwire.pl - Polish financial data

Sole proprietorship vs limited company in Poland

compare_business_forms
Read-onlyIdempotent

Compare yearly taxes and net income to the owner for running a business in Poland as a sole proprietorship (JDG: tax scale, flat 19% tax, lump-sum ryczałt) or a limited liability company (sp. z o.o.) with one shareholder (shareholder pays ZUS and the health contribution) or with two or more shareholders. Company profit taxed with CIT (9% small taxpayer when revenue fits the EUR limit at the NBP rate set by law, otherwise 19%) and the dividend tax: Polish statutory rate by default, or pass dividend_tax_rate from a tax treaty for a shareholder resident abroad. Assumes all profit is paid out as dividend. Not covered here: who may open which form (residence status), management board pay, Estonian CIT.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "yearly_revenue": "<yearly_revenue>"
    },
    "name": "compare_business_forms"
  }
}

Input Schema

NameRequiredDescriptionDefault
zusNoJDG social security scheme, default pelny.
yearNoPolish tax year; default the current one.
yearly_costsNoYearly business costs, PLN net.
lump_sum_rateNoRyczałt rate for the activity in percent, default 12.
yearly_revenueYesYearly net revenue without VAT, PLN.
dividend_tax_rateNoDividend tax rate as a fraction, e.g. 0.05, for a shareholder resident in a treaty country.

Output Schema

NameRequiredDescriptionDefault
urlYes
asOfNo
dataNo
titleYes
sourceYes
docsUrlYes
licenseYes
summaryYes
citationYes
datasetIdYes
sourceUrlNo
truncatedNo
serverDateYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds real behavioural context: the dividend-payout assumption, the CIT 9%/19% revenue-limit rule and the ZUS/health contribution split for one vs multiple shareholders. It does not mention precision, rounding, or that results are annual projections.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and comparison arms are front-loaded, then assumptions, then explicit exclusions — a sensible order. It is dense and slightly run-on (one long sentence enumerating regimes), but nearly every clause carries substantive information rather than restating the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the description supplies the modelling assumptions and exclusions an agent needs to trust the comparison. Minor gaps remain: no indication of how the year parameter affects thresholds beyond 'default the current one', and no note on sensitivity to zus scheme choice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it explains which JDG tax regimes the sole-proprietorship arm models, and that dividend_tax_rate is meant for a shareholder resident in a treaty country (overriding the Polish statutory rate). That gives the agent a rationale for the two most consequential optional parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource — 'Compare yearly taxes and net income to the owner for running a business in Poland' — and enumerates the exact comparison arms (JDG: tax scale, flat 19%, ryczałt; sp. z o.o. with 1 or 2+ shareholders). It is clearly distinguishable from siblings like calc_net_income, calc_zus_contributions and get_business_forms.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It scopes the tool explicitly by listing what is NOT covered (who may open which form/residence status, management board pay, Estonian CIT) and by stating the modelling assumption that all profit is paid out as dividend. It stops short of naming which sibling to use instead for those excluded cases, so it is clear context without explicit alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.