Skip to main content
Glama

Imperio — Italian Tax & Compliance Tools

Calcola IVA

calc_iva
Read-onlyIdempotent

Calcola l'IVA italiana su un imponibile (aliquote 22/10/5/4/0/esente/fuori campo), con ritenuta d'acconto opzionale (autonomi 20%, agenti 11,5%), e decide la TERRITORIALITÀ delle operazioni con l'estero: beni o servizi, impresa o privato, UE o extra-UE → imponibile in Italia, non imponibile, non soggetta o IVA del paese di destinazione (aliquota ordinaria ufficiale TEDB dei 27 Stati), con Natura FatturaPA, annotazione in fattura e norma. Soglia UE di 10.000 € non dichiarata → due scenari calcolati, mai un numero scelto al posto tuo. Le norme citate seguono la data dell'operazione: DPR 633/72 fino al 31/12/2026, Testo unico IVA dal 1/1/2027. Gestisce le DUE basi imponibili della fattura di un professionista (contributo integrativo cassa solo nella base IVA, rivalsa INPS in entrambe). Gratis (€0), deterministico, nessun login richiesto.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
oggettoNoPer intraUE/extraUE. Cambia il regime: cessione di beni intraUE B2B = non imponibile (N3.2, «operazione non imponibile»); servizi B2B = non soggetti (N2.1, «inversione contabile»). Obbligatorio verso un privato UE.
imponibileYesCompenso/corrispettivo in EUR (es. 1000), AL NETTO del contributo integrativo cassa e della rivalsa INPS: quelli si aggiungono con i due campi dedicati.
aliquota_ivaNoAliquota IVA (default 22).
con_ritenutaNoApplica la ritenuta d'acconto (default false).
tipo_ritenutaNoTipo ritenuta se con_ritenuta=true (autonomo 20% | agente 11,5%).
tipo_servizioNoPer oggetto='servizi'. generico = regola generale (default assunto, e dichiarato); elettronico = telecomunicazione, teleradiodiffusione, servizi elettronici; speciale = immobili, trasporti, ristorazione, eventi, noleggio mezzi, intermediazione, lavorazioni su beni mobili — il tool NON calcola il luogo e lo dice, con le norme.
data_operazioneNoAAAA-MM-GG, default oggi. Decide la norma citata: DPR 633/72 e DL 331/93 fino al 31/12/2026, Testo unico IVA (D.Lgs. 10/2026) dal 1/1/2027.
tipo_operazioneNoTipo operazione (default b2b). intraUE ESIGE `cessionario_soggetto_iva`; verso un privato UE esige anche `oggetto`. extraUE senza `oggetto` è trattata come esportazione di beni (lo dichiara nei `presupposti`); per i servizi dichiara `oggetto` e `cessionario_soggetto_iva`: verso un privato extra-UE l'IVA di regola è italiana.
rivalsa_inps_pctNoAliquota % della rivalsa INPS gestione separata addebitata in fattura (default 0). Per legge 4 (art. 1 c. 212 L. 662/1996). Entra in ENTRAMBE le basi.
paese_destinazioneNoISO2 del paese del cliente ('EL' Grecia; 'XI' Irlanda del Nord = UE per i soli beni). Serve all'aliquota di destinazione sopra soglia.
servizio_7_septiesNoServizi a privato extra-UE: true se il servizio è fra quelli dell'art. 7-septies (consulenza, pubblicità, dati, finanziari, personale, noleggio beni mobili…): non soggetto.
soglia_ue_superataNoBeni a distanza e servizi elettronici a privati UE: true se vendite a distanza + servizi TTE a privati UE hanno superato 10.000 € (anno precedente o in corso) OPPURE se hai optato per l'IVA di destinazione. Se non la dichiari ricevi DUE scenari calcolati e `iva_importo: null`.
vendita_a_distanzaNoBeni a privato UE: true se il trasporto è a cura del cedente o per suo conto (default assunto true, e dichiarato). false = il cliente trasporta da sé → IVA italiana.
cessionario_soggetto_ivaNoOBBLIGATORIO per tipo_operazione='intraUE' (e per extraUE con oggetto='servizi'). true = soggetto passivo con P.IVA valida al VIES: beni non imponibili (N3.2), servizi non soggetti (N2.1). false = consumatore privato: l'IVA è italiana o del paese di destinazione a seconda di `oggetto`, `vendita_a_distanza`, `soglia_ue_superata` e `tipo_servizio`.
aliquota_destinazione_pctNoAliquota del paese di destinazione, se il bene vi ha un'aliquota RIDOTTA. Senza, si usa l'ordinaria ufficiale (TEDB) e la risposta lo dichiara.
contributo_integrativo_pctNoAliquota % del contributo integrativo della cassa professionale (default 0 = nessuna cassa). Tipicamente 4; 5 per i geometri; 2 per ENPAP/ENPAV — leggila dal regolamento della cassa: il tool non la deduce da ATECO. Entra nella base IVA ma NON in quella della ritenuta.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • changedInput schema / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "tipo_operazione": {
      -        "enum": [
      -          "b2b",
      -          "b2c",
      -          "extraUE",
      -          "PA"
      -        ]
      -      }
      -    }
      -  },
      -  {
      -    "properties": {
      -      "cessionario_soggetto_iva": {
      -        "type": "boolean"
      -      },
      -      "tipo_operazione": {
      -        "const": "intraUE"
      -      }
      -    },
      -    "required": [
      -      "tipo_operazione",
      -      "cessionario_soggetto_iva"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "tipo_operazione": {
      +        "enum": [
      +          "b2b",
      +          "b2c",
      +          "PA"
      +        ]
      +      }
      +    }
      +  },
      +  {
      +    "properties": {
      +      "oggetto": {
      +        "const": "beni"
      +      },
      +      "tipo_operazione": {
      +        "const": "extraUE"
      +      }
      +    },
      +    "required": [
      +      "tipo_operazione"
      +    ]
      +  },
      +  {
      +    "properties": {
      +      "cessionario_soggetto_iva": {
      +        "type": "boolean"
      +      },
      +      "oggetto": {
      +        "const": "servizi"
      +      },
      +      "tipo_operazione": {
      +        "const": "extraUE"
      +      }
      +    },
      +    "required": [
      +      "tipo_operazione",
      +      "oggetto",
      +      "cessionario_soggetto_iva"
      +    ]
      +  },
      +  {
      +    "properties": {
      +      "cessionario_soggetto_iva": {
      +        "const": true
      +      },
      +      "tipo_operazione": {
      +        "const": "intraUE"
      +      }
      +    },
      +    "required": [
      +      "tipo_operazione",
      +      "cessionario_soggetto_iva"
      +    ]
      +  },
      +  {
      +    "properties": {
      +      "cessionario_soggetto_iva": {
      +        "const": false
      +      },
      +      "oggetto": {
      +        "enum": [
      +          "beni",
      +          "servizi"
      +        ]
      +      },
      +      "tipo_operazione": {
      +        "const": "intraUE"
      +      }
      +    },
      +    "required": [
      +      "tipo_operazione",
      +      "cessionario_soggetto_iva",
      +      "oggetto"
      +    ]
      +  }
      +]
    • addedInput schema / properties / aliquota_destinazione_pct
      Added value: +{
      +  "description": "Aliquota del paese di destinazione, se il bene vi ha un'aliquota RIDOTTA. Senza, si usa l'ordinaria ufficiale (TEDB) e la risposta lo dichiara.",
      +  "maximum": 30,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / cessionario_soggetto_iva / description
      Previous value: -"OBBLIGATORIO per tipo_operazione='intraUE', dove il regime NON è deducibile senza sapere chi è il cessionario. true = soggetto passivo con P.IVA valida al VIES (art. 41 DL 331/93, non imponibile). false = consumatore privato UE: si applica l'OSS con l'aliquota del paese di destinazione, che questo strumento NON conosce e non inventa — riceverai la spiegazione, non un numero. Ignorato per le altre operazioni."New value: +"OBBLIGATORIO per tipo_operazione='intraUE' (e per extraUE con oggetto='servizi'). true = soggetto passivo con P.IVA valida al VIES: beni non imponibili (N3.2), servizi non soggetti (N2.1). false = consumatore privato: l'IVA è italiana o del paese di destinazione a seconda di `oggetto`, `vendita_a_distanza`, `soglia_ue_superata` e `tipo_servizio`."
    • addedInput schema / properties / data_operazione
      Added value: +{
      +  "description": "AAAA-MM-GG, default oggi. Decide la norma citata: DPR 633/72 e DL 331/93 fino al 31/12/2026, Testo unico IVA (D.Lgs. 10/2026) dal 1/1/2027.",
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / oggetto
      Added value: +{
      +  "description": "Per intraUE/extraUE. Cambia il regime: cessione di beni intraUE B2B = non imponibile (N3.2, «operazione non imponibile»); servizi B2B = non soggetti (N2.1, «inversione contabile»). Obbligatorio verso un privato UE.",
      +  "enum": [
      +    "beni",
      +    "servizi"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / paese_destinazione
      Added value: +{
      +  "description": "ISO2 del paese del cliente ('EL' Grecia; 'XI' Irlanda del Nord = UE per i soli beni). Serve all'aliquota di destinazione sopra soglia.",
      +  "pattern": "^[A-Za-z]{2}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / servizio_7_septies
      Added value: +{
      +  "description": "Servizi a privato extra-UE: true se il servizio è fra quelli dell'art. 7-septies (consulenza, pubblicità, dati, finanziari, personale, noleggio beni mobili…): non soggetto.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / soglia_ue_superata
      Added value: +{
      +  "description": "Beni a distanza e servizi elettronici a privati UE: true se vendite a distanza + servizi TTE a privati UE hanno superato 10.000 € (anno precedente o in corso) OPPURE se hai optato per l'IVA di destinazione. Se non la dichiari ricevi DUE scenari calcolati e `iva_importo: null`.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / tipo_operazione / description
      Previous value: -"Tipo operazione (default b2b). extraUE azzera l'IVA (art. 8 DPR 633/72). intraUE la azzera SOLO verso un soggetto passivo (art. 41 DL 331/93): per questo esige `cessionario_soggetto_iva`, e verso un privato UE il tool non calcola l'OSS — lo dichiara."New value: +"Tipo operazione (default b2b). intraUE ESIGE `cessionario_soggetto_iva`; verso un privato UE esige anche `oggetto`. extraUE senza `oggetto` è trattata come esportazione di beni (lo dichiara nei `presupposti`); per i servizi dichiara `oggetto` e `cessionario_soggetto_iva`: verso un privato extra-UE l'IVA di regola è italiana."
    • addedInput schema / properties / tipo_servizio
      Added value: +{
      +  "description": "Per oggetto='servizi'. generico = regola generale (default assunto, e dichiarato); elettronico = telecomunicazione, teleradiodiffusione, servizi elettronici; speciale = immobili, trasporti, ristorazione, eventi, noleggio mezzi, intermediazione, lavorazioni su beni mobili — il tool NON calcola il luogo e lo dice, con le norme.",
      +  "enum": [
      +    "generico",
      +    "elettronico",
      +    "speciale"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / vendita_a_distanza
      Added value: +{
      +  "description": "Beni a privato UE: true se il trasporto è a cura del cedente o per suo conto (default assunto true, e dichiarato). false = il cliente trasporta da sé → IVA italiana.",
      +  "type": "boolean"
      +}
  2. Changed1 schema field changed
    • changedInput schema / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "tipo_operazione": {
      -        "enum": [
      -          "b2b",
      -          "b2c",
      -          "extraUE",
      -          "PA"
      -        ]
      -      }
      -    }
      -  },
      -  {
      -    "properties": {
      -      "cessionario_soggetto_iva": {
      -        "const": true
      -      },
      -      "tipo_operazione": {
      -        "const": "intraUE"
      -      }
      -    },
      -    "required": [
      -      "tipo_operazione",
      -      "cessionario_soggetto_iva"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "tipo_operazione": {
      +        "enum": [
      +          "b2b",
      +          "b2c",
      +          "extraUE",
      +          "PA"
      +        ]
      +      }
      +    }
      +  },
      +  {
      +    "properties": {
      +      "cessionario_soggetto_iva": {
      +        "type": "boolean"
      +      },
      +      "tipo_operazione": {
      +        "const": "intraUE"
      +      }
      +    },
      +    "required": [
      +      "tipo_operazione",
      +      "cessionario_soggetto_iva"
      +    ]
      +  }
      +]
  3. Changed3 schema fields changed
    • addedInput schema / anyOf
      Added value: +[
      +  {
      +    "properties": {
      +      "tipo_operazione": {
      +        "enum": [
      +          "b2b",
      +          "b2c",
      +          "extraUE",
      +          "PA"
      +        ]
      +      }
      +    }
      +  },
      +  {
      +    "properties": {
      +      "cessionario_soggetto_iva": {
      +        "const": true
      +      },
      +      "tipo_operazione": {
      +        "const": "intraUE"
      +      }
      +    },
      +    "required": [
      +      "tipo_operazione",
      +      "cessionario_soggetto_iva"
      +    ]
      +  }
      +]
    • addedInput schema / properties / cessionario_soggetto_iva
      Added value: +{
      +  "description": "OBBLIGATORIO per tipo_operazione='intraUE', dove il regime NON è deducibile senza sapere chi è il cessionario. true = soggetto passivo con P.IVA valida al VIES (art. 41 DL 331/93, non imponibile). false = consumatore privato UE: si applica l'OSS con l'aliquota del paese di destinazione, che questo strumento NON conosce e non inventa — riceverai la spiegazione, non un numero. Ignorato per le altre operazioni.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / tipo_operazione / description
      Previous value: -"Tipo operazione (default b2b). intraUE/extraUE azzerano l'IVA (non imponibile)."New value: +"Tipo operazione (default b2b). extraUE azzera l'IVA (art. 8 DPR 633/72). intraUE la azzera SOLO verso un soggetto passivo (art. 41 DL 331/93): per questo esige `cessionario_soggetto_iva`, e verso un privato UE il tool non calcola l'OSS — lo dichiara."
  4. Changed2 schema fields changed
    • addedInput schema / properties / imponibile / maximum
      Added value: +1000000000000
    • addedInput schema / properties / imponibile / minimum
      Added value: +0.01
  5. Changed3 schema fields changed
    • addedInput schema / properties / contributo_integrativo_pct
      Added value: +{
      +  "description": "Aliquota % del contributo integrativo della cassa professionale (default 0 = nessuna cassa). Tipicamente 4; 5 per i geometri; 2 per ENPAP/ENPAV — leggila dal regolamento della cassa: il tool non la deduce da ATECO. Entra nella base IVA ma NON in quella della ritenuta.",
      +  "maximum": 5,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / imponibile / description
      Previous value: -"Importo imponibile in EUR (es. 1000)."New value: +"Compenso/corrispettivo in EUR (es. 1000), AL NETTO del contributo integrativo cassa e della rivalsa INPS: quelli si aggiungono con i due campi dedicati."
    • addedInput schema / properties / rivalsa_inps_pct
      Added value: +{
      +  "description": "Aliquota % della rivalsa INPS gestione separata addebitata in fattura (default 0). Per legge 4 (art. 1 c. 212 L. 662/1996). Entra in ENTRAMBE le basi.",
      +  "maximum": 5,
      +  "minimum": 0,
      +  "type": "number"
      +}
  6. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, but the description adds substantial behavioral context: it states the tool is deterministic, free, requires no login, and refuses to choose a threshold for the user, computing two scenarios instead. It also openly admits when it does not calculate the place for certain services. This goes well 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?

The description is dense but well-structured and front-loaded with the primary function. Every sentence provides essential information, and the use of semicolons and parentheses keeps it organized without verbosity. It efficiently covers multiple complex aspects 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 high complexity (16 parameters, 5 enums, no output schema), the description is remarkably complete. It covers the main logic, edge cases, the threshold behavior, legislation references, dual bases, territoriality rules, and even hints at output structure (Natura FatturaPA, annotation, norma, and the two scenarios with iva_importo: null). Nothing essential is missing for an agent to understand the tool's behavior.

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 meaning by explaining the overall logic that ties parameters together, such as the dual bases for professionals (contributo integrativo in IVA base only, rivalsa INPS in both) and the dual scenario when soglia_ue_superata is not declared. This adds value beyond the per-parameter schema descriptions, so a 4 is justified.

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's purpose: calculating Italian VAT on a taxable amount with optional withholding tax, and determining territoriality for foreign transactions. It is specific with verbs and resources, and clearly differentiates from siblings like calc_reverse_charge or calc_split_payment through its comprehensive 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 provides clear context on when to use the tool (e.g., for VAT calculation including territoriality, for professionals with dual bases) and explains behaviors like the dual scenario for undecided EU threshold. However, it does not explicitly name alternatives or state when not to use it, so it misses the explicit exclusion that would warrant a 5.

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.

Resources