Skip to main content
Glama

Agent Decision & Evidence Tools (MCP + x402)

EU VAT decision engine

eu_vat_rules
Read-only

Place of supply, reverse charge, intra-Community supply or export, the rate, plus the EN 16931 VAT category code (BT-151), exemption reason code (BT-121) and invoice wording. Supplier/customer jurisdictions are always required; customer VAT validity, transaction type and OSS-threshold evidence are conditionally required when the selected VAT rule depends on them. Missing evidence is reported, not inferred.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
b2bNo
typeNoservice
customerYes
supplierYes
customer_vat_validNo
above_oss_thresholdNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
b2bNo
toolNo
errorNo
notesNo
chargedNoWhen present on an error, false means the failed result is uncharged.
messageNo
missingNo
receiptNo
settledNoWhen present on an error, false means no settlement occurred.
unknownNo
acceptedNo
decisionNo
retryableNo
charge_vatNo
checked_atNo
disclaimerNo
error_codeNo
extensionsNo
status_codeNo
supply_typeNo
did_you_meanNo
customer_in_euNo
missing_checksNo
invoice_note_deNo
invoice_note_enNo
legal_referenceNo
place_of_supplyNo
customer_countryNo
partial_evidenceNo
supplier_countryNo
vat_rate_percentNo
standard_rate_as_ofNo
standard_rate_sourceNo
supplier_country_nameNo
en16931_vat_category_codeNo
en16931_exemption_reason_codeNo
en16931_exemption_reason_textNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / above_oss_threshold
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • removedInput schema / properties / b2b / title
      Removed value: -"B2B"
    • removedInput schema / properties / customer / title
      Removed value: -"Customer"
    • addedInput schema / properties / customer_vat_valid
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • removedInput schema / properties / supplier / title
      Removed value: -"Supplier"
    • removedInput schema / properties / type / title
      Removed value: -"Type"
    • removedInput schema / title
      Removed value: -"eu_vat_rules_toolArguments"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "anyOf": [
      +    {
      +      "required": [
      +        "supplier_country",
      +        "supplier_country_name",
      +        "customer_country",
      +        "customer_in_eu",
      +        "b2b",
      +        "supply_type",
      +        "decision",
      +        "charge_vat",
      +        "vat_rate_percent",
      +        "place_of_supply",
      +        "en16931_vat_category_code",
      +        "en16931_exemption_reason_code",
      +        "en16931_exemption_reason_text",
      +        "invoice_note_en",
      +        "invoice_note_de",
      +        "legal_reference",
      +        "notes",
      +        "standard_rate_source",
      +        "standard_rate_as_of",
      +        "checked_at",
      +        "disclaimer",
      +        "receipt",
      +        "extensions"
      +      ]
      +    },
      +    {
      +      "required": [
      +        "error"
      +      ]
      +    }
      +  ],
      +  "description": "Structured result contract for eu_vat_rules. A success satisfies the documented success branch. A domain or tool error includes error and is not a successful settlement; unpaid x402 requirements are carried by the transport wrapper.",
      +  "properties": {
      +    "accepted": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "b2b": {
      +      "type": "boolean"
      +    },
      +    "charge_vat": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "charged": {
      +      "description": "When present on an error, false means the failed result is uncharged.",
      +      "type": "boolean"
      +    },
      +    "checked_at": {
      +      "type": "string"
      +    },
      +    "customer_country": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "customer_in_eu": {
      +      "type": "boolean"
      +    },
      +    "decision": {
      +      "type": "string"
      +    },
      +    "did_you_mean": {
      +      "additionalProperties": true,
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "disclaimer": {
      +      "type": "string"
      +    },
      +    "en16931_exemption_reason_code": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "en16931_exemption_reason_text": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "en16931_vat_category_code": {
      +      "type": "string"
      +    },
      +    "error": {
      +      "oneOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "additionalProperties": true,
      +          "properties": {
      +            "code": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "message": {
      +              "type": "string"
      +            },
      +            "param": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "type": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "message"
      +          ],
      +          "type": "object"
      +        }
      +      ]
      +    },
      +    "error_code": {
      +      "type": "string"
      +    },
      +    "extensions": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "delivery-receipt": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "how_to_verify": {
      +              "type": "string"
      +            },
      +            "issued_at": {
      +              "format": "date-time",
      +              "type": "string"
      +            },
      +            "issuer": {
      +              "type": "string"
      +            },
      +            "issuer_key": {
      +              "type": "string"
      +            },
      +            "key_id": {
      +              "type": "string"
      +            },
      +            "result_hash": {
      +              "type": "string"
      +            },
      +            "service": {
      +              "type": "string"
      +            },
      +            "signature": {
      +              "type": "string"
      +            },
      +            "signed_message": {
      +              "type": "string"
      +            },
      +            "standard": {
      +              "const": "eucompliance-receipt/2",
      +              "type": "string"
      +            },
      +            "subject": {
      +              "type": "string"
      +            },
      +            "valid_until": {
      +              "format": "date-time",
      +              "type": "string"
      +            },
      +            "verify_url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "standard",
      +            "service",
      +            "subject",
      +            "result_hash",
      +            "issued_at",
      +            "valid_until",
      +            "issuer",
      +            "issuer_key",
      +            "key_id",
      +            "verify_url",
      +            "how_to_verify",
      +            "signature",
      +            "signed_message"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "delivery-receipt"
      +      ],
      +      "type": "object"
      +    },
      +    "invoice_note_de": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "invoice_note_en": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "legal_reference": {
      +      "type": "string"
      +    },
      +    "message": {
      +      "type": "string"
      +    },
      +    "missing": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "missing_checks": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "notes": {
      +      "items": {},
      +      "type": "array"
      +    },
      +    "partial_evidence": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "place_of_supply": {
      +      "type": "string"
      +    },
      +    "receipt": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "how_to_verify": {
      +          "type": "string"
      +        },
      +        "issued_at": {
      +          "format": "date-time",
      +          "type": "string"
      +        },
      +        "issuer": {
      +          "type": "string"
      +        },
      +        "issuer_key": {
      +          "type": "string"
      +        },
      +        "key_id": {
      +          "type": "string"
      +        },
      +        "result_hash": {
      +          "type": "string"
      +        },
      +        "service": {
      +          "type": "string"
      +        },
      +        "signature": {
      +          "type": "string"
      +        },
      +        "signed_message": {
      +          "type": "string"
      +        },
      +        "standard": {
      +          "const": "eucompliance-receipt/2",
      +          "type": "string"
      +        },
      +        "subject": {
      +          "type": "string"
      +        },
      +        "valid_until": {
      +          "format": "date-time",
      +          "type": "string"
      +        },
      +        "verify_url": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "standard",
      +        "service",
      +        "subject",
      +        "result_hash",
      +        "issued_at",
      +        "valid_until",
      +        "issuer",
      +        "issuer_key",
      +        "key_id",
      +        "verify_url",
      +        "how_to_verify",
      +        "signature",
      +        "signed_message"
      +      ],
      +      "type": "object"
      +    },
      +    "retryable": {
      +      "type": "boolean"
      +    },
      +    "settled": {
      +      "description": "When present on an error, false means no settlement occurred.",
      +      "type": "boolean"
      +    },
      +    "standard_rate_as_of": {
      +      "type": "string"
      +    },
      +    "standard_rate_source": {
      +      "type": "string"
      +    },
      +    "status_code": {
      +      "type": "integer"
      +    },
      +    "supplier_country": {
      +      "type": "string"
      +    },
      +    "supplier_country_name": {
      +      "type": "string"
      +    },
      +    "supply_type": {
      +      "type": "string"
      +    },
      +    "tool": {
      +      "type": "string"
      +    },
      +    "unknown": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "vat_rate_percent": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context beyond annotations: it discloses that missing evidence is reported rather than inferred, and that some parameters are conditionally required depending on the selected VAT rule. This helps the agent predict the tool's handling of incomplete input.

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 compact and information-dense, with no filler or repetition. The first sentence front-loads the core outputs, and the second sentence covers input requirements and behavioral policy. Every sentence 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 an output schema exists, the description appropriately focuses on inputs and behavior rather than return structure. It covers the main decision outputs, required jurisdictions, conditional evidence, and the no-inference policy. The only notable gap is the absence of any mention of the b2b parameter, which is central to VAT treatment, though its name and default are reasonably self-explanatory.

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?

With 0% schema description coverage, the description must compensate, and it does partially: supplier/customer are characterized as jurisdictions, customer_vat_valid is mapped to 'customer VAT validity', type is glossed as 'transaction type', and above_oss_threshold is glossed as 'OSS-threshold evidence.' However, the b2b parameter is not explained, and the format or expected values of the string parameters are not described.

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 enumerates concrete outputs—place of supply, reverse charge, intra-Community supply/export, rate, VAT category code, exemption reason code, and invoice wording—making it clear this is a VAT decision engine. It could be stronger with an explicit verb like 'determines' or 'calculates,' but the resource and outputs are specific and distinguishable from validation-only 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 Guidelines2/5

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

The description states input requirements and conditional evidence needs, but it does not explicitly say when to prefer this tool over siblings such as validate_vat, check_counterparty_eu, or validate_einvoice_eu. There is no when-not-to-use guidance or reference to alternative tools, leaving the agent to infer selection criteria.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.