Skip to main content
Glama
josemvelez78

mcp-europe-business

by josemvelez78

MCP Europe Business Suite

European business compliance suite for AI agents — 28 tools covering tax ID validation, IBAN, VAT rates, e-invoicing rules, payment terms, and labor calendar helpers across 18+ European countries.

Part of MCPize — regional MCP servers for AI agents.

Coverage

Module

Country coverage

Tax IDs

PT (NIF), ES (NIF/NIE/CIF), FR (SIRET, TVA), IT (Codice Fiscale, Partita IVA), DE (USt-IdNr), UK (VAT), NL (KVK)

IBAN

18 EU countries (PT, ES, FR, DE, IT, NL, BE, PL, SE, DK, FI, AT, IE, GR, HU, RO, CZ, HR)

VAT rates

19 countries (18 EU + UK)

Payment terms

10 countries (PT, ES, FR, DE, IT, NL, BE, UK, SE, PL)

E-invoicing

10 countries with timelines and formats

Holidays

8 countries with Easter-based moveable holidays

Postal codes

16 countries

Related MCP server: mcp-latam-business

Tools (28 total)

Validation (17): validate_nif, validate_iban, get_vat_rate, get_portugal_holidays, get_spain_holidays, get_france_holidays, validate_nif_es, validate_siret, validate_tva_fr, calculate_working_days, format_number_european, validate_codice_fiscale, validate_partita_iva, validate_vat_de, validate_vat_uk, validate_kvk_nl, validate_postal_code

Business Rules (4): get_payment_terms, get_invoice_requirements, get_vat_exemption_threshold, get_einvoicing_rules

Labor Helpers (3): get_public_holidays_range, calculate_working_days_eu, get_next_payment_date

Invoice & VAT (4): validate_invoice_schema, calculate_vat_breakdown, suggest_vat_treatment, calculate_vat_amount

What's new in v1.2.0

  • Timezone-safe date formatting (no more UTC offset bugs)

  • Easter-based moveable holidays added to Portugal (Sexta-feira Santa) and Spain (Viernes Santo)

  • nth_working_day rule now correctly handles months without enough working days

  • Consistent outputSchema (Zod) on every tool — Smithery Typed Output ready

  • Refactored shared helpers (no duplicated Easter calculations across tools)

  • New /health endpoint for Railway/Docker healthchecks

Local development

npm install
npm start           # stdio transport (for Glama / Claude Desktop)
npm run start:http  # HTTP transport on port 8080 (for Railway / hosted use)

Endpoints (HTTP mode)

  • GET / — server metadata and tool list

  • GET /health — health check (returns {"status":"ok"})

  • POST /mcp — MCP Streamable HTTP endpoint

Disclaimer

All compliance, tax, and legal information returned by these tools is reference only — not legal or tax advice. VAT rates, e-invoicing rules, and holiday calendars change frequently. Always verify with the relevant tax authority and a qualified professional before use in production.

License

MIT

Available Tools

28 tools
calculate_vat_amountA
Read-onlyIdempotent

Calculates VAT amounts from either a net (excluding VAT) or gross (including VAT) amount for a given VAT rate. Returns { net_amount, vat_amount, gross_amount, vat_rate, currency }. Use when building pricing tools, invoice calculators, or checkout flows that need to split gross prices into net + VAT components.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesThe amount to calculate VAT for
vat_rateYesVAT rate as a percentage. Example: 23 for 23%
amount_typeYesWhether the input amount is net (excluding VAT) or gross (including VAT)
currencyNoCurrency code. Example: 'EUR', 'GBP'. Defaults to 'EUR'

Output Schema

ParametersJSON Schema
NameRequiredDescription
net_amountYes
vat_amountYes
gross_amountYes
vat_rateYes
currencyYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate read-only and idempotent behavior. The description adds value by explaining the two calculation modes (net vs gross input), the default currency, and the exact return field names. This goes beyond what annotations provide, giving the agent a clear understanding of behavior.

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

Conciseness5/5

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

The description is extremely concise with two sentences. The first sentence captures the core functionality, and the second provides use cases. Every sentence is meaningful and front-loaded. No unnecessary words.

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

Completeness5/5

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

Given the tool has an output schema and 4 well-defined parameters, the description is complete. It explains the two input modes, the VAT rate interpretation, currency default, and typical usage scenarios. The output schema handles return value documentation.

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

Parameters3/5

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

The input schema has 100% description coverage, so the schema already documents all parameters well. The description provides context about the meaning of 'amount_type' and default currency, but this is already in the schema descriptions. Thus, the description adds minimal extra value beyond the schema.

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

Purpose4/5

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

The description clearly states the tool calculates VAT amounts from net or gross amounts for a given VAT rate. It provides the return object structure and examples of use cases. However, it does not explicitly differentiate from the sibling tool 'calculate_vat_breakdown', which might have a similar purpose.

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

Usage Guidelines4/5

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

The description explicitly says when to use the tool: 'Use when building pricing tools, invoice calculators, or checkout flows that need to split gross prices into net + VAT components.' This provides clear context. It does not mention when not to use or alternatives, but the usage guidance is specific enough.

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

calculate_vat_breakdownA
Read-onlyIdempotent

Calculates a complete VAT breakdown for a list of invoice line items, grouping amounts by VAT rate and computing totals. Returns { lines_summary, vat_breakdown: [{rate, base_amount, vat_amount}], total_excl_vat, total_vat, total_incl_vat, currency }. Each line item requires { description, quantity, unit_price, vat_rate }. Use when generating invoices, building checkout summaries, or verifying VAT calculations in agent workflows.

ParametersJSON Schema
NameRequiredDescriptionDefault
linesYesArray of invoice line items
currencyNoCurrency code. Example: 'EUR', 'GBP'. Defaults to 'EUR'
round_decimalsNoDecimal places for rounding. Defaults to 2

Output Schema

ParametersJSON Schema
NameRequiredDescription
lines_summaryYes
vat_breakdownYes
total_excl_vatYes
total_vatYes
total_incl_vatYes
currencyYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the tool's safety is clear. The description adds behavioral context by detailing the output structure (lines_summary, vat_breakdown, totals) and input requirements, which goes beyond 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.

Conciseness5/5

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

The description is two sentences, each informative and front-loaded. The first sentence explains the function and output, the second gives use cases. No unnecessary words.

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

Completeness5/5

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

Given the existence of an output schema, moderate complexity, and full parameter description coverage, the description is complete. It covers what the tool does, its inputs, outputs, and appropriate usage scenarios.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds little new information about parameters beyond what the schema already provides. It restates the required fields for line items but does not enhance understanding of the parameters.

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

Purpose5/5

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

Description starts with a specific verb 'Calculates' and resource 'VAT breakdown', and explicitly states the scope 'for a list of invoice line items'. It clearly distinguishes itself from sibling tools like calculate_vat_amount by focusing on a complete breakdown with grouping.

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

Usage Guidelines4/5

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

The description provides explicit usage contexts: 'Use when generating invoices, building checkout summaries, or verifying VAT calculations'. It does not mention when not to use or alternatives, but the context is sufficiently clear.

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

calculate_working_daysA
Read-onlyIdempotent

Counts the number of working days between two dates (inclusive), excluding Saturdays, Sundays, and all 10 Portuguese national public holidays. Returns { start_date, end_date, working_days: number }. Use when calculating Portuguese invoice payment deadlines, legal notice periods, or SLA response times.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesStart date in YYYY-MM-DD format. Example: '2026-01-01'
end_dateYesEnd date in YYYY-MM-DD format. Example: '2026-01-31'

Output Schema

ParametersJSON Schema
NameRequiredDescription
start_dateNo
end_dateNo
working_daysNo
errorNo

TDQS

A4.5/5.0
Behavior5/5

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

Discloses exclusion of Saturdays, Sundays, and all 10 Portuguese national public holidays, plus the exact return shape. Annotations already indicate safe read (readOnlyHint, idempotentHint), so description adds valuable context without contradicting.

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

Conciseness5/5

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

Two sentences, front-loaded with core function, and no wasted words. Every sentence adds value: first explains what it does, second gives usage guidance.

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

Completeness5/5

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

Given low complexity (2 params, no enums, output schema exists), the description fully covers purpose, usage, behavior, and return format with no gaps.

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

Parameters3/5

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

Input schema already has 100% coverage with descriptions for both parameters (including format and example). Description does not add new semantic info beyond what schema provides, so baseline score of 3 is appropriate.

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

Purpose5/5

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

Description clearly states the tool counts working days between two dates, excluding weekends and all 10 Portuguese public holidays. It specifies the return shape and provides concrete use cases, distinguishing it from siblings like 'calculate_working_days_eu' which likely covers broader EU holidays.

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

Usage Guidelines4/5

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

Explicitly gives three example use cases: Portuguese invoice payment deadlines, legal notice periods, and SLA response times. However, it does not explicitly mention when not to use this tool vs. the sibling 'calculate_working_days_eu', which would strengthen guidance.

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

calculate_working_days_euA
Read-onlyIdempotent

Counts the number of working days between two dates (inclusive) for a given European country, excluding weekends and that country's national public holidays. Returns { country, start_date, end_date, working_days, holidays_excluded }. Supports PT, ES, FR, DE, IT, NL, BE, UK. Use when calculating cross-border SLA periods, invoice payment deadlines, or project timelines that must account for different national holiday calendars.

ParametersJSON Schema
NameRequiredDescriptionDefault
country_codeYesTwo-letter ISO country code. Example: 'DE', 'IT', 'UK'
start_dateYesStart date in YYYY-MM-DD format, inclusive. Example: '2026-01-01'
end_dateYesEnd date in YYYY-MM-DD format, inclusive. Example: '2026-01-31'

Output Schema

ParametersJSON Schema
NameRequiredDescription
countryNo
start_dateNo
end_dateNo
working_daysNo
holidays_excludedNo
errorNo

TDQS

A4.5/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint), the description details inclusive date range, holiday exclusion, and return value structure. No contradictions with annotations.

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

Conciseness5/5

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

Three tight sentences: function, return values, then usage context and supported countries. Every sentence is essential and front-loaded.

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

Completeness5/5

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 still covers return fields, parameter constraints, country list, and usage scenarios. It is fully complete for a simple 3-parameter tool.

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

Parameters3/5

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

Schema coverage is 100% and parameter descriptions are clear. The description adds minimal extra semantic value beyond schema (e.g., inclusive nature), but for a high-coverage schema, baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool counts working days between two dates for European countries, excluding weekends and national holidays. It distinguishes from siblings like 'calculate_working_days' by specifying country-specific holidays.

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

Usage Guidelines4/5

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

Explicitly advises use for cross-border SLA periods, invoice deadlines, and project timelines. While it doesn't list when not to use, the context is strong enough for an agent to infer appropriate scenarios.

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

format_number_europeanA
Read-onlyIdempotent

Formats a number using the locale conventions of a specific European country — correct decimal and thousands separators. Returns { original, formatted, locale, country_code }. Supports PT, ES, FR, DE, IT, NL, BE, PL, SE, DK, FI, AT, IE, GR, HU, RO, UK.

ParametersJSON Schema
NameRequiredDescriptionDefault
numberYesThe numeric value to format. Example: 1234.56
country_codeYesTwo-letter country code. Example: 'PT', 'FR', 'DE'
decimalsNoNumber of decimal places. Defaults to 2.

Output Schema

ParametersJSON Schema
NameRequiredDescription
originalYes
formattedYes
localeYes
country_codeYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already provide readOnly and idempotent hints. The description adds the output shape and the list of supported country codes, which are behavioral details beyond the schema and annotations.

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

Conciseness5/5

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

Two sentences: purpose first, then return format and supported countries. No wasted words, front-loaded with key information.

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

Completeness4/5

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

Given the tool's simplicity, the description covers purpose, supported locales, and return structure. It doesn't mention error handling for unsupported codes, but output schema exists. Nearly complete.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds context about correct separators and a full list of supported country codes, which enhances parameter understanding beyond the schema definitions.

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

Purpose5/5

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

The description clearly states the tool formats a number using European locale conventions, with specific verb and resource. It distinguishes well from sibling tools (VAT, holidays, validation).

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

Usage Guidelines4/5

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

The description implies use for formatting numbers for European countries, and the context of sibling tools clarifies when to use it. However, no explicit when-not or alternatives are given.

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

get_einvoicing_rulesA
Read-onlyIdempotent

Returns the current e-invoicing (electronic invoicing) obligations for a given European country — whether it is mandatory for B2G (business-to-government), B2B (business-to-business), or B2C transactions, the required formats, and implementation timeline. Returns { country, b2g_mandatory, b2b_mandatory, b2c_mandatory, formats, timeline, platform, notes }. Use when building invoice generation systems, determining compliance requirements for EU customers, or automating invoice submission workflows.

ParametersJSON Schema
NameRequiredDescriptionDefault
country_codeYesTwo-letter ISO country code. Example: 'IT', 'DE', 'FR'

Output Schema

ParametersJSON Schema
NameRequiredDescription
countryNo
b2g_mandatoryNo
b2b_mandatoryNo
b2c_mandatoryNo
formatsNo
platformNo
timelineNo
notesNo
disclaimerNo
errorNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so safety is clear. The description adds the return structure but doesn't discuss permissions or rate limits. With annotations handling the core behavioral disclosure, a 3 is appropriate.

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

Conciseness5/5

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

Two sentences with no fluff: first states the function and return fields, second lists use cases. Front-loaded with purpose, every word earns its place.

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

Completeness4/5

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

Given the tool has one parameter, clear description, and an output schema (implied by the return field listing), the description is nearly complete. Minor gap: 'European country' in description vs. possibly non-EU, but that's a small detail.

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

Parameters3/5

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

Schema coverage is 100% with a clear description for 'country_code'. The tool description doesn't add additional parameter meaning beyond 'for a given European country', which is already implied by the schema. Baseline 3 is correct.

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

Purpose5/5

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

The description clearly states the tool returns e-invoicing obligations for a given country, including specific fields like B2G/B2B/B2C mandatory flags, formats, and timeline. It distinguishes from sibling tools (VAT, working days, validation) by focusing on e-invoicing rules.

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

Usage Guidelines4/5

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

The description explicitly says 'Use when building invoice generation systems, determining compliance requirements for EU customers, or automating invoice submission workflows.' No explicit when-not-to-use or alternatives, but the context is clear and covers typical use cases.

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

get_france_holidaysA
Read-onlyIdempotent

Returns all French national public holidays for a given year. Easter-dependent holidays (Easter Monday, Ascension, Whit Monday) are dynamically calculated using the Anonymous Gregorian algorithm. Returns 11 mandatory holidays defined by French law.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesCalendar year as a 4-digit integer. Example: 2026

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
countryYes
total_holidaysYes
holidaysYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnly and idempotent. Description adds context about algorithm (Anonymous Gregorian) and the exact number of holidays, which is beyond annotations.

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

Conciseness5/5

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

Two short sentences, each informative. No unnecessary words or repetition.

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

Completeness5/5

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

Description mentions return value (11 holidays) and algorithm. With output schema present, it provides sufficient context for a tool with a single parameter and predictable output.

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

Parameters3/5

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

Schema covers 100% of parameters with a clear description for the single parameter year. Description does not add extra meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states it returns all French national public holidays for a given year, specifying the number (11) and mentioning dynamic calculation for Easter-dependent holidays. This distinguishes it from sibling tools for other countries.

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

Usage Guidelines4/5

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

The description indicates it is for French holidays in a given year. While no explicit when-not-to-use or alternatives are provided, the sibling tools for other countries implicitly guide selection.

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

get_invoice_requirementsA
Read-onlyIdempotent

Returns the mandatory fields required on a valid VAT invoice for a given European country, as defined by EU VAT Directive 2006/112/EC and local implementations. Returns { country, mandatory_fields: [], optional_fields: [], notes }. Use when generating invoices for EU customers, validating invoice templates, or building invoice compliance checks in agent workflows. Information provided as reference only — not legal advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
country_codeYesTwo-letter ISO country code. Example: 'PT', 'DE', 'FR'

Output Schema

ParametersJSON Schema
NameRequiredDescription
countryNo
mandatory_fieldsNo
optional_fieldsNo
notesNo
disclaimerNo
errorNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare read-only and idempotent. Description adds value by specifying the output structure ({country, mandatory_fields, optional_fields, notes}) and the data source (EU VAT Directive and local implementations). No contradictions.

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

Conciseness5/5

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

Three sentences, each serving a distinct purpose: purpose, output shape, usage guidance. No fluff, front-loaded, and efficiently structured.

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

Completeness4/5

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

Given the tool's simplicity (1 param, output schema exists), the description is complete enough. It mentions the return shape and usage context. Slight deduction because actual output schema details are not shown, but description covers key aspects.

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

Parameters3/5

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

Schema coverage is 100% with a well-described parameter (country_code with example values). Description does not add extra meaning beyond the schema, but given high coverage, a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool returns mandatory fields for a valid VAT invoice for a European country, using specific verb 'Returns' and resource 'mandatory fields'. It distinguishes from siblings like 'validate_invoice_schema' and 'get_vat_rate' by focusing on invoice requirements.

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

Usage Guidelines4/5

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

Explicitly says when to use: generating invoices, validating templates, compliance checks. Also includes a disclaimer about not being legal advice. Lacks explicit when-not-to-use or alternatives, but 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_next_payment_dateA
Read-onlyIdempotent

Calculates the next valid payment date based on a reference date and a payment rule for a given European country, skipping weekends and national public holidays. Supports rules: 'last_working_day_of_month' (salary payment), 'first_working_day_of_month', 'nth_working_day' (e.g. 5th working day), 'next_working_day' (next business day after reference). Returns { country, reference_date, rule, result_date, notes }. Use when scheduling salary payments, invoice due dates, or any automated payment workflow that must avoid non-working days.

ParametersJSON Schema
NameRequiredDescriptionDefault
country_codeYesTwo-letter ISO country code. Example: 'PT', 'DE', 'FR'
reference_dateYesReference date in YYYY-MM-DD format. Example: '2026-01-31'
ruleYesPayment rule to apply.
nNoFor nth_working_day rule: which working day of the month. Example: 5 for 5th working day.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countryNo
reference_dateNo
ruleNo
result_dateNo
errorNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true and idempotentHint=true. The description adds details about skipping weekends and public holidays, applicable rules, and return structure, fully disclosing behavior without contradiction.

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

Conciseness5/5

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

Three sentences: first states core purpose, second lists rules, third gives usage scenarios. No filler; front-loaded with essential information.

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

Completeness5/5

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

The description covers purpose, parameters, rules, return structure (explicitly mentioning fields in returned object), and usage context. With good annotations and full schema, no gaps remain.

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

Parameters4/5

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

Schema covers 100% of parameters with descriptions. The description adds examples (e.g., country codes, date format) and explains each rule's meaning, going beyond basic schema info.

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

Purpose5/5

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

The description clearly states it calculates the next valid payment date based on a reference date and a rule for a European country. It lists all supported rules and return fields, distinguishing it from sibling tools (e.g., working days or validation tools).

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

Usage Guidelines4/5

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

The description explicitly says 'Use when scheduling salary payments, invoice due dates, or any automated payment workflow that must avoid non-working days.' While it does not mention when not to use, the context is clear and no direct alternative exists among siblings.

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

get_payment_termsA
Read-onlyIdempotent

Returns the legal B2B payment terms for a given European country — the default payment period, maximum allowed period, and late payment rules as defined by EU Directive 2011/7/EU and local implementations. Returns { country, default_days, max_days, late_payment_interest, notes }. Use when generating invoices, setting payment due dates, or automating accounts receivable workflows. Information provided as reference only — not legal advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
country_codeYesTwo-letter ISO country code. Example: 'PT', 'DE', 'FR'

Output Schema

ParametersJSON Schema
NameRequiredDescription
countryNo
default_daysNo
max_daysNo
late_payment_interestNo
currencyNo
notesNo
disclaimerNo
errorNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnly and idempotent. Description adds that the info is for reference only and not legal advice, which is valuable behavioral context beyond what 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.

Conciseness5/5

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

Extremely concise: one sentence stating purpose, one listing output fields, one for use cases, and a disclaimer. Every sentence adds value with no waste.

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

Completeness5/5

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

Given a simple input schema and the existence of an output schema (implied by listed fields), the description is complete. It covers data source, output structure, use cases, and a necessary disclaimer.

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

Parameters3/5

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

Input schema has 100% coverage with description for the single parameter. The description does not add additional meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states it returns legal B2B payment terms for European countries, specifying the exact data fields (default_days, max_days, etc.) and referencing EU Directive. It is distinct from sibling tools like get_vat_rate or validate_iban.

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

Usage Guidelines4/5

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

Provides explicit use cases: generating invoices, setting payment due dates, automating AR workflows. Lacks explicit when-not-to-use or alternatives, but no direct sibling alternative exists.

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

get_portugal_holidaysA
Read-onlyIdempotent

Returns all Portuguese national public holidays for a given year as a structured list. Each holiday includes { date: 'YYYY-MM-DD', name: string, name_en: string }. Returns 10 mandatory national holidays defined by Portuguese law. Use when calculating business deadlines, delivery dates, payment due dates, SLA periods, or scheduling tasks that must avoid non-working days in Portugal.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesCalendar year as a 4-digit integer. Example: 2026

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
countryYes
total_holidaysYes
holidaysYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate read-only and idempotent. The description adds that it returns exactly 10 mandatory holidays defined by law, with date, name, and English name fields. No contradictions.

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

Conciseness5/5

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

Two sentences: first states purpose and output format, second lists use cases. No wasted words, front-loaded.

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

Completeness5/5

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

For a simple one-parameter tool with output schema and clear annotations, the description covers purpose, output structure, and usage context completely.

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

Parameters3/5

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

The single parameter 'year' is fully described in the schema (100% coverage). The description does not add extra parameter details beyond that, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool returns Portuguese national public holidays for a given year as a structured list, specifying the resource, action, and input. It distinguishes from sibling tools for other countries.

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

Usage Guidelines4/5

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

The description provides explicit use cases like business deadlines, delivery dates, and SLA periods. It does not include when-not-to-use or alternative tools, 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_public_holidays_rangeA
Read-onlyIdempotent

Returns all public holidays that fall within a given date range for a specified European country. Returns { country, start_date, end_date, total_holidays, holidays: [{date, name, name_en}] }. Supports PT, ES, FR, DE, IT, NL, BE, UK. Use when calculating SLA periods, project timelines, delivery windows, or any workflow that must skip non-working days across multiple European countries.

ParametersJSON Schema
NameRequiredDescriptionDefault
country_codeYesTwo-letter ISO country code. Example: 'PT', 'DE', 'FR'
start_dateYesStart date in YYYY-MM-DD format. Example: '2026-01-01'
end_dateYesEnd date in YYYY-MM-DD format. Example: '2026-12-31'

Output Schema

ParametersJSON Schema
NameRequiredDescription
countryNo
start_dateNo
end_dateNo
total_holidaysNo
holidaysNo
errorNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, indicating safety. The description adds value by detailing the output structure (e.g., holidays array with date/name) and listing supported countries, going beyond 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.

Conciseness5/5

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

The description is two sentences: the first defines purpose and output, the second gives use cases. It is front-loaded, concise, and every sentence is informative with no redundancy.

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

Completeness4/5

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

Given the tool's simplicity (3 parameters, output schema available, clear annotations), the description covers purpose, usage, and supported countries. It lacks details on error handling for unsupported countries or invalid dates, but overall is sufficient for an agent to invoke correctly.

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

Parameters3/5

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

All three parameters are fully described in the input schema (100% coverage). The description adds extra context about supported country codes but does not significantly enhance parameter understanding beyond the schema.

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

Purpose4/5

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

The description clearly states that the tool returns public holidays for a specified European country within a date range, with a list of supported countries. It differentiates from country-specific holiday tools (e.g., get_france_holidays) by being a range-based query, but does not explicitly contrast with sibling tools like calculate_working_days_eu.

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

Usage Guidelines4/5

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

The description advises using when calculating SLA periods, project timelines, or delivery windows that skip non-working days, providing clear context. However, it does not explicitly state when not to use this tool versus alternatives like calculate_working_days_eu.

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

get_spain_holidaysA
Read-onlyIdempotent

Returns all Spanish national public holidays for a given year as a structured list. Each holiday includes { date: 'YYYY-MM-DD', name: string, name_en: string }. Returns 9 mandatory national holidays defined by Spanish law. Does not include regional holidays that vary by autonomous community.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesCalendar year as a 4-digit integer. Example: 2026

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
countryYes
total_holidaysYes
holidaysYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint. The description adds behavioral details: 9 mandatory national holidays, output structure with date and names, and the exclusion of regional holidays. No contradictions with annotations.

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

Conciseness5/5

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

Three sentences pack all necessary information: what it does, output structure, and limitations. No redundant words, directly to the point.

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

Completeness4/5

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

Given the presence of annotations, full schema coverage, and an output schema, the description is complete enough. It clarifies the return format and the scope (national only), which is valuable for an agent comparing with sibling tools like get_france_holidays or get_public_holidays_range.

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

Parameters3/5

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

The single parameter 'year' is fully described in the schema (100% coverage). The description adds no new parameter meaning beyond the schema, but reinforces that the year is used to filter holidays, which is expected. Baseline 3 applies.

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

Purpose5/5

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

The description clearly states the tool returns 'all Spanish national public holidays for a given year' as a structured list with specific fields. It distinguishes itself from sibling tools targeting other countries (e.g., get_france_holidays) and explicitly excludes regional holidays, providing precise scope.

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

Usage Guidelines4/5

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

The description indicates when to use the tool (to obtain Spanish national public holidays) and when not (for regional holidays). It implicitly suggests alternatives like regional-specific tools, but does not explicitly name sibling tools for regional holidays.

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

get_vat_exemption_thresholdA
Read-onlyIdempotent

Returns the annual turnover threshold below which a business may be exempt from VAT registration in a given European country — the small business VAT exemption scheme. Returns { country, threshold_local_currency, currency, threshold_eur_approx, notes }. Use when determining if a small business needs to register for VAT, or when building onboarding flows for European freelancers and micro-enterprises. Information provided as reference only — not legal advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
country_codeYesTwo-letter ISO country code. Example: 'PT', 'DE', 'FR'

Output Schema

ParametersJSON Schema
NameRequiredDescription
countryNo
threshold_local_currencyNo
currencyNo
threshold_eur_approxNo
regimeNo
notesNo
disclaimerNo
errorNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint. The description adds behavioral context by stating 'Information provided as reference only — not legal advice,' which sets expectations for the reliability of the output. No contradictions with annotations.

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

Conciseness5/5

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

The description is extremely concise: two sentences that pack the purpose, usage, output structure, and legal disclaimer without any wasted words. It is front-loaded with the primary function.

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

Completeness5/5

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

Given the tool's simplicity (one parameter, output schema exists), the description covers all necessary aspects: what it returns, when to use it, and a disclaimer. No gaps are evident for an AI agent to correctly invoke this tool.

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

Parameters3/5

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

Schema coverage is 100% with a single parameter described. The description adds marginal value by specifying 'European country' and providing example codes ('PT', 'DE', 'FR'), but the schema already covers the required format. The baseline of 3 is appropriate as the description does not significantly enhance parameter understanding.

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

Purpose5/5

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

Description clearly states the verb 'returns', the resource (annual turnover threshold for VAT exemption), and the scope (European country). It also explicitly distinguishes this from sibling tools by naming the specific VAT scheme and mentioning the output structure.

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

Usage Guidelines4/5

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

Description explicitly says when to use the tool: 'when determining if a small business needs to register for VAT, or when building onboarding flows for European freelancers and micro-enterprises.' It does not explicitly state when not to use, but the guidance is clear enough for an agent to infer appropriate contexts.

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

get_vat_rateA
Read-onlyIdempotent

Returns all VAT (Value Added Tax) rates for a given EU country — standard, reduced, intermediate, and super-reduced rates where applicable, as numeric percentages. Returns { country, standard, reduced?, intermediate?, superreduced? } for supported countries, or { error, available } listing all valid codes if the country is not found. Supports 18 EU member states: PT, ES, FR, DE, IT, NL, BE, PL, SE, DK, FI, AT, IE, GR, HU, RO, CZ, HR. Use when calculating EU cross-border invoice tax, determining correct rate for e-commerce checkout by customer country, generating compliant VAT breakdowns, or any workflow requiring accurate and current EU VAT rates per jurisdiction.

ParametersJSON Schema
NameRequiredDescriptionDefault
country_codeYesTwo-letter ISO 3166-1 alpha-2 country code. Example: 'PT', 'FR', 'DE'

Output Schema

ParametersJSON Schema
NameRequiredDescription
countryNo
standardNo
reducedNo
intermediateNo
superreducedNo
errorNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint. Description adds that rates are numeric percentages, and error returns available codes. No contradictions; adds useful behavioral context beyond annotations.

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

Conciseness4/5

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

Description is a single paragraph but well-structured: returns, error case, supported countries, use cases. Slightly verbose but clear and front-loaded.

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

Completeness5/5

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

Covers return structure, error handling, supported countries, and use cases. Single required parameter, schema fully documented, output schema exists. Description is complete for the tool's purpose.

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

Parameters4/5

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

Input schema covers the single parameter with examples. Description lists supported countries, adding value beyond schema. Baseline 3, plus for extra country list.

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

Purpose5/5

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

The description clearly states it returns VAT rates for EU countries, listing specific rate types and a fallback error. The verb 'Returns' and resource 'VAT rates' are specific and distinct from sibling tools.

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

Usage Guidelines5/5

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

Explicitly lists when to use: 'Use when calculating EU cross-border invoice tax, determining correct rate for e-commerce checkout...' This provides clear context and differentiates from other tools.

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

suggest_vat_treatmentA
Read-onlyIdempotent

Suggests the likely VAT treatment for a transaction based on seller country, buyer country, buyer VAT registration status, and goods/services type — covering standard VAT, reverse charge, OSS/IOSS, and zero-rating scenarios under EU VAT rules. Returns { treatment, description, seller_charges_vat, applicable_rate, notes, disclaimer }. Use when building checkout VAT logic, invoice generation, or cross-border EU compliance workflows. For digital services sold to EU consumers, OSS is indicated automatically. Always verify with a tax advisor for real transactions.

ParametersJSON Schema
NameRequiredDescriptionDefault
seller_countryYesSeller's country ISO code. Example: 'PT'
buyer_countryYesBuyer's country ISO code. Example: 'DE'
buyer_is_vat_registeredYesWhether the buyer is VAT registered (B2B) or not (B2C)
goods_typeYesType of supply

Output Schema

ParametersJSON Schema
NameRequiredDescription
treatmentYes
descriptionYes
seller_charges_vatYes
applicable_rateYes
seller_countryYes
buyer_countryYes
buyer_is_vat_registeredYes
goods_typeYes
notesYes
disclaimerYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true and idempotentHint=true, and the description aligns with a non-destructive suggestion tool. It adds context about the specific VAT scenarios covered and the returned structure, which complements the annotations without contradiction.

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

Conciseness5/5

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

The description is concise at about four sentences, front-loaded with the core purpose, followed by return structure, use cases, a specific rule (OSS for digital services), and a disclaimer. Every sentence adds value without redundancy.

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

Completeness5/5

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

Given the complexity of EU VAT rules and the presence of a detailed output schema (implied by the description), the description covers purpose, inputs, outputs, and limitations. It is complete for an AI agent to decide to invoke the tool.

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

Parameters3/5

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

Schema coverage is 100% with detailed parameter descriptions. The description mentions the parameters (seller country, buyer country, etc.) but does not add significant new meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'suggests', the resource 'VAT treatment', and the scope 'under EU VAT rules', covering specific scenarios like reverse charge, OSS/IOSS. It effectively distinguishes from siblings like 'calculate_vat_amount' which compute amounts rather than treatments.

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

Usage Guidelines4/5

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

The description provides explicit use cases ('Use when building checkout VAT logic, invoice generation, or cross-border EU compliance workflows') and includes a disclaimer to verify with a tax advisor. However, it does not directly mention when not to use or suggest alternative tools, though the sibling context implies differentiation.

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

validate_codice_fiscaleA
Read-onlyIdempotent

Validates an Italian Codice Fiscale (fiscal code) for individuals — a 16-character alphanumeric code issued by the Italian Revenue Agency (Agenzia delle Entrate). Applies the official odd/even position checksum algorithm. Returns { valid: boolean, codice_fiscale: string } or { valid: false, reason: string }. Use when processing Italian invoices, onboarding Italian individuals, or any Italian compliance workflow requiring a verified personal fiscal code.

ParametersJSON Schema
NameRequiredDescriptionDefault
codice_fiscaleYes16-character Italian Codice Fiscale. Example: 'RSSMRA85T10A562S'

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYes
codice_fiscaleNo
reasonNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint and idempotentHint, and the description adds that it applies the odd/even checksum algorithm and returns a boolean with optional reason. This provides useful context beyond the annotations without contradicting them.

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

Conciseness4/5

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

The description is a single paragraph of four sentences, all relevant and front-loaded with purpose. It is concise but could be slightly more structured (e.g., bullet points). However, it avoids waste.

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

Completeness5/5

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

Given the simple 1-parameter schema, high annotation quality, and description of return format, the description is complete. It covers the country, algorithm, valid use cases, and output structure. No gaps remain for the agent.

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

Parameters3/5

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

Schema coverage is 100%, with a clear description of the parameter (16-character code plus example). The tool description adds no further semantic information about the parameter beyond what the schema already provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool validates an Italian Codice Fiscale, specifies it is a 16-character alphanumeric code for individuals, and mentions the official checksum algorithm. It distinguishes itself from sibling validation tools (e.g., validate_nif, validate_partita_iva) by focusing on Italian personal fiscal codes.

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

Usage Guidelines4/5

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

The description explicitly lists use cases: processing Italian invoices, onboarding Italian individuals, or Italian compliance workflows. It does not explicitly state when not to use or mention alternatives, but the sibling context implies other tools for different countries/entities.

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

validate_ibanA
Read-onlyIdempotent

Validates an IBAN (International Bank Account Number) using the ISO 13616 MOD-97 algorithm. Supports 18 European countries: PT, ES, FR, DE, IT, NL, BE, PL, SE, DK, FI, AT, IE, GR, HU, RO, CZ, HR. Returns { valid: boolean, country: string, iban: string } — country is extracted from the 2-letter prefix. Returns { valid: false, reason: string } for malformed input. Spaces are automatically stripped before validation. Use when validating supplier bank details for SEPA transfers, processing direct debit mandates, verifying payment data in e-commerce checkouts, or any workflow requiring a verified EU bank account number. Validates structure and checksum only — does not confirm account existence.

ParametersJSON Schema
NameRequiredDescriptionDefault
ibanYesEuropean IBAN with or without spaces. Example: 'PT50 0002 0123 1234 5678 9015 4'

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYes
countryNo
ibanNo
reasonNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already indicate read-only and idempotent behavior. The description adds crucial details: automatic space stripping, output format for valid and malformed inputs, and the limitation that it only validates structure/checksum. This exceeds what structured fields provide.

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

Conciseness5/5

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

The description is concise (under 200 words) and front-loaded with the core purpose. Every sentence adds necessary information—algorithm, countries, output, limitations—without redundancy.

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

Completeness5/5

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

Given the simple parameter and presence of output schema (implied), the description fully covers validation algorithm, supported countries, input handling, return values, and limitations. No gaps remain for an agent to invoke the tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining that spaces are automatically stripped and providing an example IBAN. This clarifies the parameter format beyond the schema description.

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

Purpose5/5

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

The description clearly states that the tool validates an IBAN using the ISO 13616 MOD-97 algorithm and lists supported countries. It distinguishes itself from sibling validation tools (e.g., VAT, tax ID) by focusing specifically on IBAN validation.

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

Usage Guidelines5/5

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

The description explicitly lists when to use the tool (SEPA transfers, direct debit mandates, e-commerce checkouts) and implicitly notes when not to use it by stating it does not confirm account existence. This differentiation guides correct selection among sibling validators.

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

validate_invoice_schemaA
Read-onlyIdempotent

Validates whether an invoice JSON object contains all mandatory fields required for a valid VAT invoice in a given European country, based on EU VAT Directive 2006/112/EC and local implementations. Returns { valid: boolean, country, missing_fields: [], present_fields: [], warnings: [] }. Use when building invoice generation pipelines, pre-submission validation, or compliance checks in agent workflows. Information is reference only — not legal advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
country_codeYesTwo-letter ISO country code. Example: 'PT', 'DE', 'IT'
invoiceYesInvoice object to validate

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYes
countryNo
missing_fieldsNo
present_fieldsNo
warningsNo
disclaimerNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is known. The description adds the return structure and a disclaimer about not being legal advice, which provides minor additional context.

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

Conciseness5/5

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

Description is brief, front-loaded with the purpose, includes return format and usage guidance. Every sentence is necessary without redundancy.

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

Completeness4/5

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

Covers purpose, return format, usage context, and legal disclaimer. The output schema is described inline. It could optionally mention that required fields vary by country, but current content is sufficient for a validation tool with good annotations and schema.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are well-documented in the schema. The description does not add new semantics beyond mentioning 'mandatory fields', which is implied by the tool's purpose.

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

Purpose5/5

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

The description clearly states it validates an invoice JSON for mandatory fields for VAT invoices in European countries, referencing EU Directive. It distinguishes from sibling validation tools (e.g., validate_vat_de, validate_nif) by focusing on invoice schema rather than individual identifiers.

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

Usage Guidelines4/5

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

Explicitly recommends use in invoice generation pipelines, pre-submission validation, and compliance checks. While it doesn't list alternatives, the context makes the tool's role clear among siblings.

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

validate_kvk_nlA
Read-onlyIdempotent

Validates a Dutch KVK (Kamer van Koophandel) chamber of commerce number — an 8-digit registration number assigned to all businesses registered in the Netherlands. Verifies the format and applies the official weighted checksum algorithm. Returns { valid: boolean, kvk: string, country: 'NL' } or { valid: false, reason: string }. Use when processing Dutch invoices, validating Dutch suppliers, or onboarding Dutch business partners.

ParametersJSON Schema
NameRequiredDescriptionDefault
kvkYes8-digit Dutch KVK number, with or without spaces. Example: '12345678'

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYes
kvkNo
countryNo
reasonNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare readOnlyHint and idempotentHint, and the description adds behavioral details like 'applies the official weighted checksum algorithm' and return structure, which is consistent.

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

Conciseness5/5

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

Three efficient sentences: function, method, and use cases. No redundant words, front-loaded with key purpose.

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

Completeness5/5

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

With output schema and annotations, the description sufficiently covers return values and conditions. The use case guidance completes the context for an AI agent.

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

Parameters3/5

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

Schema covers 100% of the parameter details, including data type and example. The description does not add additional semantics beyond what the schema provides, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states it 'Validates a Dutch KVK chamber of commerce number' with specific format and checksum verification, distinguishing it from sibling tools like validate_vat_de or validate_codice_fiscale.

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

Usage Guidelines4/5

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

Explicitly recommends use cases: 'processing Dutch invoices, validating Dutch suppliers, or onboarding Dutch business partners.' No when-not or alternatives mentioned, but the context is well-defined.

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

validate_nifA
Read-onlyIdempotent

Validates a Portuguese NIF (Número de Identificação Fiscal) — the 9-digit tax identification number issued by the Portuguese Tax Authority (AT) to individuals and companies. Applies the official modulo-11 checksum algorithm to verify the check digit. Returns { valid: true, nif: string } for valid NIFs, or { valid: false, reason: string } for invalid format or failed checksum. First-digit rules are enforced: 1–3 for individuals, 5 for corporations, 6 for public entities, 7–8 for other entities, 9 for occasional taxpayers. Use when processing Portuguese invoices (faturas), onboarding suppliers, validating user registrations, or any fiscal compliance workflow. Does not query the AT database — offline format and checksum validation only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nifYes9-digit Portuguese NIF, with or without spaces. Example: '123456789'

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYesWhether the NIF is valid
nifNoNormalized NIF without spaces
reasonNoReason for invalidity if valid is false

TDQS

A4.4/5.0
Behavior4/5

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

Beyond annotations (readOnlyHint, idempotentHint), adds that validation is offline, enforces first-digit rules, and returns specific failure reasons, but does not detail all possible failure scenarios.

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

Conciseness4/5

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

Well-structured with front-loaded purpose, algorithm, return format, use cases, and limitation; efficient but could be slightly shorter.

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

Completeness5/5

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

Combined with schema and annotations, provides complete guidance for usage, return format, and limitations, requiring no additional context.

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

Parameters4/5

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

Schema covers the one parameter with format and example; description adds checksum algorithm and first-digit rules, enriching meaning beyond schema.

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

Purpose5/5

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

Specifies validation of Portuguese NIF with modulo-11 checksum, clearly distinguishing from sibling tools like validate_nif_es.

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

Usage Guidelines4/5

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

Lists concrete use cases (invoices, onboarding, compliance) and explicitly states it does not query the AT database, clarifying scope, though no explicit alternatives are mentioned.

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

validate_nif_esA
Read-onlyIdempotent

Validates Spanish tax identification numbers — NIF (DNI, 8 digits + check letter, for Spanish citizens), NIE (Número de Identidad de Extranjero, starts with X/Y/Z, for foreign residents), and CIF (Código de Identificación Fiscal, letter + 7 digits + control, for companies). Automatically detects the document type. Returns { valid: boolean, type: 'NIF'|'NIE'|'CIF', id: string }.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSpanish NIF, NIE or CIF. Examples: '12345678Z' (NIF), 'X1234567L' (NIE), 'B12345678' (CIF)

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYes
typeNo
idNo
reasonNo

TDQS

A4.3/5.0
Behavior4/5

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

The description adds value beyond annotations: it explains the automatic detection of document type and the return format (valid, type, id). Annotations already indicate read-only and idempotent behavior, but the description provides necessary behavioral details.

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

Conciseness5/5

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

The description is two sentences with no wasted words. It efficiently conveys the tool's purpose, types, and return format.

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

Completeness5/5

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

The tool has an output schema (mentioned in context) and the description covers the return structure. For a validation tool with one parameter, the description is complete and provides sufficient information for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents the parameter. The description adds meaning by explaining the supported ID formats and examples, going beyond the base baseline of 3.

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

Purpose5/5

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

The description clearly states the tool validates Spanish tax identification numbers and specifies three types (NIF, NIE, CIF) with brief format details. It distinguishes itself from sibling tools like 'validate_nif' by covering all three Spanish ID types.

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

Usage Guidelines3/5

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

The description provides clear context for when to use (for Spanish tax IDs) but does not explicitly state when not to use or mention alternatives. It implies use for Spanish IDs, but lacks exclusion guidance.

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

validate_partita_ivaA
Read-onlyIdempotent

Validates an Italian Partita IVA (VAT number for companies and self-employed) — an 11-digit number issued by the Italian Revenue Agency. Applies the official Luhn-variant checksum algorithm used by Italian tax authorities. Returns { valid: boolean, partita_iva: string } or { valid: false, reason: string }. Use when processing Italian B2B invoices, validating Italian suppliers, or any Italian business compliance workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
partita_ivaYes11-digit Italian Partita IVA, with or without spaces. Example: '12345670017'

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYes
partita_ivaNo
reasonNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true and idempotentHint=true, indicating safety. The description adds value by detailing the return format ({ valid: boolean, partita_iva: string } or { valid: false, reason: string }) and the checksum algorithm used. No contradictions with annotations.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the core purpose, and contains no redundant information. Every sentence contributes meaning (purpose, algorithm, return types, use cases). Ideal length for this simple tool.

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

Completeness5/5

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

Given one parameter with full schema coverage and an output schema (indicated by context signals), the description covers input format, algorithm, return shape, and use cases. It is fully sufficient for an agent to understand and invoke the tool correctly.

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

Parameters3/5

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

The input schema has 100% coverage, describing the parameter with an example and allowing spaces. The description does not significantly add new meaning beyond the schema; it reiterates the 11-digit nature but does not provide additional constraints or format details not already in the schema.

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

Purpose5/5

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

The description clearly states the tool validates an Italian Partita IVA (VAT number), specifies it is an 11-digit number, and mentions the official Luhn-variant checksum algorithm. It effectively distinguishes itself from sibling tools that validate other country-specific identifiers (e.g., validate_vat_de, validate_tva_fr).

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool: 'processing Italian B2B invoices, validating Italian suppliers, or any Italian business compliance workflow.' While it does not explicitly mention when not to use it or list alternatives, the context from sibling tools (all country-specific) makes the usage clear.

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

validate_postal_codeA
Read-onlyIdempotent

Validates a postal code format for a given European country using the official pattern for that country. Returns { valid: boolean, postal_code: string, country: string, format: string }. Supports PT (4+3 digit), ES (5 digit), FR (5 digit), DE (5 digit), IT (5 digit), NL (4 digits + 2 letters), BE (4 digit), PL (5+2 digit), SE (5 digit), AT (4 digit), IE (Eircode 3+4), GR (5 digit), HU (4 digit), RO (6 digit), UK (complex alphanumeric). Use in e-commerce checkout validation, address verification, or logistics workflows.

ParametersJSON Schema
NameRequiredDescriptionDefault
postal_codeYesPostal code to validate. Example: '1000-001' for PT, '28001' for ES, 'SW1A 1AA' for UK
country_codeYesTwo-letter ISO country code. Example: 'PT', 'DE', 'UK'

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYes
postal_codeNo
countryNo
formatNo
reasonNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already provide readOnlyHint and idempotentHint, indicating safe and idempotent operation. The description adds value by specifying the return structure (valid, postal_code, country, format) and listing supported country formats, which goes beyond what annotations provide. No contradictions.

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

Conciseness4/5

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

The description is concise and packs necessary information (supported countries, formats, use cases) into a single paragraph. It could be slightly better structured (e.g., bullet points for countries) but is efficient and front-loaded with purpose.

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

Completeness5/5

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

Given the complexity of multiple country patterns, the description covers purpose, parameters, output structure, and use cases thoroughly. The output schema is mentioned, and annotations handle safety. No gaps remain for an agent to select and invoke this tool correctly.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds significant context: example postal codes for various countries, clarification that country_code is two-letter ISO, and details of the return format. This enhances understanding beyond the schema alone.

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

Purpose5/5

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

The description clearly states the tool validates postal code format for European countries using official patterns, lists supported countries and formats, and mentions use cases (e-commerce, address verification, logistics). It distinguishes itself from sibling validation tools like validate_iban or validate_nif by focusing specifically on postal codes.

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

Usage Guidelines4/5

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

The description implies usage through listed supported countries and example use cases, but does not explicitly state when to use versus alternatives or when not to use. However, given the specificity of postal code validation, the guidance is clear enough for an agent.

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

validate_siretA
Read-onlyIdempotent

Validates a French SIRET (14-digit company establishment number) using the official Luhn algorithm. The first 9 digits are the SIREN (company identifier) and the last 5 identify the specific establishment. Returns { valid: boolean, siren: string, establishment: string, siret: string }. Handles the La Poste special case automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
siretYes14-digit French SIRET, with or without spaces/dashes. Example: '732 829 320 00074'

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYes
sirenNo
establishmentNo
siretNo
reasonNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnly and idempotent. The description adds behavioral context beyond annotations: mentions the Luhn algorithm, return fields, and automatic handling of the La Poste special case. No contradictions.

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

Conciseness5/5

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

Three focused sentences with no fluff. Front-loaded with the main purpose, then details on structure, return, and special case handling. Every sentence adds value.

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

Completeness5/5

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

Given the tool's simplicity (single parameter) and the presence of an output schema, the description covers all necessary information: purpose, input format, output fields, and a special case. No gaps.

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

Parameters4/5

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

The single parameter 'siret' has 100% schema coverage, but the description adds meaning beyond the schema by explaining the SIRET structure (SIREN + establishment) and providing an example with spaces/dashes.

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

Purpose5/5

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

The description clearly states the tool validates a French SIRET using the Luhn algorithm, explains its structure (SIREN + establishment), and lists the return fields. It is specific and distinct from sibling validation tools for other identifiers.

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

Usage Guidelines4/5

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

The description implicitly indicates when to use this tool (when a SIRET number needs validation), but does not explicitly compare to alternatives or provide when-not usage. The sibling tools are for different identifier types, so 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.

validate_tva_frA
Read-onlyIdempotent

Validates a French TVA intracom (VAT) number — format 'FR' + 2 alphanumeric key characters + 9-digit SIREN. Returns { valid: boolean, key: string, siren: string, tva: string }. When the key is numeric, validates using the official formula: key = (12 + 3 × (SIREN mod 97)) mod 97.

ParametersJSON Schema
NameRequiredDescriptionDefault
tvaYesFrench TVA intracom number. Example: 'FR40303265045'

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYes
keyNo
sirenNo
tvaNo
reasonNo
noteNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint and idempotentHint. The description adds transparency by detailing the validation formula for numeric keys and the return structure, going beyond what annotations provide without contradiction.

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

Conciseness5/5

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

Two sentences that are perfectly concise: the first defines the function and format, the second covers validation logic and return shape. No redundant information.

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

Completeness5/5

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

Given the output schema is described in the description, annotations cover safety, and no nested objects, the description is complete for an agent to understand invocation and outcome.

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

Parameters4/5

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

Schema description coverage is 100%. The description adds value by providing an example and explaining the format requirement, reinforcing what the schema states.

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

Purpose5/5

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

The description clearly states it validates a French TVA intracom number, specifies the required format 'FR' + 2 alphanumeric key + 9-digit SIREN, and lists return fields. It distinctly sets itself apart from sibling tools that validate VAT numbers for other countries.

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

Usage Guidelines4/5

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

The description implies usage for French VAT validation without explicit when-to-use or when-not-to-use guidance. However, given sibling tools are other country VAT validators, the context is clear enough for an agent to select this tool for French numbers.

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

validate_vat_deA
Read-onlyIdempotent

Validates a German VAT identification number (Umsatzsteuer-Identifikationsnummer, USt-IdNr) — format 'DE' followed by 9 digits. Verifies the format and applies the official ISO 7064 MOD-11-10 checksum algorithm. Returns { valid: boolean, vat_number: string, country: 'DE' } or { valid: false, reason: string }. Use when processing German invoices, validating German suppliers for intra-EU transactions, or any B2B workflow involving German companies.

ParametersJSON Schema
NameRequiredDescriptionDefault
vat_numberYesGerman VAT number with or without spaces. Example: 'DE123456789'

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYes
vat_numberNo
countryNo
reasonNo

TDQS

A5/5.0
Behavior5/5

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

Annotations already indicate readOnly and idempotent. Description adds the validation algorithm (ISO 7064 MOD-11-10) and return shape. No contradictions.

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

Conciseness5/5

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

Concise, well-structured, front-loaded with purpose and format. Each sentence adds value without redundancy.

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

Completeness5/5

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

Fully covers the tool's behavior, input, and output. No missing aspects for a single-parameter validation tool.

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

Parameters5/5

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

Schema coverage is 100%, but description adds semantic details: format explanation, allowance of spaces, and link to official algorithm. Enhances understanding beyond schema.

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

Purpose5/5

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

The description clearly states it validates a German VAT number, specifies the format 'DE' followed by 9 digits, and mentions the checksum algorithm. It differentiates from sibling validation tools by being country-specific.

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

Usage Guidelines5/5

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

Explicitly provides use cases: processing German invoices, validating German suppliers for intra-EU transactions, and B2B workflows involving German companies. No exclusion mentioned, but clear context given.

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

validate_vat_ukA
Read-onlyIdempotent

Validates a UK VAT registration number — format 'GB' followed by 9 digits (standard), 12 digits (branch traders), or 'GD'/'HA' followed by 3 digits (government/health authorities). Applies the official HMRC modulo-97 algorithm for 9-digit numbers. Returns { valid: boolean, vat_number: string, type: string, country: 'GB' }. Use when processing UK invoices, validating UK suppliers post-Brexit, or any B2B workflow involving UK VAT numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
vat_numberYesUK VAT number with or without spaces. Example: 'GB123456789' or '123456789'

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYes
vat_numberNo
typeNo
countryNo
reasonNo

TDQS

A4.7/5.0
Behavior5/5

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

Disclosures beyond annotations: modulo-97 algorithm, return shape, and format variants. No contradictions.

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

Conciseness5/5

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

Two concise sentences with clear structure: function, algorithm, usage. No wasted words.

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

Completeness5/5

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

Complete for a simple validation tool: covers format, algorithm, usage, and output. No missing essential details.

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

Parameters4/5

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

Schema covers parameter well (100% coverage). Description adds value by detailing format variations and spaces allowed, improving clarity.

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

Purpose5/5

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

Clearly states it validates UK VAT numbers with specific format and algorithm, distinguishing it from sibling tools for other countries.

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

Usage Guidelines4/5

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

Provides explicit use cases (UK invoices, post-Brexit, B2B workflows), but lacks when-not or alternative tools.

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

TDQS

A4.3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: VAT calculations, working days, holidays, validations per country/ID type, etc. Even overlapping tools like calculate_vat_amount and calculate_vat_breakdown differ in output granularity. No ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern: get_, calculate_, validate_, suggest_, format_. No mixing of styles; predictable and intuitive.

Tool Count4/5

28 tools is slightly high but still reasonable for the broad domain of European business compliance. Each tool addresses a distinct subdomain (VAT, holidays, ID validation, etc.), so the count is justified.

Completeness4/5

Covers most key areas: VAT calc/rates, working days/holidays, invoice requirements, payment terms, e-invoicing, and ID validation for multiple countries. Minor gaps (e.g., missing some EU member VAT rates, no currency conversion) but generally thorough.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Latin American business compliance suite — 28 tools for tax ID validation (CPF, CNPJ, RFC, RUT, CUIT, NIT), banking (PIX, CLABE, CBU), VAT rules, e-invoicing (NF-e, CFDI, DTE), holidays, and labor calendar across Brazil, Mexico, Chile, Argentina, and Colombia.
    28
  • A
    license
    A
    quality
    B
    maintenance
    The deterministic fact-verification layer for AI agents. Validates the structured facts an agent emits — IBANs, payment cards, VAT and national tax IDs, crypto and bank addresses, domains, emails, phone numbers, securities and academic identifiers, plus dates, currencies and holidays — against checksums and curated authoritative data, not guesses.
    56
    1
    Apache 2.0
  • A
    license
    B
    quality
    C
    maintenance
    Enables AI assistants to answer tax compliance questions (VAT, sales tax, GST) and validate EU VAT numbers in real time via the VIES registry.
    2
    17
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/josemvelez78/mcp-europe-business'

If you have feedback or need assistance with the MCP directory API, please join our Discord server