Skip to main content
Glama

Calculate EU AI Act Penalties

euaiact_calculate_penalty
Read-onlyIdempotent

Calculate the maximum EU AI Act fine from violation type, global turnover, and SME/SMC status, applying Art. 99 penalty tiers and the lower-of rule for reduced liability.

Instructions

Calculates the maximum possible fine for an EU AI Act violation based on violation type, global annual turnover, SME status and SMC (small mid-cap) status. Implements the Art. 99 penalty framework including the SME/startup lower-of rule (Art. 99(6), tiers 99(3)-(5)) and the narrower SMC rule (Art. 99(6a), tiers 99(4)-(5) only; no SMC cap on Art. 5 fines and none under Art. 101). Returns a comparative block so the agent can show the SME reduction to the user.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
is_smcNoWhether the entity is a small mid-cap (SMC): Art. 99(6a) applies the lower-of rule ONLY to the Art. 99(4) and 99(5) tiers, not to Art. 99(3) prohibited-practice fines and not to Art. 101
is_smeNoWhether the entity is an SME or startup (eligible for lower fines under Art. 99(6), covering paragraphs 3, 4 and 5)
violation_typeYesType of AI Act violation: 'prohibited' (Art. 5), 'high_risk' (Art. 99(4) operator/notified-body/transparency obligations), 'gpai' (Art. 101 general-purpose AI model provider infringements), or 'false_info' (Art. 99(5) misleading notified bodies or national competent authorities; GPAI-provider false information falls under Art. 101)
annual_turnover_eurYesGlobal annual turnover in EUR (a non-negative, finite number)

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
is_smcYes
is_smeYes
max_fineYes
comparativeNo
tier_detailsYes
violation_typeYes
annual_turnover_eurYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv1.5.0
    • changedInput schema / properties / annual_turnover_eur / description
      Previous value: -"Global annual turnover in EUR"New value: +"Global annual turnover in EUR (a non-negative, finite number)"
    • addedInput schema / properties / annual_turnover_eur / minimum
      Added value: +0
    • addedInput schema / properties / is_smc
      Added value: +{
      +  "default": false,
      +  "description": "Whether the entity is a small mid-cap (SMC): Art. 99(6a) applies the lower-of rule ONLY to the Art. 99(4) and 99(5) tiers, not to Art. 99(3) prohibited-practice fines and not to Art. 101",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / is_sme / description
      Previous value: -"Whether the entity is an SME or startup (eligible for lower fines under Art. 99(6))"New value: +"Whether the entity is an SME or startup (eligible for lower fines under Art. 99(6), covering paragraphs 3, 4 and 5)"
    • addedOutput schema / properties / is_smc
      Added value: +{
      +  "type": "boolean"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "violation_type",
      -  "is_sme",
      -  "annual_turnover_eur",
      -  "max_fine",
      -  "tier_details"
      -]New value: +[
      +  "violation_type",
      +  "is_sme",
      +  "is_smc",
      +  "annual_turnover_eur",
      +  "max_fine",
      +  "tier_details"
      +]
  2. Changed2 schema fields changedv1.3.0
    • changedInput schema / properties / violation_type / description
      Previous value: -"Type of AI Act violation: 'prohibited' (Art. 5), 'high_risk' (Annex III obligations), or 'false_info' (misleading regulators)"New value: +"Type of AI Act violation: 'prohibited' (Art. 5), 'high_risk' (Art. 99(4) operator/notified-body/transparency obligations), 'gpai' (Art. 101 general-purpose AI model provider infringements), or 'false_info' (Art. 99(5) misleading notified bodies or national competent authorities; GPAI-provider false information falls under Art. 101)"
    • changedInput schema / properties / violation_type / enum
      Previous value: -[
      -  "prohibited",
      -  "high_risk",
      -  "false_info"
      -]New value: +[
      +  "prohibited",
      +  "high_risk",
      +  "gpai",
      +  "false_info"
      +]
  3. First observedv1.1.5

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly, idempotent, not openWorld). The description adds substantial domain behavior: which articles govern which tiers, that SMC relief applies only to 99(4)-(5) and not to Art. 5 or Art. 101, and that output includes a comparative block. This is well beyond what the annotations convey.

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?

Three sentences, front-loaded with the core action before the legal detail. Dense EU-legalese, but every clause maps to behavior the agent needs; nothing is redundant filler.

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?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. What remains — the governing legal tiers, the SME/SMC lower-of logic, and the comparative output — is all supplied, so nothing an agent needs to call this correctly is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the per-field meaning is already documented, making 3 the baseline. The description nevertheless adds semantic value by explaining how the parameters interact — that SME status spans tiers 3-5 while SMC status is narrower — which clarifies the rule engine behind the enum and booleans.

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 opens with a precise verb+resource ('Calculates the maximum possible fine for an EU AI Act violation') and enumerates the inputs it depends on (violation type, turnover, SME/SMC status). No sibling tool performs penalty calculation, so it is trivially distinguished from the classify/obligations/deadlines 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?

Usage is clear from the statement that it implements the Art. 99 framework and returns a comparative block for showing the SME reduction. There are no competing siblings for penalty math, but the description never explicitly states when to reach for this tool versus answering via euaiact_answer_question or euaiact_get_article.

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