API
Obolus exposes a slim public API for payroll and tax-comparison workflows. MCP and OpenAPI describe the same published tool scope.
The Developer API is intentionally slim and currently focused on payroll and tax-compare workflows. The scope is expanded carefully and is currently in early public status.
Use /api/mcp/public for general MCP clients; /api/mcp/claude remains a compatible alias. The ChatGPT app uses /api/mcp. The JSON tool-scope descriptor is at /api/mcp-discovery.
OpenAPI is the REST-oriented specification of the same public tools. Use /api/openapi for Swagger-compatible docs, client generation, and formal request/response schemas.
The current public scope includes MCP and OpenAPI discovery plus the two tools berechne, taxcompare. Cockpit, Budget, and Invest stay product-flow features and are intentionally not published as public API endpoints.
Obolus publishes a Model Context Protocol (MCP) server for tax calculation, a Claude-compatible MCP endpoint, and an OpenAPI specification so AI agents, developer tools, and LLM crawlers can discover the public payroll and tax comparison API surface.
Swagger-compatible OpenAPI specification for the Obolus REST API, including payroll and tax comparison schemas.
Machine-readable descriptor for the public Obolus Model Context Protocol tool scope.
Remote Model Context Protocol (MCP) server for tax calculation, net salary workflows, and country tax comparison agents.
Agent-neutral read-only Model Context Protocol endpoint for Obolus payroll and tax comparison tools.
Claude-compatible tool-only Model Context Protocol endpoint for Obolus payroll and tax comparison tools.
AI-system orientation file listing canonical Obolus pages and machine-readable API resources.
The Obolus ChatGPT App uses the same public MCP and API surface for global take-home-pay and salary comparisons. It is a technical integration of the Obolus calculation engine, not a separate consumer flow.
For most public integrations, REST through OpenAPI plus direct tool calls is the right default. MCP is the better layer for agents, tool runtimes, and clients that want discovery and invocation through a single gateway-style interface.
Recommended for standard integrations, dashboards, backend services, SDK generation, and conventional API clients.
Recommended for AI agents, tool runners, and systems that want tool discovery and invocation through one compact, machine-readable surface.
The public read-only calculation tools work without a login or API key. API keys are optional for integrations; individual deployments may require one for certain endpoints. The preferred header is x-public-api-key.
The API uses contract versions instead of /v1 paths. API contract: 2.1.0; MCP tool contract: 1.0.1. Supported MCP protocol generations include 2025-11-25, 2026-07-28. Contract and protocol versions are separate.
The API itself is locale-neutral and lives under /api/... without a locale prefix. The /de, /en, and /tr paths are for documentation only, not for API execution.
REST limits: taxcompare 20 requests / 5 minutes; berechne 60 requests / 5 minutes for cache misses. MCP transport: POST 200 requests / 5 minutes, GET 100 requests / 5 minutes; the two MCP endpoints have separate quotas. Additional per-tool or verified API-key limits apply only when enabled by server configuration. berechne cache hits may return before the REST limit check.
For search and quick orientation, the short version is enough: the same public tool contracts span all supported countries, while the meaning of individual payroll fields still changes by tax system.
OpenAPI specification (Swagger-compatible)
JSON discovery for tool scope, metadata, and docs
Streamable HTTP MCP transport for ChatGPT and other MCP clients
Public MCP calculation tools for all clients
Previous MCP path without ChatGPT UI metadata
/api/berechneDirect payroll and tax call
/api/taxcompareDirect salary compare call
Successful REST responses return tool-specific structures without a global ok/data envelope. MCP responses also include a summary with amounts in major currency units and, when available, calculation time, data and method versions, assumptions, warnings, and the engine_revision supplied by the backend. Results can change with tax data or exchange rates even for identical inputs. REST errors contain error and optionally details or restricted_fields.
Example response (taxcompare, shortened):
{
"results": [
{
"country": "DE",
"net": 39750,
"tax": 13000,
"social_contributions": 7250,
"effective_rate": 33.75,
"input_annual_gross": 60000,
"input_currency": "eur",
"comparison_basis": "shared_gross"
}
]
}Typical error codes:
{
"error": "Invalid taxcompare payload.",
"details": [
"body.countries must contain at least 1 items."
]
}curl -s https://www.obolusfinanz.de/api/openapicurl -s https://www.obolusfinanz.de/api/mcp-discoverycurl -N -H "Accept: text/event-stream" https://www.obolusfinanz.de/api/mcpcurl -X POST https://www.obolusfinanz.de/api/taxcompare \
-H "Content-Type: application/json" \
-d '{
"salary_ct": 6000000,
"tax_year": "2026",
"countries": ["DE", "AT", "AU"],
"currency": "eur",
"gross_mode": "shared_gross"
}'curl -X POST https://www.obolusfinanz.de/api/taxcompare \
-H "Content-Type: application/json" \
-d '{
"tax_year": "2026",
"countries": ["DE", "CH", "UK"],
"currency": "eur",
"gross_mode": "local_median_gross"
}'curl -X POST https://www.obolusfinanz.de/api/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "taxcompare",
"arguments": {
"salary_ct": 6000000,
"tax_year": "2026",
"countries": ["DE", "AT", "AU"],
"currency": "eur",
"gross_mode": "shared_gross"
}
}
}'MCP and OpenAPI are generated from the same contract source. That contract source is the authoritative basis of the public API. Backend changes should always ship together with the public contract.
The Obolus API is designed to be simple, open, and useful for real-world financial tools.
If you use the API in a public-facing product, a small reference is appreciated:
The API is actively evolving. Core endpoints are kept stable, while response structures may improve over time. For production usage, we recommend handling responses defensively.
For public API questions, API key requests, manual access, or higher throughput, use the contact or feedback flow on the website to get API keys or adjust limits.