European govt data, cited: rates, VAT, tax, wages, holidays, FX. 34 countries + EU; Germany free.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
FREE, unmetered. The date n business days after (or, for negative n, before) a start date. The start date is day 0 and never counted; n = 0 returns the date itself if it is a business day, otherwise the next one. Lists every non-business day skipped and why. Uses the country's national public-holiday calendar and its statutory weekend rule (Gulf Friday+Saturday, Israel Saturday-only, India 2nd/4th Saturdays, Nepal's 2026 change, China's multi-day breaks and make-up working days). A date in a year whose holidays we do not hold is refused with error year_not_held and the years_held list; it is never computed from weekends alone. A statutory holiday whose date is not yet fixed is refused as holiday_date_pending. Regional (sub-national) holidays are not applied.
Business days to add; negative walks backward
Start date (day 0), YYYY-MM-DD
ISO 3166-1 alpha-2 country code, e.g. 'za', 'ae', 'in'. Every country we hold a holiday calendar for is accepted on every brand, not only this brand's region.
FREE, unmetered. The date n business days after (or, for negative n, before) a start date. The start date is day 0 and never counted; n = 0 returns the date itself if it is a business day, otherwise the next one. Lists every non-business day skipped and why. Uses the country's national public-holiday calendar and its statutory weekend rule (Gulf Friday+Saturday, Israel Saturday-only, India 2nd/4th Saturdays, Nepal's 2026 change, China's multi-day breaks and make-up working days). A date in a year whose holidays we do not hold is refused with error year_not_held and the years_held list; it is never computed from weekends alone. A statutory holiday whose date is not yet fixed is refused as holiday_date_pending. Regional (sub-national) holidays are not applied.
| Argument | Type | Description |
|---|---|---|
| n* | integer | Business days to add; negative walks backward |
| date* | string | Start date (day 0), YYYY-MM-DD |
| country* | string | ISO 3166-1 alpha-2 country code, e.g. 'za', 'ae', 'in'. Every country we hold a holiday calendar for is accepted on every brand, not only this brand's region. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country",
"date",
"n"
],
"properties": {
"n": {
"type": "integer",
"maximum": 500,
"minimum": -500,
"description": "Business days to add; negative walks backward"
},
"date": {
"type": "string",
"description": "Start date (day 0), YYYY-MM-DD"
},
"country": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country code, e.g. 'za', 'ae', 'in'. Every country we hold a holiday calendar for is accepted on every brand, not only this brand's region."
}
}
}FREE, unmetered. Business days between two dates. business_days counts (from, to] and is negative when to is before from, so add_business_days(from, business_days) lands on to whenever to is a business day; business_days_inclusive counts both ends. Also returns weekend days and the public holidays in range. Uses the country's national public-holiday calendar and its statutory weekend rule (Gulf Friday+Saturday, Israel Saturday-only, India 2nd/4th Saturdays, Nepal's 2026 change, China's multi-day breaks and make-up working days). A date in a year whose holidays we do not hold is refused with error year_not_held and the years_held list; it is never computed from weekends alone. A statutory holiday whose date is not yet fixed is refused as holiday_date_pending. Regional (sub-national) holidays are not applied.
| Argument | Type | Description |
|---|---|---|
| to* | string | Range end, YYYY-MM-DD |
| from* | string | Range start, YYYY-MM-DD |
| country* | string | ISO 3166-1 alpha-2 country code, e.g. 'za', 'ae', 'in'. Every country we hold a holiday calendar for is accepted on every brand, not only this brand's region. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country",
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"description": "Range end, YYYY-MM-DD"
},
"from": {
"type": "string",
"description": "Range start, YYYY-MM-DD"
},
"country": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country code, e.g. 'za', 'ae', 'in'. Every country we hold a holiday calendar for is accepted on every brand, not only this brand's region."
}
}
}PAID ($0.50). Charge this sale: should this invoice carry VAT, which country's and how much - place of supply under the EU, UK and South Africa rules, net/VAT/gross, registration threshold, rule cited. Omit buyer_country for single-country rate maths. Anything we cannot answer in full is refused free (coverage_gap, no_charge). Shares the 3 free calls per IP per day with the answer tools. Pass api_key if you have one (card checkout at /pricing); otherwise the result is the x402 payment requirement. Optional receipt (boolean, default false): on a paid success, include an Ed25519 answer receipt at no extra USDC. An answer receipt is not a series certified extract (GET /v1/certified/{country}/{series} is $0.10 and is not an MCP tool) and is not legal advice. Verify with verify_answer_receipt against /certified/public-key.
| Argument | Type | Description |
|---|---|---|
| band | string | VAT band key, e.g. reduced |
| amount* | number | Sale amount |
| api_key | string | API key (bypasses x402; metered for invoicing) |
| receipt | boolean | Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool). |
| amount_is | string | net adds VAT (default); gross extracts it |
PAID ($0.75). The charge_sale dossier plus an Ed25519-signed certified extract of the governing VAT rate, for a filing. Refused free when the governing source cannot be certified right now. Anything we cannot answer in full is refused free (coverage_gap, no_charge). Shares the 3 free calls per IP per day with the answer tools. Pass api_key if you have one (card checkout at /pricing); otherwise the result is the x402 payment requirement. Optional receipt (boolean, default false): on a paid success, include an Ed25519 answer receipt at no extra USDC. An answer receipt is not a series certified extract (GET /v1/certified/{country}/{series} is $0.10 and is not an MCP tool) and is not legal advice. Verify with verify_answer_receipt against /certified/public-key.
| Argument | Type | Description |
|---|---|---|
| band | string | VAT band key, e.g. reduced |
| amount* | number | Sale amount |
| api_key | string | API key (bypasses x402; metered for invoicing) |
| receipt | boolean | Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool). |
| amount_is | string | net adds VAT (default); gross extracts it |
| buyer_type |
PAID ($0.02). Compliance verdict: is a salary at, above or below the country's statutory minimum wage? Returns verdict, margin, the statutory floor and the legal instrument it rests on. Honest statuses when no enforceable floor exists or the period doesn't match the floor's period (cross-period conversion is never guessed). Pass api_key if you have one (instant card checkout at /pricing); otherwise the response explains how to pay via x402. The evaluation country is free to try (see list_series). Optional receipt (boolean, default false): on a paid success, include an Ed25519 answer receipt at no extra USDC. An answer receipt is not a series certified extract (GET /v1/certified/{country}/{series} is $0.10 and is not an MCP tool) and is not legal advice. Verify with verify_answer_receipt against /certified/public-key.
| Argument | Type | Description |
|---|---|---|
| amount* | number | Wage to check, in the country's own currency |
| period* | string | Period the amount covers — must match the statutory floor's period |
| api_key | string | API key (bypasses x402; metered for invoicing) |
| country* | string | ISO country code |
| receipt | boolean | Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool). |
PAID ($0.02). One series (e.g. vat, policy-rate, minimum-wage, corporate-tax) across up to 10 countries of this brand in one call; each row carries its own source, dates and labels, and countries without the series are listed under missing. Malformed requests are refused free. Pass api_key if you have one; otherwise the response explains how to pay via x402. After a 200, bind get_changes (free poll) or register_alert (HMAC push; Register: $0 · Delivery after trial: $0.05) on this series so a later gazette does not silently retire the value.
| Argument | Type | Description |
|---|---|---|
| series* | string | Series id from list_series, e.g. vat |
| api_key | string | API key |
| countries* | array | ISO 3166-1 alpha-2 codes on this brand, at most 10 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"series",
"countries"
],
"properties": {
"series": {
"type": "string",
"description": "Series id from list_series, e.g. vat"
},
"api_key": {
"type": "string",
"description": "API key"
},
"countries": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "ISO 3166-1 alpha-2 codes on this brand, at most 10"
}
}
}PAID ($0.05). Cost to employ: prices every statutory contribution on both the employee and employer sides for a gross salary, returning line-by-line amounts with instrument citations and an explicit refused list for schemes that could not be priced (unknown, not zero). Does NOT compute income tax — use compute_payroll for gross-to-net take-home where supported. Pass api_key if you have one (instant card checkout at /pricing); otherwise the response explains how to pay via x402. The evaluation country is free to try (see list_series). Optional receipt (boolean, default false): on a paid success, include an Ed25519 answer receipt at no extra USDC. An answer receipt is not a series certified extract (GET /v1/certified/{country}/{series} is $0.10 and is not an MCP tool) and is not legal advice. Verify with verify_answer_receipt against /certified/public-key.
| Argument | Type | Description |
|---|---|---|
| gross* | number | Gross pay in local currency |
| period | string | Period the gross covers (default month) |
| api_key | string | API key (bypasses x402; metered for invoicing) |
| country* | string | ISO country code with a costed contribution schedule |
| receipt | boolean | Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool). |
PAID ($0.02). Statutory income tax on a TAXABLE-income figure using the country's verified marginal bracket schedule, with full per-bracket workings, effective rate and marginal rate. You pass the amount in local currency. IMPORTANT: this is tax on taxable income, NOT net take-home pay — reliefs/allowances and social-security contributions are the caller's concern and are not applied (see the response scope_note). Pass api_key if you have one (instant card checkout at /pricing); otherwise the response explains how to pay via x402. The evaluation country is free to try (see list_series). Optional receipt (boolean, default false): on a paid success, include an Ed25519 answer receipt at no extra USDC. An answer receipt is not a series certified extract (GET /v1/certified/{country}/{series} is $0.10 and is not an MCP tool) and is not legal advice. Verify with verify_answer_receipt against /certified/public-key.
| Argument | Type | Description |
|---|---|---|
| api_key | string | API key (bypasses x402; metered for invoicing) |
| country* | string | ISO country code |
| receipt | boolean | Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool). |
| taxable_income* | number | Taxable income in the country's local currency, in the schedule's own period basis (annual for most; monthly for Côte d'Ivoire, Uganda, Ethiopia, Costa Rica) |
PAID ($0.02). Simple statutory interest on a principal at the cited statutory-interest series rate: Actual/365 simple, principal × (rate/100) × (days/365). Pass days, or from and to as YYYY-MM-DD (from inclusive, to exclusive). If both are sent and disagree, the call is refused free. A series with no numeric rate after materialization (mechanism-only) is refused free — a non-answer is not sold. Not legal advice. Jurisdiction-specific compounding and day-count statutes are not applied. Pass api_key if you have one (instant card checkout at /pricing); otherwise the response explains how to pay via x402. Every DE series is free to try. Optional receipt (boolean, default false): on a paid success, include an Ed25519 answer receipt at no extra USDC. An answer receipt is not a series certified extract (GET /v1/certified/{country}/{series} is $0.10 and is not an MCP tool) and is not legal advice. Verify with verify_answer_receipt against /certified/public-key.
| Argument | Type | Description |
|---|---|---|
| to | string | Period end, YYYY-MM-DD, exclusive. |
| days | number | Day-count days. Omit when from and to are set. If both are sent and disagree, the answer is refused free (HTTP 400). |
| from | string | Period start, YYYY-MM-DD, inclusive. Pair with to. Day count is calendar days from inclusive to to exclusive (UTC dates). |
| api_key | string | API key (bypasses x402; metered for invoicing) |
| country* | string |
PAID ($0.01). VAT breakdown for an amount: net, tax and gross using the country's current statutory rate, including per-levy components where the rate is composite (e.g. Ghana VAT + NHIL + GETFund). mode=add treats the amount as net; mode=extract backs VAT out of a gross amount. Pass api_key if you have one (instant card checkout at /pricing); otherwise the response explains how to pay via x402. The evaluation country is free to try (see list_series). Optional receipt (boolean, default false): on a paid success, include an Ed25519 answer receipt at no extra USDC. An answer receipt is not a series certified extract (GET /v1/certified/{country}/{series} is $0.10 and is not an MCP tool) and is not legal advice. Verify with verify_answer_receipt against /certified/public-key.
| Argument | Type | Description |
|---|---|---|
| mode | string | add = amount is net (default); extract = amount is gross |
| amount* | number | Amount in the country's own currency |
| api_key | string | API key |
| country* | string | ISO country code |
| receipt | boolean | Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool). |
PAID ($0.50). Cost this hire: one cited dossier for a salary - wage-floor verdict, employer and employee contributions (or PAYE net pay for NG/KE), employer cost, optional income tax on taxable_income and first working day on or after start_date. Countries here: DE, ES, GB, IT, PL. Anything we cannot answer in full is refused free (coverage_gap, no_charge). Shares the 3 free calls per IP per day with the answer tools. Pass api_key if you have one (card checkout at /pricing); otherwise the result is the x402 payment requirement. Optional receipt (boolean, default false): on a paid success, include an Ed25519 answer receipt at no extra USDC. An answer receipt is not a series certified extract (GET /v1/certified/{country}/{series} is $0.10 and is not an MCP tool) and is not legal advice. Verify with verify_answer_receipt against /certified/public-key.
| Argument | Type | Description |
|---|---|---|
| gross* | number | Gross pay, local currency |
| period | string | Default month |
| api_key | string | API key (bypasses x402; metered for invoicing) |
| country* | string | ISO country code with a full cost-this-hire dossier |
| receipt | boolean | Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool). |
PAID ($0.002). Working days in a date range for a country: weekends (Egypt's Fri–Sat handled) and statutory public holidays applied, with the holidays hit by name and the next working day after the range. Range max 366 days. Pass api_key if you have one (instant card checkout at /pricing); otherwise the response explains how to pay via x402. The evaluation country is free to try (see list_series). Optional receipt (boolean, default false): on a paid success, include an Ed25519 answer receipt at no extra USDC. An answer receipt is not a series certified extract (GET /v1/certified/{country}/{series} is $0.10 and is not an MCP tool) and is not legal advice. Verify with verify_answer_receipt against /certified/public-key.
| Argument | Type | Description |
|---|---|---|
| to* | string | Range end, YYYY-MM-DD, inclusive |
| from* | string | Range start, YYYY-MM-DD, inclusive |
| api_key | string | API key |
| country* | string | ISO country code |
| receipt | boolean | Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool). |
| subdivision |
PAID ($0.25). Country evidence pack: the full cited country brief plus up to 3 Ed25519-signed certified extracts (default the first certifiable of vat, policy-rate, minimum-wage). Named series must all be certifiable. Anything we cannot answer in full is refused free (coverage_gap, no_charge). Shares the 3 free calls per IP per day with the answer tools. Pass api_key if you have one (card checkout at /pricing); otherwise the result is the x402 payment requirement. Optional receipt (boolean, default false): on a paid success, include an Ed25519 answer receipt at no extra USDC. An answer receipt is not a series certified extract (GET /v1/certified/{country}/{series} is $0.10 and is not an MCP tool) and is not legal advice. Verify with verify_answer_receipt against /certified/public-key.
| Argument | Type | Description |
|---|---|---|
| series | array | 1 to 3 series ids to certify |
| api_key | string | API key (bypasses x402; metered for invoicing) |
| country* | string | ISO country code |
| receipt | boolean | Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country"
],
"properties": {
"series": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 3,
"description": "1 to 3 series ids to certify"
},
"api_key": {
"type": "string",
"description": "API key (bypasses x402; metered for invoicing)"
},
"country": {
"enum": [
"at",
"be",
"bg",
"ch",
"cy",
"cz",
"de",
"dk",
"ee",
"es",
"eu",
"fi",
"fr",
"gb",
"gr",
"hr",
"hu",
"ie",
"is",
"it",
"lt",
"lu",
"lv",
"mt",
"nl",
"no",
"pl",
"pt",
"ro",
"rs",
"se",
"si",
"sk",
"tr",
"ua"
],
"type": "string",
"description": "ISO country code"
},
"receipt": {
"type": "boolean",
"default": false,
"description": "Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool)."
}
}
}FREE, unmetered. GET /v1/calendar for this brand's continent. Optional country (ISO 3166-1 alpha-2) and series. Derives reverify_by from last_confirmed + update_cycle_days (the same window that sets stale) and, only when current.effective_to is a non-empty string, next_effective_known with basis effective_to. status unknown omits that date. Never parses notes. Does not invent MPC, budget, or wage-review dates. next_effective_known is the recorded end of the current value, not a promised gazette event. A 402 is a gate bug — do not pay. Past changes stay on get_changes.
| Argument | Type | Description |
|---|---|---|
| series | string | Optional series id (for example policy-rate). Omit for every series. A valid country with no match stays free. |
| country | string | Optional ISO 3166-1 alpha-2. Omit for every series on this brand's continent. Unknown to the catalog is 404 free. Not two letters is 400 free. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"series": {
"type": "string",
"description": "Optional series id (for example policy-rate). Omit for every series. A valid country with no match stays free."
},
"country": {
"type": "string",
"description": "Optional ISO 3166-1 alpha-2. Omit for every series on this brand's continent. Unknown to the catalog is 404 free. Not two letters is 400 free."
}
}
}FREE unmetered change + freshness feed. After any paid series or answer call, call this before you assume the cached value is still the law. Returns every series whose current value took effect on or after `since` (default last 30 days), newest first, each with last_confirmed and stale, PLUS a dataset-wide freshness summary: how many of the served series were re-verified within 1/7/30/90 days, how many are past their window, and which single series has gone longest without a check. Freshness is checkable or it is marketing. Args: since? (YYYY-MM-DD). Do not re-pay get_series to discover a diff. For a push bind, use register_alert (Register: $0 · Delivery after trial: $0.05). For a filing freeze of the current value, GET /v1/certified/{country}/{series} ($0.10).
| Argument | Type | Description |
|---|---|---|
| since | string | YYYY-MM-DD. Omit for the server default (last 30 days). Free, unmetered. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"since": {
"type": "string",
"description": "YYYY-MM-DD. Omit for the server default (last 30 days). Free, unmetered."
}
}
}PAID ($0.01). Country brief: every reference series we hold for one country (policy rate, VAT/GST, CPI, taxes, minimum wage, holidays...) in one call, each with value, unit, effective and last-confirmed dates, official source and confidence label. Cheaper than buying the series one by one. Pass api_key if you have one (card checkout at /pricing); otherwise the response explains how to pay via x402. After a 200, bind get_changes (free poll) or register_alert (HMAC push; Register: $0 · Delivery after trial: $0.05) on this series so a later gazette does not silently retire the value.
| Argument | Type | Description |
|---|---|---|
| api_key | string | API key |
| country* | string | ISO country code |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country"
],
"properties": {
"api_key": {
"type": "string",
"description": "API key"
},
"country": {
"enum": [
"at",
"be",
"bg",
"ch",
"cy",
"cz",
"de",
"dk",
"ee",
"es",
"eu",
"fi",
"fr",
"gb",
"gr",
"hr",
"hu",
"ie",
"is",
"it",
"lt",
"lu",
"lv",
"mt",
"nl",
"no",
"pl",
"pt",
"ro",
"rs",
"se",
"si",
"sk",
"tr",
"ua"
],
"type": "string",
"description": "ISO country code"
}
}
}PAID ($0.003, same as any series). Recurring statutory tax deadlines for a country — VAT/GST returns and payments, PAYE/payroll withholding remittances, corporate income tax returns and provisional/instalment payments — as RULES, each cited to the official source with the verbatim phrase that states it, plus the actual DUE DATES in a window, rolled for the country's weekend and national public holidays (every skipped day is listed). Where a rule's source does not say which way a weekend deadline moves, the date is flagged roll_unverified rather than guessed. Countries or taxes we could not verify are returned as a free coverage_gap with reasons, never invented. Pass year_end (MM-DD) to re-anchor corporate-tax rules on the company's own accounting year end. The HTML page /{country}/filing-deadlines shows the rules free. Every DE series is free to try. After a 200, bind get_changes (free poll) or register_alert (HMAC push; Register: $0 · Delivery after trial: $0.05) on this series so a later gazette does not silently retire the value.
| Argument | Type | Description |
|---|---|---|
| to | string | Window end, YYYY-MM-DD. Default from + 365 days; at most 400 days after from |
| tax | string | Only this tax's rules and dates |
| from | string | Window start, YYYY-MM-DD. Default today |
| api_key | string | API key (bypasses x402; metered for invoicing) |
| country* | string | ISO country code |
FREE. Remaining allowance for an API key (free, card or metered): plan, quota, used, remaining, reset date and what the key covers. Never metered. Pass api_key, or send the key as the X-API-Key header on /mcp.
| Argument | Type | Description |
|---|---|---|
| api_key | string | API key. Optional when sent as the X-API-Key header on /mcp. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"api_key": {
"type": "string",
"description": "API key. Optional when sent as the X-API-Key header on /mcp."
}
}
}FREE. Official public-holiday calendar for a supported country, including gazetted movable holidays, with the official government source cited. Some countries also carry sub-national calendars (e.g. the German Laender): the `subdivisions` field lists them, and passing `subdivision` (ISO 3166-2, e.g. 'DE-BY') returns the national calendar merged with that region's statutory days.
| Argument | Type | Description |
|---|---|---|
| country* | string | ISO country code |
| subdivision | string | Optional ISO 3166-2 region code (e.g. 'DE-BY'). Returns national + that region's statutory holidays, each tagged national/regional. Omit for the national calendar. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country"
],
"properties": {
"country": {
"enum": [
"at",
"be",
"bg",
"ch",
"cy",
"cz",
"de",
"dk",
"ee",
"es",
"eu",
"fi",
"fr",
"gb",
"gr",
"hr",
"hu",
"ie",
"is",
"it",
"lt",
"lu",
"lv",
"mt",
"nl",
"no",
"pl",
"pt",
"ro",
"rs",
"se",
"si",
"sk",
"tr",
"ua"
],
"type": "string",
"description": "ISO country code"
},
"subdivision": {
"type": "string",
"description": "Optional ISO 3166-2 region code (e.g. 'DE-BY'). Returns national + that region's statutory holidays, each tagged national/regional. Omit for the national calendar."
}
}
}FREE with any API key, including the free key by email (https://euroref.dev/free-key). Same as get_public_holidays, but for every country across all seven brands, not only European. Unmetered: never counts against the key's allowance. Pass api_key, or send the key as the X-API-Key header on /mcp.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Any valid API key. Optional when the key is sent as the X-API-Key header on /mcp. |
| country* | string | ISO country code, any covered country |
| subdivision | string | Optional ISO 3166-2 region code (e.g. 'DE-BY'). Returns national + that region's statutory holidays, each tagged national/regional. Omit for the national calendar. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country"
],
"properties": {
"api_key": {
"type": "string",
"description": "Any valid API key. Optional when the key is sent as the X-API-Key header on /mcp."
},
"country": {
"enum": [
"ae",
"ao",
"ar",
"at",
"au",
"bb",
"bd",
"be",
"bf",
"bg",
"bh",
"bj",
"bo",
"br",
"bs",
"bw",
"bz",
"ca",
"cd",
"cf",
"cg",
"ch",
"ci",
"cl",
"cm",
"cn",
"co",
"cr",
"cy",
"cz",
"de",
"dk",
"do",
"dz",
"ec",
"ee",
"eg",
"es",
"et",
"eu",
"fi",
"fj",
"fr",
"ga",
"gb",
"gh",
"gq",
"gr",
"gt",
"gy",
"hk",
"hn",
"hr",
"hu",
"id",
"ie",
"il",
"in",
"iq",
"is",
"it",
"jm",
"jo",
"jp",
"ke",
"kr",
"kw",
"kz",
"lk",
"ls",
"lt",
"lu",
"lv",
"ma",
"ml",
"mt",
"mu",
"mx",
"my",
"mz",
"na",
"ne",
"ng",
"ni",
"nl",
"no",
"np",
"nz",
"om",
"pa",
"pe",
"pg",
"ph",
"pk",
"pl",
"pt",
"py",
"qa",
"ro",
"rs",
"rw",
"sa",
"sb",
"se",
"sg",
"si",
"sk",
"sn",
"sv",
"sz",
"td",
"tg",
"th",
"tn",
"to",
"tr",
"tt",
"tw",
"tz",
"ua",
"ug",
"us",
"uy",
"uz",
"vn",
"vu",
"ws",
"za",
"zm"
],
"type": "string",
"description": "ISO country code, any covered country"
},
"subdivision": {
"type": "string",
"description": "Optional ISO 3166-2 region code (e.g. 'DE-BY'). Returns national + that region's statutory holidays, each tagged national/regional. Omit for the national calendar."
}
}
}PAID ($0.003). Current value of a reference series — e.g. series=policy-rate, vat, minimum-wage. Every value carries its official source citation, effective date, last-confirmed date and staleness flag. Pass api_key if you have one (instant card checkout at /pricing); otherwise the response explains how to pay via x402. Every DE series is free to try. After a 200, bind get_changes (free poll) or register_alert (HMAC push; Register: $0 · Delivery after trial: $0.05) on this series so a later gazette does not silently retire the value.
| Argument | Type | Description |
|---|---|---|
| series* | string | Series id, e.g. policy-rate, vat, minimum-wage |
| api_key | string | API key (bypasses x402; metered for invoicing) |
| country* | string | ISO country code |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country",
"series"
],
"properties": {
"series": {
"type": "string",
"description": "Series id, e.g. policy-rate, vat, minimum-wage"
},
"api_key": {
"type": "string",
"description": "API key (bypasses x402; metered for invoicing)"
},
"country": {
"enum": [
"at",
"be",
"bg",
"ch",
"cy",
"cz",
"de",
"dk",
"ee",
"es",
"eu",
"fi",
"fr",
"gb",
"gr",
"hr",
"hu",
"ie",
"is",
"it",
"lt",
"lu",
"lv",
"mt",
"nl",
"no",
"pl",
"pt",
"ro",
"rs",
"se",
"si",
"sk",
"tr",
"ua"
],
"type": "string",
"description": "ISO country code"
}
}
}PAID ($0.003). Historical values of a reference series with effective date ranges, optionally filtered by from/to (YYYY-MM-DD). Pass api_key if you have one (instant card checkout at /pricing); otherwise the response explains how to pay via x402. Every DE series is free to try. After a 200, bind get_changes (free poll) or register_alert (HMAC push; Register: $0 · Delivery after trial: $0.05) on this series so a later gazette does not silently retire the value.
| Argument | Type | Description |
|---|---|---|
| to | string | Latest effective date, YYYY-MM-DD |
| from | string | Earliest effective date, YYYY-MM-DD |
| series* | string | Series id |
| api_key | string | API key |
| country* | string | ISO country code |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country",
"series"
],
"properties": {
"to": {
"type": "string",
"description": "Latest effective date, YYYY-MM-DD"
},
"from": {
"type": "string",
"description": "Earliest effective date, YYYY-MM-DD"
},
"series": {
"type": "string",
"description": "Series id"
},
"api_key": {
"type": "string",
"description": "API key"
},
"country": {
"enum": [
"at",
"be",
"bg",
"ch",
"cy",
"cz",
"de",
"dk",
"ee",
"es",
"eu",
"fi",
"fr",
"gb",
"gr",
"hr",
"hu",
"ie",
"is",
"it",
"lt",
"lu",
"lv",
"mt",
"nl",
"no",
"pl",
"pt",
"ro",
"rs",
"se",
"si",
"sk",
"tr",
"ua"
],
"type": "string",
"description": "ISO country code"
}
}
}PAID ($0.02). Snapshot of every series for every country in one call. Pass api_key if you have one (instant card checkout at /pricing); otherwise the response explains how to pay via x402. Every DE series is free to try. After a 200, bind get_changes (free poll) or register_alert (HMAC push; Register: $0 · Delivery after trial: $0.05) on this series so a later gazette does not silently retire the value.
| Argument | Type | Description |
|---|---|---|
| api_key | string | API key |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"api_key": {
"type": "string",
"description": "API key"
}
}
}PAID ($0.75 for 2 countries, $1.00 for 3-5). Employer cost, employer and employee contributions, on-cost percent and wage-floor verdict side by side and ranked, every figure cited. Countries (any brand): AE, AU, CA, DE, ES, GB, IT, MX, PL, US. Gross is in each country's own currency; currencies are not converted. Anything we cannot answer in full is refused free (coverage_gap, no_charge). Shares the 3 free calls per IP per day with the answer tools. Pass api_key if you have one (card checkout at /pricing); otherwise the result is the x402 payment requirement. Optional receipt (boolean, default false): on a paid success, include an Ed25519 answer receipt at no extra USDC. An answer receipt is not a series certified extract (GET /v1/certified/{country}/{series} is $0.10 and is not an MCP tool) and is not legal advice. Verify with verify_answer_receipt against /certified/public-key.
| Argument | Type | Description |
|---|---|---|
| hires* | array | 2 to 5 hires |
| period | string | Default month |
| api_key | string | API key (bypasses x402; metered for invoicing) |
| receipt | boolean | Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"hires"
],
"properties": {
"hires": {
"type": "array",
"items": {
"type": "object",
"required": [
"country",
"gross"
],
"properties": {
"gross": {
"type": "number"
},
"country": {
"enum": [
"ae",
"au",
"ca",
"de",
"es",
"gb",
"it",
"mx",
"pl",
"us"
],
"type": "string"
},
"subdivision": {
"type": "string"
},
"hours_per_week": {
"type": "number"
}
}
},
"maxItems": 5,
"minItems": 2,
"description": "2 to 5 hires"
},
"period": {
"enum": [
"month",
"year"
],
"type": "string",
"description": "Default month"
},
"api_key": {
"type": "string",
"description": "API key (bypasses x402; metered for invoicing)"
},
"receipt": {
"type": "boolean",
"default": false,
"description": "Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool)."
}
}
}PAID ($0.40). Is this invoice overdue, by how many days, and how much statutory late-payment interest is owed (Actual/365 simple, rate and workings cited). Late-payment regime: AT, BE, BG, CY, DE, DK, EE, ES, FI, FR, GB, GR, HR, IE, IT, LT, LU, LV, MT, NL, PL, PT, SE, SI, SK; statutory interest only: CH, CZ, HU, IS, NO, RO, RS, TR. Send due_date, or invoice_date with terms_days. Anything we cannot answer in full is refused free (coverage_gap, no_charge). Shares the 3 free calls per IP per day with the answer tools. Pass api_key if you have one (card checkout at /pricing); otherwise the result is the x402 payment requirement. Optional receipt (boolean, default false): on a paid success, include an Ed25519 answer receipt at no extra USDC. An answer receipt is not a series certified extract (GET /v1/certified/{country}/{series} is $0.10 and is not an MCP tool) and is not legal advice. Verify with verify_answer_receipt against /certified/public-key.
| Argument | Type | Description |
|---|---|---|
| as_of | string | YYYY-MM-DD payment date or day asked about; default today |
| debtor | string | Default business |
| api_key | string | API key (bypasses x402; metered for invoicing) |
| country* | string | ISO country code |
| receipt | boolean | Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool). |
FREE, unmetered. Is this date a business day in this country? Returns is_business_day, the reason (weekend, public_holiday, makeup_workday…), the holiday names, and the next and previous business day. Uses the country's national public-holiday calendar and its statutory weekend rule (Gulf Friday+Saturday, Israel Saturday-only, India 2nd/4th Saturdays, Nepal's 2026 change, China's multi-day breaks and make-up working days). A date in a year whose holidays we do not hold is refused with error year_not_held and the years_held list; it is never computed from weekends alone. A statutory holiday whose date is not yet fixed is refused as holiday_date_pending. Regional (sub-national) holidays are not applied.
| Argument | Type | Description |
|---|---|---|
| date* | string | Date to classify, YYYY-MM-DD |
| country* | string | ISO 3166-1 alpha-2 country code, e.g. 'za', 'ae', 'in'. Every country we hold a holiday calendar for is accepted on every brand, not only this brand's region. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country",
"date"
],
"properties": {
"date": {
"type": "string",
"description": "Date to classify, YYYY-MM-DD"
},
"country": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country code, e.g. 'za', 'ae', 'in'. Every country we hold a holiday calendar for is accepted on every brand, not only this brand's region."
}
}
}FREE. Catalog of all euroref reference-data series: supported countries, series ids, descriptions, freshness metadata and per-series URLs. Call this first to discover what data exists. Paid answer tools accept receipt=true (included in the answer price, no extra USDC) and, on a paid success, return an Ed25519 answer receipt (kind answer_receipt). That receipt is not a series certified extract and is not legal advice. Series certified extracts are GET /v1/certified/{country}/{series} at $0.10 and are not an MCP tool. Verify a receipt with verify_answer_receipt (free, public key only) against /certified/public-key. get_changes is free. get_calendar is free. register_alert registration is free.
| Argument | Type | Description |
|---|---|---|
| detail | boolean | Default false. Without country, false returns a compact index (country -> series ids). true returns the full catalog, which is large. |
| country | string | Optional ISO country code. Returns full per-series metadata (source, freshness, bands) for that country only. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"detail": {
"type": "boolean",
"description": "Default false. Without country, false returns a compact index (country -> series ids). true returns the full catalog, which is large."
},
"country": {
"type": "string",
"description": "Optional ISO country code. Returns full per-series metadata (source, freshness, bands) for that country only."
}
}
}PAID ($0.35). Upcoming VAT, PAYE and corporate-tax due dates in a window (default the next 90 days), rolled for weekends and national public holidays, each rule cited. Countries with verified rules here: CH, CZ, DE, DK, ES, FI, FR, GB, IE, IT, LU, NL, NO, PL, PT, RO, SE, TR. Anything we cannot answer in full is refused free (coverage_gap, no_charge). Shares the 3 free calls per IP per day with the answer tools. Pass api_key if you have one (card checkout at /pricing); otherwise the result is the x402 payment requirement. Optional receipt (boolean, default false): on a paid success, include an Ed25519 answer receipt at no extra USDC. An answer receipt is not a series certified extract (GET /v1/certified/{country}/{series} is $0.10 and is not an MCP tool) and is not legal advice. Verify with verify_answer_receipt against /certified/public-key.
| Argument | Type | Description |
|---|---|---|
| to | string | YYYY-MM-DD, max 366 days after from |
| tax | string | |
| from | string | YYYY-MM-DD, default today |
| api_key | string | API key (bypasses x402; metered for invoicing) |
| country* | string | ISO country code |
| receipt | boolean | Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool). |
Bind a webhook so the next gazette does not silently stale a value you already paid for. REGISTERING IS FREE. Register: $0 · Delivery after trial: $0.05. First 3 deliveries are free; later deliveries are $0.05 and refunded if the webhook fails to send. HMAC-SHA256 signed. Two watch types on the same call: • series: ["za/vat-registration-threshold", "ke/*", "*"] → series.changed when the served value or its effective date moves. On usaref those watches are statutory (minimum-wage, income-tax, statutory-interest, sales-tax, public-holidays), not a FRED-macro subscription. • sources: ["<exact official source.url>"] → source.changed when the document BYTES change (old/new sha256 + citing series). Bytes ≠ value. Value changes arrive as series.changed. Unknown URLs refuse free (source_not_fingerprinted). Max 20 series + 20 sources. Required: url. Optional: api_key stored on the subscription to fund deliveries after the trial. This call does not meter that key. Prefer this over polling get_changes if you are a long-running agent. This is retention, not a new data product.
| Argument | Type | Description |
|---|---|---|
| url* | string | Webhook endpoint that will receive HMAC-SHA256 signed events |
| series | array | Value watches, e.g. ["za/vat-registration-threshold", "ke/*", "*"] |
| api_key | string | Optional prepaid key stored on the subscription to fund deliveries after the trial. This call does not meter it. |
| sources | array | Exact official-source URLs from a series source.url. Unknown URLs are refused free. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Webhook endpoint that will receive HMAC-SHA256 signed events"
},
"series": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"description": "Value watches, e.g. [\"za/vat-registration-threshold\", \"ke/*\", \"*\"]"
},
"api_key": {
"type": "string",
"description": "Optional prepaid key stored on the subscription to fund deliveries after the trial. This call does not meter it."
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"description": "Exact official-source URLs from a series source.url. Unknown URLs are refused free."
}
}
}PAID ($0.02). Settlement/value date: the date n business days after a trade date, computed on the INTERSECTION of the calendars you name, with a per-day trail showing every skipped day and why, on which calendar. Supply business_days for a cycle you are trading under, or market + instrument_class to have a settlement cycle applied that we cite to its primary source (e.g. US equities T+1 under 17 CFR 240.15c6-1(a); UK gilts T+1 by DMO convention, which is NOT the T+2 equity cycle; Japan equities T+2 but JGBs T+1). Calendars are NATIONAL statutory holiday calendars with researched statutory weekend rules (Israel Saturday-only, Gulf Friday+Saturday, India Sundays plus the 2nd and 4th Saturday), NOT CSD or exchange calendars — each response states the basis and any known divergence. Use 'eu.t2' for the euro cash leg. We refuse FREE rather than guess: beyond published calendar coverage, no cited cycle for the instrument (government bonds never inherit an equity cycle), a cycle not in force on the trade date, or FX spot value dates. Free companion: GET /settlement-conventions. Optional receipt (boolean, default false): on a paid success, include an Ed25519 answer receipt at no extra USDC. An answer receipt is not a series certified extract (GET /v1/certified/{country}/{series} is $0.10 and is not an MCP tool) and is not legal advice. Verify with verify_answer_receipt against /certified/public-key.
| Argument | Type | Description |
|---|---|---|
| market | string | ISO country of the market whose cited cycle should apply (with instrument_class) |
| api_key | string | API key (bypasses x402; metered for invoicing) |
| receipt | boolean | Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool). |
PAID ($0.003). Offline format and check-digit validation of a business tax ID or VAT number for one country of this brand: valid/invalid, normalised form, id type, check level (checksum only where the authority publishes the algorithm) and why it failed, with official sources. Does not confirm registration; follow official_lookup for that. Countries without a sourced rule answer free with status 'unknown'. Pass api_key if you have one; otherwise the response explains how to pay via x402. After a 200, bind get_changes (free poll) or register_alert (HMAC push; Register: $0 · Delivery after trial: $0.05) on this series so a later gazette does not silently retire the value.
| Argument | Type | Description |
|---|---|---|
| id* | string | The tax ID / VAT number as written; spaces, dots, dashes and a VAT country prefix are accepted |
| api_key | string | API key |
| country* | string | ISO country code |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country",
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "The tax ID / VAT number as written; spaces, dots, dashes and a VAT country prefix are accepted"
},
"api_key": {
"type": "string",
"description": "API key"
},
"country": {
"enum": [
"at",
"be",
"bg",
"ch",
"cy",
"cz",
"de",
"dk",
"ee",
"es",
"eu",
"fi",
"fr",
"gb",
"gr",
"hr",
"hu",
"ie",
"is",
"it",
"lt",
"lu",
"lv",
"mt",
"nl",
"no",
"pl",
"pt",
"ro",
"rs",
"se",
"si",
"sk",
"tr",
"ua"
],
"type": "string",
"description": "ISO country code"
}
}
}FREE. Verify an answer receipt (kind answer_receipt) with the Ed25519 public key only. Pass the receipt object or its canonical JSON, signature_value when the signature is not inside the receipt, and public_key_pem to verify offline. If public_key_pem is omitted, the tool may GET signature.public_key (/certified/public-key) and read public_key_pem. Never send a private key. A valid signature shows this service issued that exact receipt. It does not turn the receipt into a series certified extract (GET /v1/certified/{country}/{series} at $0.10, not an MCP tool) and it is not legal advice. Same key and canonical-JSON rule as /certified/public-key.
| Argument | Type | Description |
|---|---|---|
| receipt* | any | Answer receipt object (signature may be nested) or the canonical JSON of that object. A canonical JSON string of the signed body (signature omitted) is accepted when signature_value is also passed. |
| public_key_pem | string | SPKI public key PEM from GET /certified/public-key (field public_key_pem). Required for offline verify. A private key PEM is refused. |
| public_key_url | string | Optional GET /certified/public-key URL used only when public_key_pem is omitted. Ignored when the PEM is present. |
| signature_value | string | Base64 Ed25519 signature. Required when the receipt object or JSON string does not already include signature.value. Overrides a nested signature when both are sent. |
| buyer_type |
| string |
| Default unknown |
| buyer_country | string | Omit for single-country rate maths |
| seller_country* | string | ISO 3166-1 alpha-2 (EL = Greece, UK = United Kingdom) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"seller_country",
"amount"
],
"properties": {
"band": {
"type": "string",
"description": "VAT band key, e.g. reduced"
},
"amount": {
"type": "number",
"description": "Sale amount"
},
"api_key": {
"type": "string",
"description": "API key (bypasses x402; metered for invoicing)"
},
"receipt": {
"type": "boolean",
"default": false,
"description": "Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool)."
},
"amount_is": {
"enum": [
"net",
"gross"
],
"type": "string",
"description": "net adds VAT (default); gross extracts it"
},
"buyer_type": {
"enum": [
"B2B",
"B2C",
"unknown"
],
"type": "string",
"description": "Default unknown"
},
"buyer_country": {
"type": "string",
"description": "Omit for single-country rate maths"
},
"seller_country": {
"type": "string",
"description": "ISO 3166-1 alpha-2 (EL = Greece, UK = United Kingdom)"
}
}
}| string |
| Default unknown |
| buyer_country | string | Omit for single-country rate maths |
| seller_country* | string | ISO 3166-1 alpha-2 (EL = Greece, UK = United Kingdom) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"seller_country",
"amount"
],
"properties": {
"band": {
"type": "string",
"description": "VAT band key, e.g. reduced"
},
"amount": {
"type": "number",
"description": "Sale amount"
},
"api_key": {
"type": "string",
"description": "API key (bypasses x402; metered for invoicing)"
},
"receipt": {
"type": "boolean",
"default": false,
"description": "Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool)."
},
"amount_is": {
"enum": [
"net",
"gross"
],
"type": "string",
"description": "net adds VAT (default); gross extracts it"
},
"buyer_type": {
"enum": [
"B2B",
"B2C",
"unknown"
],
"type": "string",
"description": "Default unknown"
},
"buyer_country": {
"type": "string",
"description": "Omit for single-country rate maths"
},
"seller_country": {
"type": "string",
"description": "ISO 3166-1 alpha-2 (EL = Greece, UK = United Kingdom)"
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country",
"amount",
"period"
],
"properties": {
"amount": {
"type": "number",
"description": "Wage to check, in the country's own currency"
},
"period": {
"enum": [
"month",
"day",
"hour",
"week"
],
"type": "string",
"description": "Period the amount covers — must match the statutory floor's period"
},
"api_key": {
"type": "string",
"description": "API key (bypasses x402; metered for invoicing)"
},
"country": {
"enum": [
"at",
"be",
"bg",
"ch",
"cy",
"cz",
"de",
"dk",
"ee",
"es",
"eu",
"fi",
"fr",
"gb",
"gr",
"hr",
"hu",
"ie",
"is",
"it",
"lt",
"lu",
"lv",
"mt",
"nl",
"no",
"pl",
"pt",
"ro",
"rs",
"se",
"si",
"sk",
"tr",
"ua"
],
"type": "string",
"description": "ISO country code"
},
"receipt": {
"type": "boolean",
"default": false,
"description": "Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool)."
}
}
}| contract | string | Contract type where rates differ |
| nationality | string | Gulf nationality for pension reach |
| subdivision | string | Optional ISO 3166-2 regional schedule (e.g. CA-QC, DE-SN) |
| childless_over_23 | boolean | Germany care surcharge |
| children_under_25 | number | Germany per-child care reduction |
| workplace_pension | boolean | Auto-enrolment / PPK participation (default true) |
| zusatzbeitrag_rate | number | Germany sickness-fund supplement |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country",
"gross"
],
"properties": {
"gross": {
"type": "number",
"description": "Gross pay in local currency"
},
"period": {
"enum": [
"month",
"year"
],
"type": "string",
"description": "Period the gross covers (default month)"
},
"api_key": {
"type": "string",
"description": "API key (bypasses x402; metered for invoicing)"
},
"country": {
"enum": [
"de",
"es",
"gb",
"it",
"pl"
],
"type": "string",
"description": "ISO country code with a costed contribution schedule"
},
"receipt": {
"type": "boolean",
"default": false,
"description": "Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool)."
},
"contract": {
"enum": [
"indefinite",
"fixed_term"
],
"type": "string",
"description": "Contract type where rates differ"
},
"nationality": {
"enum": [
"national",
"gcc",
"expat"
],
"type": "string",
"description": "Gulf nationality for pension reach"
},
"subdivision": {
"type": "string",
"description": "Optional ISO 3166-2 regional schedule (e.g. CA-QC, DE-SN)"
},
"childless_over_23": {
"type": "boolean",
"description": "Germany care surcharge"
},
"children_under_25": {
"type": "number",
"description": "Germany per-child care reduction"
},
"workplace_pension": {
"type": "boolean",
"description": "Auto-enrolment / PPK participation (default true)"
},
"zusatzbeitrag_rate": {
"type": "number",
"description": "Germany sickness-fund supplement"
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country",
"taxable_income"
],
"properties": {
"api_key": {
"type": "string",
"description": "API key (bypasses x402; metered for invoicing)"
},
"country": {
"enum": [
"at",
"be",
"bg",
"ch",
"cy",
"cz",
"de",
"dk",
"ee",
"es",
"eu",
"fi",
"fr",
"gb",
"gr",
"hr",
"hu",
"ie",
"is",
"it",
"lt",
"lu",
"lv",
"mt",
"nl",
"no",
"pl",
"pt",
"ro",
"rs",
"se",
"si",
"sk",
"tr",
"ua"
],
"type": "string",
"description": "ISO country code"
},
"receipt": {
"type": "boolean",
"default": false,
"description": "Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool)."
},
"taxable_income": {
"type": "number",
"description": "Taxable income in the country's local currency, in the schedule's own period basis (annual for most; monthly for Côte d'Ivoire, Uganda, Ethiopia, Costa Rica)"
}
}
}| ISO country code |
| receipt | boolean | Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool). |
| principal* | number | Principal in the country's own currency. Must be a finite number greater than 0. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country",
"principal"
],
"properties": {
"to": {
"type": "string",
"description": "Period end, YYYY-MM-DD, exclusive."
},
"days": {
"type": "number",
"description": "Day-count days. Omit when from and to are set. If both are sent and disagree, the answer is refused free (HTTP 400)."
},
"from": {
"type": "string",
"description": "Period start, YYYY-MM-DD, inclusive. Pair with to. Day count is calendar days from inclusive to to exclusive (UTC dates)."
},
"api_key": {
"type": "string",
"description": "API key (bypasses x402; metered for invoicing)"
},
"country": {
"enum": [
"at",
"be",
"bg",
"ch",
"cy",
"cz",
"de",
"dk",
"ee",
"es",
"eu",
"fi",
"fr",
"gb",
"gr",
"hr",
"hu",
"ie",
"is",
"it",
"lt",
"lu",
"lv",
"mt",
"nl",
"no",
"pl",
"pt",
"ro",
"rs",
"se",
"si",
"sk",
"tr",
"ua"
],
"type": "string",
"description": "ISO country code"
},
"receipt": {
"type": "boolean",
"default": false,
"description": "Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool)."
},
"principal": {
"type": "number",
"description": "Principal in the country's own currency. Must be a finite number greater than 0."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country",
"amount"
],
"properties": {
"mode": {
"enum": [
"add",
"extract"
],
"type": "string",
"description": "add = amount is net (default); extract = amount is gross"
},
"amount": {
"type": "number",
"description": "Amount in the country's own currency"
},
"api_key": {
"type": "string",
"description": "API key"
},
"country": {
"enum": [
"at",
"be",
"bg",
"ch",
"cy",
"cz",
"de",
"dk",
"ee",
"es",
"eu",
"fi",
"fr",
"gb",
"gr",
"hr",
"hu",
"ie",
"is",
"it",
"lt",
"lu",
"lv",
"mt",
"nl",
"no",
"pl",
"pt",
"ro",
"rs",
"se",
"si",
"sk",
"tr",
"ua"
],
"type": "string",
"description": "ISO country code"
},
"receipt": {
"type": "boolean",
"default": false,
"description": "Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool)."
}
}
}| start_date | string | YYYY-MM-DD; returns the first working day on or after it |
| subdivision | string | Contribution region where held (e.g. CA-QC) |
| hours_per_week | number | Lets an hourly wage floor be checked |
| taxable_income | number | Annual taxable income; applies the income-tax schedule |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country",
"gross"
],
"properties": {
"gross": {
"type": "number",
"description": "Gross pay, local currency"
},
"period": {
"enum": [
"month",
"year"
],
"type": "string",
"description": "Default month"
},
"api_key": {
"type": "string",
"description": "API key (bypasses x402; metered for invoicing)"
},
"country": {
"enum": [
"de",
"es",
"gb",
"it",
"pl"
],
"type": "string",
"description": "ISO country code with a full cost-this-hire dossier"
},
"receipt": {
"type": "boolean",
"default": false,
"description": "Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool)."
},
"start_date": {
"type": "string",
"description": "YYYY-MM-DD; returns the first working day on or after it"
},
"subdivision": {
"type": "string",
"description": "Contribution region where held (e.g. CA-QC)"
},
"hours_per_week": {
"type": "number",
"description": "Lets an hourly wage floor be checked"
},
"taxable_income": {
"type": "number",
"description": "Annual taxable income; applies the income-tax schedule"
}
}
}| string |
| Optional ISO 3166-2 region code (e.g. 'DE-BY') to apply that region's statutory holidays on top of the national calendar. Regions are listed under `subdivisions` by get_public_holidays. Unknown code is refused free with the list. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country",
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"description": "Range end, YYYY-MM-DD, inclusive"
},
"from": {
"type": "string",
"description": "Range start, YYYY-MM-DD, inclusive"
},
"api_key": {
"type": "string",
"description": "API key"
},
"country": {
"enum": [
"at",
"be",
"bg",
"ch",
"cy",
"cz",
"de",
"dk",
"ee",
"es",
"eu",
"fi",
"fr",
"gb",
"gr",
"hr",
"hu",
"ie",
"is",
"it",
"lt",
"lu",
"lv",
"mt",
"nl",
"no",
"pl",
"pt",
"ro",
"rs",
"se",
"si",
"sk",
"tr",
"ua"
],
"type": "string",
"description": "ISO country code"
},
"receipt": {
"type": "boolean",
"default": false,
"description": "Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool)."
},
"subdivision": {
"type": "string",
"description": "Optional ISO 3166-2 region code (e.g. 'DE-BY') to apply that region's statutory holidays on top of the national calendar. Regions are listed under `subdivisions` by get_public_holidays. Unknown code is refused free with the list."
}
}
}| year_end |
| string |
| Company accounting year end, MM-DD (e.g. 06-30). Applies to rules marked year_end_variable |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country"
],
"properties": {
"to": {
"type": "string",
"description": "Window end, YYYY-MM-DD. Default from + 365 days; at most 400 days after from"
},
"tax": {
"enum": [
"vat",
"paye",
"cit"
],
"type": "string",
"description": "Only this tax's rules and dates"
},
"from": {
"type": "string",
"description": "Window start, YYYY-MM-DD. Default today"
},
"api_key": {
"type": "string",
"description": "API key (bypasses x402; metered for invoicing)"
},
"country": {
"enum": [
"at",
"be",
"bg",
"ch",
"cy",
"cz",
"de",
"dk",
"ee",
"es",
"eu",
"fi",
"fr",
"gb",
"gr",
"hr",
"hu",
"ie",
"is",
"it",
"lt",
"lu",
"lv",
"mt",
"nl",
"no",
"pl",
"pt",
"ro",
"rs",
"se",
"si",
"sk",
"tr",
"ua"
],
"type": "string",
"description": "ISO country code"
},
"year_end": {
"type": "string",
"description": "Company accounting year end, MM-DD (e.g. 06-30). Applies to rules marked year_end_variable"
}
}
}| due_date | string | YYYY-MM-DD contractual due date |
| principal* | number | Unpaid amount, local currency |
| terms_days | integer | Agreed payment term in days |
| invoice_date | string | YYYY-MM-DD; with terms_days instead of due_date |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country",
"principal"
],
"properties": {
"as_of": {
"type": "string",
"description": "YYYY-MM-DD payment date or day asked about; default today"
},
"debtor": {
"enum": [
"business",
"public_authority",
"consumer"
],
"type": "string",
"description": "Default business"
},
"api_key": {
"type": "string",
"description": "API key (bypasses x402; metered for invoicing)"
},
"country": {
"enum": [
"at",
"be",
"bg",
"cy",
"de",
"dk",
"ee",
"es",
"fi",
"fr",
"gb",
"gr",
"hr",
"ie",
"it",
"lt",
"lu",
"lv",
"mt",
"nl",
"pl",
"pt",
"se",
"si",
"sk",
"ch",
"cz",
"hu",
"is",
"no",
"ro",
"rs",
"tr"
],
"type": "string",
"description": "ISO country code"
},
"receipt": {
"type": "boolean",
"default": false,
"description": "Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool)."
},
"due_date": {
"type": "string",
"description": "YYYY-MM-DD contractual due date"
},
"principal": {
"type": "number",
"description": "Unpaid amount, local currency"
},
"terms_days": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Agreed payment term in days"
},
"invoice_date": {
"type": "string",
"description": "YYYY-MM-DD; with terms_days instead of due_date"
}
}
}| year_end | string | MM-DD financial year end |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country"
],
"properties": {
"to": {
"type": "string",
"description": "YYYY-MM-DD, max 366 days after from"
},
"tax": {
"enum": [
"vat",
"paye",
"cit"
],
"type": "string"
},
"from": {
"type": "string",
"description": "YYYY-MM-DD, default today"
},
"api_key": {
"type": "string",
"description": "API key (bypasses x402; metered for invoicing)"
},
"country": {
"enum": [
"ch",
"cz",
"de",
"dk",
"es",
"fi",
"fr",
"gb",
"ie",
"it",
"lu",
"nl",
"no",
"pl",
"pt",
"ro",
"se",
"tr"
],
"type": "string",
"description": "ISO country code"
},
"receipt": {
"type": "boolean",
"default": false,
"description": "Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool)."
},
"year_end": {
"type": "string",
"description": "MM-DD financial year end"
}
}
}| calendars* | array | Calendar ids to intersect: two-letter ISO country codes, plus 'eu.t2' for the euro cash leg |
| trade_date* | string | Trade/reference date, YYYY-MM-DD. Day 0: never counted, never rolled. |
| business_days | integer | The offset you are trading under (T+n) |
| instrument_class | string | Instrument class — a government bond never inherits an equity cycle |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"trade_date",
"calendars"
],
"properties": {
"market": {
"type": "string",
"description": "ISO country of the market whose cited cycle should apply (with instrument_class)"
},
"api_key": {
"type": "string",
"description": "API key (bypasses x402; metered for invoicing)"
},
"receipt": {
"type": "boolean",
"default": false,
"description": "Default false. When true, a paid success includes an Ed25519 answer receipt (kind answer_receipt) at no extra USDC. Unpaid 402 and free refusals do not include one. Not a series certified extract (GET /v1/certified/{country}/{series} at $0.10; that SKU is not an MCP tool)."
},
"calendars": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 4,
"minItems": 1,
"description": "Calendar ids to intersect: two-letter ISO country codes, plus 'eu.t2' for the euro cash leg"
},
"trade_date": {
"type": "string",
"description": "Trade/reference date, YYYY-MM-DD. Day 0: never counted, never rolled."
},
"business_days": {
"type": "integer",
"maximum": 30,
"minimum": 0,
"description": "The offset you are trading under (T+n)"
},
"instrument_class": {
"enum": [
"cash_equity",
"etf",
"corporate_bond",
"government_bond",
"tbill",
"repo",
"primary_issuance",
"other"
],
"type": "string",
"description": "Instrument class — a government bond never inherits an equity cycle"
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"receipt"
],
"properties": {
"receipt": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
],
"description": "Answer receipt object (signature may be nested) or the canonical JSON of that object. A canonical JSON string of the signed body (signature omitted) is accepted when signature_value is also passed."
},
"public_key_pem": {
"type": "string",
"description": "SPKI public key PEM from GET /certified/public-key (field public_key_pem). Required for offline verify. A private key PEM is refused."
},
"public_key_url": {
"type": "string",
"description": "Optional GET /certified/public-key URL used only when public_key_pem is omitted. Ignored when the PEM is present."
},
"signature_value": {
"type": "string",
"description": "Base64 Ed25519 signature. Required when the receipt object or JSON string does not already include signature.value. Overrides a nested signature when both are sent."
}
}
}