reference-data
Server Details
Oceania govt data, cited: rates, VAT, tax, wages, holidays, FX. 8 countries; Australia free.
- Status
- Healthy
- Uptime
- 99.4% over 77 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 33 tools
Many tools are individually distinct, but there are clear clusters with overlapping purposes: compute_vat/charge_sale/invoice_check/invoice_payable, the business-day tools, and get_series/get_country_brief/get_snapshot/compare_series. The detailed descriptions help, but an agent must read carefully to avoid misselection.
All names use snake_case, but the conventions are mixed: verb-first tools (get_series, compute_vat, validate_tax_id) coexist with noun-first tools (evidence_pack, settlement_date, next_filings, invoice_check). Similar operations also use different verbs, e.g. get_filing_deadlines vs next_filings and compute_employment_cost vs cost_hire vs hire_compare.
At 33 tools, the surface is heavy for a reference-data server and includes many paid variants and overlapping dossiers. Several tools could likely be consolidated or grouped, so the count feels excessive rather than tightly scoped.
Coverage is broad: series retrieval/history/snapshot/compare, calendars, tax and labor calculations, invoice checks, filing deadlines, alerts, and receipt verification. Minor gaps remain around alert lifecycle management (list/unregister), direct certified-extract access, and registration lookup beyond format validation.
Available Tools
33 toolsadd_business_daysAdd business days to a dateARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| n | Yes | Business days to add; negative walks backward | |
| date | Yes | Start date (day 0), YYYY-MM-DD | |
| country | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| n | No | |
| free | No | |
| year | No | On year_not_held: the year we do not hold |
| basis | No | |
| error | No | Present on a free refusal or error; no charge |
| price | No | |
| caveats | No | |
| country | No | |
| reached | No | On a refusal: the first date the calculation could not classify |
| weekend | No | Weekend days applied, the basis of that rule, and any dated or sub-national note |
| calendar | No | Holiday calendar used: years_held, source, last_confirmed, stale |
| direction | No | |
| no_charge | No | |
| price_usd | No | |
| convention | No | |
| disclaimer | No | |
| how_to_pay | No | |
| start_date | No | |
| years_held | No | On year_not_held: the years whose holidays we do hold |
| bind_series | No | |
| explanation | No | |
| result_date | No | |
| x_next_bind | No | |
| country_name | No | |
| http_endpoint | No | |
| result_weekday | No | |
| what_you_can_do | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
| calendar_days_moved | No | |
| non_business_days_skipped | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, closed-world behavior, but the description goes well beyond them: it enumerates the country statutory weekend rules, discloses that regional holidays are NOT applied, and names two concrete refusal modes (year_not_held with years_held, holiday_date_pending). That is exactly the behavioral context an agent cannot get from structured fields alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the metering status and the core operation, then progressively narrows to edge cases, refusal modes, and exclusions. It is dense and multi-clause, but nearly every sentence carries a distinct rule an agent needs; only the parenthetical country-rule laundry list is slightly over-packed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-shape details are correctly omitted, and the description still covers the failure modes, the calendar-coverage boundary, and the exclusions an agent must know to call this safely. Little is left for the agent to discover at runtime.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description genuinely adds semantics beyond the schema: the start date is day 0 and never counted, n=0 returns the date itself if it is a business day else the next one, and negative n walks backward. The only gap is that the +/-500 bound and country-code format are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Precise verb+resource: add N business days to a start date, with the direction (negative n walks backward) stated up front. This cleanly separates it from siblings like business_days_between, count_working_days, and is_business_day, which count or test rather than advance a date.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the day-0 convention and the n=0 edge case, which implies the correct usage context, but it never explicitly names an alternative tool or states when to prefer this over business_days_between/count_working_days. Usage is inferable rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
business_days_betweenCount business days between two datesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Range end, YYYY-MM-DD | |
| from | Yes | Range start, YYYY-MM-DD | |
| country | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| free | No | |
| from | No | |
| year | No | On year_not_held: the year we do not hold |
| basis | No | |
| error | No | Present on a free refusal or error; no charge |
| price | No | |
| caveats | No | |
| country | No | |
| reached | No | On a refusal: the first date the calculation could not classify |
| weekend | No | Weekend days applied, the basis of that rule, and any dated or sub-national note |
| calendar | No | Holiday calendar used: years_held, source, last_confirmed, stale |
| no_charge | No | |
| price_usd | No | |
| convention | No | |
| disclaimer | No | |
| how_to_pay | No | |
| years_held | No | On year_not_held: the years whose holidays we do hold |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| country_name | No | |
| weekend_days | No | |
| business_days | No | Business days in (from, to]; negative when to is before from |
| http_endpoint | No | |
| what_you_can_do | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
| business_days_inclusive | No | Business days counting both ends |
| calendar_days_inclusive | No | |
| public_holidays_on_weekdays | No | |
| public_holidays_on_weekends | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds substantial behavioral detail: it is free and unmetered, defines the counting semantics including negative ranges, explains that weekend days and public holidays are returned, lists specific statutory weekend rules, and documents error behaviors such as year_not_held and holiday_date_pending. These are all meaningful operational traits not covered by the readOnly/idempotent annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and key constraint, and most sentences are dense with useful detail. It is somewhat long and includes several illustrative country examples that, while relevant, could be trimmed for brevity, but the structure remains clear and purposeful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the existence of an output schema, the description is complete enough for correct invocation. It covers calculation semantics, return contents, calendar limitations, and explicit error conditions, leaving no significant ambiguity for an agent to resolve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is already 100%, the description adds important semantic meaning: country selects a national public-holiday calendar and statutory weekend rule, from/to follow half-open interval semantics with potential negative counts, and regional holidays are excluded. This goes well beyond the schema's terse date and country-code descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource: counting business days between two dates. It distinguishes itself from the sibling add_business_days by explaining the inverse relationship and the interval convention '(from, to]', and it clarifies the inclusive-counting variant, so an agent can identify the tool's exact purpose without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly explains when the tool is appropriate: counting business days between two dates while accounting for national holidays and statutory weekends. It also notes limitations such as regional holidays not being applied and errors for unsupported years, but it does not explicitly contrast with other date-related siblings like is_business_day or count_working_days.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
charge_saleARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| band | No | VAT band key, e.g. reduced | |
| amount | Yes | Sale amount | |
| api_key | No | API key (bypasses x402; metered for invoicing) | |
| receipt | No | 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 | No | net adds VAT (default); gross extracts it | |
| buyer_type | No | Default unknown | |
| buyer_country | No | Omit for single-country rate maths | |
| seller_country | Yes | ISO 3166-1 alpha-2 (EL = Greece, UK = United Kingdom) |
Output Schema
| Name | Required | Description |
|---|---|---|
| job | No | |
| error | No | Present on a free refusal or error; no charge |
| status | No | |
| evidence | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly/idempotent/openWorld), it discloses pricing ($0.50), the x402 payment flow, shared rate limits (3 free calls per IP per day), free refusals on incomplete coverage (coverage_gap, no_charge), and receipt issuance/verification semantics. This is unusually rich behavioral disclosure for a paid tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the price and action, but the remainder is a dense run-on mixing pricing, payment, rate limits, receipt semantics, and verification. The receipt explanation partially duplicates the schema's own description, adding some redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 described, and the description covers payment, refusals, limits, and receipt behavior. It is close to complete for a complex paid tool, missing only explicit sibling routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds genuine semantics: omitting buyer_country for single-country maths, api_key bypassing x402, and the receipt flag's effect on paid successes. It goes beyond restating the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Charge this sale') and enumerates the deliverable precisely: VAT applicability, place of supply under EU/UK/South Africa rules, net/VAT/gross, registration threshold, and rule cited. It distinguishes the answer receipt from the certified extract, though it does not explicitly differentiate itself from the sibling compute_vat.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete invocation conditions: 'Omit buyer_country for single-country rate maths', 'Pass api_key if you have one; otherwise the result is the x402 payment requirement', and the free-refusal behavior. However, it never routes the agent explicitly between charge_sale and the sibling compute_vat or charge_sale_certified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
charge_sale_certifiedARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| band | No | VAT band key, e.g. reduced | |
| amount | Yes | Sale amount | |
| api_key | No | API key (bypasses x402; metered for invoicing) | |
| receipt | No | 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 | No | net adds VAT (default); gross extracts it | |
| buyer_type | No | Default unknown | |
| buyer_country | No | Omit for single-country rate maths | |
| seller_country | Yes | ISO 3166-1 alpha-2 (EL = Greece, UK = United Kingdom) |
Output Schema
| Name | Required | Description |
|---|---|---|
| job | No | |
| error | No | Present on a free refusal or error; no charge |
| status | No | |
| evidence | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses price ($0.75), the free-refusal policy and its reasons, rate limiting (3 free/IP/day), auth paths (api_key bypasses x402), and exactly when a receipt is and is not included. This is unusually rich behavioral disclosure for a paid tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It front-loads the price and the core deliverable, then the refusal policy, then auth. Efficient but dense, with the receipt/certified-extract distinction repeated in both description and schema, which costs a little polish.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, complex, high-stakes tool this covers cost, payment paths, refusal semantics, rate limits, and verification route, and an output schema exists so return values need no prose. Nothing an agent needs to invoke it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters including net/gross, buyer_type defaults and api_key bypass. The description largely restates the receipt flag rather than adding new parameter semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line states a concrete verb, resource and price: 'charge_sale dossier plus an Ed25519-signed certified extract of the governing VAT rate.' It explicitly differentiates from the answer-receipt SKU and the non-MCP /v1/certified series extract, so an agent can situate it against sibling charge_sale and the answer tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives strong operating context: use 'for a filing', refusal is free for coverage_gap/no_charge, 3 free calls per IP per day shared with answer tools, and api_key vs x402 fallback. What is missing is an explicit routing statement against the sibling charge_sale (when to pay $0.75 for certification vs the plain charge).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_minimum_wageARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Wage to check, in the country's own currency | |
| period | Yes | Period the amount covers — must match the statutory floor's period | |
| api_key | No | API key (bypasses x402; metered for invoicing) | |
| country | Yes | ISO country code | |
| receipt | No | 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). |
Output Schema
| Name | Required | Description |
|---|---|---|
| basis | No | |
| error | No | Present on a free refusal or error; no charge |
| floor | No | |
| status | No | Answer status, e.g. computed or an honest no-answer status |
| country | No | |
| receipt | No | Ed25519 answer receipt when receipt=true on a paid success |
| verdict | No | |
| question | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| provenance | No | Cited official sources behind the answer |
| bind_series | No | |
| explanation | No | |
| label_basis | No | Inputs and the rule ids that produced the two labels |
| x_next_bind | No | |
| http_endpoint | No | |
| coverage_label | No | How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules |
| confidence_label | No | Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: discloses paid cost ($0.02), the x402 fallback, honest-status behavior when no enforceable floor exists, the refusal to guess cross-period conversion, and the receipt's non-legal, non-certified nature. These are exactly the behavioral traits an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and verdict are front-loaded, and each sentence carries substantive information. It is dense and mixes pricing, receipt and disclaimer material, so it is longer than strictly needed, but no sentence is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 still covers payment, free tier, honest statuses, receipt behavior and the verification path via verify_answer_receipt. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters. The description's notes on period matching, receipt defaults and api_key largely restate schema content, adding little beyond the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('is a salary at, above or below the country's statutory minimum wage?') and enumerates the concrete outputs (verdict, margin, statutory floor, legal instrument). This is clearly distinguishable from siblings like compute_employment_cost or compare_series.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the payment path (api_key for instant checkout, otherwise x402) and notes the evaluation country is free to try, pointing to list_series. It also clarifies the boundary against the non-MCP certified-extract endpoint, but gives no explicit guidance on when to choose this over sibling wage/cost tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_seriesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| series | Yes | Series id from list_series, e.g. vat | |
| api_key | No | API key | |
| countries | Yes | ISO 3166-1 alpha-2 codes on this brand, at most 10 |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | |
| as_of | No | |
| count | No | |
| error | No | Present on a free refusal or error; no charge |
| series | No | |
| missing | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing cost ($0.02), that malformed requests are refused free, that missing countries are surfaced under a 'missing' key, that each row carries its own source/dates/labels, and the api_key vs x402 payment path. Annotations cover safety/idempotency, but this adds concrete pricing, error and auth behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the paid cost and the core one-series-many-countries scope, and each clause carries operational detail. It is a dense run-on paragraph and includes sibling pricing ('Register: $0 · Delivery after trial: $0.05') that is arguably outside this tool's remit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, open-world read tool with an output schema, the description covers cost, payment/auth paths, error handling, the missing-countries behavior, and the recommended follow-up binding. Nothing an agent needs to invoke it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, and the description adds value by giving concrete series examples (vat, policy-rate, minimum-wage, corporate-tax) and restating the 10-country cap, plus explaining the api_key alternative path. It stops short of documenting any format beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (compare) and resource (one series across countries) with scope bounded to 'up to 10 countries of this brand in one call'. It is clearly distinguishable from siblings like get_series (single fetch) and get_series_history (time series) because it frames the multi-country, single-call dimension.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when it applies (one series, many countries) and names the correct follow-up tools (get_changes or register_alert) to use after a 200. It does not, however, explicitly contrast itself with get_series/get_snapshot, so the 'when not to use' side is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compute_employment_costARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| gross | Yes | Gross pay in local currency | |
| period | No | Period the gross covers (default month) | |
| api_key | No | API key (bypasses x402; metered for invoicing) | |
| country | Yes | ISO country code with a costed contribution schedule | |
| receipt | No | 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 | No | Contract type where rates differ | |
| nationality | No | Gulf nationality for pension reach | |
| subdivision | No | Optional ISO 3166-2 regional schedule (e.g. CA-QC, DE-SN) | |
| childless_over_23 | No | Germany care surcharge | |
| children_under_25 | No | Germany per-child care reduction | |
| workplace_pension | No | Auto-enrolment / PPK participation (default true) | |
| zusatzbeitrag_rate | No | Germany sickness-fund supplement |
Output Schema
| Name | Required | Description |
|---|---|---|
| basis | No | |
| error | No | Present on a free refusal or error; no charge |
| status | No | Answer status, e.g. computed or an honest no-answer status |
| country | No | |
| receipt | No | Ed25519 answer receipt when receipt=true on a paid success |
| question | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| provenance | No | Cited official sources behind the answer |
| bind_series | No | |
| explanation | No | |
| label_basis | No | Inputs and the rule ids that produced the two labels |
| x_next_bind | No | |
| http_endpoint | No | |
| coverage_label | No | How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules |
| confidence_label | No | Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give read/idempotent/openWorld hints, but the description adds substantial behavioral context beyond them: it is a paid ($0.05) operation, payment mechanics (api_key vs x402), the refused-list semantics ('unknown, not zero'), free evaluation country, and receipt behavior/verification. This is rich disclosure that the structured fields do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded effectively, but the body accumulates pricing, payment-flow, receipt, and legal-disclaimer text that reads more like marketing/terms than tool-selection guidance. Several sentences (certified-extract SKU, not legal advice) are tangential to invoking the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists and annotations cover the safety profile, the description is nearly complete: it covers cost, payment, refusal semantics, and exclusion of income tax. The only gap is the mismatch between the named alternative and the actual sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 12 parameters, setting the baseline at 3. The description adds minor meaning around api_key (card checkout, metering) and receipt (Ed25519, no extra USDC), but most parameter detail is simply repeated from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'prices every statutory contribution on both the employee and employer sides for a gross salary' — and explicitly scopes out what it is not ('Does NOT compute income tax'). It names a sibling alternative, so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear routing guidance: use compute_payroll for gross-to-net take-home, and the evaluation country is free to try via list_series. The only weakness is that the named alternative (compute_payroll) does not match the actual sibling (compute_income_tax), which could momentarily confuse a routing agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compute_income_taxARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | API key (bypasses x402; metered for invoicing) | |
| country | Yes | ISO country code | |
| receipt | No | 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 | Yes | 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) |
Output Schema
| Name | Required | Description |
|---|---|---|
| tax | No | |
| basis | No | |
| error | No | Present on a free refusal or error; no charge |
| status | No | Answer status, e.g. computed or an honest no-answer status |
| country | No | |
| receipt | No | Ed25519 answer receipt when receipt=true on a paid success |
| question | No | |
| breakdown | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| provenance | No | Cited official sources behind the answer |
| scope_note | No | |
| bind_series | No | |
| explanation | No | |
| label_basis | No | Inputs and the rule ids that produced the two labels |
| x_next_bind | No | |
| http_endpoint | No | |
| marginal_rate | No | |
| coverage_label | No | How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules |
| effective_rate | No | |
| confidence_label | No | Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: discloses the $0.02 price, the x402 payment fallback and api_key bypass with /pricing checkout, the 402 behavior for unpaid calls, the optional Ed25519 receipt at no extra USDC, and the legal-advice disclaimer. These are operational traits annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core computation before billing mechanics, and each sentence is informative. It is dense and carries some commercial detail (pricing endpoint, certified-extract aside) that pushes length beyond the minimum an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, read-only compute tool with a full output schema, everything an agent needs is present: input basis, currency/period caveat, payment paths, receipt semantics, and scope exclusions. Return values need not be described since the output schema exists, and the description still previews them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the 3 baseline applies, but the description adds real framing: api_key is optional ('pass api_key if you have one') with an alternative payment path, and the receipt flag's paid-success-only scope is contextualized. Country/income semantics are largely restated from the schema rather than extended.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (compute) and resource (statutory income tax) and defines the exact input basis ('tax on a TAXABLE-income figure using the country's verified marginal bracket schedule'). It also states the outputs (per-bracket workings, effective rate, marginal rate), which cleanly separates it from siblings like compute_vat and compute_employment_cost.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when NOT to expect results from this tool ('NOT net take-home pay — reliefs/allowances and social-security contributions are the caller's concern'), points to the scope_note, and names adjacent tools/paths (list_series for the free country, verify_answer_receipt for verification, the certified-extract endpoint as a separate non-MCP SKU). The free-vs-paid condition is also spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compute_statutory_interestARead-onlyIdempotentInspect
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 AU 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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Period end, YYYY-MM-DD, exclusive. | |
| days | No | Day-count days. Omit when from and to are set. If both are sent and disagree, the answer is refused free (HTTP 400). | |
| from | No | Period start, YYYY-MM-DD, inclusive. Pair with to. Day count is calendar days from inclusive to to exclusive (UTC dates). | |
| api_key | No | API key (bypasses x402; metered for invoicing) | |
| country | Yes | ISO country code | |
| receipt | No | 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 | Yes | Principal in the country's own currency. Must be a finite number greater than 0. |
Output Schema
| Name | Required | Description |
|---|---|---|
| basis | No | |
| error | No | Present on a free refusal or error; no charge |
| status | No | Answer status, e.g. computed or an honest no-answer status |
| country | No | |
| receipt | No | Ed25519 answer receipt when receipt=true on a paid success |
| question | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| provenance | No | Cited official sources behind the answer |
| bind_series | No | |
| explanation | No | |
| label_basis | No | Inputs and the rule ids that produced the two labels |
| x_next_bind | No | |
| http_endpoint | No | |
| coverage_label | No | How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules |
| confidence_label | No | Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare read-only/idempotent/non-destructive/open-world; the description adds the material behavior: $0.02 pricing, free refusals (non-answers are not sold), api_key vs x402 payment paths, optional Ed25519 receipt at no extra USDC, and the legal-advice disclaimer. That is substantial context beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core formula, which is good, but it then interleaves pricing, payment logistics, receipt mechanics and two separate 'not legal advice' disclaimers into a dense block. The receipt/certified-extract distinction is also duplicated in the schema's receipt description, so some sentences do not fully earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, multi-mode tool with an output schema, the description covers the payment model, both refusal paths, the optional receipt and its verification tool, and the legal/jurisdictional limits. An agent has everything needed to invoke it correctly or route elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents days, from, to, principal, country, api_key and receipt. The description largely restates this (the from/to/days conflict rule is already in the days schema description) and only marginally enriches it with checkout/refund framing. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (simple statutory interest on a principal at the cited statutory-interest series rate) and spells out the exact formula: principal × (rate/100) × (days/365), Actual/365 simple. This is clearly distinguishable from sibling series/tax tools, and the scope limits (no compounding, no jurisdiction-specific day-count statutes) sharpen it further.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says how to supply the period (pass days, or from/to as YYYY-MM-DD), what happens on conflict (both sent and disagreeing → refused free), what happens when no numeric rate exists (refused free), and routes the agent to the correct alternative (the $0.10 certified extract is not an MCP tool; verify with verify_answer_receipt). When-to-use and when-refused are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compute_vatARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | add = amount is net (default); extract = amount is gross | |
| amount | Yes | Amount in the country's own currency | |
| api_key | No | API key | |
| country | Yes | ISO country code | |
| receipt | No | 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). |
Output Schema
| Name | Required | Description |
|---|---|---|
| net | No | |
| tax | No | |
| rate | No | |
| basis | No | |
| error | No | Present on a free refusal or error; no charge |
| gross | No | |
| status | No | Answer status, e.g. computed or an honest no-answer status |
| country | No | |
| receipt | No | Ed25519 answer receipt when receipt=true on a paid success |
| question | No | |
| workings | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| provenance | No | Cited official sources behind the answer |
| bind_series | No | |
| explanation | No | |
| label_basis | No | Inputs and the rule ids that produced the two labels |
| x_next_bind | No | |
| http_endpoint | No | |
| coverage_label | No | How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules |
| confidence_label | No | Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this read-only, idempotent, non-destructive, but the description adds substantial context beyond them: explicit price ($0.01), the auth/payment branches, the free evaluation-country carve-out, the optional Ed25519 receipt semantics, and the recommended verification tool. No behavioral surprises remain for a caller.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Payment/auth and mode semantics are front-loaded and the caveats are compressed into the tail. It is somewhat long and the receipt mechanics are duplicated verbatim between the description and the schema's receipt field, which is mild redundancy rather than waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the description still covers everything else an agent needs: cost, payment flow, mode semantics, receipt behavior, scope limits (not legal advice, not a certified extract), and a cross-reference to verify_answer_receipt.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both enums (mode, country) are documented in-schema, so the baseline is 3. The description restates mode and receipt semantics usefully but adds little syntactic or format detail the schema does not already carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (VAT breakdown for an amount) and enumerates the exact outputs: net, tax, gross, plus per-levy components for composite rates. This clearly separates it from siblings like compute_income_tax, compute_employment_cost, and compute_statutory_interest.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use guidance for the two modes (add = amount is net, extract = backs VAT out of gross) and explains the two payment paths (api_key vs x402) plus the free evaluation country. It does not, however, position itself against sibling tax tools or state exclusions beyond 'not legal advice'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cost_hireARead-onlyIdempotentInspect
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: AU. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| gross | Yes | Gross pay, local currency | |
| period | No | Default month | |
| api_key | No | API key (bypasses x402; metered for invoicing) | |
| country | Yes | ISO country code with a full cost-this-hire dossier | |
| receipt | No | 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 | No | YYYY-MM-DD; returns the first working day on or after it | |
| subdivision | No | Contribution region where held (e.g. CA-QC) | |
| hours_per_week | No | Lets an hourly wage floor be checked | |
| taxable_income | No | Annual taxable income; applies the income-tax schedule |
Output Schema
| Name | Required | Description |
|---|---|---|
| job | No | |
| error | No | Present on a free refusal or error; no charge |
| status | No | |
| evidence | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only, idempotent, open-world, and non-destructive. The description adds substantial behavioral context beyond that: the $0.50 price, free refusal behavior with coverage_gap/no_charge, shared free-call limits, api_key versus x402 behavior, optional receipt behavior, and legal/certified-extract limitations. These details materially help an agent understand cost, payment, failure, and receipt semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the paid nature and core purpose in the first sentence, which is good structure for a complex paid financial tool. It is dense and somewhat overpacked with receipt and certified-extract caveats in a single paragraph, but most sentences add relevant operational or legal context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the paid flow, nine-parameter schema, complete schema descriptions, output schema, and annotations, the description covers the important operational context: pricing, api_key/x402 behavior, free refusals, receipt semantics, verification, and legal caveats. It omits explicit sibling-tool routing, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters, including gross, country, period, start_date, taxable_income, receipt, and api_key. The description adds some context around api_key checkout and receipt non-equivalence, but most parameter meaning is already carried by the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it costs a hire as a cited dossier covering salary/wage-floor verdict, contributions, employer cost, optional income tax, and first working day. Scope is clear with 'Countries here: AU.' It does not explicitly distinguish itself from similar siblings such as compute_employment_cost or check_minimum_wage, keeping it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives payment and access guidance: pass api_key if available, otherwise an x402 payment requirement applies, and unanswerable requests are refused free. It does not say when to choose cost_hire over sibling tools like compute_employment_cost, hire_compare, or check_minimum_wage, so usage is only implicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_working_daysARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Range end, YYYY-MM-DD, inclusive | |
| from | Yes | Range start, YYYY-MM-DD, inclusive | |
| api_key | No | API key | |
| country | Yes | ISO country code | |
| receipt | No | 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 | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| basis | No | |
| error | No | Present on a free refusal or error; no charge |
| status | No | Answer status, e.g. computed or an honest no-answer status |
| country | No | |
| receipt | No | Ed25519 answer receipt when receipt=true on a paid success |
| question | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| provenance | No | Cited official sources behind the answer |
| bind_series | No | |
| explanation | No | |
| label_basis | No | Inputs and the rule ids that produced the two labels |
| x_next_bind | No | |
| http_endpoint | No | |
| coverage_label | No | How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules |
| confidence_label | No | Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent/destructive annotations: discloses the paid cost ($0.002), the free evaluation country, the 366-day range cap, weekend convention per country, holiday naming, the optional Ed25519 receipt at no extra USDC, and the boundary that a receipt is not a certified extract or legal advice. This is exactly the kind of pricing and authorization context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and pricing are front-loaded, and the dense single paragraph is largely justified by payment, receipt, and verification caveats. It runs slightly long with the legal-disclaimer sentence, but no sentence is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not required. Combined with the annotations and full schema coverage, the description supplies everything an agent needs to call it correctly: cost, key handling, range cap, country set, and the receipt/verification path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds value by explaining the payment consequence of api_key (instant card checkout at /pricing) and by clarifying the receipt flag's semantics beyond the schema text (free refusals and 402s do not include one). It does not restate from/to/country/subdivision, but those are fully documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (count working days in a date range for a country) and adds scope detail — weekend rules including Egypt's Fri–Sat, statutory holidays applied by name, and the next working day after the range. It is easily distinguished from siblings like business_days_between, is_business_day, and add_business_days.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives conditional guidance about payment (pass api_key if you have one, otherwise the response explains x402) and names related tools/calls (list_series for the free country, verify_answer_receipt, GET /v1/certified). However it never says when to pick this over the sibling count tools (business_days_between, add_business_days), so applicability is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evidence_packARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| series | No | 1 to 3 series ids to certify | |
| api_key | No | API key (bypasses x402; metered for invoicing) | |
| country | Yes | ISO country code | |
| receipt | No | 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). |
Output Schema
| Name | Required | Description |
|---|---|---|
| job | No | |
| error | No | Present on a free refusal or error; no charge |
| status | No | |
| evidence | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly, openWorld, idempotent, non-destructive), so the description carries behavior beyond them: the $0.25 charge, the x402 fallback when no api_key is passed, the free refusal path, the shared daily rate limit, the optional receipt behavior, and the verification path. It also flags a legal caveat, which is unusually informative for an agent deciding to invoke.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It front-loads the key fact ('PAID ($0.25)'), but the body is one dense run-on packed with parenthetical asides, price mentions, and cross-references that make it hard to parse on a first read. Most sentences carry information, yet the structure works against scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description does not need to explain returns, and it covers payment, refusal, receipts, and verification thoroughly. The remaining gap is that it never clarifies how the bundled brief relates to the standalone get_country_brief sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 real semantics on top: series defaults to 'the first certifiable of vat, policy-rate, minimum-wage', series must all be certifiable, api_key is metered for invoicing, and receipt is no-cost on paid success only. These details are not in the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific artifact: 'the full cited country brief plus up to 3 Ed25519-signed certified extracts', which tells an agent exactly what is produced. It is clear and concrete, but it never explicitly distinguishes itself from the sibling get_country_brief or charge_sale_certified, which appear to overlap in scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives strong preconditions ('Named series must all be certifiable'), the payment path (api_key or x402 requirement), and the free-refusal condition (coverage_gap, no_charge), and it notes the shared 3 free calls per IP with the answer tools, implying those siblings as alternatives. It stops short of an explicit 'use X instead when Y' routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_calendarARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| series | No | Optional series id (for example policy-rate). Omit for every series. A valid country with no match stays free. | |
| country | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | |
| brand | No | |
| count | No | |
| error | No | Present on a free refusal or error; no charge |
| entries | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, openWorld, non-destructive), yet the description adds substantial context beyond them: no metering/cost, 400/404 responses are free, and a 402 is flagged as a gate bug that should not be paid. It also exposes derivation rules (reverify_by from last_confirmed + update_cycle_days), the conditional emission of next_effective_known, and anti-hallucination guarantees (never parses notes, does not invent MPC/budget/wage-review dates).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Cost and endpoint are sensibly front-loaded, but the text then runs into a dense stream of caveats with undefined jargon (last_confirmed, update_cycle_days, stale, MPC) that assumes prior knowledge, harming readability. Several clauses are genuinely useful, but the run-on construction and internal shorthand could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 re-explained, yet the description still covers derived fields, conditional omissions, error-code economics, and where historical data lives. The main omission is a plain statement of what the calendar contains for a first-time caller, but overall an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the two parameters are fully documented in the schema (ISO 3166-1 alpha-2 format, series example policy-rate, omission semantics, free-on-mismatch behavior). The description reinforces the same facts but adds little syntax or format detail the schema lacks, so this lands at the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the concrete resource/endpoint (GET /v1/calendar) and scope (this brand's continent, optional country/series), and it names the sibling that owns past data (get_changes), so it is distinguishable from adjacent tools. It stops short of plainly saying 'returns upcoming compliance/effective-date events with reverify windows', leaving the actual subject matter to be inferred from field names like reverify_by and next_effective_known.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: FREE and unmetered, omit country for all series on the continent, valid-but-unmatched country stays free, and past changes belong on get_changes. This routes the agent to the right tool for historical vs current data. It lacks an explicit 'use this when you need X' framing and does not contrast with the many compute_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_changesARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | YYYY-MM-DD. Omit for the server default (last 30 days). Free, unmetered. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | |
| error | No | Present on a free refusal or error; no charge |
| since | No | |
| changes | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, and non-destructive traits, and the description still adds substantial behavioral context beyond them: return ordering (newest first), per-row fields (last_confirmed, stale), the 1/7/30/90-day freshness buckets, and pricing/metering ($0 free, alternatives at $0.05/$0.10). Nothing is left for the agent to infer about cost or shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the key fact ('FREE unmetered') and well organized, but it carries some non-essential weight: the slogan 'Freshness is checkable or it is marketing' does no routing work, and pricing parentheticals add length. Still, most sentences earn their place by steering the agent away from paid alternatives.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be fully enumerated, yet the description still describes the shape (per-series freshness fields plus a dataset summary). Combined with the alternatives and cost model, an agent has everything needed to select and invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single `since` parameter, so the baseline is 3, but the description adds genuine semantic meaning beyond the schema's format note: it defines what `since` filters on (series whose current value *took effect* on or after that date) and restates the default window. The added value is real, though modest for a one-param tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource combination ('FREE unmetered change + freshness feed') and precisely what it returns: every series whose current value took effect on or after `since`, plus a dataset-wide freshness summary. It differentiates itself from siblings by naming get_series, register_alert, and the certified endpoint as distinct things to use instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit trigger ('After any paid series or answer call, call this before you assume the cached value is still the law'), an explicit anti-pattern ('Do not re-pay get_series to discover a diff'), and named alternatives with conditions ('For a push bind, use register_alert', 'For a filing freeze ... GET /v1/certified/...'). When/when-not/alternatives are all covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_country_briefARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | API key | |
| country | Yes | ISO country code |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| as_of | No | |
| error | No | Present on a free refusal or error; no charge |
| series | No | |
| country | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| series_count | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive/open-world, yet the description adds substantial behavioral context: the $0.01 cost, dual payment paths (api_key vs x402 explained in the response), and the reason to bind a follow-up tool (so a later gazette does not silently retire the value). This is exactly the kind of value-add annotations cannot supply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the cost and the resource, then detail. It is dense but each sentence carries information; the payment and follow-up clauses are long but functional rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not describe return values, and it is complete on everything else an agent needs: price, auth/payment options, scope, and post-call workflow. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 real meaning: api_key is optional and conditional on whether you have one, with card checkout at /pricing else x402, and the country scope is clarified as 'one country'. It adds some value beyond the schema's terse field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Country brief') and then enumerates exactly what is bundled (policy rate, VAT/GST, CPI, taxes, minimum wage, holidays) with per-series metadata (value, unit, effective/last-confirmed dates, source, confidence). This clearly distinguishes it from single-series siblings like get_series and get_series_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete selection cue ('Cheaper than buying the series one by one') and prescribes a follow-up workflow ('bind get_changes ... or register_alert'). It stops short of naming a specific sibling to use instead when only one series is wanted, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_filing_deadlinesStatutory filing deadlinesARead-onlyIdempotentInspect
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 AU 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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Window end, YYYY-MM-DD. Default from + 365 days; at most 400 days after from | |
| tax | No | Only this tax's rules and dates | |
| from | No | Window start, YYYY-MM-DD. Default today | |
| api_key | No | API key (bypasses x402; metered for invoicing) | |
| country | Yes | ISO country code | |
| year_end | No | Company accounting year end, MM-DD (e.g. 06-30). Applies to rules marked year_end_variable |
Output Schema
| Name | Required | Description |
|---|---|---|
| gaps | No | |
| unit | No | |
| error | No | Present on a free refusal or error; no charge |
| notes | No | |
| stale | No | |
| value | No | The rules. Each carries its own source {name, url, anchor} and last_confirmed |
| series | No | |
| source | No | |
| status | No | On a coverage gap: researched_no_verified_rule or not_yet_researched |
| country | No | |
| due_dates | No | Computed occurrences in the window, sorted by due_date |
| no_charge | No | |
| price_usd | No | |
| confidence | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| label_basis | No | Inputs and the rule ids that produced the two labels |
| x_next_bind | No | |
| coverage_gaps | No | Taxes in scope with no verified rule for this country, and why |
| http_endpoint | No | |
| coverage_label | No | How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules |
| effective_from | No | |
| last_confirmed | No | |
| confidence_label | No | Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
| computed_disclaimer | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description still adds substantial behavior: the paid price, the roll_unverified flag when a source is silent on weekend movement, listed skipped holidays, coverage_gap responses instead of invented data, and the get_changes/register_alert freshness mechanism. That is far beyond what annotations declare.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is valuable but the description is a dense run-on that opens with pricing ('PAID ($0.003, same as any series)') rather than the purpose, and stacks many clauses and parentheticals into single sentences. It is information-rich but not tightly structured or front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 still covers pricing, verification/flagging semantics, coverage gaps, holiday rolling, year_end behavior, and value-freshness handling. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds conceptual meaning for year_end (re-anchoring corporate-tax rules to the company's accounting year end) beyond the schema's terse note, but says nothing new about country, tax, from, to, or api_key.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource (statutory filing deadlines) and enumerates the exact scope — VAT/GST returns, PAYE remittances, corporate income tax returns and provisional payments — as rules plus rolled due dates. This is clearly distinguishable from siblings like compute_vat, get_public_holidays, or get_calendar without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful context (free HTML page alternative, free AU series, post-200 freshness workflow via get_changes/register_alert) and explains when to pass year_end. However, it never explicitly routes the agent between this tool and the compute_* siblings for overlapping tax questions, so usage is implied rather than delimited.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_key_balanceARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | API key. Optional when sent as the X-API-Key header on /mcp. |
Output Schema
| Name | Required | Description |
|---|---|---|
| plan | No | |
| used | No | |
| error | No | Present on a free refusal or error; no charge |
| quota | No | |
| covers | No | |
| no_charge | No | |
| price_usd | No | |
| remaining | No | |
| resets_on | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld. The description adds real value beyond them: the pricing behavior ('FREE', 'Never metered') and the dual auth path. It does not mention pagination or error behavior, but with an output schema present the return shape is covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: cost and return contents come first, then auth mechanics. Every phrase carries information, though the parenthetical '(free, card or metered)' packs three concepts into a fragment that reads slightly telegraphically.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a zero-required-parameter, single-purpose read tool: it covers cost, return fields, plan/coverage semantics, and both authentication paths, while the output schema handles return structure. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already explains api_key is optional when sent as a header. The description reinforces this by stating the alternative header mechanism explicitly, adding marginal convenience rather than new semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (get key balance) and enumerates exactly what is returned: plan, quota, used, remaining, reset date, coverage. No sibling tool overlaps this domain, and the name alone would be ambiguous without this detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'FREE' and 'Never metered', telling the agent this is a no-cost, non-billing call, and explains the two calling conventions (api_key param or X-API-Key header). It stops short of naming alternatives or when-not-to-call, but for a one-purpose utility tool there is little ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_public_holidaysARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| country | Yes | ISO country code | |
| subdivision | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | |
| error | No | Present on a free refusal or error; no charge |
| notes | No | |
| stale | No | |
| value | No | |
| series | No | |
| source | No | |
| country | No | |
| no_charge | No | |
| price_usd | No | |
| confidence | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| label_basis | No | Inputs and the rule ids that produced the two labels |
| subdivision | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| coverage_label | No | How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules |
| effective_from | No | |
| last_confirmed | No | |
| confidence_label | No | Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
| available_subdivisions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, openWorld), so the bar is lower. The description still adds value beyond them: the cost signal ('FREE'), the provenance guarantee ('official government source cited'), and the merge behavior when a subdivision is supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the cost signal, then the core purpose, then the subdivision caveat. Dense but every sentence carries information; the second sentence is long but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 country enum plus subdivision semantics are covered. The remaining gap is routing guidance against the worldwide/calendar siblings, which the description leaves to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description goes further by explaining that the subdivisions field enumerates available sub-national calendars and by restating the ISO 3166-2 format and the national+regional merge semantics, which helps an agent decide whether to populate subdivision.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (public-holiday calendar) and scopes it to 'a supported country', which implicitly contrasts with the get_public_holidays_worldwide sibling. It stops short of naming that sibling explicitly, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear conditional for the optional parameter ('passing subdivision ... returns national + regional'; 'Omit for the national calendar'), which is real usage guidance. However, it never mentions when to prefer this over get_public_holidays_worldwide or get_calendar, both plausible alternatives for the same need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_public_holidays_worldwideARead-onlyIdempotentInspect
FREE with any API key, including the free key by email (https://ausref.dev/free-key). Same as get_public_holidays, but for every country across all seven brands, not only Australasian. Unmetered: never counts against the key's allowance. Pass api_key, or send the key as the X-API-Key header on /mcp.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Any valid API key. Optional when the key is sent as the X-API-Key header on /mcp. | |
| country | Yes | ISO country code, any covered country | |
| subdivision | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | |
| error | No | Present on a free refusal or error; no charge |
| notes | No | |
| stale | No | |
| value | No | |
| series | No | |
| source | No | |
| country | No | |
| no_charge | No | |
| price_usd | No | |
| confidence | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| label_basis | No | Inputs and the rule ids that produced the two labels |
| subdivision | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| coverage_label | No | How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules |
| effective_from | No | |
| last_confirmed | No | |
| confidence_label | No | Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
| available_subdivisions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds meaningful behavior they do not: the call is free with any API key, never counts against the key's allowance, and the key can be supplied either via the api_key parameter or the X-API-Key header. That quota and auth context is exactly the kind of added value expected here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no wasted clauses. The opening free-key/promo framing is slightly marketing-flavored and could be trimmed, but the scope distinction and auth note are front-loaded and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 annotations cover the safety profile. The description supplies the scope, cost, and auth facts an agent needs; only a brief note on what subdivision omission implies is left entirely to the schema, which is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so country, subdivision, and api_key are already documented in the schema, including the enum values and the national-vs-regional tagging semantics of subdivision. The description repeats the api_key dual-auth option but adds no syntax or meaning beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description anchors the tool to its sibling ('Same as get_public_holidays, but for every country'), which combined with the name makes the resource (public holidays) and scope (worldwide vs Australasian) unambiguous. It never states the retrieval verb directly, relying on the sibling reference, so it falls just short of a self-contained 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly routes the agent between this tool and get_public_holidays by scope: use this one when the country is outside Australasia. It also flags the cost condition (free/unmetered), which is genuine selection guidance, but there are no explicit when-not-to-use statements or alternatives beyond the one sibling named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_seriesARead-onlyIdempotentInspect
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 AU 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.
| Name | Required | Description | Default |
|---|---|---|---|
| series | Yes | Series id, e.g. policy-rate, vat, minimum-wage | |
| api_key | No | API key (bypasses x402; metered for invoicing) | |
| country | Yes | ISO country code |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | |
| error | No | Present on a free refusal or error; no charge |
| notes | No | |
| stale | No | |
| value | No | |
| series | No | |
| source | No | |
| country | No | |
| no_charge | No | |
| price_usd | No | |
| confidence | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| label_basis | No | Inputs and the rule ids that produced the two labels |
| x_next_bind | No | |
| http_endpoint | No | |
| coverage_label | No | How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules |
| effective_from | No | |
| last_confirmed | No | |
| confidence_label | No | Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description goes well beyond: paid cost ($0.003), x402/api_key payment paths, AU free trial, and the exact fields returned (source citation, effective date, last-confirmed date, staleness flag). This is rich operational context an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Price and core purpose are front-loaded, and each subsequent sentence carries new information (payment, free trial, follow-up binding). It is dense and slightly overloaded with pricing details, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, yet the description still characterizes them usefully. Pricing, payment mechanics, free-trial scope, and next-step tools are all covered, leaving nothing essential an agent needs to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents series, country, and api_key. The description reinforces series examples and api_key behavior but adds no syntax or format detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Current value of a reference series') with concrete examples (policy-rate, vat, minimum-wage). The word 'current' implicitly separates it from get_series_history, but no sibling is named explicitly, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear routing guidance: after a 200, bind get_changes (free poll) or register_alert for push. Additive context on api_key vs x402 is explicit. It never states when to prefer this over get_series_history or list_series, but the follow-up alternatives are well specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_series_historyARead-onlyIdempotentInspect
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 AU 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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Latest effective date, YYYY-MM-DD | |
| from | No | Earliest effective date, YYYY-MM-DD | |
| series | Yes | Series id | |
| api_key | No | API key | |
| country | Yes | ISO country code |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present on a free refusal or error; no charge |
| stale | No | |
| series | No | |
| country | No | |
| entries | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| label_basis | No | Inputs and the rule ids that produced the two labels |
| x_next_bind | No | |
| http_endpoint | No | |
| coverage_label | No | How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules |
| confidence_label | No | Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), yet the description goes well beyond them: exact cost ($0.003), the api_key vs x402 payment paths, the free AU trial, and the consequences of not binding a downstream watcher. This is unusually rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the paid marker and the core purpose, then payment and downstream steps in priority order. It is dense and slightly run-on across payment, trial, and sibling-routing topics, but every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values need not be explained. Given the paid/auth complexity, the description covers payment mechanics, the free trial, and what to bind afterward — everything required to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (including the enum country and the from/to format) are already documented in the schema. The description restates the YYYY-MM-DD format and api_key usage but adds no syntax or constraint detail beyond what the schema provides — the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — "Historical values of a reference series with effective date ranges" — and scopes the optional from/to filter. An agent can immediately distinguish this from get_series, compare_series, and get_changes without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent downstream: "bind get_changes (free poll) or register_alert (HMAC push)" after a 200, and clarifies the free AU-series trial. It does not state when to prefer this over get_series/get_snapshot, but the alternative-tool guidance it does give is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_snapshotARead-onlyIdempotentInspect
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 AU 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.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | API key |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present on a free refusal or error; no charge |
| result | No | One entry per country; every series value carries confidence_label, coverage_label and label_basis |
| countries | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which only cover readOnly/idempotent/openWorld) by disclosing the pricing model ($0.02, plus $0.05 alert delivery after trial), the payment/auth flow (api_key, card checkout vs x402 fallback), the AU trial scope, and the data-lifecycle risk that a gazette may retire an unbound value. This is unusually rich behavioral context for a paid read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the price and purpose, then proceeds to auth and follow-up routing. Dense but mostly earns its place, though the final sentence packs HMAC, trial pricing, and a gazette-lifecycle warning into one clause, slightly straining readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover the safety profile, so the description is not obligated to explain return values. It completes the picture with pricing, auth fallback, and next-step tooling; the only minor omission is an explicit contrast with the single-series fetch siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning beyond 'API key' by clarifying it is optional ('Pass api_key if you have one') and describing the fallback behavior (the response explains how to pay via x402) when it is omitted. That is genuine value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and scope: 'Snapshot of every series for every country in one call.' This is distinguishable from siblings like get_series, list_series, and get_series_history because it fetches everything in one bulk call. However, it does not explicitly frame itself against those siblings, so the differentiation is inferred from scope rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong guidance on what to do AFTER a 200, routing between get_changes ('free poll') and register_alert ('HMAC push'). But for this tool itself, the when-to-use is only implied by 'in one call' rather than stated against alternatives like get_series or list_series. Adequate but with a clear gap on the primary selection decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hire_compareARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hires | Yes | 2 to 5 hires | |
| period | No | Default month | |
| api_key | No | API key (bypasses x402; metered for invoicing) | |
| receipt | No | 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). |
Output Schema
| Name | Required | Description |
|---|---|---|
| job | No | |
| error | No | Present on a free refusal or error; no charge |
| status | No | |
| evidence | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only/idempotent profile, and the description adds substantial behavioral context on top: cost tiers, the api_key-vs-x402 payment branch, free coverage_gap refusals, quota sharing with the answer tools, the optional Ed25519 receipt only on paid success, and the verification path. This is exactly the beyond-annotation detail an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph that leads with pricing rather than the tool's purpose, and repeats the receipt/certified-extract distinction that also appears verbatim in the schema. Every fact is relevant, but the ordering and duplication cost readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return values, and it still covers pricing, coverage limits, refusal semantics, payment flow, and receipt verification. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description goes further by stating gross is in each country's own currency with no conversion, listing the allowed country brands, and confirming 2-5 hires. Those currency and range clarifications are genuine meaning beyond the schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource and enumerates the exact outputs (employer cost, employer/employee contributions, on-cost percent, wage-floor verdict) computed 'side by side and ranked' for 2-5 hires. This implicitly separates it from single-hire siblings like compute_employment_cost and cost_hire, but never names them, so the differentiation is inferred rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: 2-5 countries from a fixed list, pricing tiers ($0.75 for 2, $1.00 for 3-5), free refusal for unanswerable requests, and shared 3-free-calls-per-IP quota. It stops short of telling the agent when to prefer a sibling tool (e.g. compute_employment_cost for a single hire) or when not to call this at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice_checkARead-onlyIdempotentInspect
PAID ($0.60). Check an invoice in one call: is the VAT right (place of supply, rate, expected amount vs vat_charged), is it overdue and how much statutory late interest is owed, and do seller/buyer tax IDs pass the official format check. Seller countries here: FJ, NZ, SB, TO, WS. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | YYYY-MM-DD; default today | |
| amount | Yes | Invoice amount, local currency | |
| api_key | No | API key (bypasses x402; metered for invoicing) | |
| receipt | No | 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 | No | YYYY-MM-DD contractual due date | |
| amount_is | No | Default net | |
| buyer_type | No | ||
| terms_days | No | Agreed payment term in days | |
| vat_charged | No | VAT amount on the invoice, to be checked | |
| buyer_tax_id | No | Needs buyer_country | |
| invoice_date | No | YYYY-MM-DD; with terms_days instead of due_date | |
| buyer_country | No | ISO code; omit for a domestic invoice | |
| seller_tax_id | No | ||
| seller_country | Yes | ISO country code of the seller |
Output Schema
| Name | Required | Description |
|---|---|---|
| job | No | |
| error | No | Present on a free refusal or error; no charge |
| status | No | |
| evidence | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: discloses price ($0.60), the free-refusal policy on coverage_gap with no_charge, a shared rate limit of 3 free calls per IP per day across answer tools, the x402-vs-api_key payment path, and receipt behavior on paid success only. It also explicitly disclaims that an answer receipt is not a certified extract nor legal advice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads price and purpose, then constraints, then payment and receipt mechanics — a sensible order with little filler. It is dense with parentheticals and the receipt/payment sentences are long, which costs some readability but not correctness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter paid tool it covers what the agent most needs: what is checked, supported countries, date input rules, refusal and pricing behavior, and payment modes; the output schema handles return shape. Buyer-side country coverage and the meaning of a partial/coverage-gap result are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 86%, so the schema carries most parameter meaning. The description adds genuine value beyond it by constraining seller_country to five supported jurisdictions and clarifying the due_date vs invoice_date+terms_days relationship, but it says nothing about amount_is, buyer_type, or as_of semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (check an invoice) and enumerates the three exact outputs: VAT correctness against vat_charged, overdue status plus statutory late interest, and seller/buyer tax ID format validation. This makes clear it is a composite one-call check rather than a single-purpose sibling like compute_vat or validate_tax_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete invocation guidance: 'Send due_date, or invoice_date with terms_days', and lists the supported seller countries (FJ, NZ, SB, TO, WS), which tells the agent when the tool is inapplicable. It implies but never explicitly names the alternative single-purpose siblings for the cases it cannot cover, so a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice_payableARead-onlyIdempotentInspect
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: none here; statutory interest only: FJ, NZ, SB, TO, WS. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | YYYY-MM-DD payment date or day asked about; default today | |
| debtor | No | Default business | |
| api_key | No | API key (bypasses x402; metered for invoicing) | |
| country | Yes | ISO country code | |
| receipt | No | 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 | No | YYYY-MM-DD contractual due date | |
| principal | Yes | Unpaid amount, local currency | |
| terms_days | No | Agreed payment term in days | |
| invoice_date | No | YYYY-MM-DD; with terms_days instead of due_date |
Output Schema
| Name | Required | Description |
|---|---|---|
| job | No | |
| error | No | Present on a free refusal or error; no charge |
| status | No | |
| evidence | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses price ($0.40), the free-refusal rule (coverage_gap, no_charge), a shared rate limit (3 free calls per IP per day with the answer tools), auth paths (api_key vs x402 402 response), the receipt-issuance behavior on paid successes only, and explicit non-legal-advice / not-a-certified-extract caveats. That is unusually rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with price and the core question, then inputs, then payment/refusal mechanics — a sensible order. It is dense but most sentences earn their place, with only mild duplication of the receipt explanation already present in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described; the description still covers pricing, auth, refusal, receipt verification, and disclaimers thoroughly. The one missing piece is a comparison to the overlapping sibling tool, which leaves the selection decision under-supported for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds the either/or rule for supplying the date (due_date, or invoice_date plus terms_days) and clarifies that receipt on an unpaid 402 or free refusal yields nothing. Those are semantic relationships the schema fields state only individually.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific question set — is the invoice overdue, by how many days, and what statutory late-payment interest is owed — with the calculation method (Actual/365 simple) and supported regimes (FJ, NZ, SB, TO, WS). It is clear what the tool does, but it never distinguishes itself from the sibling compute_statutory_interest, which an agent would reasonably consider an overlapping alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete invocation guidance ('Send due_date, or invoice_date with terms_days') and a refusal policy for unanswerable inputs, which implies scope boundaries. However, it names no alternative tool and does not say when to prefer this over compute_statutory_interest or the certified/answer tools, so routing remains inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
is_business_dayIs it a business day?ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date to classify, YYYY-MM-DD | |
| country | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | No | |
| free | No | |
| year | No | On year_not_held: the year we do not hold |
| basis | No | |
| error | No | Present on a free refusal or error; no charge |
| price | No | |
| reason | No | |
| caveats | No | |
| country | No | |
| reached | No | On a refusal: the first date the calculation could not classify |
| weekday | No | |
| weekend | No | Weekend days applied, the basis of that rule, and any dated or sub-national note |
| calendar | No | Holiday calendar used: years_held, source, last_confirmed, stale |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| years_held | No | On year_not_held: the years whose holidays we do hold |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| country_name | No | |
| http_endpoint | No | |
| is_weekend_day | No | |
| is_business_day | No | |
| public_holidays | No | |
| what_you_can_do | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
| next_business_day | No | {date, weekday}, or date null with why_unknown when it falls outside the held calendar |
| previous_business_day | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description adds substantial behavior: the 'FREE, unmetered' cost signal, the refusal semantics (year_not_held with years_held, holiday_date_pending), the guarantee that results are never inferred from weekends alone, and the explicit exclusion of sub-national holidays. This is well beyond what structured fields convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the cost signal and the core question, followed by returns and then edge-case behavior; every clause carries operational information. The dense weekend-rule parenthetical is long but earns its place by pre-empting surprising classifications.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter classification tool with an output schema and full annotations, the description covers purpose, return shape, error/refusal paths, cost, and scope exclusions. Nothing an agent needs to call it correctly or interpret a refusal is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (date YYYY-MM-DD, ISO alpha-2 country) are fully documented in the schema itself. The description reinforces the scope of 'country' (national calendar, accepted across brands) but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'Is this date a business day in this country?' is a precise verb+resource, and the stated single-date classification scope implicitly separates it from the range-based siblings (business_days_between, count_working_days, add_business_days). The return summary (reason code, holiday names, adjacent business days) makes the operation unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description sets clear usage boundaries — it explicitly says regional/supranational holidays are not applied, that unheld years are refused, and which weekend regimes apply, which tells an agent when the answer is authoritative. It does not, however, name an alternative sibling (e.g. get_public_holidays_worldwide or count_working_days) or state when to prefer them, so it stops short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_seriesARead-onlyIdempotentInspect
FREE. Catalog of all ausref 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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Default false. Without country, false returns a compact index (country -> series ids). true returns the full catalog, which is large. | |
| country | No | Optional ISO country code. Returns full per-series metadata (source, freshness, bands) for that country only. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| error | No | Present on a free refusal or error; no charge |
| countries | No | Country entries ({country, name, series}); on an unknown-country refusal, the list of valid codes |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
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 one genuinely useful trait not in the annotations: that the call is FREE. However, the bulk of the behavioral prose (receipt system, certified extracts, other free tools) concerns sibling tools rather than list_series itself, so tool-specific disclosure beyond cost is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well front-loaded, but the definition then spends four-plus sentences on paid answer tools, Ed25519 receipts, certified extracts, and which other tools are free — content that belongs in those tools' own descriptions and does not help an agent invoke list_series.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 100% parameter coverage, the description need not explain return values, and the purpose plus the 'call first' guidance are sufficient to invoke it correctly. The trailing ecosystem prose is extraneous but does not leave a calling gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: both 'detail' and 'country' are fully documented in the schema, including the compact-vs-full catalog behavior. The description adds no syntax or format detail beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the resource precisely ('Catalog of all ausref reference-data series') and enumerates its contents (supported countries, series ids, descriptions, freshness metadata, per-series URLs). An agent can immediately tell this discovery/index tool apart from get_series or get_series_history, which retrieve actual data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call this first to discover what data exists' gives explicit sequencing guidance for the discovery workflow. It does not name a specific alternative to use instead when the catalog is already known, but the when-to-use condition is stated clearly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
next_filingsARead-onlyIdempotentInspect
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: AU, NZ. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | YYYY-MM-DD, max 366 days after from | |
| tax | No | ||
| from | No | YYYY-MM-DD, default today | |
| api_key | No | API key (bypasses x402; metered for invoicing) | |
| country | Yes | ISO country code | |
| receipt | No | 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 | No | MM-DD financial year end |
Output Schema
| Name | Required | Description |
|---|---|---|
| job | No | |
| error | No | Present on a free refusal or error; no charge |
| status | No | |
| evidence | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Substantially exceeds the annotations: it discloses pricing ($0.35), partial-answer refusal semantics (coverage_gap, no_charge), a shared per-IP rate limit, the x402 fallback when no api_key is supplied, the optional Ed25519 receipt behavior, and what is NOT legal advice or a certified extract. This is exactly the auth/rate-limit/failure context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the price, which is useful, but the prose is a dense run-on packed with parentheticals, SKU cross-references and pricing caveats that dilute the core purpose. Several clauses (certified-extract pricing, verify_answer_receipt pointer) belong elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is correctly omitted, and the description covers payment, refusal, coverage and receipt semantics. The one real gap is failing to position the tool relative to the overlapping get_filing_deadlines sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 86%, so the schema already documents country, tax, from/to, api_key and receipt. The description adds only marginal meaning (card checkout at /pricing, receipt is free but not a certified extract), largely repeating the receipt default that the schema states verbatim. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Upcoming VAT, PAYE and corporate-tax due dates in a window', with scope details (default 90 days, weekend/holiday roll, cited rules). However, it never distinguishes itself from the near-identical sibling 'get_filing_deadlines', leaving the agent to guess which to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real operating context – verified coverage limited to AU and NZ, free refusal on coverage gaps, sharing of the 3 free calls per IP per day, and passing api_key vs falling back to x402. But there is no explicit when-to-use/when-not guidance against the many sibling tax tools (e.g. get_filing_deadlines, compute_vat), so selection remains implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_alertAInspect
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: [""] → 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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Webhook endpoint that will receive HMAC-SHA256 signed events | |
| series | No | Value watches, e.g. ["za/vat-registration-threshold", "ke/*", "*"] | |
| api_key | No | Optional prepaid key stored on the subscription to fund deliveries after the trial. This call does not meter it. | |
| sources | No | Exact official-source URLs from a series source.url. Unknown URLs are refused free. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present on a free refusal or error; no charge |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (openWorld, non-idempotent, non-destructive), the description discloses cost structure ($0 register, $0.05 delivery after trial, first 3 free, refunded on send failure), HMAC-SHA256 signing, hard limits (20 series + 20 sources), and refusal behavior (source_not_fingerprinted for unknown URLs). This is exactly the extra behavioral context an agent needs and cannot get from the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the watch-type bullets are useful, but pricing is repeated ('REGISTERING IS FREE', '$0 · Delivery after trial: $0.05', 'First 3 deliveries are free'), and asides like 'not a FRED-macro subscription' and 'This is retention, not a new data product' are editorial noise. Several sentences do not earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers costs, limits, signing, and error behavior well. It omits lifecycle details an agent would want: idempotency of repeated registrations (annotations flag idempotent=false) and how to remove or update a subscription. Minor but real gaps for a subscription-creating tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at 100%, the baseline is 3, but the description adds genuine meaning: it explains that series watches fire on value/effective-date movement (and contrasts statutory watches vs a FRED-macro subscription), that sources watches fire on document BYTES change with old/new sha256, and that api_key funds deliveries without being metered by this call. That goes meaningfully beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource (bind a webhook / register an alert) and spells out two watch types (series → series.changed, sources → source.changed). It even differentiates from the sibling get_changes. The opening sentence ('so the next gazette does not silently stale a value you already paid for') is indirect and marketing-flavored, delaying the actual purpose, which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes the agent: 'Prefer this over polling get_changes if you are a long-running agent,' naming the alternative and the condition that selects it. It also implies the monitoring use case via the two watch types, but gives no explicit when-not guidance (e.g. one-shot checks or short-lived agents), so it falls short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settlement_dateARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | ISO country of the market whose cited cycle should apply (with instrument_class) | |
| api_key | No | API key (bypasses x402; metered for invoicing) | |
| receipt | No | 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 | Yes | Calendar ids to intersect: two-letter ISO country codes, plus 'eu.t2' for the euro cash leg | |
| trade_date | Yes | Trade/reference date, YYYY-MM-DD. Day 0: never counted, never rolled. | |
| business_days | No | The offset you are trading under (T+n) | |
| instrument_class | No | Instrument class — a government bond never inherits an equity cycle |
Output Schema
| Name | Required | Description |
|---|---|---|
| basis | No | |
| error | No | Present on a free refusal or error; no charge |
| status | No | Answer status, e.g. computed or an honest no-answer status |
| country | No | |
| receipt | No | Ed25519 answer receipt when receipt=true on a paid success |
| question | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| provenance | No | Cited official sources behind the answer |
| bind_series | No | |
| explanation | No | |
| label_basis | No | Inputs and the rule ids that produced the two labels |
| x_next_bind | No | |
| http_endpoint | No | |
| coverage_label | No | How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules |
| confidence_label | No | Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond them: the $0.02 paid nature, the free-refusal policy, the statutory-vs-CSD calendar basis with stated divergence disclosure, and the optional Ed25519 receipt mechanics. This is exactly the kind of behavioral detail annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core definition is front-loaded, which is good, but the body is an overstuffed block that folds pricing, receipt semantics, legal disclaimers, and verification instructions into one paragraph. The receipt explanation is largely duplicated in the schema description, and the wall-of-text form hurts scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no prose, and the description still covers pricing, refusal behavior, calendar provenance, the receipt option, and how to verify it. For a paid, citation-bearing computation tool this leaves no material gap for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents every parameter; the description still adds meaning by explaining the market+instrument_class pairing, the 'eu.t2' pseudo-id for the euro cash leg, and the rule that government bonds never inherit an equity cycle. That is more than a restatement of the schema, though it does not add syntax detail for every field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: compute a settlement/value date n business days after a trade date on the intersection of named calendars, with a per-day audit trail. The scope is precise enough to separate it from generic siblings like add_business_days or is_business_day, since it layers cited settlement cycles on top of plain calendar arithmetic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing between the two input paths (business_days for a cycle you are trading under vs market + instrument_class for a cited cycle) and enumerates the refusal conditions (uncovered calendars, no cited cycle, cycle not in force, FX spot). It does not compare itself against sibling MCP tools, only a non-MCP companion endpoint, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_tax_idARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The tax ID / VAT number as written; spaces, dots, dashes and a VAT country prefix are accepted | |
| api_key | No | API key | |
| country | Yes | ISO country code |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | |
| error | No | Present on a free refusal or error; no charge |
| valid | No | |
| reason | No | |
| status | No | |
| country | No | |
| id_type | No | |
| sources | No | |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| normalised | No | |
| bind_series | No | |
| check_level | No | |
| explanation | No | |
| reason_code | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read-only, idempotent operation, and the description goes well beyond them: it discloses pricing ($0.003), the x402 payment path when api_key is absent, the 'unknown' fallback for uncovered countries, and the precise check level (checksum only where the authority publishes the algorithm). No contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Pricing, purpose, exclusions, fallback, and follow-up routing are all front-loaded and dense, with essentially no filler. It is long for a description, but each clause carries operative information (payment, exclusions, next actions), so only minor trimming is possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations and an output schema present, the description supplies everything else an agent needs: cost, payment fallback, coverage limits, the registration distinction, and follow-up tooling. Nothing required to invoke or act on the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so id format (spaces, dots, dashes, VAT prefix accepted), country enum, and api_key are already documented. The description's phrase 'for one country of this brand' hints at scoping but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (offline format + check-digit validation of a tax ID/VAT number) and even enumerates the return facets (valid/invalid, normalised form, id type, check level, failure reason). It explicitly distinguishes itself from 'official_lookup', which covers registration, so an agent can route correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when/when-not guidance: use for format/checksum validation but not registration confirmation (follow official_lookup), and behaviour falls back to free status 'unknown' for countries without a sourced rule. It also names the correct follow-up siblings ('bind get_changes … or register_alert … on this series') so the agent knows the next step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_answer_receiptARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| receipt | Yes | 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 | No | 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 | No | Optional GET /certified/public-key URL used only when public_key_pem is omitted. Ignored when the PEM is present. | |
| signature_value | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| why | No | |
| error | No | Present on a free refusal or error; no charge |
| no_charge | No | |
| price_usd | No | |
| disclaimer | No | |
| how_to_pay | No | |
| bind_series | No | |
| explanation | No | |
| x_next_bind | No | |
| http_endpoint | No | |
| payment_required | No | true when the call needs payment; how_to_pay explains x402 or card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive. The description adds real context beyond them: it discloses that the tool may perform a network GET of /certified/public-key when the PEM is absent, that it is FREE, and that a private key must never be sent. It does not discuss failure modes or error behavior, so it is useful but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with 'FREE. Verify...' and dense with no filler, though the closing 'Same key and canonical-JSON rule as /certified/public-key' and the repeated canonical-JSON instruction are mildly redundant. Appropriate length for a cryptographic verification tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 covers offline vs. online verification, cost, security constraints, and scope limits. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description largely restates what the schema documents (public_key_pem requirement, public_key_url only used when the PEM is absent, signature_value overriding a nested signature) and adds only the canonical-JSON rule and the private-key refusal warning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (verify) plus resource (answer receipt) and the exact cryptographic method (Ed25519 public key only). It also sharply bounds the claim of what a valid result means, so an agent can distinguish this from any sibling without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says what to pass (receipt object or canonical JSON, signature_value when the signature is not nested, public_key_pem for offline) and what happens when public_key_pem is omitted. It names the alternative path (GET /v1/certified/{country}/{series} at $0.10, explicitly not an MCP tool) and states the exclusion that a valid signature is not a certified extract.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Added
invoice_check
7 tool updates
- Added
charge_sale - Added
charge_sale_certified - Added
cost_hire - Added
evidence_pack - Added
hire_compare - Added
invoice_payable - Added
next_filings
16 tool updates
- Changed
check_minimum_wage5 fields changed- changed
Input schema / properties / receipt / descriptionPrevious value: -"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.25; that SKU is not an MCP tool)."New value: +"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)." - removed
Output schema / properties / label_basis / properties / source_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / source_type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / label_basis / properties / verification_age_days / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / verification_age_days / typeAdded value: +[ + "number", + "null" +]
- Added
compare_series - Changed
compute_employment_cost5 fields changed- changed
Input schema / properties / receipt / descriptionPrevious value: -"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.25; that SKU is not an MCP tool)."New value: +"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)." - removed
Output schema / properties / label_basis / properties / source_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / source_type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / label_basis / properties / verification_age_days / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / verification_age_days / typeAdded value: +[ + "number", + "null" +]
- Changed
compute_income_tax5 fields changed- changed
Input schema / properties / receipt / descriptionPrevious value: -"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.25; that SKU is not an MCP tool)."New value: +"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)." - removed
Output schema / properties / label_basis / properties / source_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / source_type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / label_basis / properties / verification_age_days / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / verification_age_days / typeAdded value: +[ + "number", + "null" +]
- Changed
compute_statutory_interest5 fields changed- changed
Input schema / properties / receipt / descriptionPrevious value: -"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.25; that SKU is not an MCP tool)."New value: +"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)." - removed
Output schema / properties / label_basis / properties / source_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / source_type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / label_basis / properties / verification_age_days / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / verification_age_days / typeAdded value: +[ + "number", + "null" +]
- Changed
compute_vat5 fields changed- changed
Input schema / properties / receipt / descriptionPrevious value: -"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.25; that SKU is not an MCP tool)."New value: +"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)." - removed
Output schema / properties / label_basis / properties / source_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / source_type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / label_basis / properties / verification_age_days / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / verification_age_days / typeAdded value: +[ + "number", + "null" +]
- Changed
count_working_days5 fields changed- changed
Input schema / properties / receipt / descriptionPrevious value: -"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.25; that SKU is not an MCP tool)."New value: +"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)." - removed
Output schema / properties / label_basis / properties / source_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / source_type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / label_basis / properties / verification_age_days / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / verification_age_days / typeAdded value: +[ + "number", + "null" +]
- Added
get_country_brief - Changed
get_filing_deadlines4 fields changed- removed
Output schema / properties / label_basis / properties / source_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / source_type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / label_basis / properties / verification_age_days / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / verification_age_days / typeAdded value: +[ + "number", + "null" +]
- Changed
get_public_holidays4 fields changed- removed
Output schema / properties / label_basis / properties / source_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / source_type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / label_basis / properties / verification_age_days / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / verification_age_days / typeAdded value: +[ + "number", + "null" +]
- Changed
get_public_holidays_worldwide4 fields changed- removed
Output schema / properties / label_basis / properties / source_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / source_type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / label_basis / properties / verification_age_days / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / verification_age_days / typeAdded value: +[ + "number", + "null" +]
- Changed
get_series4 fields changed- removed
Output schema / properties / label_basis / properties / source_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / source_type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / label_basis / properties / verification_age_days / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / verification_age_days / typeAdded value: +[ + "number", + "null" +]
- Changed
get_series_history8 fields changed- removed
Output schema / properties / entries / items / properties / label_basis / properties / source_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / entries / items / properties / label_basis / properties / source_type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / entries / items / properties / label_basis / properties / verification_age_days / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / entries / items / properties / label_basis / properties / verification_age_days / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / label_basis / properties / source_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / source_type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / label_basis / properties / verification_age_days / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / verification_age_days / typeAdded value: +[ + "number", + "null" +]
- Changed
get_snapshot4 fields changed- removed
Output schema / properties / result / items / properties / series / items / properties / label_basis / properties / source_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / result / items / properties / series / items / properties / label_basis / properties / source_type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / result / items / properties / series / items / properties / label_basis / properties / verification_age_days / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / result / items / properties / series / items / properties / label_basis / properties / verification_age_days / typeAdded value: +[ + "number", + "null" +]
- Changed
settlement_date5 fields changed- changed
Input schema / properties / receipt / descriptionPrevious value: -"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.25; that SKU is not an MCP tool)."New value: +"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)." - removed
Output schema / properties / label_basis / properties / source_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / source_type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / label_basis / properties / verification_age_days / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / label_basis / properties / verification_age_days / typeAdded value: +[ + "number", + "null" +]
- Added
validate_tax_id
18 tool updates
- Added
add_business_days - Added
business_days_between - Changed
check_minimum_wage3 fields changed- added
Output schema / properties / confidence_labelAdded value: +{ + "description": "Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules", + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" +} - added
Output schema / properties / coverage_labelAdded value: +{ + "description": "How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules", + "enum": [ + "ready", + "partial", + "gap" + ], + "type": "string" +} - added
Output schema / properties / label_basisAdded value: +{ + "additionalProperties": {}, + "description": "Inputs and the rule ids that produced the two labels", + "properties": { + "confidence_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "coverage_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputs": { + "items": {}, + "type": "array" + }, + "rules": { + "type": "string" + }, + "rules_version": { + "type": "string" + }, + "source_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "stale": { + "type": "boolean" + }, + "verification_age_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" +}
- Changed
compute_employment_cost3 fields changed- added
Output schema / properties / confidence_labelAdded value: +{ + "description": "Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules", + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" +} - added
Output schema / properties / coverage_labelAdded value: +{ + "description": "How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules", + "enum": [ + "ready", + "partial", + "gap" + ], + "type": "string" +} - added
Output schema / properties / label_basisAdded value: +{ + "additionalProperties": {}, + "description": "Inputs and the rule ids that produced the two labels", + "properties": { + "confidence_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "coverage_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputs": { + "items": {}, + "type": "array" + }, + "rules": { + "type": "string" + }, + "rules_version": { + "type": "string" + }, + "source_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "stale": { + "type": "boolean" + }, + "verification_age_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" +}
- Changed
compute_income_tax3 fields changed- added
Output schema / properties / confidence_labelAdded value: +{ + "description": "Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules", + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" +} - added
Output schema / properties / coverage_labelAdded value: +{ + "description": "How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules", + "enum": [ + "ready", + "partial", + "gap" + ], + "type": "string" +} - added
Output schema / properties / label_basisAdded value: +{ + "additionalProperties": {}, + "description": "Inputs and the rule ids that produced the two labels", + "properties": { + "confidence_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "coverage_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputs": { + "items": {}, + "type": "array" + }, + "rules": { + "type": "string" + }, + "rules_version": { + "type": "string" + }, + "source_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "stale": { + "type": "boolean" + }, + "verification_age_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" +}
- Changed
compute_statutory_interest3 fields changed- added
Output schema / properties / confidence_labelAdded value: +{ + "description": "Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules", + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" +} - added
Output schema / properties / coverage_labelAdded value: +{ + "description": "How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules", + "enum": [ + "ready", + "partial", + "gap" + ], + "type": "string" +} - added
Output schema / properties / label_basisAdded value: +{ + "additionalProperties": {}, + "description": "Inputs and the rule ids that produced the two labels", + "properties": { + "confidence_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "coverage_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputs": { + "items": {}, + "type": "array" + }, + "rules": { + "type": "string" + }, + "rules_version": { + "type": "string" + }, + "source_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "stale": { + "type": "boolean" + }, + "verification_age_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" +}
- Changed
compute_vat3 fields changed- added
Output schema / properties / confidence_labelAdded value: +{ + "description": "Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules", + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" +} - added
Output schema / properties / coverage_labelAdded value: +{ + "description": "How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules", + "enum": [ + "ready", + "partial", + "gap" + ], + "type": "string" +} - added
Output schema / properties / label_basisAdded value: +{ + "additionalProperties": {}, + "description": "Inputs and the rule ids that produced the two labels", + "properties": { + "confidence_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "coverage_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputs": { + "items": {}, + "type": "array" + }, + "rules": { + "type": "string" + }, + "rules_version": { + "type": "string" + }, + "source_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "stale": { + "type": "boolean" + }, + "verification_age_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" +}
- Changed
count_working_days3 fields changed- added
Output schema / properties / confidence_labelAdded value: +{ + "description": "Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules", + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" +} - added
Output schema / properties / coverage_labelAdded value: +{ + "description": "How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules", + "enum": [ + "ready", + "partial", + "gap" + ], + "type": "string" +} - added
Output schema / properties / label_basisAdded value: +{ + "additionalProperties": {}, + "description": "Inputs and the rule ids that produced the two labels", + "properties": { + "confidence_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "coverage_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputs": { + "items": {}, + "type": "array" + }, + "rules": { + "type": "string" + }, + "rules_version": { + "type": "string" + }, + "source_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "stale": { + "type": "boolean" + }, + "verification_age_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" +}
- Added
get_filing_deadlines - Added
get_key_balance - Changed
get_public_holidays3 fields changed- added
Output schema / properties / confidence_labelAdded value: +{ + "description": "Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules", + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" +} - added
Output schema / properties / coverage_labelAdded value: +{ + "description": "How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules", + "enum": [ + "ready", + "partial", + "gap" + ], + "type": "string" +} - added
Output schema / properties / label_basisAdded value: +{ + "additionalProperties": {}, + "description": "Inputs and the rule ids that produced the two labels", + "properties": { + "confidence_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "coverage_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputs": { + "items": {}, + "type": "array" + }, + "rules": { + "type": "string" + }, + "rules_version": { + "type": "string" + }, + "source_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "stale": { + "type": "boolean" + }, + "verification_age_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" +}
- Added
get_public_holidays_worldwide - Changed
get_series3 fields changed- added
Output schema / properties / confidence_labelAdded value: +{ + "description": "Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules", + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" +} - added
Output schema / properties / coverage_labelAdded value: +{ + "description": "How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules", + "enum": [ + "ready", + "partial", + "gap" + ], + "type": "string" +} - added
Output schema / properties / label_basisAdded value: +{ + "additionalProperties": {}, + "description": "Inputs and the rule ids that produced the two labels", + "properties": { + "confidence_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "coverage_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputs": { + "items": {}, + "type": "array" + }, + "rules": { + "type": "string" + }, + "rules_version": { + "type": "string" + }, + "source_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "stale": { + "type": "boolean" + }, + "verification_age_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" +}
- Changed
get_series_history7 fields changed- changed
Output schema / descriptionPrevious value: -"Historical entries of one series"New value: +"Historical entries of one series; top-level labels describe the current value, and each entry carries its own" - added
Output schema / properties / confidence_labelAdded value: +{ + "description": "Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules", + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" +} - added
Output schema / properties / coverage_labelAdded value: +{ + "description": "How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules", + "enum": [ + "ready", + "partial", + "gap" + ], + "type": "string" +} - added
Output schema / properties / entries / items / additionalPropertiesAdded value: +{} - added
Output schema / properties / entries / items / propertiesAdded value: +{ + "confidence": {}, + "confidence_label": { + "description": "Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules", + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "country": { + "type": "string" + }, + "coverage_label": { + "description": "How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules", + "enum": [ + "ready", + "partial", + "gap" + ], + "type": "string" + }, + "effective_from": {}, + "label_basis": { + "additionalProperties": {}, + "description": "Inputs and the rule ids that produced the two labels", + "properties": { + "confidence_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "coverage_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputs": { + "items": {}, + "type": "array" + }, + "rules": { + "type": "string" + }, + "rules_version": { + "type": "string" + }, + "source_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "stale": { + "type": "boolean" + }, + "verification_age_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "last_confirmed": {}, + "notes": {}, + "series": { + "type": "string" + }, + "source": {}, + "stale": { + "type": "boolean" + }, + "unit": {}, + "value": {} +} - added
Output schema / properties / entries / items / typeAdded value: +"object" - added
Output schema / properties / label_basisAdded value: +{ + "additionalProperties": {}, + "description": "Inputs and the rule ids that produced the two labels", + "properties": { + "confidence_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "coverage_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputs": { + "items": {}, + "type": "array" + }, + "rules": { + "type": "string" + }, + "rules_version": { + "type": "string" + }, + "source_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "stale": { + "type": "boolean" + }, + "verification_age_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" +}
- Changed
get_snapshot1 field changed- added
Output schema / properties / resultAdded value: +{ + "description": "One entry per country; every series value carries confidence_label, coverage_label and label_basis", + "items": { + "additionalProperties": {}, + "properties": { + "country": { + "type": "string" + }, + "series": { + "items": { + "additionalProperties": {}, + "properties": { + "confidence": {}, + "confidence_label": { + "description": "Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules", + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "country": { + "type": "string" + }, + "coverage_label": { + "description": "How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules", + "enum": [ + "ready", + "partial", + "gap" + ], + "type": "string" + }, + "effective_from": {}, + "label_basis": { + "additionalProperties": {}, + "description": "Inputs and the rule ids that produced the two labels", + "properties": { + "confidence_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "coverage_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputs": { + "items": {}, + "type": "array" + }, + "rules": { + "type": "string" + }, + "rules_version": { + "type": "string" + }, + "source_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "stale": { + "type": "boolean" + }, + "verification_age_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "last_confirmed": {}, + "notes": {}, + "series": { + "type": "string" + }, + "source": {}, + "stale": { + "type": "boolean" + }, + "unit": {}, + "value": {} + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" +}
- Added
is_business_day - Changed
list_series1 field changed- changed
Output schema / descriptionPrevious value: -"Catalog: brand metadata plus countries[] (compact: country, name, series ids; with country or detail: full per-series metadata)"New value: +"Catalog: brand metadata plus countries[] (compact: country, name, series ids; with country or detail: full per-series metadata including confidence_label and coverage_label)"
- Changed
settlement_date3 fields changed- added
Output schema / properties / confidence_labelAdded value: +{ + "description": "Evidence verdict derived from source type, verification age and the stale flag (answers: the weakest series read). Rules at /label-rules", + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" +} - added
Output schema / properties / coverage_labelAdded value: +{ + "description": "How much of the question is covered: ready = complete; partial = held with a disclosed limitation or default; gap = no number served. Rules at /label-rules", + "enum": [ + "ready", + "partial", + "gap" + ], + "type": "string" +} - added
Output schema / properties / label_basisAdded value: +{ + "additionalProperties": {}, + "description": "Inputs and the rule ids that produced the two labels", + "properties": { + "confidence_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "coverage_reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputs": { + "items": {}, + "type": "array" + }, + "rules": { + "type": "string" + }, + "rules_version": { + "type": "string" + }, + "source_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "stale": { + "type": "boolean" + }, + "verification_age_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" +}
16 tool updates
- Changed
check_minimum_wage1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "description": "Minimum-wage compliance verdict", + "properties": { + "basis": {}, + "bind_series": {}, + "country": { + "type": "string" + }, + "disclaimer": {}, + "error": { + "description": "Present on a free refusal or error; no charge" + }, + "explanation": {}, + "floor": {}, + "how_to_pay": { + "items": { + "type": "string" + }, + "type": "array" + }, + "http_endpoint": { + "type": "string" + }, + "no_charge": { + "type": "boolean" + }, + "payment_required": { + "description": "true when the call needs payment; how_to_pay explains x402 or card", + "type": "boolean" + }, + "price_usd": { + "type": "number" + }, + "provenance": { + "description": "Cited official sources behind the answer" + }, + "question": {}, + "receipt": { + "description": "Ed25519 answer receipt when receipt=true on a paid success" + }, + "status": { + "description": "Answer status, e.g. computed or an honest no-answer status", + "type": "string" + }, + "verdict": {}, + "x_next_bind": {} + }, + "type": "object" +}
- Changed
compute_employment_cost1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "description": "Employee and employer statutory contributions with citations", + "properties": { + "basis": {}, + "bind_series": {}, + "country": { + "type": "string" + }, + "disclaimer": {}, + "error": { + "description": "Present on a free refusal or error; no charge" + }, + "explanation": {}, + "how_to_pay": { + "items": { + "type": "string" + }, + "type": "array" + }, + "http_endpoint": { + "type": "string" + }, + "no_charge": { + "type": "boolean" + }, + "payment_required": { + "description": "true when the call needs payment; how_to_pay explains x402 or card", + "type": "boolean" + }, + "price_usd": { + "type": "number" + }, + "provenance": { + "description": "Cited official sources behind the answer" + }, + "question": {}, + "receipt": { + "description": "Ed25519 answer receipt when receipt=true on a paid success" + }, + "status": { + "description": "Answer status, e.g. computed or an honest no-answer status", + "type": "string" + }, + "x_next_bind": {} + }, + "type": "object" +}
- Changed
compute_income_tax1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "description": "Income tax on taxable income with per-bracket workings", + "properties": { + "basis": {}, + "bind_series": {}, + "breakdown": {}, + "country": { + "type": "string" + }, + "disclaimer": {}, + "effective_rate": {}, + "error": { + "description": "Present on a free refusal or error; no charge" + }, + "explanation": {}, + "how_to_pay": { + "items": { + "type": "string" + }, + "type": "array" + }, + "http_endpoint": { + "type": "string" + }, + "marginal_rate": {}, + "no_charge": { + "type": "boolean" + }, + "payment_required": { + "description": "true when the call needs payment; how_to_pay explains x402 or card", + "type": "boolean" + }, + "price_usd": { + "type": "number" + }, + "provenance": { + "description": "Cited official sources behind the answer" + }, + "question": {}, + "receipt": { + "description": "Ed25519 answer receipt when receipt=true on a paid success" + }, + "scope_note": {}, + "status": { + "description": "Answer status, e.g. computed or an honest no-answer status", + "type": "string" + }, + "tax": {}, + "x_next_bind": {} + }, + "type": "object" +}
- Changed
compute_statutory_interest1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "description": "Simple statutory interest at the cited rate", + "properties": { + "basis": {}, + "bind_series": {}, + "country": { + "type": "string" + }, + "disclaimer": {}, + "error": { + "description": "Present on a free refusal or error; no charge" + }, + "explanation": {}, + "how_to_pay": { + "items": { + "type": "string" + }, + "type": "array" + }, + "http_endpoint": { + "type": "string" + }, + "no_charge": { + "type": "boolean" + }, + "payment_required": { + "description": "true when the call needs payment; how_to_pay explains x402 or card", + "type": "boolean" + }, + "price_usd": { + "type": "number" + }, + "provenance": { + "description": "Cited official sources behind the answer" + }, + "question": {}, + "receipt": { + "description": "Ed25519 answer receipt when receipt=true on a paid success" + }, + "status": { + "description": "Answer status, e.g. computed or an honest no-answer status", + "type": "string" + }, + "x_next_bind": {} + }, + "type": "object" +}
- Changed
compute_vat1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "description": "VAT breakdown", + "properties": { + "basis": {}, + "bind_series": {}, + "country": { + "type": "string" + }, + "disclaimer": {}, + "error": { + "description": "Present on a free refusal or error; no charge" + }, + "explanation": {}, + "gross": {}, + "how_to_pay": { + "items": { + "type": "string" + }, + "type": "array" + }, + "http_endpoint": { + "type": "string" + }, + "net": {}, + "no_charge": { + "type": "boolean" + }, + "payment_required": { + "description": "true when the call needs payment; how_to_pay explains x402 or card", + "type": "boolean" + }, + "price_usd": { + "type": "number" + }, + "provenance": { + "description": "Cited official sources behind the answer" + }, + "question": {}, + "rate": {}, + "receipt": { + "description": "Ed25519 answer receipt when receipt=true on a paid success" + }, + "status": { + "description": "Answer status, e.g. computed or an honest no-answer status", + "type": "string" + }, + "tax": {}, + "workings": {}, + "x_next_bind": {} + }, + "type": "object" +}
- Changed
count_working_days1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "description": "Working-day count over a range with holidays hit", + "properties": { + "basis": {}, + "bind_series": {}, + "country": { + "type": "string" + }, + "disclaimer": {}, + "error": { + "description": "Present on a free refusal or error; no charge" + }, + "explanation": {}, + "how_to_pay": { + "items": { + "type": "string" + }, + "type": "array" + }, + "http_endpoint": { + "type": "string" + }, + "no_charge": { + "type": "boolean" + }, + "payment_required": { + "description": "true when the call needs payment; how_to_pay explains x402 or card", + "type": "boolean" + }, + "price_usd": { + "type": "number" + }, + "provenance": { + "description": "Cited official sources behind the answer" + }, + "question": {}, + "receipt": { + "description": "Ed25519 answer receipt when receipt=true on a paid success" + }, + "status": { + "description": "Answer status, e.g. computed or an honest no-answer status", + "type": "string" + }, + "x_next_bind": {} + }, + "type": "object" +}
- Changed
get_calendar1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "description": "Derived reverify_by and next_effective_known dates", + "properties": { + "as_of": {}, + "bind_series": {}, + "brand": {}, + "count": { + "type": "number" + }, + "disclaimer": {}, + "entries": { + "items": {}, + "type": "array" + }, + "error": { + "description": "Present on a free refusal or error; no charge" + }, + "explanation": {}, + "how_to_pay": { + "items": { + "type": "string" + }, + "type": "array" + }, + "http_endpoint": { + "type": "string" + }, + "no_charge": { + "type": "boolean" + }, + "payment_required": { + "description": "true when the call needs payment; how_to_pay explains x402 or card", + "type": "boolean" + }, + "price_usd": { + "type": "number" + }, + "x_next_bind": {} + }, + "type": "object" +}
- Changed
get_changes1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "description": "Value changes since a date", + "properties": { + "as_of": {}, + "bind_series": {}, + "changes": { + "items": {}, + "type": "array" + }, + "disclaimer": {}, + "error": { + "description": "Present on a free refusal or error; no charge" + }, + "explanation": {}, + "how_to_pay": { + "items": { + "type": "string" + }, + "type": "array" + }, + "http_endpoint": { + "type": "string" + }, + "no_charge": { + "type": "boolean" + }, + "payment_required": { + "description": "true when the call needs payment; how_to_pay explains x402 or card", + "type": "boolean" + }, + "price_usd": { + "type": "number" + }, + "since": {}, + "x_next_bind": {} + }, + "type": "object" +}
- Changed
get_public_holidays1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "description": "Holiday calendar series with cited source; with subdivision, merged national+regional days", + "properties": { + "available_subdivisions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "bind_series": {}, + "confidence": {}, + "country": { + "type": "string" + }, + "disclaimer": {}, + "effective_from": {}, + "error": { + "description": "Present on a free refusal or error; no charge" + }, + "explanation": {}, + "how_to_pay": { + "items": { + "type": "string" + }, + "type": "array" + }, + "http_endpoint": { + "type": "string" + }, + "last_confirmed": {}, + "no_charge": { + "type": "boolean" + }, + "notes": {}, + "payment_required": { + "description": "true when the call needs payment; how_to_pay explains x402 or card", + "type": "boolean" + }, + "price_usd": { + "type": "number" + }, + "series": { + "type": "string" + }, + "source": {}, + "stale": { + "type": "boolean" + }, + "subdivision": {}, + "unit": {}, + "value": {}, + "x_next_bind": {} + }, + "type": "object" +}
- Changed
get_series1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "description": "Current value of one series with source, effective date, last_confirmed and stale flag", + "properties": { + "bind_series": {}, + "confidence": {}, + "country": { + "type": "string" + }, + "disclaimer": {}, + "effective_from": {}, + "error": { + "description": "Present on a free refusal or error; no charge" + }, + "explanation": {}, + "how_to_pay": { + "items": { + "type": "string" + }, + "type": "array" + }, + "http_endpoint": { + "type": "string" + }, + "last_confirmed": {}, + "no_charge": { + "type": "boolean" + }, + "notes": {}, + "payment_required": { + "description": "true when the call needs payment; how_to_pay explains x402 or card", + "type": "boolean" + }, + "price_usd": { + "type": "number" + }, + "series": { + "type": "string" + }, + "source": {}, + "stale": { + "type": "boolean" + }, + "unit": {}, + "value": {}, + "x_next_bind": {} + }, + "type": "object" +}
- Changed
get_series_history1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "description": "Historical entries of one series", + "properties": { + "bind_series": {}, + "country": { + "type": "string" + }, + "disclaimer": {}, + "entries": { + "items": {}, + "type": "array" + }, + "error": { + "description": "Present on a free refusal or error; no charge" + }, + "explanation": {}, + "how_to_pay": { + "items": { + "type": "string" + }, + "type": "array" + }, + "http_endpoint": { + "type": "string" + }, + "no_charge": { + "type": "boolean" + }, + "payment_required": { + "description": "true when the call needs payment; how_to_pay explains x402 or card", + "type": "boolean" + }, + "price_usd": { + "type": "number" + }, + "series": { + "type": "string" + }, + "stale": { + "type": "boolean" + }, + "x_next_bind": {} + }, + "type": "object" +}
- Changed
get_snapshot1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "description": "Every series for every country of this brand", + "properties": { + "bind_series": {}, + "countries": {}, + "disclaimer": {}, + "error": { + "description": "Present on a free refusal or error; no charge" + }, + "explanation": {}, + "how_to_pay": { + "items": { + "type": "string" + }, + "type": "array" + }, + "http_endpoint": { + "type": "string" + }, + "no_charge": { + "type": "boolean" + }, + "payment_required": { + "description": "true when the call needs payment; how_to_pay explains x402 or card", + "type": "boolean" + }, + "price_usd": { + "type": "number" + }, + "x_next_bind": {} + }, + "type": "object" +}
- Changed
list_series1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "description": "Catalog: brand metadata plus countries[] (compact: country, name, series ids; with country or detail: full per-series metadata)", + "properties": { + "bind_series": {}, + "countries": { + "description": "Country entries ({country, name, series}); on an unknown-country refusal, the list of valid codes", + "items": {}, + "type": "array" + }, + "disclaimer": {}, + "error": { + "description": "Present on a free refusal or error; no charge" + }, + "explanation": {}, + "how_to_pay": { + "items": { + "type": "string" + }, + "type": "array" + }, + "http_endpoint": { + "type": "string" + }, + "no_charge": { + "type": "boolean" + }, + "note": { + "type": "string" + }, + "payment_required": { + "description": "true when the call needs payment; how_to_pay explains x402 or card", + "type": "boolean" + }, + "price_usd": { + "type": "number" + }, + "x_next_bind": {} + }, + "type": "object" +}
- Changed
register_alert1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "description": "Alert subscription result (id, secret, trial) or refusal", + "properties": { + "bind_series": {}, + "disclaimer": {}, + "error": { + "description": "Present on a free refusal or error; no charge" + }, + "explanation": {}, + "how_to_pay": { + "items": { + "type": "string" + }, + "type": "array" + }, + "http_endpoint": { + "type": "string" + }, + "no_charge": { + "type": "boolean" + }, + "payment_required": { + "description": "true when the call needs payment; how_to_pay explains x402 or card", + "type": "boolean" + }, + "price_usd": { + "type": "number" + }, + "x_next_bind": {} + }, + "type": "object" +}
- Changed
settlement_date1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "description": "Settlement date on intersected calendars with per-day trail", + "properties": { + "basis": {}, + "bind_series": {}, + "country": { + "type": "string" + }, + "disclaimer": {}, + "error": { + "description": "Present on a free refusal or error; no charge" + }, + "explanation": {}, + "how_to_pay": { + "items": { + "type": "string" + }, + "type": "array" + }, + "http_endpoint": { + "type": "string" + }, + "no_charge": { + "type": "boolean" + }, + "payment_required": { + "description": "true when the call needs payment; how_to_pay explains x402 or card", + "type": "boolean" + }, + "price_usd": { + "type": "number" + }, + "provenance": { + "description": "Cited official sources behind the answer" + }, + "question": {}, + "receipt": { + "description": "Ed25519 answer receipt when receipt=true on a paid success" + }, + "status": { + "description": "Answer status, e.g. computed or an honest no-answer status", + "type": "string" + }, + "x_next_bind": {} + }, + "type": "object" +}
- Changed
verify_answer_receipt1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "description": "Receipt verification result", + "properties": { + "bind_series": {}, + "disclaimer": {}, + "error": { + "description": "Present on a free refusal or error; no charge" + }, + "explanation": {}, + "how_to_pay": { + "items": { + "type": "string" + }, + "type": "array" + }, + "http_endpoint": { + "type": "string" + }, + "no_charge": { + "type": "boolean" + }, + "ok": { + "type": "boolean" + }, + "payment_required": { + "description": "true when the call needs payment; how_to_pay explains x402 or card", + "type": "boolean" + }, + "price_usd": { + "type": "number" + }, + "why": { + "type": "string" + }, + "x_next_bind": {} + }, + "type": "object" +}
1 tool update
- Changed
list_series2 fields changed- added
Input schema / properties / countryAdded value: +{ + "description": "Optional ISO country code. Returns full per-series metadata (source, freshness, bands) for that country only.", + "type": "string" +} - added
Input schema / properties / detailAdded value: +{ + "description": "Default false. Without country, false returns a compact index (country -> series ids). true returns the full catalog, which is large.", + "type": "boolean" +}
1 tool update
- Added
get_calendar
1 tool update
- Added
compute_statutory_interest
7 tool updates
- Changed
check_minimum_wage1 field changed- added
Input schema / properties / receiptAdded value: +{ + "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.25; that SKU is not an MCP tool).", + "type": "boolean" +}
- Changed
compute_employment_cost1 field changed- added
Input schema / properties / receiptAdded value: +{ + "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.25; that SKU is not an MCP tool).", + "type": "boolean" +}
- Changed
compute_income_tax1 field changed- added
Input schema / properties / receiptAdded value: +{ + "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.25; that SKU is not an MCP tool).", + "type": "boolean" +}
- Changed
compute_vat1 field changed- added
Input schema / properties / receiptAdded value: +{ + "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.25; that SKU is not an MCP tool).", + "type": "boolean" +}
- Changed
count_working_days1 field changed- added
Input schema / properties / receiptAdded value: +{ + "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.25; that SKU is not an MCP tool).", + "type": "boolean" +}
- Changed
settlement_date1 field changed- added
Input schema / properties / receiptAdded value: +{ + "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.25; that SKU is not an MCP tool).", + "type": "boolean" +}
- Added
verify_answer_receipt
2 tool updates
- Added
get_changes - Added
register_alert
1 tool update
- Added
compute_employment_cost
2 tool updates
- Changed
count_working_days1 field changed- added
Input schema / properties / subdivisionAdded value: +{ + "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.", + "type": "string" +}
- Changed
get_public_holidays1 field changed- added
Input schema / properties / subdivisionAdded value: +{ + "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.", + "type": "string" +}
1 tool update
- Added
settlement_date
7 tool updates
- Changed
check_minimum_wage1 field changed- changed
Input schema / properties / country / enumPrevious value: -[ - "au", - "nz" -]New value: +[ + "au", + "fj", + "nz", + "pg", + "sb", + "to", + "vu", + "ws" +]
- Changed
compute_income_tax1 field changed- changed
Input schema / properties / country / enumPrevious value: -[ - "au", - "nz" -]New value: +[ + "au", + "fj", + "nz", + "pg", + "sb", + "to", + "vu", + "ws" +]
- Changed
compute_vat1 field changed- changed
Input schema / properties / country / enumPrevious value: -[ - "au", - "nz" -]New value: +[ + "au", + "fj", + "nz", + "pg", + "sb", + "to", + "vu", + "ws" +]
- Changed
count_working_days1 field changed- changed
Input schema / properties / country / enumPrevious value: -[ - "au", - "nz" -]New value: +[ + "au", + "fj", + "nz", + "pg", + "sb", + "to", + "vu", + "ws" +]
- Changed
get_public_holidays1 field changed- changed
Input schema / properties / country / enumPrevious value: -[ - "au", - "nz" -]New value: +[ + "au", + "fj", + "nz", + "pg", + "sb", + "to", + "vu", + "ws" +]
- Changed
get_series1 field changed- changed
Input schema / properties / country / enumPrevious value: -[ - "au", - "nz" -]New value: +[ + "au", + "fj", + "nz", + "pg", + "sb", + "to", + "vu", + "ws" +]
- Changed
get_series_history1 field changed- changed
Input schema / properties / country / enumPrevious value: -[ - "au", - "nz" -]New value: +[ + "au", + "fj", + "nz", + "pg", + "sb", + "to", + "vu", + "ws" +]
9 tool updates
- First observed
check_minimum_wage - First observed
compute_income_tax - First observed
compute_vat - First observed
count_working_days - First observed
get_public_holidays - First observed
get_series - First observed
get_series_history - First observed
get_snapshot - First observed
list_series
Related MCP Connectors
Asian govt data, cited to source: rates, VAT, tax, wages, holidays, FX. 28 countries; Japan free.
European govt data, cited: rates, VAT, tax, wages, holidays, FX. 34 countries + EU; Germany free.
Cited official data: tax, VAT, CPI, policy rates, wages, holidays, FX. 128 countries+EU, 7 regions.
N American govt data, cited to source: rates, VAT, tax, wages, holidays, FX. 10 countries; USA free.
Related MCP Servers
- AlicenseAqualityBmaintenanceOne-call Australian tax data plumbing via the ATO — cited responses for tax and super context, not a data broker.757 PyPI1MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to retrieve and compare verified country facts such as VAT/GST, public holidays, visas, tipping, and minimum wages across 70 countries, with automatic x402 micropayments in USDC on Base per call.107 npmMIT
- FlicenseAqualityDmaintenanceProvides verified ANZ public holidays, school terms, and business-day calculations for all 9 regions of Australia and New Zealand, backed by data for 2026 and 2027.3-
- AlicenseAqualityFmaintenanceCited Australian stats via the ausdata.io gateway — stable AU.* series IDs, source_url + retrieved_at on every response. Free tier. Not a data broker; upgrade for Embed / signed / webhooks.2832 npm2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.