Skip to main content
Glama

Imperio — Italian Tax & Compliance Tools

F24 Precompilato (righe Erario / INPS / IMU)

compose_f24
Read-onlyIdempotent

Compone le RIGHE del modello F24 (sezione Erario, INPS, IMU) con i codici tributo e le causali ufficiali, a partire dagli importi già calcolati: imposta sostitutiva e contributi del regime forfettario (codici tributo 1790 = acconto prima rata, 1791 = acconto seconda rata o unica soluzione, 1792 = saldo; causali INPS PXX = Gestione Separata senza altra copertura, AF = artigiani sul minimale, AP = artigiani sull'eccedenza, CF = commercianti sul minimale, CP = commercianti sull'eccedenza) oppure IMU (3912 = abitazione principale e pertinenze (A/1, A/8, A/9), 3918 = altri fabbricati, 3914 = terreni, 3916 = aree fabbricabili; per il gruppo D 3925 = quota Stato (7,6‰) e 3930 = incremento Comune; con il codice ente catastale del Comune) oppure l'IMPOSTA DI BOLLO sulle fatture elettroniche di un trimestre (2521 = primo trimestre, 2522 = secondo trimestre, 2523 = terzo trimestre, 2524 = quarto trimestre; scadenze 31/05 · 30/09 · 30/11 · 28/02, con la regola di differimento sotto 5.000 €). Per il forfettario la risposta porta anche regola_acconti: le due rate al 50% valgono per chi ha un'attività con ISA approvati (anche in forfettario), altrimenti 40% e 60% — con la norma e la base di calcolo. Restituisce righe strutturate (sezione, codice, anno, importo, scadenza indicativa) + una resa testuale. COMPONIBILE: l'input tipico sono gli output di calc_forfettario (imposta_sostitutiva.importo, contributi_inps), calc_imu (imu_dovuta, acconto_giugno, saldo_dicembre) e parse_fatturapa (quante fatture hanno bollo_analisi.dovuto = true). NON genera il modello ministeriale F24 — né PDF né facsimile ufficiale: è una compilazione INDICATIVA che non sostituisce il commercialista né la verifica su Agenzia delle Entrate. Gratis (€0), deterministico, nessun login richiesto.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
imuNoRichiesto quando kind='imu'. Campi dall'output di calc_imu.
kindYesDominio da comporre: 'forfettario' (Erario + INPS), 'imu' (sezione IMU e altri tributi locali) oppure 'bollo' (imposta di bollo sulle fatture elettroniche di un trimestre).
bolloNoRichiesto quando kind='bollo'. Chiude la catena parse → bollo → F24: conta quante fatture del trimestre risultano soggette a bollo secondo `parse_fatturapa` (campo `bollo_analisi.dovuto` di ciascuna fattura) e componi la riga di versamento.
forfettarioNoRichiesto quando kind='forfettario'. Campi dall'output di calc_forfettario.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / forfettario / properties / startup / description
      Previous value: -"Aliquota startup 5% (nuova attività): nel 1° anno solo saldo, niente acconti."New value: +"Primo anno di attività: nessun acconto, si versa solo il saldo. Non è l'aliquota del 5% (che vale cinque anni): qui l'imposta arriva già calcolata."
  2. Changed2 schema fields changed
    • changedInput schema / properties / bollo / properties / trimestre / description
      Previous value: -"Trimestre solare di riferimento. Determina il codice tributo: 1→2521, 2→2522, 3→2523, 4→2524."New value: +"Trimestre solare di riferimento (1-4). Determina il codice tributo: 2521 = primo trimestre, 2522 = secondo trimestre, 2523 = terzo trimestre, 2524 = quarto trimestre."
    • changedInput schema / properties / forfettario / properties / gestione_inps / description
      Previous value: -"Gestione previdenziale (default gestione_separata) — determina la causale INPS (PXX | AF/AP | CF/CP)."New value: +"Gestione previdenziale (default gestione_separata) — determina le causali INPS (PXX = Gestione Separata senza altra copertura; AF = artigiani sul minimale, AP = artigiani sull'eccedenza; CF = commercianti sul minimale, CP = commercianti sull'eccedenza). Con cassa_privata nessuna riga INPS: i contributi non si versano in F24."
  3. Changed1 schema field changed
    • addedInput schema / properties / bollo / anyOf
      Added value: +[
      +  {
      +    "required": [
      +      "numero_fatture"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "importo"
      +    ]
      +  }
      +]
  4. Changed1 schema field changed
    • addedInput schema / allOf
      Added value: +[
      +  {
      +    "if": {
      +      "properties": {
      +        "kind": {
      +          "const": "forfettario"
      +        }
      +      },
      +      "required": [
      +        "kind"
      +      ]
      +    },
      +    "then": {
      +      "required": [
      +        "forfettario"
      +      ]
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "kind": {
      +          "const": "imu"
      +        }
      +      },
      +      "required": [
      +        "kind"
      +      ]
      +    },
      +    "then": {
      +      "required": [
      +        "imu"
      +      ]
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "kind": {
      +          "const": "bollo"
      +        }
      +      },
      +      "required": [
      +        "kind"
      +      ]
      +    },
      +    "then": {
      +      "required": [
      +        "bollo"
      +      ]
      +    }
      +  }
      +]
  5. Changed3 schema fields changed
    • addedInput schema / properties / bollo
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Richiesto quando kind='bollo'. Chiude la catena parse → bollo → F24: conta quante fatture del trimestre risultano soggette a bollo secondo `parse_fatturapa` (campo `bollo_analisi.dovuto` di ciascuna fattura) e componi la riga di versamento.",
      +  "properties": {
      +    "anno": {
      +      "description": "Anno delle fatture (es. 2026). NB: il IV trimestre si versa entro il 28 febbraio dell'anno SUCCESSIVO.",
      +      "maximum": 2100,
      +      "minimum": 2019,
      +      "type": "integer"
      +    },
      +    "importo": {
      +      "description": "Importo del bollo già calcolato in euro. Alternativo a `numero_fatture`. Se passi entrambi e non tornano, vince questo e la discrepanza viene segnalata in nota.",
      +      "maximum": 10000000,
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "importo_trimestri_precedenti": {
      +      "description": "Bollo già dovuto per i trimestri precedenti dello stesso anno (default 0). Serve alla regola di differimento, che guarda il CUMULATO: sotto 5.000 € il versamento del I trimestre può slittare al 30/09 e quello di I+II al 30/11 (art. 3 DL 73/2022). III e IV trimestre non sono mai differibili.",
      +      "maximum": 10000000,
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "numero_fatture": {
      +      "description": "Quante fatture del trimestre sono soggette a bollo (2,00 € ciascuna). Alternativo a `importo`: fornire almeno uno dei due.",
      +      "maximum": 1000000,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "trimestre": {
      +      "description": "Trimestre solare di riferimento. Determina il codice tributo: 1→2521, 2→2522, 3→2523, 4→2524.",
      +      "maximum": 4,
      +      "minimum": 1,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "trimestre",
      +    "anno"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / properties / kind / description
      Previous value: -"Dominio da comporre: 'forfettario' (Erario + INPS) oppure 'imu' (sezione IMU e altri tributi locali)."New value: +"Dominio da comporre: 'forfettario' (Erario + INPS), 'imu' (sezione IMU e altri tributi locali) oppure 'bollo' (imposta di bollo sulle fatture elettroniche di un trimestre)."
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "forfettario",
      -  "imu"
      -]New value: +[
      +  "forfettario",
      +  "imu",
      +  "bollo"
      +]
  6. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world. Beyond that the description adds determinism, €0 cost, no login, the 'indicativa / non sostituisce il commercialista' disclaimer, and the composed output shape (structured rows + textual render). It adds real context but the safety profile is largely already covered by 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?

Front-loaded with the core purpose, then the code reference and the composition chain. It is long and dense (extensive tax-code enumerations that partly duplicate schema enum text), but every block is organized and the key routing information leads.

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?

With no output schema, the description steps in to describe returns (sezione, codice, anno, importo, scadenza indicativa + resa testuale) and the extra regola_acconti field. It covers inputs-via-chain, outputs, and limitations for a fairly complex 4-param nested tool, though a little more on error/discrepancy handling (e.g. the bollo importo/numero_fatture mismatch) would complete it.

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 description coverage is 100% and the nested forfettario/imu/bollo schemas already document every field, enum and default. The prose tax-code lists and the acconti rule add domain colour, but parameter-level meaning is essentially carried by the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource ('Compone le RIGHE del modello F24') and scopes it to sections Erario/INPS/IMU/bollo. It distinguishes itself from the calc_* siblings by declaring it consumes their outputs, and explicitly negates what it is not ('NON genera il modello ministeriale F24 — né PDF né facsimile').

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?

Gives explicit when-to-use via the COMPONIBILE chain: input is typically calc_forfettario, calc_imu, parse_fatturapa outputs. States the non-goal (indicative compilation, does not replace the commercialista or Agenzia delle Entrate verification) and adds no-login/no-cost conditions, leaving little to inference.

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