Fatture in Cloud MCP Server
Supports importing Fineco bank statements (CSV/XLSX) for bank reconciliation, matching transfers to invoices and recording them as paid with the correct payment date.
Supports importing N26 bank statements (CSV/XLSX) for bank reconciliation, matching transfers to invoices and recording payments against the relevant invoices.
Supports importing Revolut bank statements (CSV/XLSX) for bank reconciliation, matching transfers to invoices and marking invoices as paid with their receipt dates.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Fatture in Cloud MCP ServerChi mi deve ancora pagare? Segna come pagata la 26, incassata ieri."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
fattureincloud-mcp
Server MCP per Fatture in Cloud: gestisci la fatturazione parlando con Claude (o con qualsiasi client MCP) invece di cliccare nell'interfaccia.
Fa quello che l'app non fa:
Fatture ricorrenti. «Ogni 5 del mese rifai la fattura ad Acme con il mese precedente nell'oggetto, inviala allo SdI e mandala per email.» Fatture in Cloud non ha una funzione nativa per farlo.
Duplicazione vera. Copia una fattura con nuova data, numero successivo, scadenze ricalcolate, bollo e conto di pagamento, cambiando solo le righe che vuoi.
Operazioni in blocco. Duplicare, inviare allo SdI, mandare per email o segnare come pagate decine di fatture con un comando, con anteprima obbligatoria prima di agire.
Controlli e report. Crediti scaduti per cliente, fatturato e incassato per mese, distanza dalla soglia del forfettario (85.000 €, principio di cassa), bollo mancante, fatture elettroniche non inviate o scartate, buchi nella numerazione.
Riconciliazione bancaria. Carichi l'estratto conto (Intesa, UniCredit, Fineco, BPER, Poste, ING, Revolut, N26, Qonto o qualsiasi CSV/XLSX), oppure colleghi il conto via PSD2, e ogni bonifico viene abbinato alla fattura giusta e registrato come incasso con la sua data.
Previsione di cassa. Mese per mese: incassi attesi, fatture ricorrenti, scadenze fiscali e spese fisse, con quanto accantonare ogni mese per arrivare coperto a giugno e novembre.
Pacchetto per il commercialista. Un solo zip con CSV, PDF, XML e riepilogo dell'anno.
Tasse del forfettario. Imposta sostitutiva e contributi INPS stimati dagli incassi reali: quanto pagare il 30 giugno (saldo e 1° acconto) e il 30 novembre (2° acconto), il totale annuo e la percentuale da accantonare.
Tutta l'API v2. Documenti emessi e ricevuti, clienti, fornitori, prodotti, corrispettivi, F24, archivio, prima nota, allegati, cestino, impostazioni. Quello che non ha un tool dedicato passa da
api_request.
English: MCP server for the Italian invoicing SaaS Fatture in Cloud. Recurring invoices, real document duplication, bulk e-invoice (SdI) sending, receivables and regime forfettario reports, plus full CRUD over the v2 API. Tool descriptions are in Italian because the domain is Italian.
Esempi di cose da chiedere
«Rifai tutte le fatture di settembre con la data di oggi, fammi vedere l'anteprima.»
«Imposta la fattura mensile per Acme il giorno 5, importo fisso, inviala allo SdI e per email.»
«Chi mi deve ancora pagare? Segna come pagata la 26, incassata ieri.»
«Quanto mi manca alla soglia del forfettario? A questo ritmo la supero?»
«Trasforma la proforma 12 in fattura elettronica e verifica l'XML.»
«Ci sono fatture sopra 77,47 € senza bollo?»
«Scarica i PDF delle fatture di ottobre in ~/Documenti/fatture.»
«Quante tasse pago il 30 giugno e il 30 novembre? Quanto devo accantonare per ogni fattura?»
«Ecco l'estratto conto di Intesa (~/Downloads/movimenti.xlsx): segna come pagate le fatture incassate.»
«A novembre avrò abbastanza sul conto per l'acconto? Quanto metto da parte al mese?»
«Metti le scadenze fiscali nel mio calendario e negli F24 di Fatture in Cloud.»
«Prepara il pacchetto 2026 per il commercialista.»
«Registra le fatture dei fornitori arrivate dallo SdI, con la categoria giusta. Quali spese ricorrenti sono aumentate?»
Related MCP server: Italy Invoice MCP
Installazione
Serve Node.js 20 o superiore.
1. Token
In Fatture in Cloud:
Apri Impostazioni → App e API (area sviluppatori) e crea un'applicazione privata, ad esempio
mcp-fattureincloud.In «Autenticazione e accesso» spunta solo «Token personale» e togli OAuth 2.0: così il Redirect URL non serve. Salva.
Dalla pagina dell'app genera il token: scegli l'azienda e i permessi. Servono almeno lettura e scrittura su documenti emessi e clienti; per report e tasse basta la lettura sul resto; aggiungi la scrittura sulle altre risorse che vuoi gestire.
Copia il token: non viene più mostrato. Non incollarlo in chat. Mettilo nella configurazione del client MCP o in
~/.config/fattureincloud-mcp/.env.
I token personali non scadono e si revocano dalla stessa pagina (guida ufficiale).
2. Client MCP
Claude Desktop, con un clic. Scarica fattureincloud-mcp-x.y.z.mcpb dall'ultima release, aprilo con doppio clic e incolla il token quando te lo chiede. Non serve modificare file di configurazione, e il token viene salvato nel portachiavi di sistema.
Claude Code
claude mcp add --scope user fattureincloud -e FIC_ACCESS_TOKEN=il-tuo-token -- npx -y fattureincloud-mcpConfigurazione manuale (claude_desktop_config.json, Cursor, Windsurf e simili):
{
"mcpServers": {
"fattureincloud": {
"command": "npx",
"args": ["-y", "fattureincloud-mcp"],
"env": { "FIC_ACCESS_TOKEN": "il-tuo-token" }
}
}
}Altri esempi in examples/. Finché il pacchetto non è su npm, al posto di fattureincloud-mcp usa github:NiccoloSalvini/fattureincloud-mcp.
Variabili
Variabile | |
| obbligatoria |
| facoltativa: se il token vede una sola azienda viene scelta da sola, altrimenti ogni tool accetta |
| facoltativa: carica solo alcuni gruppi di tool, es. |
| facoltativa: richieste orarie da lasciare libere (default 25). L'API concede 1.000 richieste all'ora e 40.000 al mese, condivise tra le app private; il server legge i contatori a ogni risposta e si ferma prima di esaurirli. |
| dove salvare le ricorrenze, default |
Le variabili possono stare anche in ~/.config/fattureincloud-mcp/.env, nella forma FIC_ACCESS_TOKEN=.... È il modo consigliato per il job pianificato.
Fatture ricorrenti
Fatture in Cloud non ha la pianificazione, quindi le ricorrenze vivono sul tuo computer, in ~/.config/fattureincloud-mcp/schedules.json, e un job giornaliero le esegue.
Chiedi a Claude di crearne una, ad esempio con il prompt
nuova_ricorrenza. Ogni ricorrenza ha:un documento modello, che viene copiato a ogni scadenza;
una cadenza: ogni N mesi, un certo giorno, dove 31 significa l'ultimo del mese;
un'azione:
createlascia la fattura da controllare e inviare (consigliato se l'importo cambia),create_and_send_sdiverifica l'XML e la invia;l'email facoltativa al cliente;
le modifiche: righe, importi e testi con segnaposto.
Installa il job (una volta sola):
npm i -g fattureincloud-mcpfattureincloud-mcp install-scheduler --hour 8Su macOS crea un LaunchAgent che gira ogni mattina e manda una notifica con l'esito. Se il Mac era in stop parte al risveglio; se era spento, la fattura viene creata alla prima esecuzione successiva. Su Linux stampa la riga da mettere in crontab.
Comandi utili:
fattureincloud-mcp schedulesfattureincloud-mcp run-due --dry-runSegnaposto utilizzabili in oggetto, note e righe: {{mese}}, {{anno}}, {{mese_precedente}}, {{anno_mese_precedente}}, {{mese_successivo}}, {{trimestre}}, {{data}}. Aggiungi |maiuscolo per la maiuscola iniziale. Per esempio Consulenza {{mese_precedente}} {{anno_mese_precedente}} diventa, il 5 novembre, «Consulenza ottobre 2026».
Garanzie:
Ogni ricorrenza produce al massimo un documento per scadenza: la prossima data viene salvata prima di creare la fattura, e un lock impedisce esecuzioni sovrapposte tra il job e Claude. Se qualcosa va storto la fattura manca, non viene duplicata, e l'errore resta nello storico.
Se il computer è rimasto spento per più periodi, al riavvio viene creato un solo documento, datato oggi, e non uno per ogni periodo arretrato. La numerazione resta così in ordine cronologico.
Se la verifica dell'XML fallisce, la fattura viene creata ma non inviata, e l'errore viene segnalato.
Strumenti
123 tool divisi in gruppi, attivabili con FIC_TOOLSETS. Il gruppo admin è sempre attivo.
documents: documenti emessi
list_/get_/create_/update_/delete_issued_document(s)duplicate_document: copia con nuova data, numero, scadenze e modifichetransform_document: proforma → fattura, preventivo → ordine o fattura, DDT → fatturajoin_documents: unisce più DDT, ordini o preventivi in un solo documentomark_paid/mark_unpaidemail_documentverify_einvoice,send_einvoice(condry_run),get_einvoice_xml,einvoice_rejection_reasoncreate_credit_note: nota di credito totale o parziale, collegata alla fattura originale come richiede lo SdIpreview_totals: totali calcolati da Fatture in Cloud (rivalsa, IVA, ritenute, bollo, rate) senza creare il documento; li usa anche l'anteprima diduplicate_documentget_document_pdf: link o downloadupload_attachmentget_new_document_defaults: prossimi numeri e valori predefinitilist_deleted_documents,recover_document
automation: in blocco e ricorrenze
bulk_duplicate,bulk_send_einvoice,bulk_email:dry_runattivo di default; accettano una lista di id o un filtroschedule_create,schedule_list,schedule_get,schedule_update,schedule_deleteschedule_run_due,schedule_run_now
reports
receivables_report: crediti aperti, scaduto per fasce, per clienterevenue_summary: fatturato (competenza) e incassato (cassa) per mese e cliente, soglia del forfettario con proiezioneaudit_documents: fatture elettroniche non inviate o scartate, bollo mancante, pagamenti scaduti, numerazioneclient_statement: estratto conto di un cliente
taxes
tax_profile_set,tax_profile_get: coefficiente, aliquota, previdenza, versamenti realitax_estimate: scadenze del 30 giugno e del 30 novembre, totale annuo, quota da accantonareregime_simulator: forfettario contro ordinario contro SRL sui tuoi numeristamp_duty_report: bollo virtuale per trimestre (F24 codici 2521-2524); entra anche nelle scadenzequadro_lm: valori del quadro LM della dichiarazione per un anno chiuso
planning
cashflow_forecast: previsione di cassa e accantonamento mensiletax_deadlines_export: scadenze fiscali in.icse negli F24 di Fatture in Cloudaccountant_package: zip annuale per il commercialista
bank
bank_reconcile: abbina gli accrediti alle fatture e registra gli incassibank_parse_statement,bank_formatsbank_link_start,bank_link_finish,bank_accounts,bank_list_banks: collegamento PSD2 via Enable Banking
registry
CRUD su
clients,suppliers,products, e sulle impostazionipayment_accounts,payment_methods,vat_typesclient_from_vat: anagrafica da partita IVA via VIES, con città e provincia verificatelookup_city: comuni da CAP o nomelist_price_lists,get_price_list_items
received: fatture passive e spese
CRUD su
received_documents(spese, note di credito passive)list_pending_received_documents,get_pending_received_document: fatture dei fornitori arrivate dallo SdI e in attesa di registrazioneregister_pending_received_documents: le registra come spese, con categoria, rate e pagamento (dry_runattivo di default)suggest_expense_categories: categoria proposta dallo storico del fornitore o da parole chiaverecurring_expenses_report: fornitori ricorrenti, prossima fattura attesa, totale annuo, aumenti di prezzo
accounting: receipts_monthly_totals, e CRUD su receipts (corrispettivi), f24, archive_documents, cashbook_entries (prima nota)
admin
list_companies,get_company_info(anche uso del piano)api_quota: richieste API rimaste nell'ora e nel meselookup: aliquote IVA, metodi di pagamento, conti, centri di costo e ricavo, categorie, modelli, valute, paesi…list_sent_emailsapi_request: qualsiasi altro endpoint dell'API v2
I filtri q usano la sintassi di Fatture in Cloud, ad esempio date >= '2026-01-01' and entity.name like '%rossi%' oppure amount_gross > 1000.
Prompt inclusi
chiusura_mese: controllo di fine mese completo, senza azioni irreversibilinuova_ricorrenza: crea una fattura ricorrente guidata
Tasse (regime forfettario)
tax_estimate stima quanto versi e quando, partendo dagli incassi registrati in Fatture in Cloud. Prima imposti il profilo una volta sola con tax_profile_set, ad esempio chiedendo a Claude: «sono un professionista in gestione separata, coefficiente 78%, aliquota 15%, partita IVA aperta nel 2024».
Il calcolo:
Reddito lordo | incassi dell'anno × coefficiente di redditività (78% professionisti, 67%, 40%, 86%, 62% secondo l'ATECO) |
Contributi | gestione separata 26,07% sul reddito lordo, oppure artigiani/commercianti (fissi più eccedenza, con riduzione del 35% facoltativa), oppure cassa professionale |
Imponibile | reddito lordo − contributi versati nell'anno (saldo dell'anno prima + acconti) |
Imposta sostitutiva | 15%, o 5% per i primi cinque anni se spetta |
30 giugno | saldo dell'anno prima + 1° acconto (imposta e contributi) |
30 novembre | 2° acconto |
Acconti | imposta: 100% dell'anno prima in due rate al 50%, nessun acconto sotto 51,65 €, rata unica a novembre sotto 257,52 €; gestione separata: 80% in due rate al 40% |
Per l'anno in corso gli incassi vengono proiettati a fine anno, oppure usi solo quelli avvenuti (projection: "to_date") o una tua stima (revenue_estimate). Se hai versato importi diversi da quelli calcolati, o hai incassi fuori da Fatture in Cloud, inseriscili per anno in overrides: la stima diventa esatta. Il risultato include anche la percentuale da accantonare su ogni incasso e l'avviso quando gli acconti superano l'imposta, caso in cui conviene il metodo previsionale.
È una stima per pianificare la liquidità, non un calcolo da dichiarazione: aliquote e massimali cambiano ogni anno (i default sono quelli del 2025 e si possono modificare nel profilo), e prima di pagare conviene il controllo del commercialista.
Fatture passive (regime ordinario)
Le fatture dei fornitori arrivano dallo SdI in Fatture in Cloud tra i documenti ricevuti in attesa, e restano lì finché non le registri come spese. Il server le gestisce in blocco:
list_pending_received_documentselenca fornitore, data, numero, imponibile, IVA, totale, scadenza e se c'è l'XML. Di default mostra quelle arrivate dallo SdI (source: "agyo"); conallinclude anche quelle caricate per email o dal browser.suggest_expense_categoriespropone la categoria: prima quella già usata per lo stesso fornitore (per P.IVA, poi per nome) negli ultimi 24 mesi, altrimenti regole su nome e descrizione (energia e gas → Utenze, TIM/Vodafone/Iliad/Fastweb → Telefono e internet, Aruba/Google/AWS/Microsoft/GitHub/OpenAI/Anthropic → Software e servizi cloud, ENI/Q8 → Carburante, Amazon → Acquisti, commercialista → Consulenze, locazione → Affitti). Ogni proposta ha confidenza e motivo, e quando possibile usa una categoria che esiste già: per esempio, tra le predefinite di Fatture in Cloud, le utenze vanno in «Servizi ed edifici» e il software in «Server e hosting».register_pending_received_documentscrea le spese. Ogni spesa è collegata al documento in attesa (pending_id), così Fatture in Cloud conserva XML e allegati. Le rate coprono sempre il totale lordo, perché l'API rifiuta le spese con pagamenti incompleti. Conpaid,paid_dateepayment_account_idle registri già pagate. Si parte in anteprima.remove_pendingelimina anche il documento dalla lista d'attesa: la specifica pubblica dell'API non documenta questa operazione, quindi se viene rifiutata la spesa resta creata e il risultato lo segnala.
recurring_expenses_report analizza le spese degli ultimi 12 mesi e trova i fornitori con almeno tre fatture a cadenza regolare: mensile, bimestrale (molte bollette), trimestrale, semestrale o annuale. Per ognuno indica importo medio, ultima fattura, prossima attesa e totale annuo stimato. Segnala gli aumenti oltre il 10% rispetto alla media precedente e le fatture attese da più di 15 giorni.
Per leggere tutto bastano poche richieste: le liste sono paginate a 100 righe e non c'è una chiamata per documento.
Nel regime forfettario le fatture d'acquisto non hanno effetto fiscale (niente IVA detraibile né costi deducibili). Puoi comunque registrarle per tenere archivio e scadenze.
Banca: riconciliazione degli incassi
bank_reconcile prende i movimenti, cerca per ogni accredito la fattura aperta corrispondente e la segna come pagata con la data dell'accredito. Per il forfettario quella data è quella che conta, perché le tasse si calcolano per cassa.
Abbinamento. Per ogni accredito il punteggio considera:
Criterio | Punti |
Importo uguale alla rata o al residuo della fattura | +50 |
Importo inferiore fino a 2 € (bollo o commissioni non pagati) | +30 |
Numero di fattura nella causale ( | +30 |
P.IVA o codice fiscale del cliente nella causale | +30 |
Nome del cliente nella causale | fino a +25 |
Pagamento datato prima della fattura | −40 |
La confidenza è alta da 75 punti, media da 60, bassa sotto. Ogni accredito va al massimo a una fattura. Se due fatture hanno lo stesso punteggio, l'abbinamento scende a medio e viene segnalato come ambiguo. Si parte sempre in anteprima: con dry_run: false vengono registrati solo gli abbinamenti con confidenza almeno min_confidence (di default high). Rilanciarlo sullo stesso file non registra due volte lo stesso incasso.
Da file (qualsiasi banca)
Scarica la lista movimenti dall'home banking e passa il percorso del file. Formati riconosciuti in automatico (bank_formats):
Banca | File |
Intesa Sanpaolo, Isybank | XLSX «Lista movimenti», solo righe contabilizzate; CSV accrediti/addebiti |
UniCredit | CSV |
Fineco | XLSX e CSV |
BPER | XLS «Movimenti Conto» |
Poste Italiane / BancoPosta | XLSX |
ING Italia | CSV |
Revolut, N26, Qonto | CSV |
Altre | qualsiasi CSV/XLSX con data, importo (o entrate e uscite) e descrizione: colonne riconosciute da sole o indicate con |
I formati vengono dagli export reali usati da altri progetti open source (ynab-transformer, BananaAccounting, bankr.isp). Se la tua banca esporta in un formato diverso, apri una issue con le intestazioni delle colonne.
Collegamento diretto (PSD2, facoltativo)
Le banche italiane, Intesa compresa, non danno l'API PSD2 ai privati: è riservata agli intermediari autorizzati. Si passa da Enable Banking, che offre una modalità gratuita per uso personale e non commerciale, con i tuoi conti. Copre Intesa Sanpaolo, UniCredit, BPER, Banco BPM, Poste, Fineco, ING, Mediolanum, Crédit Agricole, MPS e BCC.
Registrati su enablebanking.com/cp e crea un'applicazione di produzione. Come redirect URL metti
https://localhost:8765/callback: non deve esistere davvero.Scarica la chiave privata
.pemgenerata e attiva l'app con «Activate by linking accounts», collegando il tuo conto. L'app passa in modalità restricted e vede solo i tuoi conti.In
~/.config/fattureincloud-mcp/.env:ENABLE_BANKING_APP_ID=... ENABLE_BANKING_KEY_PATH=~/.config/fattureincloud-mcp/enablebanking.pem ENABLE_BANKING_REDIRECT_URL=https://localhost:8765/callbackChiedi a Claude «collega il mio conto Intesa» (
bank_link_start). Apri il link, autorizza nell'app della banca e incolla l'indirizzo della pagina finale, anche se il browser dà errore (bank_link_finish). Il consenso dura fino a 180 giorni, poi va rinnovato. Molte banche ammettono un solo consenso attivo per volta.Da lì basta
bank_reconcilesenza file: legge gli ultimi 90 giorni dal conto collegato.
Le sessioni sono salvate in bank-sessions.json, leggibile solo dal tuo utente. La chiave resta sul tuo computer.
Simulatore di regime
regime_simulator confronta, sugli stessi ricavi e costi, quanto resta in tasca con:
forfettario, al 5% o al 15%;
ordinario: ditta individuale, IRPEF a scaglioni 23/33/43% con detrazione per lavoro autonomo e addizionali;
SRL unipersonale: IRES 24%, IRAP 3,9% e dividendi al 26%. Il compenso dell'amministratore è scelto per pagare meno imposte, e sono inclusi i costi fissi della società.
Indica anche il livello di ricavi oltre cui il forfettario smette di convenire.
Di default usa la proiezione degli incassi dell'anno e i parametri del profilo fiscale. Se sei nei primi cinque anni, ripete il confronto con l'aliquota al 15% per mostrare cosa cambia dopo. I costi reali (costs) contano solo per ordinario e SRL. È un confronto su un anno a regime, utile per capire quando parlarne con il commercialista, non per decidere da soli.
Pianificazione
cashflow_forecast: entrate e uscite previste mese per mese per 12 mesi. Conta le rate da incassare (le scadute nel mese corrente), le fatture ricorrenti future con il loro ritardo di pagamento tipico, le scadenze fiscali stimate e le spese fisse che indichi. Conopening_balanceottieni il saldo previsto e l'avviso sui mesi in rosso. Calcola anche l'accantonamento mensile minimo per coprire tutte le scadenze fiscali in tempo; contax_fundtiene conto di quanto hai già da parte.tax_deadlines_export: porta le scadenze fiscali stimate in un file.ics, con promemoria 7 giorni e 1 giorno prima, da importare in Calendario, Google o Outlook. Le crea anche come F24 da pagare nello scadenziario di Fatture in Cloud. Rilanciato, aggiorna gli importi invece di duplicare e non tocca gli F24 già pagati.accountant_package:commercialista-AAAA.zipconfatture.csv,incassi.csv,crediti_aperti.csvespese.csv(separatore;e virgola decimale, si aprono direttamente in Excel), PDF di fatture e note di credito, XML FatturaPA eriepilogo.mdcon ricavi, soglia del forfettario, stima delle tasse e controlli.
Server HTTP
Per un'installazione condivisa (team, server, n8n…):
fattureincloud-mcp http --port 3000 --host 0.0.0.0Il server è stateless e non conserva credenziali. Ogni richiesta porta le proprie: Authorization: Bearer <token> (oppure X-FIC-Token) e, se serve, X-FIC-Company. L'endpoint è POST /mcp, il controllo di stato è GET /health. Se lo esponi su Internet, mettilo dietro HTTPS.
Sicurezza
Le azioni verso l'esterno (invio allo SdI, email) sono marcate come distruttive, quindi i client MCP chiedono conferma. Gli strumenti in blocco partono in anteprima.
Una fattura elettronica inviata allo SdI non si cancella: si corregge solo con una nota di credito. Per questo
send_einvoiceverifica sempre l'XML prima di inviare.Il token resta sul tuo computer, oppure nell'header di ogni richiesta in modalità HTTP. Le ricorrenze sono un file JSON locale.
Sviluppo
npm installnpm testnpm run buildnode scripts/smoke.mjs prova il server su un account reale con soli strumenti in lettura (token in ~/.config/fattureincloud-mcp/.env); node scripts/smoke.mjs <tool> '<json>' chiama un singolo strumento.
I test girano su un'API Fatture in Cloud simulata (test/fake-api.ts) con un vero client MCP collegato in memoria, senza toccare il tuo account. Per provare con un account reale, usa un'azienda di prova e dry_run.
Struttura:
src/client.ts: client HTTP dell'API v2 (retry su 429, errori leggibili)src/copy.ts: logica di duplicazione e segnapostosrc/schedules.ts,src/runner.ts: ricorrenzesrc/reports.ts: crediti, ricavi, controlli (funzioni pure)src/taxes.ts: modello di imposta e contributi del forfettariosrc/expenses.ts: fatture passive, categorie di spesa e spese ricorrenti (funzioni pure)src/cashflow.ts,src/ics.ts,src/accountant.ts: pianificazionesrc/bank/: parser degli estratti conto, abbinamento, client Enable Bankingsrc/tools/: definizione dei tool; i CRUD sono generati da una tabella incrud.ts
Rilasci
Aggiorna version in package.json, poi crea e invia il tag:
git tag v0.3.0 && git push origin v0.3.0La GitHub Action release.yml esegue i test e poi:
pubblica su npm con trusted publishing, via OIDC e senza token, con provenance automatica;
crea la release con l'estensione
.mcpb(generabile anche in locale connpm run build:mcpb);pubblica la scheda sul registro MCP.
Le PR sono benvenute. Il progetto non è affiliato a Fatture in Cloud né a TeamSystem.
Licenza
MIT
Available Tools
123 toolsaccountant_packageA
Crea lo zip annuale per il commercialista: fatture.csv, incassi.csv, crediti_aperti.csv, spese.csv (formato italiano per Excel), PDF di tutte le fatture e note di credito, XML FatturaPA e riepilogo.md con ricavi, soglia del forfettario, stima delle tasse e controlli.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Default: anno precedente | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| output_dir | No | Default: ~/Downloads | |
| include_pdf | No | ||
| include_xml | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden. It does well on the output side by disclosing exactly what is written into the archive, which communicates the side effect. It says nothing about cost/volume (it pulls every invoice and credit note for a year), whether an existing file at output_dir is overwritten, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the action and then lists deliverables; every item listed is substantive content the agent would otherwise have to guess. It is dense but not padded, though the long enumeration makes it less scannable than a short lead plus bullet list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no output schema and no annotations, the description effectively serves as the return-value specification by naming every file produced, including the summary report contents. Remaining gaps are operational (runtime, overwrite behavior, huge datasets) rather than about what the tool produces.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, so the schema already documents year, company_id, and output_dir defaults. The description reflects the content toggles implicitly (PDF and XML are listed as included) but adds no meaning about year scoping, company selection, or what happens when include_pdf/include_xml are false. Baseline-to-slightly-below is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource — creating the annual zip for the accountant — and then enumerates the exact artifacts inside it (four CSVs, PDFs, FatturaPA XML, riepilogo.md). An agent can tell this is a bulk export/report bundle, distinct from single-purpose siblings like revenue_summary or tax_estimate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'annuale per il commercialista' — the agent can infer this is a year-end delivery package rather than an ad-hoc query. However, it never states when NOT to use it or points to lighter alternatives (revenue_summary, tax_estimate, tax_deadlines_export) that cover part of the same ground.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_quotaARead-only
Richieste API rimaste nell'ora e nel mese (limiti di Fatture in Cloud condivisi tra le app private). Usalo prima di operazioni in blocco.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this as a safe read, so the description's margin is smaller. It does add real context beyond the annotations: the quota is consumed by all private apps, and it is tracked over both an hourly and a monthly window. It stays silent on what happens when the quota is exhausted (error vs. indication), which is the behavior that would actually change an agent's next step.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the measurement is front-loaded, the parenthetical adds only essential context about shared limits, and the imperative usage sentence follows. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only quota check with no output schema, the description covers what is measured and when to call it. The remaining gap is the return shape (e.g., whether it yields two numbers plus reset timing), which it hints at but does not spell out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which sets the baseline at 4, but the schema has no properties for the description to enrich and the description adds nothing about argument handling. There is simply nothing to disambiguate, so it lands at the neutral middle rather than being actively helpful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and metric: remaining API requests in the current hour and month, qualified as the Fatture in Cloud quota shared across private apps. That is precise enough to distinguish it from ordinary data tools, though it never contrasts itself with the generic 'api_request' sibling, which an agent might otherwise reach for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Usalo prima di operazioni in blocco" gives a concrete trigger condition (before bulk operations such as bulk_duplicate, bulk_email, bulk_send_einvoice). It gives no explicit when-not or alternative tool, so it falls short of a 5, but the usage context is clear rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_requestADestructive
Chiamata diretta all'API v2 per tutto ciò che non ha un tool dedicato (impostazioni, listini, webhook, documenti in attesa...). path relativo all'azienda (es. '/settings/payment_accounts') oppure assoluto se inizia con /user, /info o /c/. Riferimento: https://developers.fattureincloud.it/api-reference/
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Corpo JSON, di solito { data: {...} } | |
| path | Yes | ||
| query | No | ||
| method | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare openWorldHint=true and destructiveHint=true, so the safety profile is known. The description adds genuinely useful routing behavior: path is resolved relative to the company unless it begins with /user, /info or /c/, which is non-obvious and would otherwise cause silent misrouting. It does not mention auth/scope requirements, pagination, or response/error handling for raw calls, so with annotations already covering the danger profile this lands at a solid 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the scope definition before the path rules, with zero filler. The API reference URL earns its place as the escape hatch for everything the description cannot enumerate, though it slightly lengthens an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a raw passthrough with destructive and open-world annotations and no output schema, an agent needs to know path resolution, payload shape, and that responses are raw API JSON. Path resolution and a doc link are covered and the schema hints at the { data: {...} } envelope, but the raw response format and the undefined 'query' parameter are not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 40%, so the description needs to compensate and it partly does: the path scoping rule (relative vs absolute prefixes) is the single most important semantic and is only in the description. However 'query' is undocumented in both description and schema, and 'method' semantics (which verbs mutate, which need bodies) are left entirely to inference, so compensation is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (direct call to API v2) and defines its scope precisely as the fallback for anything without a dedicated tool, listing concrete example domains (settings, price lists, webhooks, pending documents). This makes it unambiguously distinguishable from every sibling, which are all named-resource CRUD tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'per tutto ciò che non ha un tool dedicato' gives a clear selection rule: use this only when no dedicated sibling exists. That implicitly excludes the ~80 named-resource tools. It stops short of explicitly telling the agent to prefer dedicated tools first, but the condition is stated plainly enough to act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_documentsARead-only
Controlli sui documenti dell'anno: fatture elettroniche create ma non inviate, scartate o rifiutate; bollo mancante su fatture senza IVA sopra 77,47 €; pagamenti scaduti; buchi, doppioni o date fuori ordine nella numerazione.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Default: anno corrente | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the description only needs to add scope and content — which it does by listing the four audit categories checked, giving real insight into what the call will surface. It stops short of saying whether results come back as a flat findings list, per-document flags, or counts, and says nothing about volume or pagination for large years.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the core purpose and then uses semicolons to enumerate checks economically — no filler. It is slightly run-on and mixes four distinct audit families into one breath, but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of conveying what comes back; the enumerated checks imply findings but the response shape (list of issues vs. counts vs. per-document objects) is unstated. For a two-optional-parameter read-only tool this is adequate but leaves a real gap around return values and result volume.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both parameters (year, company_id) already document their defaults (current year, FIC_COMPANY_ID or the token's sole company). The description adds no meaning beyond that — it never explains that the year parameter drives the numbering/date checks or how company scoping affects results. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation on a specific resource ('Controlli sui documenti dell'anno') and then enumerates exactly which anomalies are detected: unsent/rejected e-invoices, missing stamp duty above 77,47 €, overdue payments, and numbering gaps/duplicates. An agent can tell this is an audit/report tool rather than a CRUD tool. It does not, however, name or contrast itself with near-neighbours like verify_einvoice, stamp_duty_report, or receivables_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope is implied by 'dell'anno' plus the year parameter, so an agent knows this is a yearly audit sweep. There is no explicit when-to-use / when-not-to-use guidance and no pointer to the overlapping sibling reports that cover a subset of these checks (stamp_duty_report, receivables_report, verify_einvoice).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bank_accountsBRead-only
Conti collegati con Enable Banking e scadenza del consenso.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the description's main added value is disclosing that results include consent expiry dates — useful domain context for deciding whether a re-link is needed. It does not say what happens when consent has expired, whether expired links are still returned, or whether the call requires a live Enable Banking session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, and the resource plus the consent-expiry detail are front-loaded. It is efficient, though the elliptical phrasing costs a little clarity about the actual operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, the description should convey what comes back (list of accounts, institution names, consent expiry/status) and any authorization dependency on Enable Banking. It hints at the two key data points but leaves the return shape and the link prerequisite unstated, and the Italian text sits oddly against English sibling names.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate beyond what the empty schema already shows. Baseline 4 applies; the description does not need to compensate for any undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (bank accounts linked via Enable Banking) and adds that consent expiry is included, but it never states an explicit verb and reads as a noun phrase rather than an action. It also fails to distinguish itself from the nearby sibling bank_list_banks, so an agent cannot tell from the description alone which one returns linked accounts versus available banks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites (an existing Enable Banking link), and no reference to alternatives such as bank_link_start or bank_list_banks. The agent must infer the usage context entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bank_formatsCRead-only
Banche e formati di estratto conto riconosciuti automaticamente nell'import.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares the safety profile, and the description adds almost nothing beyond it. It omits whether the returned set is static/global or scoped to the company, whether it reflects previously uploaded statements, and what the entries look like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no filler and the subject front-loaded. It loses a point only because the compactness comes at the cost of omitting the action verb rather than because of wordiness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only lookup with no output schema, the description should convey the shape of the result (a list of banks paired with supported format identifiers). It states the domain but leaves the return structure entirely to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics for the description to carry; the baseline of 4 applies. Nothing in the description misrepresents the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (banks and bank statement formats recognized during import) but is a bare noun phrase with no verb, so it never states that the tool retrieves/lists them. It also does not distinguish this reference list from bank_list_banks, which sits right next to it among the siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: nothing says to call this before bank_parse_statement to check whether a format is supported, nor how it differs from bank_list_banks. The mention of 'import' only loosely implies a pre-import discovery use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bank_link_finishC
Completa il collegamento: passa l'URL di ritorno (contiene ?code=...&state=...) oppure il solo code.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| redirect_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It does not disclose that this call creates a persistent bank connection, what state validation does or whether a mismatched state is rejected, whether the call is idempotent, or what errors surface on an expired/invalid code — all the behavior an agent needs for an OAuth-callback step.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with an action verb and no filler; the parameter explanation is attached directly to the imperative. It is efficient but leans toward under-specification rather than tightness, leaving no room for the flow context the agent actually needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an OAuth-callback tool with no annotations and no output schema, the description omits the flow context (that it finalizes a bank_link_start session), which parameter form is preferred, what a successful result yields, and how to recover from an invalid code or state. Given the complete absence of structured behavioral data, this is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema alone leaves both parameters opaque strings. The description compensates by explaining that redirect_url is the full return URL containing ?code=...&state=... and that alternatively the bare code may be passed — real semantic value the schema does not provide, though it stops short of naming the state field's role or marking either parameter required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Completa il collegamento" states a completion action on a linking flow, and the parameter hints (?code / state) identify it as an OAuth-style callback. However, the object of "collegamento" is never named as a bank account link, so the purpose is only inferable by combining the name with the sibling bank_link_start rather than from the text itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus alternatives, no mention that it must follow bank_link_start, and no note on prerequisite authorization. The only guidance is a weak either/or between the two parameters ("oppure"), with no rule for choosing between them and no indication of what to do on failure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bank_link_startA
Collega un conto corrente via Enable Banking (PSD2). Restituisce un link: aprilo, autorizza nella tua banca, poi copia l'indirizzo della pagina finale (anche se dà errore) e passalo a bank_link_finish. Il consenso dura fino a 180 giorni.
| Name | Required | Description | Default |
|---|---|---|---|
| bank | No | Nome esatto come in bank_list_banks | Intesa Sanpaolo |
| days | No | ||
| country | No | IT | |
| psu_type | No | business per conti aziendali | personal |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that the tool returns a link rather than linking immediately, that consent persists up to 180 days, and the critical quirk that the final page may display an error yet its URL must still be captured. It stops short of describing failure modes, expiry/retry behavior, or any auth/quota constraints on the PSD2 flow.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the identity of the tool, then the actionable procedure, then the consent lifetime. Every clause carries operational weight, including the parenthetical that prevents a common failure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description fills that gap by stating the return value is a link and describing exactly what to do with it. For a four-optional-parameter initiation tool this is nearly complete; only error/expiry handling and the precondition that the account must not already be linked are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: 'bank' and 'psu_type' are documented in the schema, while 'days' and 'country' are not. The description partially compensates by tying consent duration to up to 180 days (the schema's maximum for 'days'), but 'country' is never explained and the exact-bank-name hint lives only in the schema, so much of the meaning still rests on structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Collega un conto corrente via Enable Banking (PSD2)') and explicitly names the sibling it hands off to ('passalo a bank_link_finish'), so an agent can separate it from bank_link_finish and bank_accounts without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear step-by-step usage path: open the returned link, authorize at the bank, copy the final page URL and pass it to bank_link_finish, including the counterintuitive case where the page shows an error. Lacks explicit when-not-to-use guidance (e.g. use bank_accounts for accounts already linked), but the forward workflow is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bank_list_banksBRead-only
Banche collegabili tramite Enable Banking (nome esatto da usare in bank_link_start).
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | ||
| country | No | IT |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, so the description carries the rest of the burden. It usefully discloses that the data comes from the Enable Banking provider and that returned names are exact-match identifiers for downstream linking, but it says nothing about country scoping, empty results, or freshness of the list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the key fact (exact name for bank_link_start) front-loaded and no filler. Its brevity, however, is partly achieved by omitting important parameter information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Low complexity and no output schema lower the bar, but with two undocumented parameters the definition is not sufficient on its own; an agent must open the schema to learn that filtering by search text or country is possible.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it does not: neither the 'search' string nor the 'country' code (which defaults to IT and must be 2 characters) is mentioned. An agent reading only the description would not know it can filter at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (banks linkable via Enable Banking) and implicitly the verb via the tool name, and it distinguishes itself from bank_link_start by casting itself as the source of the exact name that tool needs. It does not explicitly say 'list/returns' but the intent is unambiguous for an agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage ('exact name to use in bank_link_start'), which tells the agent this is a prerequisite lookup for the linking flow, but it never states when not to call it or how to narrow the results with the available filters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bank_parse_statementBRead-only
Legge un estratto conto esportato dall'home banking (XLSX, XLS, CSV) e mostra banca riconosciuta, periodo, entrate e uscite.
| Name | Required | Description | Default |
|---|---|---|---|
| bank | No | Forza il formato (vedi bank_formats), es. 'intesa' | |
| mapping | No | Solo per banche non riconosciute: nomi delle colonne nell'intestazione del file | |
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is consistent with 'Legge', so no contradiction. The description adds useful behavior beyond the annotations by naming accepted input formats and summarizing the returned figures, but it does not explain what happens when the bank is not recognized or that the mapping override is then required, which is the main failure mode this tool has.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the format list is compactly parenthesized. It is appropriately sized, though it could have used one more clause for the unrecognized-bank path instead of stopping at the output summary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a nested-object parameter, the description carries extra burden. It does sketch the return values (bank, period, in/out), but leaves the unknown-bank/mapping fallback and error behavior unexplained, which matters for a parser that can fail on unrecognized layouts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, so the schema already documents bank ('Forza il formato... vedi bank_formats'), mapping, and its nested fields. The description adds no parameter-level detail itself; the phrase 'banca riconosciuta' only weakly implies the auto-detection that the bank parameter overrides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Legge un estratto conto') and adds scope details: accepted formats (XLSX, XLS, CSV) and what it reports (recognized bank, period, income/expenses). It does not explicitly distinguish itself from the closely related bank_formats, bank_reconcile, or client_statement siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus the bank_* alternatives (bank_formats for discovering formats, bank_reconcile for matching, bank_list_banks). Usage must be inferred from the mention of home-banking export files. It also omits prerequisites such as whether file_path must point to a local file already uploaded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bank_reconcileA
Riconciliazione bancaria: abbina gli accrediti dell'estratto conto (file o conto collegato) alle fatture aperte per importo, numero fattura in causale, P.IVA e nome del cliente, e segna come pagate le rate abbinate con la data dell'accredito. dry_run è TRUE per default: mostra le proposte con il livello di confidenza; rilancia con dry_run=false per registrare quelle ≥ min_confidence.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| bank | No | ||
| from | No | Solo movimenti da questa data (default: 90 giorni fa per il conto collegato) | |
| dry_run | No | ||
| mapping | No | Solo per banche non riconosciute: nomi delle colonne nell'intestazione del file | |
| file_path | No | Estratto conto esportato; ometti per usare il conto collegato con Enable Banking | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| min_confidence | No | high | |
| payment_account_id | No | Conto di saldo su cui registrare gli incassi (vedi lookup payment_accounts) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden well: it discloses that the tool mutates state ('segna come pagate le rate'), that dry_run is the safe preview mode, and how confidence thresholds gate writes. It doesn't address reversibility, permissions, or idempotency, so it stops short of full disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with the core purpose and the dry-run workflow front-loaded; little waste. The confidence-threshold clause is slightly compressed but earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with a nested mapping object and no output schema, the description covers the essential matching logic and the safe preview workflow. Gaps around account selection (payment_account_id) and output format remain, but the core calling behavior is adequately conveyed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 56%, so some compensation is needed. The description explains dry_run and min_confidence behavior meaningfully and hints at the file-vs-linked-account choice, but says nothing about company_id, payment_account_id, mapping, from/to, or bank, leaving several parameters to the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Riconciliazione bancaria: abbina gli accrediti... alle fatture aperte') and enumerates the matching criteria (importo, numero fattura in causale, P.IVA, nome cliente). An agent can clearly distinguish this from siblings like mark_paid or bank_parse_statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It spells out an explicit two-step workflow: dry_run defaults to TRUE for proposals, then re-run with dry_run=false to record matches ≥ min_confidence. It lacks explicit naming of alternatives (e.g., mark_paid) or exclusions, but the operational guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_duplicateA
Copia molti documenti in una volta, es. tutte le fatture di settembre con data di oggi. dry_run è TRUE per default: controlla l'anteprima, poi rilancia con dry_run=false.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | In alternativa a ids: filtro, es. "date >= '2026-09-01' and date <= '2026-09-30'" | |
| ids | No | Documenti espliciti | |
| date | No | Data delle copie, default oggi | |
| type | No | Con q: tipo da cercare (default invoice) | |
| dry_run | No | ||
| overrides | No | Applicate a tutte le copie | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose the most dangerous default: dry_run=true, plus the preview-then-apply workflow. It says nothing about whether copies are drafts, how numeration is assigned, what happens on partial failure, or any cap on how many documents can be copied in one call — all material for a bulk mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero padding: the action and example come first, the dry_run safety default second. Everything is front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, nested-object bulk mutation with no annotations and no output schema, the description covers the essential safety loop but omits how many documents a single call can handle, what the preview actually returns, and how overrides interact with per-document differences. Adequate to start, not enough to call confidently at scale.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 86%, so the schema does most of the work, but the description still adds operational meaning: the dry_run default is called out as a behavior, not just a type, and the q-filter example mirrors the realistic filter syntax. It does not explain the q vs ids vs type relationship or that overrides apply uniformly to every copy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and scope — 'Copia molti documenti in una volta' — with a concrete example (all September invoices dated today), which clearly marks it as the batch counterpart to the single-document tools. It never names the sibling duplicate_document, so the differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real usage guidance: the scenario (bulk copy of a filtered set) and a mandatory two-step procedure (preview with dry_run=true, then re-run with false). What is missing is the exclusion — nothing tells the agent to prefer duplicate_document for a single document, even though that sibling exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_emailA
Invia per email molti documenti, ognuno al proprio cliente, con i testi di default. dry_run è TRUE per default: mostra destinatari e oggetti.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | In alternativa a ids: filtro, es. "date >= '2026-09-01' and date <= '2026-09-30'" | |
| ids | No | Documenti espliciti | |
| type | No | Con q: tipo da cercare (default invoice) | |
| dry_run | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations supply only openWorldHint=true, so the description carries the burden for a side-effecting send operation. It usefully discloses that dry_run is TRUE by default and what the preview returns (recipients and subjects), which is critical safety context. It does not say what happens on real send (irreversible, per-recipient failures, rate limits, whether sending is batched or partial) — significant gaps for an outbound-email tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the bulk-send purpose comes first and the safety-relevant dry_run behavior is front-loaded second. Nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, side-effecting bulk send with no output schema, the definition is only adequate: it covers purpose and preview behavior but omits failure handling, send-confirmation semantics (e.g. that dry_run must be set false to actually send), and prerequisites. An agent could invoke it but would be guessing about the real-send path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so most parameters are already documented, including the q/ids alternative and the type enum. The description still adds real meaning by explaining what dry_run actually produces ('mostra destinatari e oggetti'), which the bare boolean default in the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Invia per email molti documenti') plus the key scoping rule that each document goes to its own client with default texts. 'Molti' implicitly contrasts with the single-document sibling email_document, but the sibling is never named, so differentiation relies on inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The bulk-vs-single distinction is implied by 'molti' but never made explicit against email_document or email_document's per-document variant. There is no statement of prerequisites (configured sender/SMTP, verified addresses) or of when not to use it. The dry_run default note is the one concrete piece of usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_send_einvoiceADestructive
Verifica e invia allo SdI molte fatture. dry_run è TRUE per default (solo verifica). Le fatture con XML non valido vengono saltate e segnalate.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | In alternativa a ids: filtro, es. "date >= '2026-09-01' and date <= '2026-09-30'" | |
| ids | No | Documenti espliciti | |
| type | No | Con q: tipo da cercare (default invoice) | |
| dry_run | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true; the description adds genuinely new behavior on top of that: dry_run is safe-by-default, and invalid-XML documents are skipped and reported instead of failing the whole run. It still doesn't say whether a real (non-dry-run) submission is irreversible or whether skipped items can be retried.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and immediately followed by the safety-relevant default. No filler, though the skip/flag sentence could be tied more tightly to the send behavior it qualifies.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a bulk mutation that talks to an external authority, the description leaves notable gaps: no batch-size or quota expectations for openWorldHint calls, no indication of what the caller gets back per document (results vs. summary, since there is no output schema), and no note that a real send cannot be undone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so q, ids, type and company_id are already documented. The one real addition is explaining dry_run's effect ("solo verifica"), since the schema lists only a bare default of true; nothing is added about how q and ids interact when both are supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb pair and resource ("Verifica e invia allo SdI molte fatture"), and the plural "molte" signals batch scope, which separates it from the single-document send_einvoice sibling. It does not name that sibling explicitly, so the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states that dry_run defaults to TRUE and that this means "solo verifica", which is useful operational context, but it never says when to pick this tool over send_einvoice or verify_einvoice, nor when to leave dry_run on versus turn it off (e.g. real submission to SdI).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cashflow_forecastARead-only
Previsione di cassa mese per mese: incassi attesi dalle fatture aperte, fatture ricorrenti future, scadenze fiscali (30 giugno, 30 novembre) e spese fisse. Calcola quanto accantonare ogni mese per arrivare coperto a ogni scadenza e segnala i mesi con saldo negativo.
| Name | Required | Description | Default |
|---|---|---|---|
| months | No | ||
| tax_fund | No | Quanto hai già accantonato per le tasse | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| include_overdue | No | Conta i crediti scaduti come incassati nel mese corrente | |
| opening_balance | No | Saldo attuale del conto, per avere il saldo previsto mese per mese | |
| monthly_expenses | No | Uscite fisse mensili (affitto, software, prelievi...) | |
| revenue_estimate | No | Incassi annui previsti, per la stima delle tasse |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered elsewhere. The description does add genuine behavior: it names which data sources feed the projection (open invoices, recurring invoices, tax deadlines on 30 June / 30 November, fixed expenses) and states that the result flags months with negative balances. It stops short of disclosing assumptions (e.g. how overdue items and revenue_estimate feed the model, currency, or whether values are cumulative).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler; the core scope (month-by-month projection and its inputs) is front-loaded, followed by the computed outputs. Slightly long clauses, but every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With seven optional parameters, no output schema, and non-trivial financial modelling, the description covers what is computed and what the result means well enough to call the tool correctly. The remaining gap is the shape of the return (monthly rows? totals? currency?) and the model's assumptions, which an agent would have to discover from the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (86%), so the parameters are largely self-documenting and the baseline of 3 applies. The description corroborates a few of them implicitly — fixed expenses maps to monthly_expenses, amounts to set aside map to tax_fund, expected receipts map to revenue_estimate — but adds no syntax, units, or interaction rules (e.g. how include_overdue changes the first month) beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A specific verb ("Previsione") applied to a specific resource (cash flow month by month), plus an enumeration of the inputs it combines (open invoices, recurring invoices, tax deadlines, fixed expenses) and the derived output (how much to set aside, negative-balance months). An agent can tell this is a projection tool rather than a raw report, though it never names the closest siblings (receivables_report, recurring_expenses_report, tax_estimate) to sharpen the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Uses the description content to imply when the tool applies, but gives no explicit when-to-use or when-not-to-use guidance and does not point to alternatives for narrower needs (e.g. receivables_report for collections only, tax_estimate for tax accrual only). With many adjacent reporting/report tools in the sibling list, an explicit routing sentence is the missing piece.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
client_from_vatA
Prepara l'anagrafica di un cliente dalla partita IVA usando VIES (il registro europeo): ragione sociale e indirizzo, con città e provincia verificate. Il codice destinatario SDI non è pubblico: chiedilo al cliente o usa la sua PEC. Con create=true crea il cliente.
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| create | No | ||
| country | No | IT | |
| ei_code | No | Codice destinatario SDI (7 caratteri) | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| vat_number | Yes | Partita IVA, con o senza prefisso paese | |
| certified_email | No | PEC |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does reasonably well: it discloses the external dependency (VIES EU registry), that the default is a non-mutating preparation step, and that create=true performs the write. It omits what happens when VIES lookup fails or returns partial data, and says nothing about permissions or duplicate-client handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the core action, then the SDI caveat, then the create flag. No filler. The density is high but every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, yet the description tells the agent what data comes back (business name, address, verified city/province) and what the create flag does, which is the essential shape for a 7-parameter enrichment tool. Gaps remain around failure modes and the role of company_id and email, which are undocumented in both schema and description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 57%, so the description needs to compensate and largely does: it explains vat_number (with or without country prefix is covered by schema), create, ei_code and certified_email, and adds genuine domain meaning by noting the SDI code is not publicly available and PEC is the fallback. It adds nothing for email, country, or company_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: builds a client's master data (anagrafica) from a VAT number via VIES, returning business name, address, and verified city/province. That is far more than the bare name. It does not explicitly contrast itself with the sibling create_client, so an agent must infer that this is the VIES-enriched path versus manual entry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: use it when you have a partita IVA and want registry data resolved, and it explains the preview-versus-write split ('Con create=true crea il cliente'). It also advises what to do when the SDI code is unavailable (ask the client or use their PEC). It stops short of naming alternatives or stating when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
client_statementCRead-only
Estratto conto di un cliente: documenti, pagato, saldo aperto e scaduto.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Default: inizio dell'anno precedente | |
| client_id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds some behavioral value by indicating the response aggregates documents, paid amounts, open balance, and overdue amounts, but it does not say whether this is a computed snapshot, whether it paginates, or what period the 'scaduto' figure covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no filler. It is efficient, though the terseness borders on under-specification rather than true conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description bears the burden of explaining what comes back, and it only lists four content labels with no shape, units, or period semantics. For a financial reporting tool an agent cannot tell what fields to expect or how to interpret the open versus overdue split.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 67%: 'from' and 'company_id' carry descriptions, while 'client_id' (the sole required parameter) has none. The description supplies no parameter meaning whatsoever — no mention of the date range, the company scoping, or how the period affects the reported balances — so it fails to compensate for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('Estratto conto di un cliente') and enumerates the content it produces (documenti, pagato, saldo aperto, scaduto), so an agent knows this is a per-client statement/report rather than a generic list. It does not distinguish itself from near neighbors such as receivables_report or get_client, leaving the boundary implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance. With sibling tools like receivables_report, get_client, and list_issued_documents, the description gives no hint which one an agent should pick for a client-level balance question versus an aggregate receivables view.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_archive_documentC
Crea un documento d'archivio. data segue lo schema dell'API v2 di Fatture in Cloud.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, yet it only says the tool creates something. It does not state required permissions, whether the operation is reversible, how errors or duplicate archival numbers are handled, or what the response contains. The single mitigating fact is the pointer to the Fatture in Cloud API v2 schema, which at least tells the agent where the payload contract lives.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, and the core operation is stated first. The brevity is efficient rather than padded, though for a tool with an opaque nested payload it borders on under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool with no annotations, no output schema, and a nested free-form `data` object whose structure is never described. An agent reading only this definition cannot construct a valid payload or predict the result; it is fully dependent on external API documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: company_id is documented in the schema, but `data` is an untyped free-form object with additionalProperties {} and no description. The description does add real meaning there by naming the authoritative shape (Fatture in Cloud API v2 schema), which is more than the schema offers, though it defers rather than explains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ("Crea un documento d'archivio"), which an agent can separate from update_archive_document / delete_archive_document / list_archive_documents by name alone. It stops short of distinguishing it from other creators such as create_received_document or upload_attachment, so it is clear but not sibling-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this over create_received_document, create_issued_document, or upload_attachment, nor any stated prerequisites or preconditions. The agent must infer the routing decision entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cashbook_entryC
Crea un movimento di prima nota (incassi e pagamenti). data segue lo schema dell'API v2 di Fatture in Cloud.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden for a mutation tool. It does not state required fields, whether entries post to any balance, idempotency, or what happens on validation failure; the only behavioral hint is that the payload mirrors the Fatture in Cloud API v2 schema, which defers understanding to external documentation the agent may not have.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose, with no filler. The second sentence earns its place as a schema hint, though it shifts a large informational burden onto an external reference rather than spelling anything out.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a write operation with a nested untyped object parameter, no annotations, and no output schema, so the description is the only source of behavioral detail — and it supplies almost none. A caller would need the Fatture in Cloud v2 cashbook payload spec to use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, and the uncovered parameter is the critical one: 'data' is a free-form object with additionalProperties and no property documentation. The description only points at the external API v2 schema, adding no field-level meaning, so an agent cannot construct a valid payload from the definition alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Crea un movimento di prima nota') and clarifies scope with the parenthetical 'incassi e pagamenti', which tells the agent this covers both receipts and payments. It is not explicitly differentiated from nearby siblings such as create_receipt or create_f24, which also create money-movement-like records, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over create_receipt, create_f24, or register_pending_received_documents, nor any prerequisites or preconditions. The agent must infer from the name alone when a prima nota entry is the right object to create.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_clientA
Crea un cliente. data segue lo schema dell'API v2 di Fatture in Cloud. Per la fattura elettronica servono vat_number o tax_code, address_* e ei_code (codice SDI) o certified_email (PEC).
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It discloses the domain constraint that data must follow the Fatture in Cloud API v2 schema and the e-invoicing field requirements, but says nothing about permissions, side effects, whether creation is idempotent, or what happens on validation failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and the schema reference before the conditional e-invoicing requirements. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with a single opaque nested payload and no output schema, the description covers the essential call-time knowledge. It leaves the response shape unstated, which is a minor gap for an agent that likely needs the new client's id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The `data` parameter is an opaque object with additionalProperties and no keys documented in the schema, yet the description points to the external API v2 schema and enumerates the keys required for e-invoicing, which materially fills a real gap. company_id is already documented in the schema, so that half needs no compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb+resource ("Crea un cliente"), which is unambiguous and easily separated from siblings such as create_supplier or create_product. It does not explicitly name a sibling to contrast with, but the resource noun makes disambiguation trivial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: it tells the agent what fields are needed for electronic invoicing (vat_number or tax_code, address_*, ei_code or certified_email), which is a useful precondition, but there is no guidance on when to use this versus update_client, list_clients, or client_from_vat, nor on duplicate-handling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_credit_noteA
Crea la nota di credito di una fattura, totale o parziale, collegata alla fattura originale come richiede lo SdI (numero e data della fattura nei dati della fattura elettronica). È l'unico modo per correggere una fattura elettronica già inviata. dry_run è TRUE per default: mostra la nota e i suoi totali; non viene inviata allo SdI (usa poi send_einvoice).
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Default: oggi | |
| amount | No | Storno parziale: importo netto da stornare. Ometti per lo storno totale | |
| dry_run | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| invoice_id | Yes | ||
| items_list | No | Righe esplicite, in alternativa ad amount | |
| description | No | Motivo, es. 'Storno per errato importo' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden, and it does substantial work: it discloses that dry_run is TRUE by default, that the result is only a preview with totals, that nothing is transmitted to SdI until send_einvoice is called, and that the note must be bound to the original invoice. It does not cover permissions, what happens if the invoice was never sent, or whether an existing credit note blocks creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each carrying distinct load: purpose and linkage rule, the exclusivity claim, then the dry-run/send workflow. The most decision-critical fact (staged by default, nothing sent) is placed last but not buried, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the definition covers the essentials an agent needs: the reference requirement, the total/partial choice, and the two-step dry-run-then-send flow. Gaps remain around error conditions and permissions, but the core decision path is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, and the schema already documents date defaulting, amount meaning partial vs total, company_id defaults, and items_list as an alternative to amount. The description adds real meaning only for dry_run, whose schema entry is bare, explaining the preview-versus-send semantics. That is a useful increment but it does not meaningfully clarify the remaining parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Crea la nota di credito di una fattura'), the two supported scopes (totale o parziale), and the domain constraint that it must reference the original invoice number and date for SdI. It also distinguishes itself from everything in the sibling list by declaring it is 'l'unico modo per correggere una fattura elettronica già inviata'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear triggering context (correcting an already-sent electronic invoice) and an explicit follow-up route ('usa poi send_einvoice') for the default dry_run path. It does not contrast against adjacent siblings such as duplicate_document, transform_document, or delete_issued_document, so when-not-to-use is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_f24C
Crea un modello F24. data segue lo schema dell'API v2 di Fatture in Cloud.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It says nothing about whether the F24 is saved as a draft or submitted, what happens on invalid data, permissions, or idempotency. The only behavioral hint is that `data` must conform to the Fatture in Cloud v2 API schema, which is useful but far from sufficient for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action stated first and the payload hint second; nothing is wasted. It is perhaps too terse given the complexity of the opaque `data` payload, but structurally sound.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool takes a nested, schema-less object and has no output schema and no annotations, so the description should explain the payload's minimum content, the create semantics, and the return value. Instead it defers entirely to an external API reference, leaving an agent without enough information to construct a valid call confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: company_id is documented in the schema, while `data` is an unconstrained free-form object with no properties. The description compensates by pointing to the external Fatture in Cloud v2 API schema for the payload shape, which is genuinely additive information the schema cannot express, though it gives no version reference or field examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Crea un modello F24"), which distinguishes it from the read/update/delete F24 siblings by action. It stops short of naming those siblings or the object's scope, but the operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to create an F24 versus calling update_f24 on an existing one, no preconditions (e.g. company selection, required identifiers), and no mention of what the tool does with the created form afterwards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_issued_documentA
Crea un documento emesso (fattura, nota di credito, proforma, preventivo, ordine, DDT...). data segue lo schema dell'API v2 di Fatture in Cloud. Ometti number per la numerazione automatica. Per forfettari aggiungi stamp_duty: 2 sopra 77,47 €. Per ripetere un documento esistente usa duplicate_document.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| fix_payments | No | Adegua l'ultima rata al totale |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden. It does add genuinely useful behavior: numbering is automatic when `number` is omitted, and the stamp-duty rule for forfettari is a domain-specific side effect most agents would miss. However it never says whether the document is created as a draft or finalized, whether e-invoicing is triggered (a separate send_einvoice tool exists), what permissions are needed, or whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five tight sentences, front-loaded with the purpose, then the schema pointer, then the two field-level rules, then the alternative tool. No filler and no repetition of what the name already says.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool built around an opaque nested payload, the external-schema pointer plus field hints is a sensible and largely sufficient approach, and no output schema means return values need not be described. Gaps remain around draft-vs-finalized state, whether this triggers e-invoicing or emailing, and which keys `data` requires — all material for a mutation tool with zero annotation coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
`data` is an unconstrained free-form object (additionalProperties: {}), so the schema alone is useless; the description rescues it by pointing to the Fatture in Cloud API v2 schema and then highlights two specific fields (`number`, `stamp_duty`) with the exact conditional value. The other two params are already documented in the schema at 67% coverage. It still leaves required fields inside `data` unstated, so not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Crea') plus resource ('documento emesso') and enumerates the concrete document types it covers (invoice, credit note, proforma, quote, order, DDT). This is far more informative than the bare name. It stops short of 5 because the sibling create_credit_note overlaps with the 'nota di credito' case it claims to handle, and the description never says which one to prefer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete when-to guidance: omit `number` for automatic numbering, add `stamp_duty: 2` for flat-rate taxpayers above €77.47, and use duplicate_document to repeat an existing document — an explicit named alternative. What is missing is routing against create_credit_note and transform_document, both of which sit adjacent to this tool's stated scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_payment_accountA
Crea un conto di saldo (banca, cassa, carta) su cui registrare incassi e pagamenti. data segue lo schema dell'API v2 di Fatture in Cloud. Campi: name, type (standard/bank), iban, sia, cuc, virtual.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden: it discloses that this is a create operation and points to the Fatture in Cloud API v2 schema for the payload, which is genuinely useful. However, it says nothing about permissions, duplicate handling, defaults applied server-side, or what a successful creation returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what is created and followed by the payload contract and field list. No filler, and the most decision-relevant information comes first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with a nested free-form object, no annotations and no output schema, the description covers the entity and the payload vocabulary, which is the core need. It leaves gaps on required fields, the company_id default behavior, and the result of the call, so it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% and the `data` parameter is a free-form object with no declared properties, so the description is the sole source of field names (name, type, iban, sia, cuc, virtual) and the type enum values (standard/bank). It still omits which fields are mandatory and the types of the remaining fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Crea un conto di saldo') and enumerates the concrete kinds (banca, cassa, carta), so an agent knows exactly what entity is produced. It does not explicitly contrast with the close siblings update_payment_account/delete_payment_account/list_payment_accounts, though the create verb makes the distinction reasonably obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'su cui registrare incassi e pagamenti' implies the purpose (accounts that back receipts and payments), which gives implicit when-to-use context. There is no explicit prerequisite, no when-not guidance, and no mention of which sibling to use for modifying an existing account.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_payment_methodB
Crea un metodo di pagamento mostrato in fattura (es. bonifico con IBAN). data segue lo schema dell'API v2 di Fatture in Cloud. Per la fattura elettronica imposta ei_payment_method (es. MP05 bonifico) e i dettagli (details: [{title, description}]).
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden for a mutation tool. It says nothing about required permissions, whether a method name must be unique, what happens on duplicate/conflict, or what the response contains; only that `data` mirrors the external API v2 schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with what is created and immediately followed by the payload source and e-invoicing specifics. Nothing is redundant, though the reference to an external API schema is terse enough to be ambiguous about which fields are mandatory.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with a free-form nested object, no output schema, and no annotations, the description gives the essential pointers but not enough to call it safely without consulting external docs. The unsupported `data` payload is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: company_id is self-documented, but `data` is an untyped object with additionalProperties {} and no shape at all. The description partially compensates by pointing to the Fatture in Cloud API v2 schema and naming key sub-fields (ei_payment_method, details: [{title, description}]), which is real added meaning but leaves most of the payload opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Crea un metodo di pagamento') plus where it surfaces ('mostrato in fattura'), so the agent can tell it apart from create_payment_account/list_payment_methods. It does not explicitly distinguish payment method from payment account, which is the closest sibling, so it stays below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: it names the invoice context and gives field-level guidance for electronic invoicing (ei_payment_method like MP05, details array). There is no statement of when to use this instead of create_payment_account or update_payment_method, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_productC
Crea un prodotto o servizio a listino. data segue lo schema dell'API v2 di Fatture in Cloud.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, yet it only says it creates a catalog entry. It does not mention duplicate-name handling, validation failures, required business fields, permissions, or reversibility — all relevant for an unannotated mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded and no filler. However, the extreme brevity leaves the bulk of the payload unexplained, so conciseness comes at the cost of usefulness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a nested, completely undocumented `data` object, no output schema, and no annotations, the description should explain at least the shape or key fields of the product payload. Instead it defers entirely to external API documentation an agent may not have access to.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: company_id is documented in the schema with its default fallback, but `data` is an open object with no property documentation. The description only points to 'the Fatture in Cloud API v2 schema', which is an external reference rather than inline meaning, so it does not compensate for the undocumented nested payload.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Crea un prodotto o servizio a listino'), which clearly distinguishes it from siblings like update_product or create_client. It does not explicitly name alternatives, but the verb+resource pair is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus update_product, list_products, or create_client/create_supplier, and no mention of prerequisites such as needing an existing price list or company context. The agent must infer the entire usage context from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_receiptC
Crea un corrispettivo (scontrino / ricevuta giornaliera). data segue lo schema dell'API v2 di Fatture in Cloud.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden of behavioral disclosure. It says only that it creates something; it does not state that the operation is a non-reversible write, whether numbering/registration is applied, what validation errors may occur, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the verb and resource, with zero filler. The second sentence is a compact pointer rather than an explanation, which is efficient but leaves the definition thin.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a free-form nested payload, no annotations, and no output schema, the description is far too sparse: it delegates the entire payload specification to external API documentation without any summary of required fields or required permissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% and the required `data` parameter is a free-form nested object with no schema description at all. The sentence '`data` segue lo schema dell'API v2 di Fatture in Cloud' is genuinely useful because it tells the agent where to find the shape of an otherwise opaque payload, though it adds nothing about company_id (which the schema already documents).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Crea un corrispettivo') and disambiguates the Italian term with the parenthetical '(scontrino / ricevuta giornaliera)', so an agent knows a daily receipt is being created. It does not explicitly name the create/update/delete receipt siblings, but the CRUD verb makes the distinction obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this instead of create_issued_document or create_received_document, nor any mention of prerequisites, prerequisites around company selection, or whether the document is created as draft or final. The agent must infer all usage context from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_received_documentB
Crea un documento ricevuto (spesa, nota di credito passiva, DDT passivo). data segue lo schema dell'API v2 di Fatture in Cloud. L'API richiede payments_list che copra l'intero amount_gross anche per spese semplici.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full disclosure burden. It does contribute one genuinely valuable behavioral constraint — that payments_list must cover the whole amount_gross even for simple expenses, a common cause of API rejection — but says nothing about the created document's resulting state (draft vs registered), duplicate detection, or what the response contains. This is partial coverage for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler, front-loading the resource and document types before the payload constraints. The only inefficiency is the reliance on an external schema reference rather than a self-contained statement, which is compact but shifts work onto the reader.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool whose main parameter is an entirely freeform nested object, no output schema, and no annotations, the description is thin. An agent cannot determine the minimum viable payload, whether the document lands in draft, or how failures manifest, and must consult external API v2 documentation it may not have.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
schema description coverage is 50%: company_id is fully documented in the schema with its default resolution, while `data` is a freeform object with additionalProperties and zero structural documentation. The description mitigates this only by pointing to the external Fatture in Cloud API v2 schema and calling out the payments_list/amount_gross rule, leaving the bulk of the nested payload semantics to outside knowledge.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Crea un documento ricevuto') and enumerates the covered subtypes (spesa, nota di credito passiva, DDT passivo), which lets an agent distinguish it from create_issued_document or create_receipt. It stops short of explicitly naming any sibling as an alternative, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The enumeration of document types implies when the tool applies, and the note about payments_list implies a precondition for calling it. However, there is no explicit guidance on when to use create_received_document versus create_archive_document, register_pending_received_documents, or create_receipt, and no mention of required prerequisites such as supplier or VAT type setup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_supplierC
Crea un fornitore. data segue lo schema dell'API v2 di Fatture in Cloud.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It never says whether creation is idempotent, whether duplicate VAT numbers are rejected, what permissions or company scoping are required, or what the response contains after a successful create.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and immediately followed by the payload note. Nothing is wasted, though the terseness is partly under-specification rather than efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool taking a free-form nested `data` object with no output schema and no annotations, the definition is well short of complete. An agent cannot determine the payload shape, success behavior, or error conditions from this description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents company_id but leaves `data` as a bare object with additionalProperties, so the description's only contribution is a pointer to the external "API v2 di Fatture in Cloud" schema. That pointer helps locate the shape but does not explain required fields, nested structures, or validation rules inline, which is a real gap for a nested-object payload.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Crea un fornitore" states a specific verb plus resource, which is unambiguous and matches the tool name. It does not distinguish this from sibling mutations such as update_supplier or create_client, but the create semantic is clear enough to act on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus update_supplier (e.g., create-vs-upsert behavior), no prerequisites, and no mention of what to do if the supplier already exists. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_vat_typeB
Crea un aliquota IVA o natura di esenzione. data segue lo schema dell'API v2 di Fatture in Cloud. Per operazioni senza IVA serve ei_type (natura, es. N2.2) e una descrizione/riferimento normativo.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It discloses that `data` follows the Fatture in Cloud API v2 schema and adds a real behavioral constraint (ei_type needed for non-VAT natures), but says nothing about required permissions, whether creation is idempotent, what happens on duplicate rates, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and then the payload convention. No filler, though the API-version reference is terse enough that it may leave the reader needing external documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a nested free-form object and no annotations or output schema, the definition covers the essential shape but outsources field-level detail to an external API doc the agent may not have. Return values and error behavior are omitted, which is acceptable only because there is no output schema to lean on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: company_id is documented in the schema, while `data` is an opaque object with additionalProperties. The description partially compensates by pointing to the API v2 schema and naming the ei_type field, but it does not enumerate the fields `data` accepts, leaving the main parameter underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Crea") and resource ("un aliquota IVA o natura di esenzione"), so the agent knows this creates a VAT rate or exemption nature. It does not explicitly contrast itself with update_vat_type, but the create verb makes the distinction from update/list/get siblings clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one useful conditional: for operations without VAT, supply ei_type (nature, e.g. N2.2) plus a regulatory description/reference. It does not say when to use this versus update_vat_type or duplicate an existing rate, nor mention prerequisites like permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_archive_documentADestructive
Elimina un documento d'archivio. I documenti finiscono nel cestino e si recuperano con recover_document.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint=true annotation already flags this as a destructive operation, so the description's main added value is disclosing that deletion is soft ("finiscono nel cestino") and reversible via recover_document. That is genuinely useful context beyond the annotation, though it omits permission requirements, the company scoping behavior, and whether/when trash items are purged permanently.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste; the action is front-loaded and the recovery consequence follows immediately. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter destructive tool with an annotation covering the safety profile, the description supplies the essential missing piece (soft delete plus recovery route). Remaining gaps, such as parameter roles and the permanent-purge timeline, are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: company_id is documented in the schema but id is not, and the description says nothing about either parameter. It neither clarifies what id refers to (archive document identifier) nor explains the company_id default or scoping implications, so it adds no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Elimina un documento d'archivio"), which lets an agent distinguish it from the many sibling deletes (delete_received_document, delete_issued_document, delete_receipt) by resource type. It stops short of explicitly naming those siblings, so it is clear but not maximally differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: delete an archive document when you want it removed. The description does point to the recovery path ("si recuperano con recover_document"), which is a useful alternative reference, but it gives no explicit when-to-use/when-not-to-use guidance relative to update_archive_document or the other delete_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_cashbook_entryCDestructive
Elimina un movimento di prima nota (incassi e pagamenti).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
destructiveHint=true already tells the agent this is a destructive write, so the description only adds the identity of the deleted object. It says nothing about irreversibility, whether a deleted entry can be recovered (notably sibling tools recover_document and list_deleted_documents exist), or whether dependent records are affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with zero filler, front-loading the action and resource. It is efficient, though the brevity is a symptom of under-specification rather than discipline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema and an undocumented required identifier, the definition leaves too much unsaid: no confirmation semantics, no error behavior, no recoverability note. It is not complete enough for an agent to invoke safely without inspecting the schema and guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: company_id is documented in the schema, but the required id parameter has only a type and integer bounds, with no meaning given in the schema and none added by the description. Whether id is the cashbook entry ID and what happens on an unknown id is left entirely implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Elimina") and a specific resource ("movimento di prima nota"), and clarifies the domain as receipts and payments. It does not explicitly differentiate itself from update_cashbook_entry or delete_receipt, but the named resource is unambiguous enough to separate it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to delete versus update or void an entry, no preconditions, and no warning that the operation is irreversible. The agent must infer the entire usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_clientCDestructive
Elimina un cliente.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already tells the agent this is a destructive operation, so the description's job is to add context such as permanence, cascading effects on linked documents, or required permissions — it supplies none of this. It does not contradict the annotation, but it is a bare restatement of a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short with no filler, but the brevity comes from under-specification rather than economy — there is no front-loaded scope, target, or warning to anchor the call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, irreversible-style operation with 50% parameter coverage and no output schema, the description omits the essentials: whether deletion is permanent, what happens to clients referenced by existing documents, and what the call returns or errors on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: company_id is documented in the schema, but the required id parameter is undocumented anywhere. The description does nothing to compensate, so the agent must guess whether id is a client identifier and what happens if company_id is omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Elimina un cliente" only restates the tool name (delete_client) in another language; it adds no scope, no constraints, and no differentiation from siblings such as delete_supplier or update_client. An agent learns nothing it could not infer from the identifier alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives (e.g., update_client to deactivate, or whether related records must be handled first). No preconditions, no exclusions, no mention of a confirmation or recoverability step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_f24CDestructive
Elimina un modello F24.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the safety profile is known, but the description adds nothing beyond that: it does not state that deletion is irreversible, whether related records or attachments are affected, or what the caller gets back. For a destructive one-way operation this leaves the real behavioral questions unanswered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no filler, so there is nothing to trim. The problem is the opposite of verbosity: the sentence is under-specified rather than wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a destructive mutation with no output schema and only half the parameters documented, the description should carry more weight than one sentence. An agent is left without confirmation of irreversibility, cascade effects, or return behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: company_id is documented in the schema but id has no description, and the description text contributes nothing about either parameter. It neither explains that id is the F24 identifier nor clarifies the company scoping fallback, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ("Elimina") and resource ("modello F24"), so an agent can tell it removes an F24 record. However, it largely translates the tool name delete_f24 rather than adding scope, and it does not distinguish itself from sibling mutations like update_f24 or from delete_* tools on other resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: nothing says under what conditions an F24 should be deleted rather than updated or left alone, and no alternative tool is mentioned. The agent must infer usage purely from the verb in the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_issued_documentADestructive
Elimina un documento emesso (fattura, nota di credito, proforma, preventivo, ordine, DDT...). I documenti finiscono nel cestino e si recuperano con recover_document.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only carry destructiveHint=true; the description adds substantive behavior beyond that by disclosing that documents are moved to a trash (cestino) and are recoverable via recover_document, so the agent knows the effect is reversible. It does not cover restrictions on deletion, side effects on numbering, or what the response returns, but for a two-sentence description this is meaningful disclosure that does not contradict the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and resource, then the recovery behavior. The document-type list earns its place by helping the agent match user intent, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only a destructiveHint annotation, the description carries most of the burden and does supply the reversibility story and target scope. The remaining gap is the absence of any constraint about which issued documents may not be deleted, which matters for a destructive tool in a billing domain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% and the `id` parameter has no schema description at all. The description indirectly resolves this by framing the target as an issued document, telling the agent which resource namespace the id belongs to, but it adds nothing about `company_id` or about id format/nonexistence handling. Baseline 3 for the partial coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Elimina un documento emesso") and enumerates the affected document types (fattura, nota di credito, proforma, preventivo, ordine, DDT), which lets an agent distinguish this from delete_received_document and delete_archive_document without opening a schema. It stops short of naming those siblings explicitly, so it is clear rather than airtight.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the agent learns deletion is soft and that recover_document is the undo path, which is genuine routing information. There is no explicit when-to-use/when-not guidance and no stated preconditions (e.g. whether documents already sent to SDI or already paid can be deleted), leaving real ambiguity for a destructive operation with many delete_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_payment_accountBDestructive
Elimina un conto di saldo (banca, cassa, carta) su cui registrare incassi e pagamenti.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the safety profile is known. The description adds domain context — that the account is used to record receipts and payments — which hints at possible referential constraints, but it never says whether the deletion is permanent, blocked when transactions exist, or requires specific permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the verb front-loaded and no filler. Nothing in it is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with an undocumented required parameter and no output schema, the description should cover irreversibility, dependency handling, and the identifier to supply. None of that is present, so an agent could invoke it incorrectly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: company_id is documented in the schema, but the required id parameter has no description anywhere. The description adds no meaning about which identifier is expected or how it is obtained, so it fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb ("Elimina") and resource ("conto di saldo"), clarified with concrete examples (banca, cassa, carta), so an agent knows exactly what is removed. It does not explicitly differentiate itself from sibling update_payment_account or list_payment_accounts, but the delete verb is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to delete versus update or deactivate an account, and no preconditions are stated (e.g., whether an account with linked cashbook entries can be removed). The agent must infer the usage scenario entirely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_payment_methodCDestructive
Elimina un metodo di pagamento mostrato in fattura (es. bonifico con IBAN).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already tells the agent this removes data, so the description only needs to add context. It contributes the fact that the target is an invoice-displayed payment method, but says nothing about irreversibility, what happens to existing documents referencing the method, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the verb and scope front-loaded and no filler. Its brevity is appropriate, though it borders on under-specification given the tool is destructive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema and half its parameters undocumented, the description should carry more weight. It omits what the deletion does to invoices already using the method, whether it can be undone, and how company_id is resolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: company_id is documented in the schema, but id carries no description. The description adds no parameter meaning at all and does not explain the company-scoping default (FIC_COMPANY_ID or the token's single company), leaving the undocumented required id entirely unretailed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ("Elimina un metodo di pagamento") and narrows scope to methods shown on invoices, with an example (bonifico con IBAN). It does not, however, distinguish itself from nearby siblings such as delete_payment_account, which an agent could easily confuse with a payment method.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to delete versus update or simply stop using a payment method, and no mention of the sibling tools that would handle adjacent tasks. The invoice-scoping phrase implies usage context but states no conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_productCDestructive
Elimina un prodotto o servizio a listino.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
destructiveHint=true already tells the agent this is a destructive mutation, so the safety profile is covered by structured data. The description adds nothing beyond that: no statement about irreversibility, whether the deletion is soft (cf. list_deleted_documents/recover_document) or hard, or what happens to references. For a deletion tool this is a real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the operation front-loaded and zero filler. It is efficient, though its brevity comes at the cost of under-specification rather than being genuinely complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, id-required mutation with no output schema and an undocumented required parameter, the definition says far too little. It should at minimum cover reversibility/soft-delete behavior and confirm what the id refers to.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: company_id is documented in the schema, but the required 'id' has no description at all. The description adds no meaning about what the id identifies or whether company_id scoping affects the deletion, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Elimina un prodotto o servizio a listino'), so an agent immediately knows this removes a catalog product/service. It does not, however, distinguish itself from the many sibling delete_* tools (delete_supplier, delete_vat_type, delete_client), relying on the name alone for that routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus update_product (e.g., deactivate/hide instead of delete) or list_products/get_product for finding the id first. No prerequisites, no mention of consequences for products already referenced on issued documents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_receiptCDestructive
Elimina un corrispettivo (scontrino / ricevuta giornaliera).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
destructiveHint=true already establishes that this mutates data, so the description would need to add value: whether deletion is permanent or recoverable (recover_document and list_deleted_documents exist as siblings), whether related records cascade, or what auth/company scoping applies. None of that is present, so nothing is added beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a useful parenthetical gloss and no filler; it does not waste the reader's time. It is, however, terse to the point of leaving gaps better filled here than nowhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema and one annotation, the description covers the bare minimum of what the tool does. Given that this is a destructive operation in a crowded family of delete_* tools, the absence of reversibility and scoping information leaves it short of what the complexity warrants.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: 'id' carries no description at all, and the description never says what that id identifies (a corrispettivo id as returned by list_receipts/get_receipt) or how company_id interacts with it. With a coverage gap this size the description should have compensated and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Elimina un corrispettivo') and glosses the domain term with '(scontrino / ricevuta giornaliera)', so the object of the operation is unambiguous. It does not, however, distinguish this from near-identical siblings such as delete_received_document, delete_issued_document, or delete_f24, which an agent must choose between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no statement of prerequisites or permissions, and no pointer to the sibling alternatives (e.g. delete_received_document vs delete_issued_document). The only usage signal available is the destructiveHint annotation, which the caller must infer from rather than being told directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_received_documentADestructive
Elimina un documento ricevuto (spesa, nota di credito passiva, DDT passivo). I documenti finiscono nel cestino e si recuperano con recover_document.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint=true annotation already flags this as a write/destroy operation, but the description adds the crucial behavioral fact that the deletion is a soft delete into a trash bin and is reversible via recover_document. That changes an agent's risk calculus materially and is genuine value beyond the annotation. It does not cover authorization requirements or behavior when the document is already deleted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, then the recoverability note. No filler, no repetition of the tool name, and every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, no-output-schema tool, the description covers what is affected and that it is recoverable, which is the information an agent most needs before calling it. Minor gaps remain: no mention of permission requirements, error behavior on an already-deleted or nonexistent id, or confirmation of which id domain is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: company_id carries a description with its fallback default, while id is undocumented but self-evident given the tool name. The description adds no parameter meaning beyond the schema (it never states that id is the received-document identifier or whether it accepts a UUID vs numeric ID). With the schema doing most of the work on a two-parameter tool, a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Elimina') and a specific resource ('un documento ricevuto'), and even enumerates the document subtypes it covers (spesa, nota di credito passiva, DDT passivo). An agent can distinguish it from delete_issued_document or delete_receipt by the resource noun, though those siblings are never named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context by explaining that deletion is non-final and the recovery path is recover_document, which effectively names the alternative tool for undoing the action. It stops short of stating when-not-to-use (e.g. prefer update_received_document or archive instead of deleting), so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_supplierCDestructive
Elimina un fornitore.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already signals this is a destructive operation, but the description adds nothing beyond that: it does not say whether the deletion is permanent or soft, whether it cascades to received documents or references, or what errors occur when the supplier is in use. For a destructive operation this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence contains no filler, but brevity here reflects under-specification rather than efficiency. Nothing is front-loaded about consequences or scope because nothing beyond the verb is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with an undocumented required parameter and no output schema, the description should disclose irreversibility, side effects on related records, and failure conditions. None of that is present, leaving the definition insufficient for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: company_id documents its default fallback, but the required id parameter has no description in either the schema or the tool description. The description offers no compensation, so the agent gets no confirmation that id refers to a supplier identifier or how to obtain it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Elimina un fornitore" translates directly to "delete a supplier," which is a restatement of the tool name delete_supplier rather than an explanation of its scope. It gives no detail distinguishing it from siblings like update_supplier or get_supplier beyond the verb implied by the name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to delete a supplier versus updating or deactivating one, and no mention of prerequisites such as whether the supplier must have no linked documents. The agent must infer all usage conditions from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_vat_typeCDestructive
Elimina un aliquota IVA o natura di esenzione.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already declares this as a destructive operation, so the description's only job is to add context — and it adds none. It does not say whether deletion is permanent, what happens to documents referencing the VAT rate, or what error occurs if the rate is in use. For a destructive mutation this is a significant gap, though it does not contradict the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no filler. It is efficient, though the brevity contributes to the under-specification noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no output schema and a required undocumented identifier, the description should cover irreversibility and referential constraints. It covers none of this, so an agent has no basis for judging the consequences of a successful call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: company_id is documented in the schema with its default resolution, but the required 'id' has no description. The description never clarifies that 'id' is the VAT type identifier nor relates it to list_vat_types/get_vat_type, leaving half the parameters unexplained in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (Elimina) and resource (aliquota IVA / natura di esenzione), which tells an agent exactly what is removed. It does not differentiate itself from the sibling delete/update tools by name, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to delete versus deactivate or update via update_vat_type, and no mention of prerequisites such as whether the rate must be unused. The intended usage is only inferable from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_documentA
Copia un documento esistente (come «Duplica», ma completo): stesso cliente, righe, bollo, metodo e conto di pagamento; nuova data, numero successivo, scadenze spostate dello stesso intervallo. La copia NON viene inviata allo SdI né per email. Usa dry_run=true per vedere il documento prima di crearlo.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Default: oggi | |
| number | No | Default: prossimo numero libero | |
| dry_run | No | ||
| overrides | No | Modifiche rispetto all'originale. Nei testi puoi usare {{mese}}, {{anno}}, {{mese_precedente}}, {{anno_mese_precedente}}, {{mese_successivo}}, {{trimestre}}, {{data}}; con |maiuscolo l'iniziale diventa maiuscola. Es. 'Consulenza {{mese_precedente}} {{anno_mese_precedente}}'. | |
| source_id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden and does well: it discloses the side effects that matter most (the copy is not sent to SdI and not emailed), explains that deadlines shift by the original interval, and offers a dry-run preview path. It omits whether the copy lands as a draft, any permission/numbering prerequisites, and what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the identity of the operation and its preserved/regenerated fields, then the side-effect caveat, then the dry_run tip. The parenthetical "(come «Duplica», ma completo)" is a small waste but everything else earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with a nested overrides object, no annotations and no output schema, the description covers the copy semantics and safety caveats well but leaves the override capability entirely undocumented and says nothing about the returned document or its initial state. An agent could call it correctly, but not exploit it fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so the schema already documents date, number, company_id and the rich overrides template syntax. The description adds real meaning for date/number by explaining they are regenerated (new date, next free number) rather than copied, but it never mentions the large nested overrides object, which is the highest-complexity part of the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ("Copia un documento esistente") and enumerates exactly what is preserved (cliente, righe, bollo, metodo e conto di pagamento) versus what is regenerated (nuova data, numero successivo, scadenze spostate). It does not, however, distinguish itself from close siblings such as bulk_duplicate, transform_document or create_issued_document, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is one concrete usage instruction — use dry_run=true to preview before creating — which is genuinely actionable. But there is no guidance on when to choose this over bulk_duplicate, transform_document, or plain create_issued_document, and the 'when not to use' case is only implied by the no-SdI/no-email note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
einvoice_rejection_reasonBRead-only
Motivo dello scarto SdI di una fattura elettronica, con le indicazioni per correggerla.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds one piece of value beyond the annotations — that the response includes remediation instructions, not just a code — which matters since there is no output schema. It says nothing about preconditions (must the invoice actually be rejected?) or about what happens when no rejection exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact clause with no filler, and the key concept (rejection reason) is front-loaded. It is efficient, though the brevity comes partly at the cost of the guidance dimensions above.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with no output schema, the description covers the 'what' but leaves the identifier's meaning and the lookup's preconditions unstated. Adequate to attempt a call, but an agent has to guess what 'id' refers to when constructing it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: company_id is documented, but the required 'id' has no schema description. The description does not clarify that 'id' is the document/invoice identifier or how scope interacts with company_id, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and outcome: the SdI rejection reason of an electronic invoice, plus correction guidance. An agent can tell this is a diagnostic lookup rather than a CRUD operation. It does not, however, distinguish itself from near-neighbours such as verify_einvoice or get_einvoice_xml, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: nothing says to call this after a rejected send, nor that verify_einvoice or get_einvoice_xml are the alternatives for different questions. The agent must infer the trigger condition from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_documentA
Invia il documento per email al cliente, con link e PDF. Mittente, destinatario, oggetto e testo di default sono quelli impostati in Fatture in Cloud.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| body | No | HTML; {{allegati}} viene sostituito dai pulsanti | |
| subject | No | ||
| send_copy | No | Copia all'indirizzo CC dell'azienda | |
| attach_pdf | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| recipient_email | No | Più indirizzi separati da virgola |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only carry openWorldHint=true, so the description must supply the rest. It usefully discloses that sender, recipient, subject and body are pre-filled from the Fatture in Cloud account settings, which is real context beyond the schema, but it does not state that the mail is dispatched immediately and irreversibly, nor what permissions or failure modes apply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the outbound action is front-loaded ahead of the defaults note. Slightly weaker only because the second sentence reads as a single merged clause rather than a clearly separated behaviour note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-shot side-effecting send with no output schema and only one required parameter, the description covers what the tool does and where defaults come from, which is close to sufficient. The missing piece is confirmation of immediate dispatch/unrecoverability, which matters for an outbound-email mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 57%, and the description compensates by signalling that the sender/recipient/subject/body parameters are optional because defaults exist, and that a PDF can be attached. It still adds nothing about the required id, send_copy, company_id, or the comma-separated recipient_email format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Invia il documento per email al cliente" states a specific verb (invia) and resource (documento) plus the channel (email) and the fact that link and PDF are included. It is clearly distinct from send_einvoice or list_sent_emails, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the tool for emailing an existing document to a customer, but the description gives no explicit conditions, no prerequisites (e.g. document must exist / be issued), and does not route to bulk_email or send_einvoice for the related cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_archive_documentCRead-only
Dettaglio completo di un documento d'archivio.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, and the description only adds the vague qualifier "completo", which hints the payload is fuller than a list entry but doesn't say what fields or related data come back. No mention of error behavior for a missing id or of cross-company access implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no padding, but brevity here comes at the cost of substance rather than from disciplined editing. There is no structure beyond one noun phrase.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, an undocumented id parameter, and no annotations beyond readOnlyHint, the description should explain what a "complete detail" includes and how the id is sourced. For a 2-parameter retrieval tool it leaves too much to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: company_id is documented in the schema, but id carries no description. The description does not explain that id refers to an archive document identifier or that company_id resolves to a default company, so it fails to compensate for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase "Dettaglio completo di un documento d'archivio" does convey retrieving a single archive document in full, which implicitly contrasts with list_archive_documents. However, it never uses a retrieval verb and never names the sibling or the required identifier, so the agent must infer that this is the get-one counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives such as list_archive_documents, and no stated prerequisite for obtaining the id. The agent gets no routing logic beyond the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cashbook_entryBRead-only
Dettaglio completo di un movimento di prima nota (incassi e pagamenti).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the description's only added behavioral content is the domain hint that entries are receipts and payments. It says nothing about what happens when the id is not found, whether the detail spans linked documents or installments, or what scoping company_id imposes beyond what the schema already states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the resource and the "complete detail" qualifier front-loaded; there is no filler. It is however on the terse side for a tool whose return shape is undocumented.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with readOnlyHint and no output schema, the definition is barely sufficient: it identifies the entity but never indicates what the "full detail" contains. Since no output schema exists, some indication of return content would have been valuable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The company_id parameter is well documented in the schema (including its default resolution), while id has no description at all, leaving coverage at 50%. The description clarifies that the id identifies a cashbook movement, but adds no format or constraint details beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the resource precisely ("un movimento di prima nota") and the operation ("dettaglio completo"), and the parenthetical "(incassi e pagamenti)" scopes which entries are covered. It implicitly contrasts with list_cashbook_entries by promising full detail of a single entry, though it never names that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: "dettaglio completo" signals fetching one record's full detail rather than a list, but there is no explicit when-to-use statement, no mention of the list_cashbook_entries alternative, and no preconditions (e.g. that the entry must exist or belong to the given company).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_clientCRead-only
Dettaglio completo di un cliente.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this is a safe read, so the bar is lower, yet the description adds essentially nothing beyond "complete detail" — no mention of what happens with an invalid or foreign-company id, nor of error behavior. Since there is no output schema, the description should have described what "complete detail" actually contains, and it does not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no wasted words, but the brevity comes at the cost of nearly all substantive content. It is efficient rather than well-structured or front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool this is thin: no output schema exists, the required id has no documentation anywhere, and the description never explains what the returned "complete detail" comprises. An agent could call it, but with little confidence about the identifier format or response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description is silent on both parameters. With only 50% schema coverage, the undocumented required "id" parameter is left for the agent to guess, and the company_id fallback semantics (FIC_COMPANY_ID or the token's only company) are only found in the schema, not reinforced or explained in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Dettaglio completo di un cliente" identifies the resource (a single client) and indicates a full-record retrieval rather than a list, which implicitly separates it from list_clients. However, there is no explicit verb and no stated contrast with siblings like get_supplier or list_clients, so the agent must rely on the tool name for the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus list_clients or client_statement, and no prerequisites such as needing a valid client id. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_infoBRead-only
Dati dell'azienda (anagrafica, piano, impostazioni) e, se richiesto, l'uso del piano per categoria.
| Name | Required | Description | Default |
|---|---|---|---|
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| plan_usage | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes the safety profile, so the description only needs to add context. It does add what the payload contains and that plan usage is optional, but it says nothing about the default company resolution behavior or the shape of the returned plan-usage breakdown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence that front-loads the resource and parenthetically lists the returned sections. Nothing is wasted, though the parenthetical list is slightly compressed and could separate the optional flag more clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only getter with no output schema, the definition covers what data comes back and the optional flag. It is adequate but thin: nothing describes the structure of the returned company object or how the default company is resolved when company_id is omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: company_id is documented in the schema, but plan_usage has no schema description. The description compensates by explaining that the flag yields plan usage per category, giving the boolean meaning beyond its name, though it still omits units or granularity of that breakdown.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource (company data) and enumerates the three domains returned: registry, plan, settings, plus the optional plan usage. It is a clear read operation, but it does not distinguish itself from the sibling list_companies, so an agent must infer that this one returns details for a single company.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus list_companies, api_quota, or tax_profile_get. The only conditional hint is 'se richiesto' for plan usage, which is a parameter note rather than a usage rule, and no prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_document_pdfBRead-only
Link al PDF del documento (anche DDT e fattura accompagnatoria). Con save_to scarica il PDF su file o in una cartella.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| save_to | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already marks this as a non-mutating read. The description adds real value by disclosing that without save_to it returns a link, while with save_to it writes the PDF to a file or folder. That local filesystem write is a side effect worth noting against a readOnly annotation, though it concerns the caller's disk rather than backend data, so it is a tension rather than a clear contradiction. It does not describe the link format or errors for unsupported document types.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no padding, and the core purpose (PDF link) is front-loaded. The parenthetical scope note is efficient rather than redundant. Slightly terse given what is left unsaid, but nothing wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema, the description conveys the main behavior and the save_to effect adequately. However, it never clarifies what the id references, what the returned link looks like, or whether behavior differs across the covered document types. Adequate but with clear gaps for a tool whose output (a link) is central.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (id and save_to have no schema descriptions), so the description carries extra weight. It does explain save_to's effect (downloads to a file/folder), but leaves id and the link-versus-download default implicit. It partially compensates for the coverage gap but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it returns the PDF link of a document, and notes it also covers DDT and accompanying invoices (fattura accompagnatoria). This is clearer than a bare name restatement. It stops short of distinguishing itself from the many sibling document getters (get_issued_document, get_received_document), but the retrieval target (the PDF) is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no mention of alternatives among the dozens of sibling document tools. The only contextual cue is that save_to triggers a download, which is parameter behavior rather than usage routing. An agent must infer on its own when to reach for this versus the other get_* document tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_einvoice_xmlARead-only
Scarica l'XML FatturaPA di un documento. Con save_to lo salva su file (percorso o cartella), altrimenti lo restituisce.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| save_to | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| include_attachment | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is consistent with the description — no API resource is mutated, and the description discloses the two output modes (save to file vs return in response). However, it does not clarify that save_to causes a local filesystem write, nor what the returned content looks like (raw string, base64, size) when save_to is omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero filler: the core action first, then the branching behavior of save_to. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only retrieval tool the essentials are present, and the return-vs-save behavior is spelled out despite there being no output schema. The gaps — semantics of include_attachment and the exact shape of the returned XML — keep it from being complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description needs to compensate. It does explain save_to's dual meaning (file path or folder), which the bare schema does not, but leaves include_attachment and the meaning of id (document identifier, presumably) entirely undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Scarica l'XML FatturaPA di un documento' (downloads the FatturaPA XML of a document). This clearly separates it from the get_document_pdf sibling, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete usage rule for one branch: with save_to it writes to disk (path or folder), otherwise it returns the XML. It offers no guidance on when to prefer this over siblings like get_document_pdf, send_einvoice, or verify_einvoice, so context selection is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_f24CRead-only
Dettaglio completo di un modello F24.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds only 'complete detail' and says nothing about not-found behavior, permissions, or what data is included beyond the record itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted wording. Its brevity is appropriate structurally, though it leaves important details unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only retrieval tool, the description still lacks the required identifier semantics and any indication of when to use this versus list_f24. It is under-specified for the two-parameter schema and gives no return-shape context, though no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: company_id is documented in the schema, but the required id parameter has no description. The tool description mentions neither parameter, so it does not compensate for the missing id semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (F24) and indicates a single-record detail retrieval, which distinguishes it from list_f24. The verb is implicit rather than stated, but the purpose is still clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives no explicit guidance on when to use get_f24 instead of list_f24 or other F24 siblings. At best, 'dettaglio completo' implies looking up details after identifying a record, but this is not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_issued_documentBRead-only
Dettaglio completo di un documento emesso (fattura, nota di credito, proforma, preventivo, ordine, DDT...).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=true annotation already tells the agent this is a non-mutating read, so the description is not obliged to restate safety. Beyond that it discloses nothing behavioral: not what the "complete detail" includes (line items, totals, attachments, e-invoice status), not what happens on a missing or foreign id, and not the company-scoping fallback behavior implied by company_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the parenthetical type list earns its place by defining scope. It stops at adequate rather than exemplary because the enumeration consumes most of the sentence while the actionable guidance stays absent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 params, no nested objects, no output schema), and the annotation covers the safety profile, so the description needs only to identify the resource and its record types, which it does. The remaining gap is that an agent cannot tell what fields the "dettaglio completo" response will contain before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: company_id is documented in the schema with its default resolution rule, while id has no schema description at all. The description only indirectly clarifies that id refers to an issued document, without saying whether it is an internal numeric id rather than the visible document number, so it partially compensates but leaves a real ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Dettaglio completo di un documento emesso" supplies a clear verb (retrieve full detail) and a well-scoped resource, and the parenthetical enumerates the document types it covers (fattura, nota di credito, proforma, preventivo, ordine, DDT). The "emesso" qualifier implicitly separates it from get_received_document and get_archive_document, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer this is the single-record fetch for issued documents, presumably after list_issued_documents. There is no explicit when-to-use statement, no mention of what to do when the id is unknown, and no exclusion of alternatives such as get_document_pdf or get_einvoice_xml.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_new_document_defaultsBRead-only
Prossimi numeri liberi per sezionale, valori predefiniti, aliquote e modelli: utile prima di creare un documento.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | invoice | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is consistent with a 'get' tool, so no contradiction. The description adds value by disclosing that the payload covers upcoming section numbers, defaults, VAT rates and templates — non-obvious return content for a no-output-schema tool — but says nothing about scope (per company? per document type?) or fallback behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the returned data front-loaded and the usage hint trailing, with no filler. It is dense but readable, though the compressed noun list ('sezionale, valori predefiniti, aliquote e modelli') is slightly opaque without domain familiarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param read-only tool with no output schema, an agent needs to know what comes back and how to use it; the description lists the payload categories and the pre-creation use case, which is adequate. It is still missing the link between the 'type' parameter and the returned defaults, which is the one thing that would make the call unambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, and the undocumented half is the important one: the 11-value 'type' enum has no description in the schema and the description never explains that the returned defaults vary by document type. 'Sezionale' and 'modelli' hint at document-type-dependent content but give no mapping, so the agent must guess how 'type' changes the result.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource loosely (next free numbers, defaults, rates, templates) but the verb is only implied by the tool name, not by the sentence itself. It is distinguishable from create_issued_document via the 'utile prima di creare un documento' clause, but the phrasing is a list of returned data rather than a crisp statement of what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Utile prima di creare un documento' gives a clear triggering context, so an agent knows to call it in the pre-creation step. However, no alternative is named (e.g. whether a plain get_company_info or list_vat_types call would serve instead), and there are no exclusions or notes about whether the call is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_payment_accountCRead-only
Dettaglio completo di un conto di saldo (banca, cassa, carta) su cui registrare incassi e pagamenti.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, and the description adds nothing beyond that: no behavior when the id does not exist or belongs to another company, no note on what 'complete detail' contains, no permission or scope context. The only added value is domain clarification of what a balance account is (bank, cash, card), which is definitional rather than behavioral.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the resource front-loaded and no filler. It is appropriately short for a simple two-parameter read, though the nominal phrasing is slightly less actionable than an explicit verb would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with annotations present and no output schema, the definition is minimally adequate: an agent knows what it fetches. However, it leaves the required 'id' unexplained and does not indicate what the 'complete detail' actually returns, which matters since no output schema exists to fill that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: company_id is documented in the schema (including its default fallback), but the required 'id' has no description anywhere. The description does not mention either parameter, so it fails to compensate for the undocumented id or to state whether id is account-scoped per company.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely ('conto di saldo', clarified as bank/cash/card) and states it returns the complete detail of a single account, which separates it implicitly from list_payment_accounts. The verb is nominalized ('Dettaglio completo') rather than an explicit 'retrieve/get', and the distinction from siblings is only implied, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus list_payment_accounts (to browse) or update/delete_payment_account (to mutate). The only hint is the required id, from which an agent must infer that a listing call comes first. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_payment_methodBRead-only
Dettaglio completo di un metodo di pagamento mostrato in fattura (es. bonifico con IBAN).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes the safe read-only profile, so the description does not need to restate safety. It adds some useful context by implying the returned detail includes fields such as IBAN, but it does not cover permissions, error behavior, or return format beyond the example.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no redundant wording. It efficiently communicates the resource and scope without burying the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only get tool the description is minimally adequate, but with no output schema it should ideally clarify what "complete detail" includes and what the id refers to. The annotation covers the safety profile, but parameter semantics and sibling routing remain incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The required id parameter has no schema description and is not explained in the description, leaving an important semantic gap. company_id is documented only in the schema, and the description adds no meaning beyond what the input schema provides for either parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Dettaglio completo di un metodo di pagamento" clearly identifies a get-detail operation on a payment method, and "mostrato in fattura" scopes it to invoice payment methods. It does not explicitly differentiate itself from the sibling list_payment_methods tool or explain id-based lookup, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use guidance, no when-not-to-use conditions, and no routing to alternatives such as list_payment_methods. The invoice context is helpful but does not tell an agent when this tool should be selected over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pending_received_documentARead-only
Dettaglio completo di una fattura passiva in attesa di registrazione, con link temporaneo all'allegato (attachment_url).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is already supplied, so the safety profile is covered, but the description adds a genuinely non-obvious behavioral detail: the attachment link is temporary ('link temporaneo all'allegato'). That tells an agent the URL must be consumed promptly and not cached. It still says nothing about error behavior when the document is not pending or already registered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The distinguishing scope ('in attesa di registrazione') comes first and the attachment_url note is parenthetically appended, so nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only getter with one required parameter this is close to adequate, and there is no output schema to compensate. However, the description only promises 'dettaglio completo' plus attachment_url without indicating what the detail contains, and it leaves the id/company_id scoping unexplained, which matters on a tool whose whole point is retrieving one pending document.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: company_id is documented in the schema, but id has no description at all, and the description never clarifies whether id is the pending-document identifier or the underlying received-document id. The only identifier-like reference in the text, attachment_url, is an output field, not a parameter, so the coverage gap is left entirely unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Dettaglio completo di una fattura passiva in attesa di registrazione'. The qualifier 'in attesa di registrazione' clearly separates it from list_pending_received_documents and register_pending_received_documents, though it never explicitly distinguishes itself from get_received_document, which presumably returns similar detail for non-pending documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the phrase 'in attesa di registrazione' — an agent can infer this is the detail lookup to call before registering a pending invoice. There is no explicit when-to-use statement, no exclusions, and no mention of the obvious alternatives (get_received_document, list_pending_received_documents).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_price_list_itemsCRead-only
Prezzi dei prodotti in un listino.
| Name | Required | Description | Default |
|---|---|---|---|
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| price_list_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already tells the agent this is a non-destructive read, and the description adds nothing beyond that: no mention of whether results are paginated, whether prices are returned with VAT or currency, or what happens when the price_list_id is unknown. For a tool with no output schema, the description carries most of the burden and does not meet it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no wasted words and the resource is front-loaded, but the brevity comes at the cost of useful detail rather than from tight editing of rich content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, an undocumented required parameter, and only a read-only annotation, the definition leaves the agent without the information needed to interpret the response or supply price_list_id correctly. Given the tool's simplicity the gap is not huge, but it is a real one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: company_id has a description (default from FIC_COMPANY_ID or the token's single company) while price_list_id has none. The description supplies no meaning for either parameter, so it fails to compensate for the undocumented required parameter and adds nothing over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('Prezzi dei prodotti in un listino'), which makes the domain clear, but it implies rather than states the verb ('get'/'retrieve'), and it never mentions the sibling list_price_lists to distinguish listing price lists from fetching their items. An agent can roughly infer the purpose but must consult the schema to confirm it returns product prices for a given list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusion of alternatives, and no stated prerequisite such as requiring a valid price_list_id from list_price_lists. The agent is left to infer that a price list must already exist and that its ID comes from the sibling list tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productCRead-only
Dettaglio completo di un prodotto o servizio a listino.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the bar is lower. The description adds only that the result is the 'dettaglio completo' — i.e. a full record rather than a list-summary row — but says nothing about error behavior for a missing id, permission requirements, or cross-company visibility, which is where the remaining value would lie.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the key concept ('prodotto o servizio a listino') front-loaded. It is efficient, though its brevity comes at the cost of the omissions scored elsewhere rather than through deliberate compression.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple two-parameter read tool with a readOnly annotation and no output schema, so expectations are modest, but the required 'id' argument is undocumented in both schema and description and the scope of 'dettaglio completo' is never specified. An agent would still be guessing about the identifier's origin and what the response contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: company_id is documented in the schema, but the required 'id' parameter has no description anywhere. The description does not clarify that id is the product identifier or how it relates to listino entries, so it fails to compensate for the coverage gap on the one required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Dettaglio completo di un prodotto o servizio a listino' clearly names the resource (a catalog product or service) and states that it returns the full detail record. It does not, however, distinguish itself from siblings like list_products, get_price_list_items, or get_product-adjacent getters, so an agent gets a clear purpose but no sibling routing signal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: nothing says to use this after list_products, nothing says it differs from get_price_list_items, and no prerequisites are mentioned. The agent must infer the intended flow from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_receiptBRead-only
Dettaglio completo di un corrispettivo (scontrino / ricevuta giornaliera).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds that the response is the "complete detail" of the entity, but says nothing about not-found behavior, permission/company scoping effects, or what "complete" includes. With annotations carrying the read-only signal, this is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource identified up front and no filler. It is efficient, though its brevity borders on under-specification rather than tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with annotations and no output schema, the description is minimally sufficient to tell an agent this fetches one receipt's full detail. It leaves the undefined required id and the meaning of "complete detail" unaddressed, which matters given only 50% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: company_id is documented with a default-resolution rule, but the required id is bare (integer, no description). The description adds no meaning about what id identifies or how company_id interacts with the lookup, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb-noun sense ("Dettaglio completo" = full detail of) and a specific resource, clarified with synonyms (corrispettivo / scontrino / ricevuta giornaliera). The word "dettaglio" combined with the singular resource implies a single-record fetch, which implicitly separates it from list_receipts, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no statement of prerequisites, and no routing to alternatives such as list_receipts for searching or get_received_document for supplier invoices. The usage (fetch one record by id) is only implied by the verb and the required id parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_received_documentBRead-only
Dettaglio completo di un documento ricevuto (spesa, nota di credito passiva, DDT passivo).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already tells the agent this is a safe read, so the description's main added value is scoping: it discloses which document categories are covered, which helps the agent avoid calling it for issued documents. Beyond that it says nothing about behavior on a missing/invalid id, permission requirements, or whether company_id defaults affect visibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, and the core purpose is front-loaded. It is efficient, though its brevity is partly under-specification rather than disciplined density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry some burden of explaining what comes back; 'dettaglio completo' gestures at a full record but does not say what fields or related data are included. For a simple two-parameter read tool with a readOnlyHint annotation this is borderline adequate, but an agent still lacks guidance on id sourcing and error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: company_id is documented in the schema with its default resolution, but id is undocumented anywhere. The description does not mention any parameter, does not clarify that id is the received-document identifier (as opposed to a receipt or issued-document id), and does not explain the company-scoping semantics. It fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Dettaglio completo') and resource ('documento ricevuto') and even enumerates the covered document types (spesa, nota di credito passiva, DDT passivo), so an agent knows exactly what entity it retrieves. It does not explicitly contrast itself with list_received_documents or get_pending_received_document, but the singular 'documento' versus 'list' sibling naming makes the distinction reasonably inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the many retrieval siblings (list_received_documents, get_pending_received_document, get_document_pdf, get_archive_document). No prerequisite is mentioned, such as obtaining the id from a list call first, and no exclusion is given. Usage is only implied by the word 'dettaglio'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_supplierCRead-only
Dettaglio completo di un fornitore.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. Beyond that the description adds nothing: it does not say what fields a 'dettaglio completo' includes, what happens when the id is unknown, or how the optional company scoping affects the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short, front-loaded sentence with no waste, but its brevity reflects under-specification rather than disciplined concision; the sentence carries almost no decision-relevant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a retrieval tool with no output schema, the description should indicate at least the shape of the returned supplier detail. With two parameters (one undocumented) and no return-value context, an agent cannot predict the response or handle not-found cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: company_id is documented in the schema (default FIC_COMPANY_ID or the token's single company), but id is entirely undocumented. The description does not compensate — it says nothing about the identifier format or the company-scoping behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a resource (fornitore) and a retrieval intent (dettaglio completo), so the agent can infer it returns a single supplier's full record. It does not differentiate from siblings like get_client, list_suppliers, or get_company_info, and the phrase is generic enough that 'detail' is undefined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus list_suppliers (browse) or get_client (analogous entity type). The agent must infer that this is a single-record fetch by id, with no stated prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vat_typeCRead-only
Dettaglio completo di un aliquota IVA o natura di esenzione.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=true annotation already tells the agent this is a safe read, so the bar is lower, but the description adds no behavioral context whatsoever. 'Dettaglio completo' hints at a full-object return but there is no output schema and nothing about what fields come back, error behavior for an unknown id, or multi-company scoping.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler or redundancy. It is efficient, though as a bare noun phrase it lacks an action verb that would make the intent unmistakable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with no output schema, an undocumented required id, and 50% parameter coverage, the description is too thin to let an agent invoke it confidently. It should at least state what a VAT type record contains (rate, exemption nature, codes) and what id refers to.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: company_id is documented in the schema, but the required id parameter carries no description anywhere. The description does not compensate — it never explains that id is the VAT type identifier, nor how the two parameters interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says it returns the complete detail of a VAT rate or exemption nature, which does identify the resource being fetched. However it just restates the name's 'get_vat_type' semantics and never names a verb, nor does it distinguish this from list_vat_types or the other vat_type siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all — nothing says to use this instead of list_vat_types when the numeric id is known, and no prerequisites or follow-up steps are given. The agent must infer the retrieval-by-id pattern from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
join_documentsC
Raggruppa più DDT, ordini, preventivi o rapportini in un unico documento (es. fattura riepilogativa di fine mese).
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| date | No | ||
| group | No | Raggruppa le righe uguali | |
| dry_run | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| source_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden and largely fails: it does not say whether the source documents are consumed, merged, or left untouched, whether a new document is created, or what permissions/company context are required. The existence of a dry_run parameter hints at a preview mode, but the description never explains it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence that front-loads the action and adds a useful concrete example; nothing is wasted. It is arguably too terse for a 6-parameter mutation tool, but as prose it is clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating creation/merge tool with six parameters, no annotations, and no output schema, the description is far too thin: no side effects, no dry_run semantics, no return information, and no parameter guidance. An agent could invoke it but could not safely predict what happens to the source documents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, yet the description explains none of the six parameters. The Italian source-type words loosely map to the source_type enum, but ids (minItems 2), date, group, dry_run and company_id get no clarification in the description, leaving most of the contract undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: grouping multiple delivery notes/orders/quotes/work reports into a single document, with a concrete example (month-end summary invoice). This is clearly distinct from CRUD siblings, though it does not differentiate itself from near neighbours such as transform_document, duplicate_document or bulk_duplicate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example ('fattura riepilogativa di fine mese') implies when to use it, but there is no explicit when-not, no mention of prerequisites, and no routing to alternatives like transform_document or bulk_duplicate that an agent might confuse it with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_archive_documentsBRead-only
Elenca documento d'archivio. Risposta paginata con page, last_page, total.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Filtro Fatture in Cloud, es. "date >= '2026-01-01' and entity.name like '%rossi%'" o "amount_gross > 1000" | |
| page | No | ||
| sort | No | Campo di ordinamento, prefisso - per decrescente (es. '-date') | |
| fieldset | No | basic (default) o detailed (con righe e pagamenti) | |
| per_page | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares the safety profile, so the description owes less here. It does add a genuinely useful behavioral fact not in the annotations: the response is paginated and carries page, last_page, total. It says nothing about filtering semantics, defaults, or result volume, but for a read-only list tool the added pagination note is a reasonable contribution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero padding, front-loading purpose before the response shape. The terseness is a coverage problem, not a verbosity problem, so it scores well here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six parameters, no required fields, no output schema, and four same-resource siblings (get/create/update/delete_archive_document plus other list_* families), the description does not give enough to call the tool confidently. The pagination note partly substitutes for the missing output schema, but scope, filtering intent, and archive-vs-other-document boundaries are left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, which puts the baseline at 3. The description mentions only page (one of the parameters undocumented in the schema) and the pagination response fields; it adds no meaning for q, sort, fieldset, per_page or company_id beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Elenca documento d'archivio" names a specific verb (list) and a specific resource (archive document), which matches the sibling naming convention get_archive_document / create_archive_document. It does not, however, distinguish this tool from the many other list_* tools (list_received_documents, list_issued_documents, list_deleted_documents), so an agent cannot tell from the description alone which list applies to its case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contains no when-to-use guidance at all — nothing about when to prefer it over list_received_documents or list_deleted_documents, and no prerequisite or scope hints. Usage has to be inferred entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cashbook_entriesCRead-only
Elenca movimento di prima nota (incassi e pagamenti). Risposta paginata con page, last_page, total.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| date_to | Yes | ||
| date_from | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| payment_account_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description contributes the return shape (page, last_page, total), which tells the agent the result is paginated — genuinely useful, but it omits page-size behavior, sorting, and the company-scoping default that affects which entries are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the purpose front-loaded and no redundant wording. Brevity here is efficient rather than padded, though the second sentence devotes space to return fields while omitting more consequential parameter facts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter, two-required listing tool with no output schema and 20% schema coverage, the description is too thin. It never states the mandatory date range, the filtering options, or the default company scoping, leaving the agent to discover core calling requirements from the raw schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% — only company_id carries a description — so the description bears most of the burden and largely fails it. The phrase 'incassi e pagamenti' loosely hints at the type enum (all/in/out), but date range format, payment_account_id filtering, and the required-vs-optional distinction are left entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — listing cashbook entries ('movimento di prima nota') with the clarification that these are receipts and payments. It is clearly distinguishable from the singular sibling get_cashbook_entry, though it never explicitly contrasts with it or with report-style siblings like cashflow_forecast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus get_cashbook_entry, cashflow_forecast, or the report tools, and no mention that date_from/date_to are mandatory. The agent must infer the usage context entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_clientsCRead-only
Elenca cliente. Risposta paginata con page, last_page, total.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Filtro Fatture in Cloud, es. "date >= '2026-01-01' and entity.name like '%rossi%'" o "amount_gross > 1000" | |
| page | No | ||
| sort | No | Campo di ordinamento, prefisso - per decrescente (es. '-date') | |
| fieldset | No | basic (default) o detailed (con righe e pagamenti) | |
| per_page | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safe-read profile is covered. The description adds that the response is paginated and names the pagination fields (page, last_page, total), which is useful return-shape context, but says nothing about default ordering, page size behavior, or what happens with the query filter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, and the purpose is front-loaded. The brevity is not wasteful in structure but crosses into under-specification, since almost nothing useful beyond the verb and a return-shape fragment is conveyed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a moderately complex tool: six parameters, a query-filter mini-language, an enum fieldset, and no output schema. Two terse sentences do not cover that surface, and there is no output schema to fall back on for return-value semantics, so an agent would need to read the schema closely to call it well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is a middling 67%, and the description adds essentially no parameter meaning beyond the schema — it only echoes pagination concepts already implied by the "page" parameter. The most complex parameter, the Fatture in Cloud query filter "q", is documented solely in the schema, and the description does not clarify it or the company_id default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb and resource ("Elenca cliente" = list clients), so the basic action is identifiable. However, it offers no differentiation from the many sibling tools that also deal with clients (get_client, client_statement, lookup), leaving the agent to infer scope from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this list tool versus get_client or client_statement, and no mention of supported filtering or sorting use cases. The only contextual hint is that results are paginated, which implies browsing rather than a single-record fetch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_companiesARead-only
Aziende accessibili con il token, con il loro id (da usare in company_id se ne gestisci più di una).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds that results are limited to companies the token can access, which is useful scoping context, but it doesn't describe the return shape or whether the list can be empty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with no filler, and the scoping condition is stated up front. It is slightly dense and relies on the parenthetical for the most actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description must carry the return-value burden. It names the id but not the other fields likely returned (e.g. name), leaving an agent guessing about what the list items contain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero input parameters, so the baseline is 4. The description still adds value by explaining that the returned id is what feeds company_id in subsequent calls, which is semantic meaning not present in the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource (companies accessible with the token) and the key returned datum (their id), which lets an agent distinguish this list tool from get_company_info. The verb 'list' is only implied by the tool name and noun phrase rather than stated, keeping it just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete usage rule for the output — put the id in company_id if you manage more than one company — but says nothing about when to call this versus siblings like get_company_info or api_quota. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_deleted_documentsARead-only
Documenti emessi o ricevuti nel cestino, recuperabili con recover_document.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | issued | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is consistent with a trash listing, and the description adds the useful behavioral fact that these entries are recoverable rather than permanently gone. It says nothing about pagination, ordering, or whether the list is scoped to a single company by default, which the annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the scope (trash) front-loaded and the recovery hint trailing. There is no filler and nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only listing with no output schema, the description conveys the essential scope and the recovery destination. The remaining gaps (pagination, ordering, default kind behavior) are minor for a tool of this complexity, though the default of 'issued' still has to be inferred from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: company_id is documented in the schema with its default-resolution rule, while the kind enum has no schema description. The description partially compensates by mapping 'emessi o ricevuti' onto the two enum values, but it does not clarify the default of 'issued' or what each kind boundary means.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely ('Documenti emessi o ricevuti nel cestino'), making clear this is a trash-scoped listing of both issued and received document types, which distinguishes it from the sibling list_issued_documents and list_received_documents. The listing verb itself is only implied by the tool name rather than stated in the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'recuperabili con recover_document' gives the agent a clear follow-up path once an item is found, which is genuine usage guidance. However, it never states when to choose this over list_issued_documents/list_received_documents or list_archive_documents, nor any prerequisites, so the selection logic is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_f24BRead-only
Elenca modello F24. Risposta paginata con page, last_page, total.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Filtro Fatture in Cloud, es. "date >= '2026-01-01' and entity.name like '%rossi%'" o "amount_gross > 1000" | |
| page | No | ||
| sort | No | Campo di ordinamento, prefisso - per decrescente (es. '-date') | |
| fieldset | No | basic (default) o detailed (con righe e pagamenti) | |
| per_page | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the description's main contribution is disclosing the paginated return shape (page, last_page, total), which is genuinely useful given there is no output schema. It does not mention default page size, cost of large fieldset=detailed responses, or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and followed by the return shape; nothing is wasted. It is perhaps too terse for a six-parameter list tool, but there is no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema, disclosing pagination fields is the right instinct, but with six parameters (filter syntax, sort, fieldset, company defaulting) the definition leaves the agent to rely entirely on the schema. It is minimally adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the description adds no meaning beyond it — "page" appears only as part of the response shape, not as parameter guidance. The schema itself documents q, sort, fieldset and company_id, while page and per_page carry no descriptions in either place, so the description fails to fill that residual gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Elenca modello F24" gives a specific verb (list) and resource (F24 forms), which is enough to separate it from get_f24/create_f24/update_f24 in the sibling set. It stops short of explicitly naming those siblings or stating the scope of what is listed, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: nothing says to use this instead of get_f24 for a single record, or when filtering via q is preferable to listing everything. The agent must infer the list-vs-get distinction purely from the verb in the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_issued_documentsBRead-only
Elenca documento emesso (fattura, nota di credito, proforma, preventivo, ordine, DDT...). Risposta paginata con page, last_page, total.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Filtro Fatture in Cloud, es. "date >= '2026-01-01' and entity.name like '%rossi%'" o "amount_gross > 1000" | |
| page | No | ||
| sort | No | Campo di ordinamento, prefisso - per decrescente (es. '-date') | |
| type | No | Tipo di documento | invoice |
| fieldset | No | basic (default) o detailed (con righe e pagamenti) | |
| per_page | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the read-only safety profile, so the description only needs to add context. It usefully discloses that the response is paginated with page, last_page and total. However, it omits an important behavioral gotcha visible in the schema: the default type is 'invoice', so an unqualified call silently returns only invoices despite the broad type list advertised.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the resource scope front-loaded and the pagination contract second. No filler, though a single clause about the default invoice filter would have fit without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, fully optional list tool with no output schema, the description covers the resource and the pagination shape adequately. It leaves out the default type filtering, the company_id resolution rule, and the fieldset effect, all of which materially change results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 71%, so the schema already documents q, sort, type and fieldset. The description adds a modest amount by mapping domain labels (fattura, nota di credito, DDT) onto the type enum and by explaining the pagination envelope. It says nothing about company_id fallback behavior, per_page bounds, or the basic vs detailed fieldset distinction.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Elenca documento emesso') and enumerates the document kinds it covers (fattura, nota di credito, proforma, preventivo, ordine, DDT). The word 'emesso' (issued) implicitly separates it from list_received_documents and list_archive_documents, but it never explicitly routes the agent away from those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given. Nothing tells the agent to prefer get_issued_document for a single record, or how this differs from list_archive_documents / list_deleted_documents; the only signal is the adjective 'emesso' in the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_payment_accountsBRead-only
Elenca conto di saldo (banca, cassa, carta) su cui registrare incassi e pagamenti. Risposta paginata con page, last_page, total.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Filtro Fatture in Cloud, es. "date >= '2026-01-01' and entity.name like '%rossi%'" o "amount_gross > 1000" | |
| page | No | ||
| sort | No | Campo di ordinamento, prefisso - per decrescente (es. '-date') | |
| fieldset | No | basic (default) o detailed (con righe e pagamenti) | |
| per_page | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description contributes the response envelope (page, last_page, total), which is genuinely useful since no output schema exists, but it says nothing about result volume, default page size, ordering, or the fact that the q parameter accepts a Fatture in Cloud filter expression — behavior an agent would need to know to call it well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource definition and followed by the response shape; nothing is padded or repeated. The second sentence is slightly ambiguous because page/last_page/total could be read as input parameters rather than response fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six optional parameters, no output schema and a non-trivial Fatture in Cloud filter syntax, a definition that only spells out the pagination envelope is adequate but thin. It covers the return shape (helpful given no output schema) yet leaves the agent without guidance on filter syntax, fieldset tradeoffs, or company_id fallback behavior beyond what the schema states.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, so the schema already documents q, sort, fieldset and company_id with their own descriptions. The description adds only the pagination vocabulary (page, last_page, total), and those are response concepts rather than explanations of the per_page/sort/q semantics. It therefore lands at the baseline rather than compensating for the undocumented page/per_page bounds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ("Elenca") plus a concrete resource ("conto di saldo") and disambiguates the concept by naming the concrete forms: banca, cassa, carta. It also states the business role (accounts on which receipts and payments are registered). It does not explicitly contrast itself with the nearby list_payment_methods sibling, so the boundary between 'account' and 'method' is left for the agent to infer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer it should call this to discover accounts before registering incassi/pagamenti. There is no explicit when-to-use, when-not-to-use, no mention of prerequisites (e.g. company scoping), and no routing to alternatives such as list_payment_methods or get_payment_account.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_payment_methodsBRead-only
Elenca metodo di pagamento mostrato in fattura (es. bonifico con IBAN). Risposta paginata con page, last_page, total.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Filtro Fatture in Cloud, es. "date >= '2026-01-01' and entity.name like '%rossi%'" o "amount_gross > 1000" | |
| page | No | ||
| sort | No | Campo di ordinamento, prefisso - per decrescente (es. '-date') | |
| fieldset | No | basic (default) o detailed (con righe e pagamenti) | |
| per_page | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered structurally. The description adds one useful behavioral fact beyond that: the response is paginated and carries page, last_page, and total, which tells the agent to expect paged results. It says nothing about default page size, ordering, or what fields a payment method record contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the resource and scope front-loaded and the return-shape note second. There is no filler or redundancy, though the pagination sentence is terse enough that it may leave the agent wanting more detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter listing tool with no output schema, the description correctly fills the return-shape gap by naming the pagination fields. However, it leaves the filter, sort, and fieldset parameters unexplained and does not describe what a payment method record looks like, so it is only adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, with q, sort, fieldset, and company_id documented in the schema itself while page and per_page have no schema descriptions. The description only echoes the pagination concept and adds no syntax, default, or filtering guidance (e.g., what values q accepts for this resource) beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Elenca metodo di pagamento mostrato in fattura") and gives a concrete example (bonifico con IBAN), so an agent knows this is a read/list operation over payment methods. It does not explicitly contrast with the sibling get_payment_method or list_payment_accounts, so it does not reach the sibling-differentiation bar for a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no exclusions, and no pointers to alternatives. The phrase "mostrato in fattura" implies the scope is payment methods as they appear on invoices, but an agent must infer when to call this instead of get_payment_method or list_payment_accounts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pending_received_documentsARead-only
Fatture passive in attesa di registrazione (arrivate dallo SdI in «documenti ricevuti in attesa»): fornitore, data, numero, imponibile, IVA, totale, scadenza, disponibilità di XML e allegati, con i totali. Nel regime forfettario le fatture d'acquisto non hanno effetto fiscale (niente IVA detraibile né costi deducibili), ma si possono comunque archiviare.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Filtro Fatture in Cloud, es. "date >= '2026-09-01'" | |
| limit | No | ||
| source | No | Provenienza: agyo = fatture elettroniche ricevute dallo SdI (default), mail, browser (caricate a mano), all = tutte | agyo |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already covers the safety profile, and the description adds real value on top: it discloses the returned field set (supplier, date, number, net, VAT, total, due date, XML/attachment availability, plus totals) and the default SdI provenance. It does not describe pagination or ordering behavior when limit is hit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and informative, but the long field enumeration is dense and the flat-rate tax caveat, while useful context, is tangential to selecting or invoking the tool and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, describing the returned fields is necessary and the description does it thoroughly, and the four input parameters are mostly documented by the schema. For a read-only filtered list tool this is close to complete, missing only result-ordering/pagination detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% with descriptions already on q, source and company_id, so the schema carries most of the load. The description only indirectly reinforces source (SdI = agyo) and says nothing extra about q syntax or the limit cap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (passive invoices awaiting registration arriving from SdI) and enumerates the returned fields, so an agent can distinguish it from the generic list_received_documents by the 'in attesa di registrazione' qualifier. It stops short of naming the sibling tools (list_received_documents, register_pending_received_documents) directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the description frames the tool as the view of what is pending registration and notes that flat-rate regime invoices can still be archived, which hints at the follow-up action. There is no explicit when-to-use / when-not guidance or pointer to get_pending_received_document or register_pending_received_documents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_price_listsCRead-only
Listini prezzi configurati in Fatture in Cloud.
| Name | Required | Description | Default |
|---|---|---|---|
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered structurally. Beyond that, the description adds nothing: no pagination behavior, no indication of whether all price lists are returned or a subset, no mention of the company scoping implied by the default-resolution logic in the schema. It only repeats the resource name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no wasted clauses and is trivially front-loaded. But brevity here comes at the cost of substance — the one sentence conveys almost nothing the tool name did not already convey, so it barely earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one optional parameter, no output schema, and annotations covering safety, the definition is minimally adequate. Still, with no output schema the description could say what a price list record contains or how results are scoped, and it does neither.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single optional parameter (company_id) and schema description coverage is 100%, with the schema itself documenting the FIC_COMPANY_ID fallback. The description adds no meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ("Listini prezzi" / price lists) and the system (Fatture in Cloud), so an agent knows what entity is being returned. However, it is essentially a restatement of the tool name with no explicit verb and no differentiation from the closely related sibling get_price_list_items, leaving the agent to infer that this returns the price-list headers rather than their items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance at all. With get_price_list_items present among the siblings, the description should state that this lists price-list containers and that the sibling retrieves the entries within them, but it makes no such routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsBRead-only
Elenca prodotto o servizio a listino. Risposta paginata con page, last_page, total.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Filtro Fatture in Cloud, es. "date >= '2026-01-01' and entity.name like '%rossi%'" o "amount_gross > 1000" | |
| page | No | ||
| sort | No | Campo di ordinamento, prefisso - per decrescente (es. '-date') | |
| fieldset | No | basic (default) o detailed (con righe e pagamenti) | |
| per_page | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this is a safe read, but the description adds genuinely new context by disclosing the paginated response shape (page, last_page, total). It still says nothing about default page size, maximum per_page, or how company_id fallback resolution behaves, which matters for a list call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the operation and followed by the response contract, with no filler. The telegraphic style leaves it terse but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter list tool with no output schema, the description covers the operation and the pagination envelope but omits filtering semantics, default behavior, and result ordering. Adequate to call correctly with the schema in hand, but not self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 67% schema coverage the schema already documents q, sort, fieldset and company_id, so the baseline is 3. The description only reinforces the page parameter through the response-shape sentence and adds no meaning to per_page, sort syntax, or the default fieldset behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Elenca prodotto o servizio a listino') and clearly distinguishes itself from the sibling CRUD operations get_product/create_product/update_product/delete_product. However the phrase 'a listino' is slightly ambiguous about whether this lists products generally or only catalogued items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus the near-identical sibling list_price_lists or get_product for a single item. There are no stated prerequisites, no exclusions, and no mention of how filtering or pagination should drive the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_receiptsBRead-only
Elenca corrispettivo (scontrino / ricevuta giornaliera). Risposta paginata con page, last_page, total.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Filtro Fatture in Cloud, es. "date >= '2026-01-01' and entity.name like '%rossi%'" o "amount_gross > 1000" | |
| page | No | ||
| sort | No | Campo di ordinamento, prefisso - per decrescente (es. '-date') | |
| fieldset | No | basic (default) o detailed (con righe e pagamenti) | |
| per_page | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes the safety profile, so the description's contribution is the return shape: page, last_page, total. That is genuinely useful given there is no output schema, but it omits default page size, ordering behavior, and what a receipt record contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and followed by the response shape. The parenthetical gloss on "corrispettivo" earns its place as disambiguation; otherwise there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter list tool with no output schema, the description covers purpose and pagination but leaves the agent to infer filtering/fieldset effects entirely from the schema. Adequate but with clear gaps around what is returned and how it relates to sibling listing tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the schema itself documents the non-obvious parameters (q filter syntax, sort prefix, fieldset values, company_id default). The description adds no parameter meaning beyond that, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb plus resource ("Elenca corrispettivo") and disambiguates the term with "scontrino / ricevuta giornaliera", so an agent knows this enumerates daily receipts. It does not, however, distinguish itself from siblings such as get_receipt or receipts_monthly_totals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this list versus get_receipt (single fetch) or receipts_monthly_totals (aggregates), and no mention of prerequisites. The only usage-adjacent information is that results are paginated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_received_documentsBRead-only
Elenca documento ricevuto (spesa, nota di credito passiva, DDT passivo). Risposta paginata con page, last_page, total.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Filtro Fatture in Cloud, es. "date >= '2026-01-01' and entity.name like '%rossi%'" o "amount_gross > 1000" | |
| page | No | ||
| sort | No | Campo di ordinamento, prefisso - per decrescente (es. '-date') | |
| type | No | Tipo di documento | expense |
| fieldset | No | basic (default) o detailed (con righe e pagamenti) | |
| per_page | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description usefully adds that responses are paginated with page, last_page, and total — valuable since no output schema exists — but says nothing about default page size, sort defaults, or result caps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the resource scope is front-loaded ahead of the response-shape note. Efficient, though the parenthetical type list could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter list tool with no output schema and only readOnlyHint, the description covers resource scope and the pagination envelope, which is the main unknown an agent faces. It omits routing guidance versus sibling list/get tools, which is the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, with q, sort, type, fieldset, and company_id already documented in the schema; page and per_page have no schema descriptions and gain no explanation here. The description only restates pagination concepts rather than adding semantics such as default per_page or maximum page behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Elenca documento ricevuto') and enumerates the covered document types (spesa, nota di credito passiva, DDT passivo), which separates it from list_issued_documents and list_receipts. It does not name a sibling explicitly, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing tells the agent when to choose this over list_pending_received_documents, get_received_document, or list_deleted_documents. The only implicit signal is the type enumeration, so usage must be inferred from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sent_emailsBRead-only
Storico delle email inviate da Fatture in Cloud, con destinatari e stato di consegna.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Filtro Fatture in Cloud, es. "date >= '2026-01-01' and entity.name like '%rossi%'" o "amount_gross > 1000" | |
| page | No | ||
| sort | No | Campo di ordinamento, prefisso - per decrescente (es. '-date') | |
| fieldset | No | basic (default) o detailed (con righe e pagamenti) | |
| per_page | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds what a record contains (recipients, delivery status), which is genuine value, but it says nothing about ordering defaults, pagination limits, or how company scope is resolved when company_id is omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler, and the resource and returned content come first. It is efficient, though for a six-parameter filtered list it is arguably under-built rather than merely tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully says what a result carries, and the annotations cover the safety profile. However, a six-parameter tool with a Fatture in Cloud filter expression and pagination deserves at least a note on filter syntax and paging, which is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the q, sort, fieldset and company_id parameters are self-documented in the schema. The description adds no meaning to any of them — notably it never connects 'destinatari e stato di consegna' to filterable or sortable fields, and page/per_page are undocumented in both places. Baseline 3 fits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and scope: the history of emails sent from Fatture in Cloud, and it previews the payload (recipients and delivery status). That is enough to distinguish it from the sibling send-side tools (email_document, bulk_email) at a glance, though it does not explicitly name any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states no when-to-use condition, no exclusions and no alternative. There is no direct sibling for reading sent-email history, but the agent is given no cue about when to reach for this versus email_document or bulk_email, and nothing about paging or filtering through history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_suppliersCRead-only
Elenca fornitore. Risposta paginata con page, last_page, total.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Filtro Fatture in Cloud, es. "date >= '2026-01-01' and entity.name like '%rossi%'" o "amount_gross > 1000" | |
| page | No | ||
| sort | No | Campo di ordinamento, prefisso - per decrescente (es. '-date') | |
| fieldset | No | basic (default) o detailed (con righe e pagamenti) | |
| per_page | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares this a safe read, so the safety profile is covered. The description does add one useful piece of behavior beyond annotations — the paginated response shape (page, last_page, total) — which matters because there is no output schema. It still omits default page size, sort default, and what fieldset=detailed returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, front-loaded with the operation and then the response shape; nothing is padded or redundant. It is terse almost to a fault, but the structure itself is clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter list tool with no output schema, this is thin: it never mentions that q accepts Fatture in Cloud filter expressions, that per_page is capped at 100, or that fieldset controls record depth. The pagination note is the only substantive detail in a definition that should carry more weight given the missing output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, but every parameter explanation lives in the schema (q filter syntax, sort prefix, fieldset enum, company_id fallback) and none of it is echoed or extended in the description. The only parameter-ish word, "page", refers to the response envelope rather than how to use the input, so the description adds no meaning over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Elenca fornitori" names a specific verb and resource, so the basic operation is identifiable. However it stops there: it says nothing about scope, filtering capability, or how it relates to siblings like get_supplier, and a reader gets no sense of what a supplier record contains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all. Nothing tells the agent to prefer list_suppliers over lookup, get_supplier, or client_statement, and no prerequisites (company_id resolution, token scope) are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vat_typesBRead-only
Elenca aliquota IVA o natura di esenzione. Risposta paginata con page, last_page, total.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Filtro Fatture in Cloud, es. "date >= '2026-01-01' and entity.name like '%rossi%'" o "amount_gross > 1000" | |
| page | No | ||
| sort | No | Campo di ordinamento, prefisso - per decrescente (es. '-date') | |
| fieldset | No | basic (default) o detailed (con righe e pagamenti) | |
| per_page | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds that the response is paginated and exposes page, last_page and total, which is genuinely useful since there is no output schema. It does not say what each VAT type record contains or whether results are scoped to one company.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the purpose is front-loaded before the response-shape note. Efficient, though the second sentence is doing double duty as the only structured detail provided.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool whose annotations cover safety, the description plus schema is roughly adequate: it says what is listed and that results are paginated. It is not complete for six optional parameters with no exclusions stated, and it never clarifies what a VAT type object looks like despite the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 67%, and the description mentions just one parameter (page) as part of the pagination note. It adds no meaning for q, sort, fieldset, per_page or company_id, and notably does not clarify the Fatture in Cloud filter syntax or that fieldset's 'righe e pagamenti' wording is generic boilerplate unlikely to apply to VAT types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource in Italian ("Elenca aliquota IVA o natura di esenzione"), making clear this retrieves the VAT rate / exemption-nature catalogue, which distinguishes it from get_vat_type, update_vat_type and delete_vat_type among its siblings. It stops short of an explicit sibling comparison, so not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: nothing says to call this before creating an invoice line, nothing about how to page through results, and no mention of the alternatives (get_vat_type for a single record, update/delete_vat_type for mutation). The listing intent is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookupBRead-only
Tabelle di supporto: aliquote IVA (con id da usare nelle righe), metodi di pagamento, conti di saldo, centri di ricavo/costo, categorie, modelli grafici, valute, lingue, paesi, unità di misura, causali DDT.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| context | No | Solo per product_categories | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the description is not required to carry the safety burden. It adds the useful behavioral detail that the payload consists of id-bearing reference records intended for reuse elsewhere. It says nothing about company scoping of results, result size, or whether values are cached/filtered per company, which would matter for an agent choosing between repeated calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single compact sentence with no filler, and the enumeration maps one-to-one onto the required 'kind' enum, which makes it scannable. It reads as a flat noun list without a leading verb, which slightly weakens front-loading but wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter read-only tool with no output schema, the description should at least signal the shape of what comes back (records with id and label) and how 'kind' plus 'context' interact. It hints at ids but never describes the response, and the company-scoping behavior of the default company_id is left entirely to the schema description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so the schema already documents the two optional parameters (context is restricted to product_categories, company_id defaults to FIC_COMPANY_ID or the token's sole company). The description mainly restates the enum values of 'kind' in Italian prose and adds the one semantic note that VAT type ids are the ones to use in rows. That is some added meaning, but it does not explain the product_categories/context interplay or the company_id fallback, so it does not clearly exceed the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource concretely: it is a reference/support-table reader and it enumerates exactly which tables (VAT rates, payment methods, payment accounts, revenue/cost centers, categories, templates, currencies, languages, countries, measures, DDT causals). It lacks a verb and, more importantly, never distinguishes itself from siblings like list_vat_types, list_payment_methods and list_payment_accounts, which appear to return the same data, so an agent still has to guess which one to call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied. The parenthetical '(con id da usare nelle righe)' hints that the returned ids are meant to be used when composing document line items, which is a genuinely useful pointer. However there is no explicit when-to-use, no when-not-to-use, and no mention of the overlapping list_* siblings, so routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_cityARead-only
Comuni italiani da CAP o nome: città, CAP e sigla della provincia corretti, necessari per le fatture elettroniche.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| postal_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint already declares this is a safe read operation, so the description's main job is to add value beyond that. It does so by describing the returned fields (città, CAP, sigla provincia) even though no output schema exists, but says nothing about behavior on no-match, ambiguity, or partial input.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence, front-loaded with the resource and lookup keys, followed by the result and purpose. No redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only lookup with no output schema and 0% schema coverage, the description supplies both input roles and the shape of the result. It is nearly complete, lacking only guidance on no-match/ambiguous results or input formats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the load: 'da CAP o nome' maps the CAP to postal_code and 'nome' to city, and signals that either may be supplied (consistent with 0 required parameters). This meaningfully exceeds the bare schema, though it gives no format hints (CAP length, name spelling).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (Comuni italiani) and the lookup keys (CAP or nome), and states the returned fields (città, CAP, sigla provincia). It is clear what the tool does, though it does not distinguish itself from the generic 'lookup' or 'client_from_vat' siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by 'necessari per le fatture elettroniche', which tells the agent this is for filling invoice address data. However, there is no explicit when-to-use/when-not or comparison against the sibling 'lookup' or 'client_from_vat' tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_paidAIdempotent
Segna come saldate tutte le rate aperte di uno o più documenti. Se una rata non ha conto, usa payment_account_id o il primo conto configurato.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| paid_date | No | Default: oggi | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| payment_account_id | No | Conto di saldo (vedi lookup payment_accounts) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply idempotentHint=true, so the description must carry most of the burden. It usefully discloses bulk scope ('tutte le rate aperte' across multiple documents) and the fallback chain for assigning a payment account, but says nothing about permissions, what happens when a document has no open installments, or reversibility (mark_unpaid exists but isn't referenced).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the scope-changing action and followed by the account-resolution rule; nothing is redundant. Minor looseness: 'conto' and 'payment_account_id' are used interchangeably, which could read as two distinct concepts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a single weak annotation and no output schema, the definition covers the essential mechanics but omits what is returned and the outcome when no open installments exist. An agent could call it correctly, but cannot predict the result or error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, and the description adds real meaning on top of it: 'ids' is revealed to be document identifiers whose open installments are affected, and the fallback rule for the account parameter is spelled out beyond the schema's brief 'Conto di saldo' note. It does not clarify paid_date beyond the schema default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Segna come saldate tutte le rate aperte di uno o più documenti' makes clear it is a bulk state change over open installments of the given documents. The sibling mark_unpaid exists but is never named, so differentiation is left to inference rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no pointer to alternatives such as mark_unpaid or update_received_document. The only conditional guidance is about account resolution when an installment lacks a payment account, which is operational rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_unpaidAIdempotent
Riapre le rate saldate di un documento (annulla mark_paid).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real behavioral meaning beyond the idempotentHint annotation by framing the call as the reversal of mark_paid, i.e., a state transition from paid to unpaid. It does not disclose side effects on related accounting data, e-invoice status, or required permissions for a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with zero waste; the action is front-loaded and the sibling reference is placed compactly in parentheses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and only idempotentHint in annotations, the definition is thin: it omits which document types are eligible, what happens to already-unpaid installments, and any side effects. It is adequate to identify the operation but not to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% — company_id is documented in the schema, but id is not. The phrase 'di un documento' implies id refers to the document whose installments are reopened, partially compensating for the gap, but no format or valid-value guidance is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource in Italian: 'Riapre le rate saldate di un documento' (reopens a document's paid installments), and identifies its inverse sibling mark_paid. An agent can tell what state change occurs and which tool it undoes, though 'un documento' does not specify issued vs received documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical 'annulla mark_paid' explicitly names the alternative and the condition that selects this tool over it. There is no explicit when-not guidance or prerequisite (e.g., the document must currently be marked paid), which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_totalsARead-only
Calcola con Fatture in Cloud i totali di un documento senza crearlo: imponibile, rivalsa, IVA, ritenute, bollo, totale e somma delle rate. Usalo per controllare una fattura prima di emetterla.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Oggetto IssuedDocument, come per create_issued_document | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares the safety profile, and 'senza crearlo' reinforces that no document is persisted, which is a useful confirmation of the dry-run nature. Beyond that, the description says nothing about error behavior, whether totals can differ from a later real creation, or quota/auth constraints, so it adds only modest context over the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the computation and its non-mutating nature come first, then the usage cue. Every phrase carries information, including the enumerated output fields, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only preview tool with no output schema, the description usefully lists the returned totals, which compensates well for the missing return spec. What remains unstated is how the nested IssuedDocument payload is interpreted or what happens on invalid data, minor gaps given full schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with 'data' documented as an IssuedDocument object 'come per create_issued_document' and company_id's defaulting behavior spelled out in the schema. The description only implies that 'data' is the document payload, adding no field-level meaning beyond 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Calcola ... i totali di un documento') and enumerates exactly which totals are produced (imponibile, rivalsa, IVA, ritenute, bollo, totale, somma delle rate). The clause 'senza crearlo' implicitly separates it from create_issued_document without naming that sibling outright, so differentiation is clear but not explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Usalo per controllare una fattura prima di emetterla' gives a concrete moment to use the tool and implies the boundary versus actually issuing the document. It stops short of naming an alternative or stating exclusions, so it lands at clear context rather than full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quadro_lmARead-only
Valori del quadro LM (regime forfettario) della dichiarazione per un anno chiuso: ricavi, reddito, contributi dedotti, imposta, acconti e saldo, dagli incassi in Fatture in Cloud e dal profilo fiscale. Da controllare col commercialista.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Default: anno precedente | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the description's job is to add context — and it does, by disclosing that values are derived from Fatture in Cloud receipts and the stored tax profile, and that results should be verified by an accountant. It does not say what happens when no tax profile exists, when the year is not closed, or whether values are computed live.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence front-loads the resource and scope, then lists the returned fields, followed by a short caveat sentence. Every clause carries information; the only friction is the untranslated Italian domain terminology, which may be opaque to a non-Italian agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned figures (ricavi, reddito, contributi dedotti, imposta, acconti, saldo), which is exactly what an agent needs to know before calling. Remaining gaps — behavior with missing tax profile or partial-year data — are modest for a read-only computation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: both 'year' and 'company_id' are documented with their defaults. The description adds only the mild constraint that 'year' means a closed year and the note that figures derive from receipts and tax profile; it gives no guidance on company_id selection or on behavior across multiple companies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific artifact (quadro LM values for the forfettario regime) and enumerates the contents returned: ricavi, reddito, contributi dedotti, imposta, acconti e saldo. It also states the data sources (incassi in Fatture in Cloud plus the tax profile), which lets an agent distinguish it from tax_estimate or regime_simulator. It loses a point only because 'quadro LM' is domain jargon whose sibling boundary is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'per un anno chiuso' implicitly restricts use to closed fiscal years, and the closing note 'Da controllare col commercialista' sets an expectation of human review before reliance. However, there is no explicit routing against the clearly related siblings (tax_estimate, regime_simulator, accountant_package, tax_deadlines_export), so the agent must infer which tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
receipts_monthly_totalsBRead-only
Totali mensili dei corrispettivi (scontrini o ricevute) di un anno.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | till_receipt | |
| year | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safety profile, and the description confirms the read-only, aggregated nature of the result. It does not cover defaults (company_id resolution from token/FIC_COMPANY_ID), what happens when no receipts exist for the year, or the shape of the returned totals – and no output schema exists to fill that gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, front-loading the resource and the aggregation level. It is efficient, though it is perhaps too terse for a three-parameter aggregation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a small, read-only aggregation tool the description covers the essential intent, but with no output schema the agent gets no indication of the return structure (per-month rows, currency, grouping by receipt type). The gaps are modest rather than disqualifying.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description should carry more weight. It does tie 'di un anno' to the required year parameter and alludes to the type enum by naming both scontrini and ricevute, but it does not map those terms to sales_receipt vs till_receipt or explain the default of till_receipt. company_id is documented only by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (corrispettivi / scontrini o ricevute) and a specific aggregation (totali mensili) scoped to one year, which is enough to tell it apart from list_receipts or get_receipt. It stops short of naming any sibling explicitly, so differentiation is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The aggregation vocabulary implies the use case (monthly rollup rather than per-document retrieval), but there is no explicit when-to-use or when-not-to-use guidance and no pointer to alternatives such as revenue_summary or preview_totals. The agent has to infer routing from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
receivables_reportBRead-only
Crediti da incassare: rate non saldate, scaduto per fasce (1-30, 31-60, 61-90, oltre 90 giorni) e totali per cliente.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Considera fatture da questa data (default: 2 anni fa) | |
| as_of | No | Data di riferimento, default oggi | |
| client_id | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds genuine behavioral context by disclosing what is computed (aging buckets and per-client totals), but says nothing about time-window defaults, whether the report is aggregated or row-level, or how large the output may be.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the resource and enumerates the computed sections; every clause earns its place. It borders on reading as a column list rather than prose, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the right thing by sketching the return content (aging bucket breakdown plus per-client totals). Combined with the schema's documented defaults, an agent has enough to call it and interpret the result, though aggregation granularity and output shape remain implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the schema already documents from, as_of, and company_id with defaults; the description adds no parameter meaning at all. The undocumented client_id is not clarified. Baseline 3 applies since the schema carries most of the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (crediti da incassare / receivables) and states exactly what it computes: unpaid installments, aging buckets 1-30/31-60/61-90/over 90, and per-client totals. This is clearly distinguishable from sibling reporting tools like client_statement or revenue_summary, though the description never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives such as client_statement, revenue_summary, or cashflow_forecast. The aging-bucket framing implies a collections/overdue context, but the agent must infer that; no exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recover_documentC
Ripristina un documento dal cestino.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| kind | No | issued | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden of behavioral disclosure, and it delivers only the bare action. It does not say what state the document returns to, whether restoring an already-active or non-existent document errors, whether the action is idempotent or undoable, or what permissions/company scoping apply. For a destructive-adjacent mutation, that is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of waste, but it reads as under-specification rather than disciplined concision. Nothing is redundant, yet the brevity leaves the operation's preconditions and parameters unexplained.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation with no annotations and no output schema, the definition should explain the kind/id pairing, the company scoping default, and what the restore actually does. None of that is present, and the description is written in a different language from the tool names and sibling set, adding a small comprehension cost.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%: id and kind have no schema descriptions, and the description compensates for neither. In particular the `kind` enum (issued vs received, default "issued") is a critical choice omitted from the description — an agent could restore the wrong document type by leaving the default — and the required `id` is never explained as the trashed document's identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Ripristina un documento dal cestino" states a specific verb (restore) and resource (a trashed document), which is clearly distinct from siblings like delete_received_document or list_deleted_documents. It stops short of naming the sibling that surfaces recoverable documents, so the agent gets the purpose but not the surrounding workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus list_deleted_documents (to find a deleted document) or get_received_document (to inspect one before restoring). No preconditions are stated, such as the document having to be in the trash or belonging to the active company, and no mention of whether the operation is reversible.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recurring_expenses_reportARead-only
Spese ricorrenti dai documenti ricevuti degli ultimi N mesi: fornitori con almeno 3 fatture a cadenza regolare (mensile, bimestrale, trimestrale, semestrale, annuale), importo medio, ultima data, prossima attesa, totale annuo stimato. Segnala gli aumenti oltre la soglia rispetto alla media precedente e le fatture attese che non sono arrivate.
| Name | Required | Description | Default |
|---|---|---|---|
| months | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| increase_threshold_pct | No | Aumento da segnalare, in % sulla media precedente |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered; the description then adds real behavioral substance: the minimum-3-invoice regularity rule, the cadence categories detected, and that it flags increases above threshold and invoices that were expected but never arrived. It stops short of noting limits such as lookback bounds (the schema's 3-60 range is not echoed) or how sparse data is handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense but front-loaded passage that first states the resource and lookback window, then the inclusion criteria, then the returned fields, then the alerting behavior. Every clause carries information; the only cost is that it is one long sentence with no visual separation between scope, criteria and outputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the necessary work by enumerating the return fields (average amount, last date, next expected date, estimated annual total) and both alert types. Combined with the read-only annotation and simple three-parameter surface, an agent can call this confidently; only explicit lookback bounds and empty-result behavior are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and company_id and increase_threshold_pct already carry descriptions. The description adds meaning for the undocumented 'months' parameter (the lookback window for scanning received documents) and reinforces what the threshold triggers, but it adds nothing for company_id scope and no format guidance. With most parameters documented in-schema, this is adequate rather than compensating.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete analysis (recurring expenses from received documents) and pins down the detection rule (suppliers with at least 3 invoices at a regular cadence) plus the exact figures returned. That is far more specific than the name alone. It does not explicitly contrast itself with near-analytics siblings such as cashflow_forecast or receivables_report, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the tool for spotting recurring supplier costs and price increases over a lookback window. There is no explicit when-to-use/when-not statement and no named alternative, so routing between it and the other report tools is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
regime_simulatorARead-only
Confronta forfettario, ordinario (ditta individuale) e SRL unipersonale: imposte, contributi e netto in tasca a parità di ricavi e costi, con la soglia di ricavi oltre cui il forfettario smette di convenire. Ricavi di default: proiezione dell'anno in corso dagli incassi in Fatture in Cloud; coefficiente, aliquota e INPS dal profilo fiscale. Mostra anche il forfettario al 15% (dopo i primi cinque anni).
| Name | Required | Description | Default |
|---|---|---|---|
| costs | No | Costi reali annui dell'attività (software, hardware, coworking, formazione...); default 0 | |
| revenue | No | Ricavi annui senza IVA | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| srl_fixed_costs | No | Costi fissi annui della SRL, default 3500 | |
| srl_partner_inps | No | Contributi minimi del socio lavoratore (gestione commercianti), se dovuti | |
| local_surcharge_rate | No | Addizionali regionale + comunale, default 0.02 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already covers the safety profile, and the description adds real context beyond it: the comparison is at equal revenue and costs, it also reports the 15% forfettario scenario after five years, and inputs are auto-derived from receipts and the tax profile. It does not say what happens if the tax profile is unset or how the current-year projection behaves for a partial year, which keeps it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences that lead with the comparison and the break-even threshold before covering default inputs and the 15% variant. No filler, though the tax-profile clause is compressed enough that an agent may need a second read to see which inputs are derived versus supplied.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does it reasonably well by naming the computed figures (imposte, contributi, netto, soglia). For a read-only simulator with six optional, fully documented parameters it is nearly complete; only the precondition of a configured tax profile is unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: revenue defaults to an in-year projection from Fatture in Cloud receipts, and the coefficient, aliquota and INPS values are pulled from the fiscal profile rather than passed in. It stays silent on costs, srl_fixed_costs and local_surcharge_rate defaults, which the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource: compare three Italian tax regimes (forfettario, ordinario/ditta individuale, SRL unipersonale) and compute taxes, contributions, net take-home and the revenue break-even threshold. That is far more specific than the name alone. It never names an adjacent sibling such as tax_estimate or revenue_summary, however, so the agent gets no explicit disambiguation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent learns that revenue defaults to a projection from Fatture in Cloud receipts and that the coefficient, rate and INPS come from the fiscal profile, which hints at when the tool applies. There is no explicit when-to-use or when-not, and no pointer to tax_estimate as the lighter alternative for a single regime.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_pending_received_documentsADestructive
Registra le fatture passive in attesa come documenti ricevuti (spese), collegandole al documento in attesa (pending_id) così Fatture in Cloud mantiene XML e allegati. Le rate coprono sempre il totale lordo; con paid=true vengono segnate pagate. dry_run è TRUE per default: mostra le spese che verrebbero create, poi rilancia con dry_run=false. Nel regime forfettario le fatture d'acquisto non hanno effetto fiscale (niente IVA detraibile né costi deducibili), ma si possono comunque archiviare.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Registra tutti quelli della provenienza indicata | |
| ids | No | Documenti in attesa da registrare | |
| paid | No | Segna le rate come pagate | |
| source | No | Provenienza: agyo = fatture elettroniche ricevute dallo SdI (default), mail, browser (caricate a mano), all = tutte | agyo |
| dry_run | No | ||
| paid_date | No | Data di pagamento; default la data già indicata nella rata, altrimenti la scadenza | |
| categories | No | Categoria per documento: { "<id>": "Utenze" } | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| auto_category | No | Per i documenti senza categoria usa la proposta di suggest_expense_categories (solo confidenza alta o media) | |
| remove_pending | No | Dopo la registrazione elimina il documento dalla lista in attesa (operazione non documentata dall'API: se rifiutata viene segnalata) | |
| default_category | No | Categoria per i documenti senza una categoria esplicita | |
| payment_account_id | No | Conto di pagamento (lookup payment_accounts) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply destructiveHint=true; the description adds real behavioral context beyond that: the dry-run default acts as a safety gate, installments always cover the gross total, and under the forfettario regime purchases have no tax effect but can still be archived. It still doesn't describe the created-expense response shape, but the workflow disclosure is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with purpose, then the dry-run rule, then the tax caveat. Nothing is repeated from the schema verbatim and no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, no-output-schema, destructive mutation tool, the description covers purpose, safety workflow, and domain caveats well. A brief note on what the run returns or on prerequisites for linking pending documents would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 92%, so the baseline is 3, but the description genuinely adds meaning for dry_run (preview vs. execute) and paid (marks installments settled) and notes that installments cover the gross amount. The remaining relationship between all/ids/source is left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb+resource: registering pending passive invoices as received documents (expenses), linked via pending_id. It also states the concrete benefit (Fatture in Cloud preserves XML and attachments), which distinguishes this conversion path from create_received_document or list_pending_received_documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit operational guidance: dry_run is TRUE by default, preview first, then re-run with dry_run=false, and paid=true marks installments as paid. It does not explicitly say when to prefer this over create_received_document for invoices with no pending record, so it falls short of naming alternatives by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revenue_summaryARead-only
Fatturato e incassato dell'anno, per mese e per cliente. Per il regime forfettario mostra quanto manca alla soglia di 85.000 € (principio di cassa) e la proiezione a fine anno.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Default: anno corrente | |
| limit | No | Soglia, default 85000 | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safety profile, so the description adds the meaningful part: the threshold check is computed on a cash basis (principio di cassa) and includes a year-end projection. It does not describe the response shape or breakdown granularity limits, but for a read-only report this is adequate context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the primary content (revenue/cash-in by month and client) is stated first and the regime-specific threshold behaviour second. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of explaining the returned content: monthly and per-client figures, threshold gap, and projection. Only minor gaps remain, such as whether amounts are net of VAT or which currency/rounding applies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the schema already documenting year (default current year), limit (default 85000) and company_id defaults, so the baseline is 3. The description adds meaning by tying the 85.000 € value to the forfettario regime, clarifying what `limit` actually represents, but nothing beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States concretely what the tool returns: annual revenue and cash collected, broken down by month and by client, plus flat-rate-regime threshold progress and year-end projection. A specific resource and breakdown are named, though no sibling tool (receivables_report, receipts_monthly_totals, cashflow_forecast) is referenced to disambiguate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the content ('fatturato e incassato dell'anno'), so an agent can infer this is the annual revenue overview. However, there is no explicit when-to-use, no exclusions, and no routing away from the many overlapping report siblings such as receivables_report or cashflow_forecast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_createA
Crea una fattura ricorrente: a ogni scadenza copia source_document_id con la data del giorno e il numero successivo. action='create' la lascia da controllare e inviare (consigliato se l'importo varia); 'create_and_send_sdi' la verifica e la invia allo SdI. Si esegue con fattureincloud-mcp run-due (installabile con fattureincloud-mcp install-scheduler) o con schedule_run_due.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Nome univoco, es. 'Acme mensile' | |
| No | Invia anche per email al cliente dopo la creazione | ||
| action | No | create | |
| enabled | No | ||
| end_date | No | ||
| overrides | No | Modifiche rispetto all'originale. Nei testi puoi usare {{mese}}, {{anno}}, {{mese_precedente}}, {{anno_mese_precedente}}, {{mese_successivo}}, {{trimestre}}, {{data}}; con |maiuscolo l'iniziale diventa maiuscola. Es. 'Consulenza {{mese_precedente}} {{anno_mese_precedente}}'. | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| start_date | No | Prima data utile, default oggi | |
| day_of_month | Yes | Giorno di emissione; 31 = ultimo del mese | |
| every_months | No | 1 mensile, 2 bimestrale, 3 trimestrale, 6 semestrale, 12 annuale | |
| source_document_id | Yes | Documento modello |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses that creation is a copy-and-renumber operation, distinguishes the two action modes by whether the SdI submission happens automatically, and reveals the non-obvious dependency on an external runner (`run-due` / schedule_run_due) for the schedule to execute. It doesn't say what is returned or what happens if the source document is deleted or the day doesn't exist in a month.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences: what it does, then the action trade-off with a recommendation, then how it is executed. Dense but each clause carries information; the execution sentence could have been tightened but is not waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter creation tool with nested objects, no annotations and no output schema, the description omits what is returned (schedule id, next run date) and whether anything is created immediately. The operational picture is otherwise solid, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 73%, and the description adds meaning the schema lacks: the semantics of `source_document_id` as a template that gets copied and renumbered, and the behavioral difference between the two `action` values, which the enum alone does not explain. Remaining gaps (overrides placeholders, email payload) are already documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Crea una fattura ricorrente") and explains the core mechanism: at each due date it copies `source_document_id` with today's date and the next number. That is enough to separate it from the sibling schedule_* tools, though it never explicitly contrasts itself with schedule_update or schedule_run_now.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete decision rule between the two action values: 'create' leaves the invoice to be checked and sent (recommended when the amount varies), while 'create_and_send_sdi' verifies and sends to SdI. It also names the execution paths (`run-due` CLI or schedule_run_due), which clarifies when the schedule actually fires. It does not cover when to choose this tool over schedule_update/schedule_run_now.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_deleteBDestructive
Elimina una ricorrenza. I documenti già creati restano.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already flags the operation as destructive, so the description only needs to add context. "I documenti già creati restano" does add real value by disclosing that this is not a cascading delete and previously generated documents survive. However, it says nothing about irreversibility, confirmation needs, or authorization requirements beyond what the annotation conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two very short sentences, with the action front-loaded and the side-effect note second. Nothing is wasted, though the brevity borders on under-specification given what the tool actually needs to convey.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with an annotation covering the safety profile and no output schema, the description covers the core action and the main side effect. It still omits what the id refers to, how failures surface, and whether deleted schedules can be recreated, which matters for a delete operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required 'id' parameter, so the description must carry the burden and does not. It never says the id is a recurrence identifier (for example one obtained from schedule_list) or what format it takes, leaving an agent to guess at a required field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Elimina una ricorrenza" gives a specific verb plus resource that separates it from schedule_create, schedule_update, and schedule_list. The scope of 'ricorrenza' is intelligible as the scheduled recurrence, though the description never uses the term 'schedule' that the tool name relies on, and an agent must infer that the deleted entity is the schedule itself, not a document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance. It does not point at schedule_update as the alternative for pausing or editing a recurrence, nor does it state prerequisites such as whether the schedule must be idle or what error occurs for an unknown id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_getARead-only
Dettaglio di una ricorrenza (id o nome), con storico e prossime N date.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| upcoming | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already declaring the safety profile, the description adds genuinely new behavioral content: the response contains a history plus the next N occurrences, which is the main unknown for a tool with no output schema. It stops short of saying how the history is bounded or what happens if the recurrence is not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that leads with the resource and follows with the returned content; nothing is wasted. It is terse to the point of omitting any routing guidance, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only lookup with no output schema, the description covers what the tool returns and how the two inputs are interpreted, which is most of what an agent needs. It is missing explicit disambiguation from schedule_list and error behavior, but nothing essential to invoking it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does partially: it clarifies that the required string can be an id or a name, and that "N" in the returned dates corresponds to the `upcoming` parameter. The documented constraint on `upcoming` (default 6, range 1-36) is not repeated in prose, but it is visible in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource combination: retrieves the detail of a recurrence ("Dettaglio di una ricorrenza"), and adds that the result includes history and the next N dates. An agent can distinguish it from schedule_list/schedule_create without opening a schema, though the description never explicitly names those siblings as alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. It does not say to call schedule_list first to find the id, nor when to prefer this over schedule_list or schedule_update, and no prerequisites or failure conditions (e.g. unknown id) are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_listARead-only
Elenca le fatture ricorrenti con prossime date ed esito dell'ultima esecuzione.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares this is a safe read, so the description's added value is limited to disclosing the payload contents (next dates and last-run outcome), which is genuinely useful. It says nothing about ordering, scope (all schedules vs. only active ones), or whether a missing last execution is reported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, leading with the verb and resource and then the returned fields. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool with no output schema, the description covers the essentials by naming what comes back. It falls slightly short on scope (all vs. active schedules) and ordering, which matter for interpreting a list result with no output schema to consult.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is an empty object, so there is nothing for the description to disambiguate. Baseline 4 applies; the sentence correctly implies an unfiltered full listing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Elenca' = lists) with a specific resource ('fatture ricorrenti' = recurring invoices) and names the returned fields (upcoming dates, last execution outcome). It is clearly distinguishable from schedule_get/update/delete, though it never names those siblings explicitly and the description is in Italian while the tool name and schema are English.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Listing semantics imply 'use this to enumerate all schedules' versus schedule_get for a single one, but the description never states that contrast or any prerequisites. There is no explicit when-to-use or when-not-to-use guidance, so the routing must be inferred from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_run_dueB
Esegue le ricorrenze in scadenza (next_run <= oggi), come il job pianificato. dry_run è TRUE per default.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose two meaningful traits: the batch scope (all recurrences satisfying next_run <= today) and that dry_run defaults to TRUE, so a bare call will not mutate anything. It omits the consequences of dry_run=false (what documents get created), idempotency, and whether repeat calls double-generate recurrences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, front-loaded with the action and followed by the safety-relevant default; no filler. Slightly terse phrasing in a non-English language makes it marginally less scannable for an English-language sibling set.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A side-effecting batch executor with no annotations and no output schema needs more: what a run returns (counts, per-recurrence results), what happens on partial failure, and permissions. The scoping condition and dry-run default are covered, making it minimally viable but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter has no in-schema description, so the description must compensate. It only restates the default value already encoded as default: true and never explains what dry_run actually does (simulate vs. persist), so it adds emphasis but little semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Esegue le ricorrenze in scadenza") plus a precise selection condition (next_run <= oggi), so an agent knows it processes all due recurrences in batch. It does not explicitly contrast with the sibling schedule_run_now, leaving the difference between 'run all due' and 'run one now' implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"come il job pianificato" implies this is the manual equivalent of the cron trigger, which helps an agent infer when to use it. However, nothing states when NOT to use it, nor when schedule_run_now or schedule_list would be the better choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_run_nowB
Esegue subito una ricorrenza fuori calendario, senza spostare la prossima esecuzione. dry_run è TRUE per default.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| date | No | ||
| dry_run | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden, and it does disclose two meaningful behavioral traits: the next scheduled execution is left untouched, and dry_run defaults to true (a safety-relevant default). It does not say what the execution actually produces (emails, documents, ledger entries), whether the run is idempotent, or whether it requires elevated permissions — significant omissions for an execution-triggering tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the primary behavior (run now, don't reschedule) is front-loaded ahead of the dry_run caveat. Nothing is wasted, though the text is in a different language than the tool name and schema, which adds a small parsing cost for an English-speaking agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a flat three-parameter execution tool with no annotations and no output schema, the description covers the essential semantics (immediate run, no reschedule, dry-run default) but leaves the two undocumented parameters and the concrete side effects unaddressed. An agent could invoke it, but only by guessing what "id" and "date" mean.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, so the description must compensate, and it only explains dry_run's default. The required "id" (which recurrence) and the optional "date" (apparently the target date for the out-of-schedule run) are left entirely unexplained, and the date's YYYY-MM-DD format is only visible in the schema pattern.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Esegue subito una ricorrenza fuori calendario" gives a specific verb (execute now) plus the resource (a recurrence/schedule) and its scope (off-schedule execution). It does not name the closely related sibling schedule_run_due, so an agent must infer the distinction from the word "ricorrenza" versus a batch of due runs, but the core action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the appropriate moment to use it — when you want a recurrence to fire immediately rather than at its scheduled time — and the dry_run note hints at a safe trial path. It never states when NOT to use it, never contrasts it with schedule_run_due or schedule_update, and gives no prerequisite that a schedule id must already exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_updateBIdempotent
Modifica una ricorrenza (solo i campi passati). Cambiare cadenza o date ricalcola la prossima esecuzione.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| name | No | ||
| No | |||
| action | No | ||
| enabled | No | ||
| end_date | No | ||
| next_run | No | Forza la prossima esecuzione | |
| overrides | No | Modifiche rispetto all'originale. Nei testi puoi usare {{mese}}, {{anno}}, {{mese_precedente}}, {{anno_mese_precedente}}, {{mese_successivo}}, {{trimestre}}, {{data}}; con |maiuscolo l'iniziale diventa maiuscola. Es. 'Consulenza {{mese_precedente}} {{anno_mese_precedente}}'. | |
| start_date | No | ||
| day_of_month | No | ||
| every_months | No | ||
| source_document_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only idempotentHint=true, so the description carries most of the burden. It usefully discloses partial-update behavior ('solo i campi passati') and the side effect that changing cadence or dates recalculates the next execution, but it says nothing about how overrides interact with the stored template, how next_run forcing behaves, or what happens on invalid ids.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, and the partial-update constraint is front-loaded before the recalculation side effect. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation tool with nested objects, ambiguous enums, and no output schema, the description is far too thin. Key behaviors such as what overrides replaces versus merges, and what the action field controls, are left entirely to an under-documented schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 12 top-level parameters and only ~17% schema description coverage, the description must compensate and largely does not. 'Cadenza o date' loosely points at every_months/day_of_month/start_date/end_date, but the action enum (create vs create_and_send_sdi), source_document_id, and the scope of the overrides object are never explained in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Modifica una ricorrenza' (modifies a recurrence), which is clearly distinguishable from schedule_create/schedule_list/schedule_get/schedule_delete by name and semantics. It does not explicitly name the sibling alternatives, but the operation itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(solo i campi passati)' signals partial-update semantics, which is useful, but the description gives no explicit when-to-use guidance, no prerequisites, and no routing to siblings such as schedule_delete for removal or schedule_get to inspect the current recurrence before editing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_einvoiceADestructive
Verifica l'XML e invia la fattura elettronica allo SdI. IRREVERSIBILE: una fattura inviata si corregge solo con nota di credito. dry_run=true esegue tutti i controlli senza inviare.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| dry_run | No | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the description is not obligated to prove the tool is risky. It nevertheless adds information annotations cannot carry: the action is irreversible, correction requires a credit note, and dry_run exercises the full validation without side effects. It omits what validation output looks like or how rejections surface, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero padding, and the risk warning is front-loaded in capitals before the mechanics. The dry-run escape hatch comes last, in the natural reading order for a cautious caller.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an irreversible outbound integration with no output schema and no annotations describing return behavior, the description covers the danger but not the operational context: which document states are eligible for sending, what 'verifica' checks, and what the caller receives on rejection are all missing. Adequate, but not complete for a tool of this risk level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description needs to compensate. It does explain dry_run's semantics (full checks, no send), which the bare boolean default does not convey, and company_id is already documented in the schema. The required 'id' parameter – presumably the document to send – is never explained, so coverage remains partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific compound verb and resource: 'Verifica l'XML e invia la fattura elettronica allo SdI'. An agent immediately knows this validates and transmits an e-invoice to the Italian exchange system. It does not explicitly distinguish itself from verify_einvoice or bulk_send_einvoice in the sibling list, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete usage rule – dry_run=true runs all checks without sending – which usefully defines a safe preview path. However, it never states when to choose this over verify_einvoice (validation only), bulk_send_einvoice (batch), or email_document (delivery to recipient), leaving the agent to infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stamp_duty_reportARead-only
Bollo virtuale sulle fatture elettroniche: documenti con bollo e importo da versare per trimestre (F24 codici 2521-2524), con le scadenze (31/5, 30/9, 30/11, 28/2). Rientra anche nelle scadenze di tax_deadlines_export e cashflow_forecast.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Default: anno corrente | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered by structured data. The description adds domain context (quarterly aggregation, F24 payment codes, statutory deadlines 31/5, 30/9, 30/11, 28/2) but says nothing about permissions, scoping, or output shape beyond what annotations and schema imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler, front-loading the resource and output before the deadline and sibling references. The parenthetical F24 codes and date list earn their place by grounding the domain, though the trailing sibling sentence is slightly vague.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, read-only, no-output-schema report, the description adequately conveys what the report contains (per-document stamp duty and quarterly amount due) and its deadlines. Only the returned structure and quarterly grouping mechanics remain implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both year and company_id documented including their defaults, so the schema carries parameter semantics. The description adds no format, range, or defaulting detail for either parameter, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (stamp duty / 'bollo virtuale' on electronic invoices) and the concrete output (documents subject to stamp duty plus amount due per quarter with F24 codes 2521-2524). It partially differentiates from siblings by noting the overlap with tax_deadlines_export and cashflow_forecast, though it never states plainly what the tool returns versus those two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the mention that this also falls under the deadlines of tax_deadlines_export and cashflow_forecast tells an agent where related data lives but not when to choose this tool over them. There is no explicit when-to-use or when-not-to-use statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_expense_categoriesARead-only
Propone la categoria di spesa per le fatture passive in attesa (o per i documenti indicati): riusa la categoria già usata per lo stesso fornitore (P.IVA o nome) negli ultimi 24 mesi, altrimenti applica regole su nome e descrizione (utenze, telefono, software, carburante, consulenze, affitti...). Restituisce confidenza e motivo; non modifica nulla.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Documenti in attesa da categorizzare; default tutti quelli della provenienza | |
| source | No | Provenienza: agyo = fatture elettroniche ricevute dallo SdI (default), mail, browser (caricate a mano), all = tutte | agyo |
| documents | No | In alternativa: fornitori liberi da classificare | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, it discloses the actual decision logic: reuse the category previously used for the same supplier (VAT number or name) within 24 months, otherwise fall back to keyword rules on name and description with examples. It also states the return payload (confidence and reason) and explicitly reaffirms that nothing is modified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single dense passage that front-loads the purpose, then the algorithm, then the return value in the final clause. The parenthetical supplier-category list (utenze, telefono, software...) is slightly verbose but illustrative rather than wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly supplies the return shape (confidence + reason). Combined with the fully documented input schema and readOnly annotation, an agent has nearly everything it needs; only edge-case behavior (no match found, unknown supplier) is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains ids, source, documents and company_id in detail. The description only loosely maps to them ('fatture passive in attesa' vs 'documenti indicati') without adding defaults, formats or precedence rules beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: proposing an expense category for pending passive invoices or explicitly supplied documents. It is unambiguous and there is no sibling tool that does anything similar, though it never explicitly contrasts itself with list_pending_received_documents or get_new_document_defaults.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the two usage modes -- pending invoices by default, or an explicit set of documents -- and ties them to the ids/documents parameters. It does not say when the tool should not be used (e.g. after documents are already registered) or what the agent should do with a low-confidence result.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tax_deadlines_exportA
Porta le scadenze fiscali stimate (imposta sostitutiva e contributi, 30 giugno e 30 novembre) nel calendario e/o nello scadenziario F24 di Fatture in Cloud. ics_path crea un file .ics con promemoria 7 giorni e 1 giorno prima (importalo in Calendario, Google, Outlook). create_f24 crea o aggiorna gli F24 previsti, senza duplicarli; dry_run è TRUE per default.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Solo per create_f24 | |
| ics_path | No | File o cartella dove salvare il .ics, es. ~/Downloads | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| create_f24 | No | ||
| revenue_estimate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden and does well on write safety: create_f24 is idempotent ('senza duplicarli') and dry_run defaults to TRUE, which tells the agent the default call is non-mutating. It does not state permission/token requirements, what dry_run actually returns, or whether the .ics is written when ics_path points at a directory vs. a file.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the outcome, then the two modes, then the safety default. Slight waste in restating the schema default for dry_run, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, zero-annotation, no-output-schema mutation tool, the definition covers the two modes and the idempotency/dry-run safety profile, but leaves the meaning of revenue_estimate, the company scoping behavior, and the result of a dry run unexplained. Adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, and the description adds meaning for three parameters (ics_path creates the .ics, create_f24 toggles F24 creation, dry_run default TRUE). It says nothing about company_id or revenue_estimate, and revenue_estimate has no schema description at all, so the effect of that input on the exported amounts remains undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (export) and resource (estimated tax deadlines: substitute tax and contributions, 30 June and 30 November) and ties each output mode to a parameter (ics_path, create_f24). It stops short of explicitly routing against close siblings such as tax_estimate or the standalone create_f24 tool, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is clear per mode: ics_path produces an importable .ics file with 7-day and 1-day reminders; create_f24 creates or updates planned F24s. There is no explicit when-not-to-use guidance (e.g., when to run tax_estimate first, or what happens if no revenue_estimate is supplied), which keeps it below a top mark.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tax_estimateARead-only
Stima imposta sostitutiva e contributi del forfettario: quanto pagare il 30 giugno (saldo + 1° acconto) e il 30 novembre (2° acconto), totale annuo di competenza, percentuale da accantonare. Usa gli incassi registrati in Fatture in Cloud e il profilo di tax_profile_set. Per l'anno in corso proietta gli incassi a fine anno (projection='linear') o usa solo quelli già avvenuti ('to_date').
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Default: anno corrente | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| projection | No | linear | |
| revenue_estimate | No | Incassi previsti per l'anno, se li conosci meglio della proiezione |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint, and the description adds substantive behavior: it depends on state previously written by tax_profile_set, consumes recorded receipts, and enumerates the computed figures returned rather than just saying 'estimates tax'. It does not discuss assumptions, rounding, or what happens when no tax profile exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the purpose and the two payment dates, then data sources, then parameter guidance. No filler, though the middle sentence could be read as a run-on and the ordering of sources before parameter guidance is slightly awkward.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only four-parameter tool with no output schema, the description covers the source data, the projection choice, and the return figures, which is nearly everything an agent needs. It stops short of describing output shape or edge cases such as a missing or incomplete tax profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, and the one gap is projection, whose enum values the description explains in concrete terms ('project current-year revenue to year end' vs 'only what has already occurred'). It also implicitly frames revenue_estimate as an override for the projection, adding meaning beyond the schema's own wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Stima imposta sostitutiva e contributi del forfettario') plus the exact outputs (30 June saldo + 1° acconto, 30 November 2° acconto, annual total, percentage to set aside). It is clearly distinct from CRUD siblings and from tax_profile_set, though it never names the closest sibling regime_simulator, leaving slight overlap ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states where the numbers come from (receipts in Fatture in Cloud, profile from tax_profile_set) and gives explicit conditional guidance for the projection parameter: 'linear' to project current-year revenue to year end, 'to_date' to use only revenue already recorded. What is missing is any exclusion or named alternative (e.g. when to prefer regime_simulator).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tax_profile_getCRead-only
Profilo fiscale usato per stimare le tasse (coefficiente, aliquota, previdenza) e regime registrato in Fatture in Cloud.
| Name | Required | Description | Default |
|---|---|---|---|
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered by structured data. The description adds the useful content hint that the profile comprises coefficient, rate, previdenza and the registered regime, but discloses nothing about whether the profile is company-scoped, what happens when no profile is configured, or what the read returns beyond those field names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with no filler, and the parenthetical field list is informative rather than redundant. Its front-loading is weakened only by leading with a noun phrase instead of the retrieval action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with readOnlyHint and no output schema, the definition is minimally adequate: it tells the agent what concepts the profile contains. However, it never states that the call retrieves the currently configured profile for a company (or that other tools consume these values), leaving a real gap that the schema's default-value note only partially fills.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter and 100% schema description coverage, the schema already explains company_id and its default fallback to FIC_COMPANY_ID / the token's sole company. The description adds no meaning about company scope or what changing it implies, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource domain (tax profile: coefficient, rate, social security, registered regime in Fatture in Cloud) but never states the action — it is a noun-phrase definition rather than 'retrieves the company's tax profile'. An agent must infer from the tool name 'tax_profile_get' and the sibling 'tax_profile_set' that this is a read of the configured profile, not an estimate calculation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no routing to alternatives, even though close siblings exist (tax_estimate, regime_simulator, tax_profile_set). Nothing tells the agent whether to call this before estimating taxes or how it differs from those tools; usage is only implied by the shared 'tax' prefix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tax_profile_setB
Imposta il profilo fiscale del forfettario: coefficiente di redditività (78% professionisti, 67% altre attività, 40% commercio, 86% costruzioni, 62% intermediari, secondo il codice ATECO: es. 62.x consulenza informatica = 67%, 70-75 e 85 = 78%), aliquota (15%, o 5% per i primi 5 anni), previdenza (gestione separata 26,07%, o 24% se hai già un'altra copertura; artigiani/commercianti; cassa), importi reali già versati per anno e pagamenti pianificati (rateizzazioni). I campi non passati restano invariati.
| Name | Required | Description | Default |
|---|---|---|---|
| inps | No | ||
| ateco | No | Codice ATECO principale, es. 62.01.00 | |
| tax_rate | No | 0.15 o 0.05 | |
| overrides | No | Per anno, es. { "2025": { contributions_paid: 3200 } } | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token | |
| start_year | No | Anno di apertura della partita IVA | |
| coefficient | No | Es. 0.78 | |
| planned_payments | No | Pagamenti già fissati, es. le rate di una rateizzazione: entrano in previsione di cassa, calendario e F24. Sostituisce l'elenco precedente |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one crucial trait: "I campi non passati restano invariati", i.e. a partial merge rather than a replace, which matters enormously for a mutation tool with zero required parameters. It says nothing about permissions, plan gating, validation failures, or what the profile looks like after the write, so the behavioral picture is only half-drawn.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is dense and front-loaded with the core action, but it is delivered as one sprawling sentence stitched together with parentheses and commas, which makes it hard to scan. Several parenthetical examples duplicate information already present in the schema descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter tool with nested oneOf structures and no output schema, the description covers the semantic surface well: what each setting group means, the merge behavior when fields are omitted, and how planned payments feed into cash-flow and F24 output. Remaining gaps — validation behavior and post-write state — are secondary for a configuration setter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 88%, so the baseline is 3, but the description earns a bump by giving domain meaning the schema only gestures at: concrete coefficient values per ATECO sector (78/67/40/86/62) with worked examples, the 15% vs 5% aliquota rule, and the 26.07% gestione separata rate with the 24% alternative. It maps the abstract `overrides` and `planned_payments` names onto real accounting concepts (acconti versati, rateizzazioni).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Imposta il profilo fiscale del forfettario" is a specific verb + resource, and the parentheticals enumerate exactly which settings are written (coefficiente, aliquota, previdenza, importi versati, pagamenti pianificati). It is clearly distinct from tax_profile_get and from the simulator/estimator siblings, though the description never names those alternatives to reinforce the contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no mention of prerequisites such as configuring the profile before calling tax_estimate or regime_simulator. The domain hints (which coefficient corresponds to which ATECO) are value-selection help, not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transform_documentB
Trasforma un documento in un altro tipo con il collegamento nativo di Fatture in Cloud: proforma → fattura, preventivo → ordine o fattura, ordine → DDT/fattura, DDT → fattura.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| date | No | ||
| dry_run | No | ||
| new_type | Yes | ||
| e_invoice | No | Crea come fattura elettronica | |
| keep_copy | No | Mantieni il documento originale | |
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, yet it says nothing about what the call actually creates, whether the original is mutated (keep_copy defaults true but is only explained in the schema), what dry_run does in practice, whether the operation is reversible, or what permissions/company scoping apply. "Collegamento nativo" hints at a link between the two documents but is never clarified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense, front-loaded sentence with no filler; the conversion list is the highest-value information and appears immediately. It reads slightly as a run-on example list rather than structured guidance, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutating, 7-parameter tool with no annotations and no output schema, so the description is the only behavioral documentation available. It covers purpose and valid conversions but leaves an agent unable to predict side effects, return payload, dry_run semantics, or idempotency — a substantial gap for a document-creating operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 43%, below the 50% threshold, so the description must compensate, and it does so only for new_type by constraining it to the listed conversion pairs. The required id, plus date, dry_run and the enum's other members, receive no meaning from the description at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ("Trasforma") and resource ("documento") and then enumerates the exact supported conversions (proforma → fattura, preventivo → ordine/fattura, ordine → DDT/fattura, DDT → fattura). This makes it easily distinguishable from siblings such as duplicate_document or create_issued_document, which an agent could otherwise confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The conversion chain is the only place the valid source→target pairs are stated; the schema merely offers an 11-value enum for new_type with no restriction, so the description supplies real selection guidance. It never names alternative siblings (duplicate_document, create_issued_document) or states when not to use it, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_archive_documentBIdempotent
Modifica un documento d'archivio: passa solo i campi da cambiare.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only annotation is idempotentHint=true, so the description carries most of the behavioral burden. It usefully discloses patch-style semantics (only changed fields are passed, implying unmentioned fields are preserved), but says nothing about required permissions, what happens on unknown field names, or whether nested objects merge or replace — all relevant given the nested `data` object.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the update semantics front-loaded and no filler. It is efficient, though the extreme brevity leaves room for a clause on field scope without becoming bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool with a free-form nested object parameter, no output schema, and only an idempotency annotation. An agent still cannot tell which document fields are updatable, whether nested data merges or replaces, or what a successful response contains — substantial gaps for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% and the `data` property is a bare additionalProperties object with no documentation, so the description's "pass only the fields to change" meaningfully clarifies how `data` should be populated. However, it never names which fields are accepted or explains the `id`/`company_id` distinction, leaving the largest parameter only partially compensated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Modifica) and resource (documento d'archivio), which cleanly separates it from the sibling create_/delete_/list_/get_archive_document tools by name alone. It does not explicitly name or contrast with any sibling in the text, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"passa solo i campi da cambiare" gives implicit usage guidance: this is a partial-update, so callers should send a delta rather than a full document. There is no explicit when-to-use vs. when-not guidance, no mention of create_archive_document for new records, and no prerequisite or fallback path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_cashbook_entryBIdempotent
Modifica un movimento di prima nota (incassi e pagamenti): passa solo i campi da cambiare.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Only idempotentHint is annotated, so the description carries most of the behavioral burden; it does usefully disclose the patch/merge behavior (unchanged fields are preserved by omission). It says nothing about validation, whether changing amounts recalculates totals, or what the response contains, which matters for a mutation tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the action front-loaded and zero filler. It is efficient, though the terseness borders on under-specification for a tool with a nested untyped payload.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a nested free-form `data` object, no output schema, and only an idempotentHint annotation, the description is too thin: it omits the valid field set, how the entry is identified/validated, and any error or side-effect behavior. An agent could invoke it but would have to guess the payload shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 33% and the critical parameter `data` is a free-form object with additionalProperties {} and no property descriptions. The sentence clarifies that `data` is a partial patch, but it never hints at the accepted field vocabulary (amount, date, description, payment method, etc.), leaving the main ambiguity unresolved; `id` is also unexplained in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Modifica un movimento di prima nota') and scopes the domain with '(incassi e pagamenti)', which clearly separates it from the sibling create_cashbook_entry / delete_cashbook_entry / get_cashbook_entry set. It does not explicitly name a sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'passa solo i campi da cambiare' conveys the intended usage pattern (partial/merge update rather than full replacement), which is real guidance. However, there is no statement of when to prefer this over a full rewrite, no prerequisites (existing entry, permissions, closed periods), and no warning about what happens to fields omitted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_clientAIdempotent
Modifica un cliente: passa solo i campi da cambiare. Per la fattura elettronica servono vat_number o tax_code, address_* e ei_code (codice SDI) o certified_email (PEC).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only annotation is idempotentHint=true, so the description carries most of the burden. It usefully discloses patch semantics (omitted fields are presumably preserved) and the field combinations required for e-invoicing validity, which the annotation does not cover. However, it says nothing about what happens on a partially invalid payload, whether validation errors surface at write time, permission requirements, or what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: the patch rule is front-loaded, then the conditional e-invoicing prerequisites. Every clause does work; the only shortfall is that the e-invoicing clause is dense enough that an agent may need the schema to unpack address_*.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a nested free-form object, no output schema, and a third of parameters undocumented, the description covers purpose, patch semantics and one important field-validation rule. Gaps remain around the contents of `data`, error/rejection behavior, and confirmation of what a successful update returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 33%, and the critical `data` parameter is an opaque object with additionalProperties: {} and no documentation. The description partially compensates by naming concrete keys that live inside it (tax_code, address_*, SDI code, certified_email), which is genuinely useful. It still does not enumerate the rest of the updatable client fields or explain the shape of address_*.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb and resource are explicit ("Modifica un cliente"), and the added "passa solo i campi da cambiare" pins down that this is a partial update rather than a replace. It separates cleanly from create_client / delete_client / get_client by verb alone, though it never names those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a concrete usage rule (send only changed fields) and gives conditional prerequisites for electronic invoicing: either a VAT number or tax code, plus address_* fields, plus an SDI code or certified email (PEC). That is real when-to-use guidance, but there are no exclusions or pointers to alternatives, and nothing about ordering or how to correct a rejected payload.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_f24BIdempotent
Modifica un modello F24: passa solo i campi da cambiare.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations supply only idempotentHint=true, so the description carries most of the burden. It usefully implies patch-style merge semantics (omitted fields stay untouched), which is real behavioral context beyond the annotation, but it says nothing about required permissions, what happens on an invalid field name inside data, or whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the action and resource, followed immediately by the operative constraint. Nothing is wasted and the key instruction is impossible to miss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a nested, unconstrained data object, no output schema and only one annotated parameter, the description is too thin. An agent still cannot tell which F24 fields are updatable, whether nested values are merged or replaced, or what a successful response contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%: company_id is documented in the schema while id and the free-form nested data object (additionalProperties: {}) are opaque. The description compensates for the most important gap by establishing that data need only contain the changed fields, but it never says which F24 fields are valid keys or what the id must reference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Modifica un modello F24" states a specific verb (modify) and a specific resource (F24 model), which cleanly separates it from the create_f24, get_f24, delete_f24 and list_f24 siblings. It stops short of explicitly naming those siblings or the scope of a modification, so it is clear but not maximally differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"passa solo i campi da cambiare" is a genuine calling instruction: it tells the agent to send a partial payload rather than a full replacement. There is, however, no guidance on when to prefer update_f24 over create_f24 or duplicate/transform flows, and no prerequisites or failure conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_issued_documentAIdempotent
Modifica un documento emesso (fattura, nota di credito, proforma, preventivo, ordine, DDT...): passa solo i campi da cambiare. Ometti number per la numerazione automatica. Per forfettari aggiungi stamp_duty: 2 sopra 77,47 €. Per ripetere un documento esistente usa duplicate_document.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only annotation is idempotentHint=true, which the description is consistent with, and the text adds real behavior beyond it: patch-style semantics (only passed fields change), automatic numbering when `number` is omitted, and a tax-regime-specific rule. What is missing is the state-dependent behavior that matters most for this resource — whether an already-sent/electronic invoice can still be modified, and what happens to numbering if a number is supplied later.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in the first clause, then layered with the highest-value caveats in descending priority; every clause carries information. Slightly dense, with an open-ended enumeration ("fattura, nota di credito, ... DDT...") that adds breadth but also length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a free-form nested `data` payload and no output schema, the definition covers the critical mechanics (partial update, numbering, stamp duty) but leaves the editable-field vocabulary essentially undocumented. An agent knows how to call it correctly in shape, but may still have to guess field names and cannot tell which documents are locked.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% — `id` and the free-form nested `data` object have no schema descriptions — so the description carries most of the burden and does so reasonably: it explains that `data` holds only the changed fields, that `number` inside it controls numbering, and that `stamp_duty` accepts a specific value for forfettari. The gap is that `data` is an unconstrained object and the description gives no hint about the broader set of accepted field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Modifica) on a specific resource (documento emesso) and enumerates the document types it applies to (fattura, nota di credito, proforma, preventivo, ordine, DDT). It also distinguishes itself from duplicate_document by name, so an agent can separate it from its closest sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit operating guidance: send only the fields to change (partial update), omit `number` to get automatic numbering, and use duplicate_document instead when the intent is to repeat an existing document. It even encodes a domain rule (stamp_duty: 2 for forfettari above 77,47 €) that would otherwise cause compliance errors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_payment_accountAIdempotent
Modifica un conto di saldo (banca, cassa, carta) su cui registrare incassi e pagamenti: passa solo i campi da cambiare. Campi: name, type (standard/bank), iban, sia, cuc, virtual.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The single annotation is idempotentHint=true, so the description must carry most of the behavioral burden for a mutation. The partial-update promise (only changed fields are sent) usefully implies untouched fields are preserved, but validation of iban/sia/cuc, permissions, reversibility, and error behavior are all undisclosed. Nothing contradicts the idempotent annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and target, then the patch instruction, then a compact field list. Every clause carries information an agent needs and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool whose nested object is schema-opaque, the field enumeration is the essential missing piece and it is present. Remaining gaps are minor but real: no return information (no output schema exists) and no statement about validation failures or whether company_id scoping changes behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% and the required "data" property is an unconstrained free-form object, so the schema alone tells an agent nothing. The description compensates by enumerating exactly which keys go inside data (name, type, iban, sia, cuc, virtual) and by giving the type enum values standard/bank, which the schema lacks. It stops short of describing value formats or the id parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Modifica un conto di saldo (banca, cassa, carta) su cui registrare incassi e pagamenti" gives a specific verb plus the resource, and the parenthetical names the concrete account kinds. It contrasts with create/delete/list siblings only through the verb, with no explicit routing statement, which keeps it at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"passa solo i campi da cambiare" is a real calling guideline that tells the agent to send a sparse patch, not a full object. However, it never says when to choose this tool over create_payment_account or delete_payment_account, nor what prerequisites exist (e.g. account must already exist), so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_payment_methodBIdempotent
Modifica un metodo di pagamento mostrato in fattura (es. bonifico con IBAN): passa solo i campi da cambiare. Per la fattura elettronica imposta ei_payment_method (es. MP05 bonifico) e i dettagli (details: [{title, description}]).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare idempotentHint=true, so the description must carry the mutation semantics: it does partly by stating only changed fields should be sent (patch-style behavior) and by specifying the e-invoice fields. It does not say whether modifying a method used on already-issued invoices has side effects, what permissions are required, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the action and scope, then the e-invoice specifics. Dense but every clause carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Reasonable for a mutation tool with a free-form nested 'data' object and only idempotentHint as annotation coverage: the core patch and e-invoice instructions are present. It still leaves the identifier semantics, valid data keys beyond the two named ones, and the effect on existing documents undocumented, and there is no output schema to lean on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 33% schema coverage, the description must compensate: it does meaningfully for the opaque free-form 'data' object by naming ei_payment_method and the details:[{title, description}] structure, and by implying patch semantics. The required 'id' parameter is never explained and the set of valid 'data' keys remains open-ended.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Modifica un metodo di pagamento mostrato in fattura', with a concrete example (bonifico con IBAN). This clearly separates it from update_payment_account, which concerns the account rather than the invoice-level method, though the sibling is never named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a useful partial-update instruction ('passa solo i campi da cambiare') and a conditional path for electronic invoices (set ei_payment_method and details). However, it offers no when-not guidance, no prerequisites, and no routing to create_payment_method or update_payment_account for related cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_productBIdempotent
Modifica un prodotto o servizio a listino: passa solo i campi da cambiare.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The single annotation (idempotentHint=true) already tells the agent repeated calls are safe, and the description's patch semantics are consistent with that. Beyond that it adds little: it does not say that unspecified fields are left untouched (only implied), nor how the tool behaves on invalid ids, permissions, or missing company scope. Not contradictory, but thin for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the action front-loaded and the key calling convention attached. Nothing is wasted, though the brevity borders on under-specification given the untyped data object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool mutates a nested, schema-free object (data allows arbitrary properties) and has no output schema and only one weak annotation, so the description carries most of the explanatory burden. It never lists the updatable fields or the response shape, leaving an agent unable to know what it can actually change.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 33%: only company_id is documented, while id and the free-form data object are bare. The description partially compensates by establishing that data is a sparse patch of only changed fields, which is meaningful. It says nothing about which fields the data object accepts or what id refers to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ("Modifica un prodotto o servizio a listino"), which clearly separates it from the create/get/delete/list product siblings implied by the verb. It stops short of naming those alternatives, but an agent can identify the operation type without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"passa solo i campi da cambiare" gives real guidance on how to invoke it (partial update rather than full replace), which is the main usage decision for this tool. There is no guidance on when to prefer it over siblings, no prerequisites, and no statement about what happens if the id does not exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_receiptBIdempotent
Modifica un corrispettivo (scontrino / ricevuta giornaliera): passa solo i campi da cambiare.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The sole annotation is idempotentHint=true; the description adds patch semantics (send only changed fields), which is real behavioral context beyond the annotations. It says nothing about what happens to unspecified fields, whether changes to a receipt affect fiscal totals/VAT, whether confirmation is required, or how errors surface — gaps that matter for a mutation on a fiscal document.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler: the operation, the resource with clarifying synonyms, and the patch instruction. It is efficient, though for a mutation tool with a free-form nested payload it is arguably over-terse rather than optimally sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a mutation on a fiscal document, a free-form nested 'data' object, no output schema, and only an idempotentHint annotation, the description carries too little: valid field names, effects on totals/period locks, and response behavior are all unaddressed. An agent can identify the tool but not safely construct the call from the description plus schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%: company_id is documented in the schema, while id has no description and data is an untyped object with additionalProperties {} — the critical question of which fields may be passed is answered nowhere. The phrase 'passa solo i campi da cambiare' usefully establishes that data is a partial-field patch object, but it does not enumerate or link to valid keys, so it only partly compensates for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource and disambiguates the Italian terminology ('Modifica un corrispettivo (scontrino / ricevuta giornaliera)'), which is genuinely needed because siblings like update_received_document and update_issued_document sound similar. It never names a sibling or says which document class it does NOT cover, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'passa solo i campi da cambiare' gives a real usage rule for partial updates, which an agent would otherwise have to guess. However there is no explicit when-to-use-vs-alternatives guidance (e.g. when to use update_receipt instead of delete_receipt + create_receipt, or vs update_received_document), and no prerequisites such as whether a company must be active or the receipt unlocked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_received_documentAIdempotent
Modifica un documento ricevuto (spesa, nota di credito passiva, DDT passivo): passa solo i campi da cambiare. L'API richiede payments_list che copra l'intero amount_gross anche per spese semplici.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The idempotentHint annotation already signals repeated calls are safe, and the description reinforces this with partial-field semantics. It also adds a genuinely non-obvious API constraint — payments_list must cover the entire amount_gross even for simple expenses — which is exactly the kind of behavioral detail annotations cannot convey. It still omits what happens to fields not passed (merge vs replace on nested objects) and any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the scope stated first and the hard constraint second; no filler. The second sentence is jargon-dense (payments_list, amount_gross) but that terminology is load-bearing rather than wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a nested free-form payload, no output schema, and thin schema coverage, the description supplies the two things an agent most needs: partial-update semantics and the mandatory payments_list coverage rule. Missing are the shape of valid data fields and any confirmation of what the response returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% and the central 'data' parameter is an untyped free-form object with no description, so the description must carry the burden. It does clarify that data should contain only changed fields and flags the payments_list/amount_gross rule, but it never enumerates or hints at the other fields data accepts, leaving the largest parameter largely opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Modifica un documento ricevuto') and enumerates the supported document types (spesa, nota di credito passiva, DDT passivo). It implicitly separates itself from update_issued_document by naming the received side, but never names a sibling tool explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Passa solo i campi da cambiare' gives useful partial-update guidance, telling the agent not to resend the whole document. However, there is no guidance on when to prefer this over alternatives such as mark_paid, transform_document, or register_pending_received_documents, and no prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_supplierAIdempotent
Modifica un fornitore: passa solo i campi da cambiare.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations supply only idempotentHint=true, so the description must carry most of the behavioral load. The partial-update sentence usefully implies that unspecified fields are preserved, which is genuine behavioral disclosure, but nothing is said about permissions, validation failures, side effects, or whether the whole `data` blob is replaced when supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and resource, followed immediately by the one calling constraint that matters. There is no filler, and the colon structure separates action from instruction cleanly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a free-form nested object and no output schema, the definition covers the essentials but leaves gaps: valid field names for `data`, error behavior on unknown ids, and any company-scoping caveats beyond the company_id schema text. Note also that the description is in Italian while the rest of the tool surface is English, which is a minor consistency issue for an agent routing calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 33%, so the description has to compensate. It does so for the most important gap: `data` is an unconstrained object with additionalProperties {}, and 'passa solo i campi da cambiare' explains that it is a sparse patch of changed fields rather than a full supplier representation. It still does not say which supplier fields are valid keys, which limits the value of the clarification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb plus resource ('Modifica un fornitore'), which maps unambiguously onto update_supplier and is distinguishable from delete_supplier, get_supplier and list_suppliers by verb alone. It stops short of explicitly contrasting with those siblings, but the update semantics are unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'passa solo i campi da cambiare' gives a real calling convention (partial patch, not full replace), which is the main way a caller could misuse this tool. Beyond that there is no guidance on prerequisites, no mention of when to prefer create_supplier versus update, and no statement about what happens when the id does not exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_vat_typeAIdempotent
Modifica un aliquota IVA o natura di esenzione: passa solo i campi da cambiare. Per operazioni senza IVA serve ei_type (natura, es. N2.2) e una descrizione/riferimento normativo.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| data | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Only idempotentHint is supplied by annotations; the description adds the important behavioral fact that this is a partial merge update ('passa solo i campi da cambiare'). It says nothing about permissions, what happens to documents already using the rate, validation failures on an unknown nature code, or return shape, which matters for a tax-configuration mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with no filler: the mutation and partial-update rule come first, the exemption-case requirement comes second. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the two branches an agent must distinguish (ordinary rate change vs exempt nature) for a tool with a nested free-form payload and no output schema. Missing pieces are the meaning of `id` and the effect on existing documents, which are secondary but non-trivial for a config mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% and `data` is a free-form object with additionalProperties, so the description carries real weight by naming the fields to pass and the ei_type nature convention plus legal reference. It still leaves `id` unexplained (implicitly the VAT type id) and does not enumerate allowed nature codes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Modifica un aliquota IVA o natura di esenzione', which is clearly distinct from create_vat_type/delete_vat_type implied by the verb, and adds partial-update scope. It never names a sibling explicitly, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operative guidance: pass only the fields to change, and for VAT-exempt operations supply ei_type (e.g. N2.2) plus a description/legal reference. It does not state when to use this instead of create_vat_type or delete_vat_type, so alternatives are left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_attachmentA
Carica un file locale come allegato e restituisce l'attachment_token. Poi collegalo con update_* passando { attachment_token }.
| Name | Required | Description | Default |
|---|---|---|---|
| resource | No | issued_documents | |
| file_path | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the return value (attachment_token) and that the file is stored then referenced, but says nothing about size/format limits, permissions, error behavior, or whether an unused upload is orphaned or garbage-collected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and the returned token, with zero wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the core action, return value and follow-up step for a simple 3-parameter tool. It is incomplete on the resource enum semantics and on upload constraints, which matter for correct invocation given there are no annotations or output schema to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% – only company_id is documented. The description hints at file_path ('file locale') but never explains the 'resource' parameter, whose four enum values determine which document type the attachment binds to; that meaning is absent from both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource in Italian ('Carica un file locale come allegato') plus the return value (attachment_token). It also distinguishes itself from the update_* sibling family by positioning itself as a prerequisite step, not a mutation of document data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes the two-step workflow: upload first, then link the token via update_* passing { attachment_token }. It does not state when NOT to use it (e.g., attaching to a not-yet-created document) or which specific update_* tool to pick for each resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_einvoiceARead-only
Verifica formale dell'XML della fattura elettronica: campi obbligatori e formati. Non invia nulla.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| company_id | No | Azienda su cui operare. Default: FIC_COMPANY_ID o l'unica azienda del token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares this a safe read, and the description corroborates it with 'Non invia nulla', adding reassurance that no transmission side effect occurs. However, for a verification tool the crucial behavioral fact is what a failed verification produces (error list? boolean? exception?), and neither an output schema nor the description supplies that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, with what is verified listed first and the no-side-effect guarantee front-loaded as a second clause. No filler and nothing that repeats the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description is the only place the return value could be described, and it says nothing about what the verification yields or how failures are reported. Combined with the undocumented 'id' parameter, the definition leaves an agent guessing at both inputs and results for what should be a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: company_id carries a default-resolution note in the schema, but 'id' is a bare integer with no description anywhere. The description never clarifies whether 'id' is the issued-document id, the received-document id, or the invoice XML identifier, which is exactly the ambiguity an agent would stumble on here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Verifica formale dell'XML della fattura elettronica') and narrows the scope to 'campi obbligatori e formati'. The closing clause 'Non invia nulla' draws the boundary against the send-oriented siblings (send_einvoice, bulk_send_einvoice), so an agent can separate the two without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Non invia nulla' implicitly tells the agent this is a validation step to run before any send operation, and it explicitly excludes the sending use case. What's missing is a direct pointer to the alternatives, e.g., whether to use einvoice_rejection_reason instead when the invoice has already been rejected, or get_einvoice_xml to inspect the payload.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
123 tool updates
v0.5.1- First observed
accountant_package - First observed
api_quota - First observed
api_request - First observed
audit_documents - First observed
bank_accounts - First observed
bank_formats - First observed
bank_link_finish - First observed
bank_link_start - First observed
bank_list_banks - First observed
bank_parse_statement - First observed
bank_reconcile - First observed
bulk_duplicate - First observed
bulk_email - First observed
bulk_send_einvoice - First observed
cashflow_forecast - First observed
client_from_vat - First observed
client_statement - First observed
create_archive_document - First observed
create_cashbook_entry - First observed
create_client - First observed
create_credit_note - First observed
create_f24 - First observed
create_issued_document - First observed
create_payment_account - First observed
create_payment_method - First observed
create_product - First observed
create_receipt - First observed
create_received_document - First observed
create_supplier - First observed
create_vat_type - First observed
delete_archive_document - First observed
delete_cashbook_entry - First observed
delete_client - First observed
delete_f24 - First observed
delete_issued_document - First observed
delete_payment_account - First observed
delete_payment_method - First observed
delete_product - First observed
delete_receipt - First observed
delete_received_document - First observed
delete_supplier - First observed
delete_vat_type - First observed
duplicate_document - First observed
einvoice_rejection_reason - First observed
email_document - First observed
get_archive_document - First observed
get_cashbook_entry - First observed
get_client - First observed
get_company_info - First observed
get_document_pdf - First observed
get_einvoice_xml - First observed
get_f24 - First observed
get_issued_document - First observed
get_new_document_defaults - First observed
get_payment_account - First observed
get_payment_method - First observed
get_pending_received_document - First observed
get_price_list_items - First observed
get_product - First observed
get_receipt - First observed
get_received_document - First observed
get_supplier - First observed
get_vat_type - First observed
join_documents - First observed
list_archive_documents - First observed
list_cashbook_entries - First observed
list_clients - First observed
list_companies - First observed
list_deleted_documents - First observed
list_f24 - First observed
list_issued_documents - First observed
list_payment_accounts - First observed
list_payment_methods - First observed
list_pending_received_documents - First observed
list_price_lists - First observed
list_products - First observed
list_receipts - First observed
list_received_documents - First observed
list_sent_emails - First observed
list_suppliers - First observed
list_vat_types - First observed
lookup - First observed
lookup_city - First observed
mark_paid - First observed
mark_unpaid - First observed
preview_totals - First observed
quadro_lm - First observed
receipts_monthly_totals - First observed
receivables_report - First observed
recover_document - First observed
recurring_expenses_report - First observed
regime_simulator - First observed
register_pending_received_documents - First observed
revenue_summary - First observed
schedule_create - First observed
schedule_delete - First observed
schedule_get - First observed
schedule_list - First observed
schedule_run_due - First observed
schedule_run_now - First observed
schedule_update - First observed
send_einvoice - First observed
stamp_duty_report - First observed
suggest_expense_categories - First observed
tax_deadlines_export - First observed
tax_estimate - First observed
tax_profile_get - First observed
tax_profile_set - First observed
transform_document - First observed
update_archive_document - First observed
update_cashbook_entry - First observed
update_client - First observed
update_f24 - First observed
update_issued_document - First observed
update_payment_account - First observed
update_payment_method - First observed
update_product - First observed
update_receipt - First observed
update_received_document - First observed
update_supplier - First observed
update_vat_type - First observed
upload_attachment - First observed
verify_einvoice
TDQS
Scored across 123 tools
The bulk of the surface follows a clean resource+action split (list/get/create/update/delete per entity), and the domain-specific tools have clearly differentiated purposes (audit_documents vs verify_einvoice vs preview_totals, send_einvoice vs bulk_send_einvoice, mark_paid vs bank_reconcile). A few pairs still blur: schedule_run_due vs schedule_run_now, duplicate_document vs bulk_duplicate, and the catch-all api_request overlapping every specialized tool. These are resolvable from descriptions but add selection risk at 123 tools.
There is a dominant, predictable verb_noun snake_case convention across all CRUD families (list_clients, create_issued_document, update_vat_type, delete_receipt), and domain clusters use consistent prefixes (bank_*, schedule_*, bulk_*, tax_profile_*). Deviations exist but are internally coherent: noun-first report names (revenue_summary, client_statement, cashflow_forecast), noun_verb order for tax_profile_get/set, and preposition-like names (client_from_vat, quadro_lm, lookup). Readable, but not a single uniform pattern.
123 tools is far beyond a comfortable agent-facing surface, even for a broad invoicing/accounting platform; the CRUD quintets for a dozen resources alone account for most of it. Several tools could be consolidated (e.g. generic list/get/create/update/delete parameterized by resource, or the many report tools grouped). Each tool has a real function, so it is not a 1, but the count materially burdens discovery and selection.
Coverage is unusually deep: full lifecycle for issued/received/archive documents, clients, suppliers, products, receipts, F24, cashbook, payment accounts/methods and VAT types, plus e-invoicing, reconciliation, tax estimation and reporting workflows with no obvious dead ends. Minor gaps remain for secondary resources (revenue/cost centers, payment terms, document templates, webhooks) that are only reachable via lookup or the api_request escape hatch. Strong but not exhaustive.
Maintenance
Related MCP Connectors
Create, send and track invoices from a conversation in Claude, ChatGPT or any MCP client that supports OAuth. Draft an invoice from one sentence or from last month's invoice for the same client, finalize it, email it to your client and send payment reminders for overdue ones. See revenue by month and by client, download PDFs and e-invoices (ZUGFeRD, XRechnung), and export DATEV packages for your tax advisor. Invoices follow the tax rules of 25 countries, including reverse charge and the small-business VAT exemption. New invoices are drafts, and nothing is emailed until you ask. Pay per invoice with no subscription: the first invoice is free.
Create EU-compliant invoices, manage clients and download PDFs from your AI assistant.
Create invoices from your AI assistant in 6 languages and 10 currencies, ready for WhatsApp.
Italy FatturaPA invoices for AI agents: build FPR12 XML, transmit to the SdI, query status.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables integration with Fatture in Cloud to manage Italian electronic invoices through natural conversation, including creating, sending, and tracking invoices and financial data.49 PyPI25MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to issue Italian FatturaPA electronic invoices and transmit them to the SdI via Invoicetronic. Supports creating and querying invoices with Italian VAT rates.MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to create and manage e-invoices through natural language, supporting EU compliance formats like ZUGFeRD and XRechnung, as well as US plain PDF invoices.7-
- AlicenseNot gradedqualityBmaintenanceEnables natural-language management of FattureInCloud invoicing, clients, suppliers, and e-invoice workflows, with extensions for marking invoices as paid and caching payment accounts/VAT types.MIT