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 1790/1791/1792, causali INPS PXX/AF/AP/CF/CP) oppure IMU (3912/3918/3914/3916, con lo split gruppo D 3925 Stato / 3930 Comune e il codice ente catastale del Comune) oppure l'IMPOSTA DI BOLLO sulle fatture elettroniche di un trimestre (codici 2521/2522/2523/2524, scadenze 31/05 · 30/09 · 30/11 · 28/02, con la regola di differimento sotto 5.000 €). 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
    • addedInput schema / properties / bollo / anyOf
      Added value: +[
      +  {
      +    "required": [
      +      "numero_fatture"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "importo"
      +    ]
      +  }
      +]
  2. 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"
      +      ]
      +    }
      +  }
      +]
  3. 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"
      +]
  4. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses multiple behavioral traits: determinism, no login required, free usage ('Gratis (€0)'), and the return format ('righe strutturate ... + una resa testuale'). It also clarifies the non-official nature of the output, which is important context the annotations do not 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?

Despite being long, the description is dense and well-structured: it starts with the core purpose, then covers the three modes with their codes and deadlines, the return type, the expected input chain, and finally the caveats. Every sentence adds valuable information and there is no 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?

Given the tool's three-mode complexity and the absence of an output schema, the description covers all modes concretely (codes, deadlines, split rules), states the output structure (structured rows + textual rendering), and identifies the exact upstream tools that produce the inputs. It also sets expectations about what it does not do, making the description complete for safe invocation.

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% with detailed per-field mappings to calc_* outputs, so the baseline is 3. The description adds high-level rules such as IMU split and bollo deferral, but most of the parameter-specific meanings are already in the schema, so the added semantic value is limited.

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 specific verb and resource: 'Compone le RIGHE del modello F24' (composes the rows of the F24 model), and enumerates the exact domains (Erario, INPS, IMU, bollo) and their codes. It clearly distinguishes itself from sibling calculators by stating it works 'a partire dagli importi già calcolati' (from already-calculated amounts).

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 gives explicit when-to-use context by naming the typical input chain: 'l'input tipico sono gli output di calc_forfettario ... calc_imu ... parse_fatturapa'. It also provides an explicit exclusion: 'NON genera il modello ministeriale F24' and notes the result is an indicative compilation that does not substitute professional advice, offering clear boundaries for appropriate use.

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