heu-legal-mcp
This server integrates HEU Legal's e-signature API into MCP clients, enabling full lifecycle management of legally binding electronic signatures and documents in conversation.
Health Check: Verify API availability with
get_heu_health.Document Management: List, retrieve, and manage native HEU documents/templates and uploaded PDF documents/templates, including status, signers, and placeholders.
Create & Send for Signature: Create HEU documents from templates, upload PDFs, or use existing PDF templates; send them for signature via email, with AI-assisted placement of signature fields (
create_heu_document,create_pdf_document,create_pdf_document_from_upload).AI-Powered Field Mapping: Use
locate_pdf_textto find text positions in PDFs and automatically place signature/text fields.Template Management: Create, update, preview, and delete reusable PDF templates (
create_pdf_template,update_pdf_template,preview_pdf_template,delete_pdf_template).Reminders & Cancellation: Send signature reminders and cancel pending signature requests (
prompt_heu_document_signature,prompt_pdf_document_signature,cancel_pdf_document).Document Reading & Analysis: Extract text and structured party data (tax codes, VAT, PEC, addresses) without downloading, for summarization or clause comparison (
read_heu_document,read_pdf_document,extract_heu_document_parties,extract_pdf_document_parties).Download & Archiving: Download signed PDFs, audit trails, and complete legal bundles (signed PDF + audit trail + FES artifacts) (
download_heu_document_pdf,download_pdf_document,download_pdf_audit_trail,download_pdf_bundle).Placeholder Management: List and manage signature fields and placeholders in both native HEU documents and PDFs.
Click on "Install 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., "@heu-legal-mcpList my HEU documents"
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.
HEU Legal MCP Server
MCP server (Model Context Protocol) che collega l'API HEU Legal a Claude e a qualsiasi client MCP. Gestisce l'intero ciclo di vita dei documenti con firma elettronica (valida in 180+ paesi) direttamente in conversazione: dalla creazione all'invio in firma, dal sollecito al download del fascicolo legale completo.
Cosa puoi fare
Voglio... | Il server lo fa con... |
📄 Vedere i miei documenti e templates |
|
✍️ Mandare un contratto in firma da un template |
|
🚀 Mandare in firma un PDF che ho sul computer, senza passare dalla piattaforma |
|
🤖 Far mappare i campi firma all'AI (analizza il PDF, posiziona i campi, invia) |
|
🔔 Sollecitare chi non ha ancora firmato |
|
👀 Far leggere un contratto all'AI (riassunti, clausole, confronti) senza scaricarlo |
|
🪪 Estrarre i dati delle parti (P.IVA, codice fiscale, SDI, PEC, indirizzi) |
|
💾 Scaricare il PDF firmato |
|
⚖️ Scaricare il fascicolo legale completo (documento + audit trail + artefatti FES) |
|
🧩 Creare/modificare templates PDF riutilizzabili via API |
|
❌ Annullare una richiesta di firma inviata per errore |
|
🩺 Controllare che l'API sia raggiungibile |
|
Due famiglie di oggetti:
Documenti nativi HEU — creati con l'editor in-app della piattaforma (ID a forma di UUID, es.
5135e7b2-196b-...).PDF caricati — file PDF con firmatari e campi firma posizionati sopra (ID numerici, es.
68).
Related MCP server: Google Docs MCP Server
Requisiti
Python ≥ 3.10
API key HEU Legal — nella UI: Profile → API Keys → Generate API Key (richiede subscription Enterprise; massimo 2 chiavi attive)
Per i flussi da template: almeno un template creato sulla piattaforma (oppure crealo via API con
create_pdf_template)
Installazione
Da PyPI:
pip install heu-mcpDa sorgenti:
git clone https://github.com/heulegal/heu-mcp.git
cd heu-mcp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtConfigurazione
Claude Desktop
Modifica ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"heu": {
"command": "heu-mcp",
"args": [],
"env": {
"HEU_API_KEY": "la_tua_api_key_qui"
}
}
}
}Se installato da sorgenti con venv:
{
"mcpServers": {
"heu": {
"command": "/path/assoluto/heu-mcp/venv/bin/python",
"args": ["/path/assoluto/heu-mcp/server.py"],
"env": {
"HEU_API_KEY": "la_tua_api_key_qui"
}
}
}
}Riavvia Claude Desktop dopo la modifica.
Claude Code (CLI)
claude mcp add heu heu-mcp -e HEU_API_KEY=la_tua_api_key_quiServer remoto (multi-utente)
Oltre alla modalità locale (stdio) descritta sopra, il progetto include un server remoto che espone gli stessi 28 tool via HTTPS, così gli utenti si collegano senza installare nulla: inseriscono la propria API key HEU una volta, in un flusso OAuth.
Caratteristiche:
Transport Streamable HTTP, autenticazione OAuth 2.1 con PKCE S256, Dynamic Client Registration e Client ID Metadata Document
Multi-utente: ogni connessione usa la API key del proprio utente, conservata cifrata (Fernet) e mai in chiaro nel database
Refresh token con rotazione e revoca automatica della sessione in caso di riuso sospetto
I/O di rete asincrono e parsing PDF su threadpool: una richiesta lenta non blocca gli altri utenti
Avvio locale
pip install -e ".[remote]"
export HEU_MCP_SECRET_KEY="$(python -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())')"
export PUBLIC_URL="http://localhost:8080"
export HEU_MCP_DB="./heu-mcp.db"
heu-mcp-remoteDeploy su Fly.io
fly launch --no-deploy
fly volumes create heu_data --size 1
fly secrets set HEU_MCP_SECRET_KEY="$(python -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())')"
fly secrets set PUBLIC_URL="https://<nome-app>.fly.dev"
fly deployVariabili d'ambiente del server remoto
Variabile | Descrizione | Default |
| Chiave Fernet per cifrare le API key degli utenti (richiesta) | — |
| URL pubblico del servizio, senza slash finale (richiesta in produzione) |
|
| Path dell'endpoint MCP |
|
| Percorso del database SQLite |
|
| Durata token in secondi | 1 ora / 60 giorni |
Endpoint esposti
Endpoint | Scopo |
| Endpoint MCP (richiede bearer token) |
| Metadati risorsa protetta (RFC 9728) |
| Metadati authorization server (RFC 8414) |
| Flusso OAuth 2.1 |
| Liveness probe |
Variabili d'ambiente
Variabile | Descrizione | Default |
| API key HEU Legal (richiesta) | — |
| URL base dell'API |
|
| Cartella dove salvare i file scaricati |
|
Riferimento completo dei tool (28)
🩺 Health
Tool | Parametri | Cosa ritorna |
| — |
|
📄 Documenti nativi HEU
Tool | Parametri | Cosa fa |
|
| Lista documenti/template con stato, membri, firme. ⚠️ Le due date vanno passate sempre insieme, altrimenti l'API può restituire risultati incompleti |
|
| Dettaglio completo: nome, stato ( |
|
| Elenco delle chiavi placeholder sostituibili nel testo del template |
|
| Crea un documento da un template, sostituisce i placeholder e lo condivide via email ai destinatari |
|
| Invia il sollecito di firma. Limite: 1 ogni 24h per documento (429 con |
|
| Estrae il testo del documento e lo restituisce in conversazione, senza salvare nulla su disco. Max 100 pagine se |
|
| Dati delle parti: combina i firmatari registrati con l'estrazione dal testo di codici fiscali, P.IVA, codice univoco SDI, email, PEC, luogo+data di nascita, indirizzi, CAP. Pattern ottimizzati per contratti italiani |
|
| Genera e salva il PDF su disco; ritorna il path |
📎 PDF caricati
Tool | Parametri | Cosa fa |
|
| Lista PDF con stato ( |
|
| Dettaglio: nome, stato, |
|
| Firmatari del PDF: id, nome, email, ha letto, ha firmato |
|
| Campi (firma/testo/checkbox) assegnati a un firmatario specifico, con posizione e stato di compilazione |
|
| Tutti i campi del PDF |
|
| Crea un PDF firmabile da un template esistente e invia gli inviti. Con |
|
| Sollecito di firma per il PDF |
|
| Estrae il testo del PDF (incluso quello firmato) e lo restituisce in conversazione |
|
| Dati delle parti (come sopra) per i PDF caricati |
|
| Scarica il PDF — versione firmata se disponibile — e ritorna il path |
|
| Scarica l'audit trail: il registro PDF di chi ha letto/firmato e quando |
|
| Scarica lo ZIP del fascicolo legale: PDF firmato + audit trail + artefatti FES. Ideale per archiviazione a valore probatorio |
|
| Annulla una richiesta di firma inviata: il documento sparisce dagli elenchi e i link di firma vengono invalidati. Rifiutato con 409 se qualcuno ha già firmato |
🧩 Template PDF (gestione via API)
Tool | Parametri | Cosa fa |
|
| Crea un template riutilizzabile caricando un PDF dal computer. L'ID restituito si usa come |
|
| Scorciatoia completa: carica un PDF e lo manda subito in firma, senza creare prima il template. Il documento nasce |
|
| Trova le coordinate di testi nel PDF (in %, origine in basso a sinistra — lo stesso sistema dei placeholder). È il tool che permette all'AI di posizionare i campi da sola: cerca "Firma", i nomi delle parti o qualsiasi ancora, e ottiene pagina + posizione di ognuna |
|
| Scarica un'anteprima annotata: ogni campo è disegnato come riquadro etichettato con tipo e firmatario. Per verificare le posizioni prima dell'invio |
|
| Sostituzione integrale di firmatari e campi di un template (l'ID resta invariato). Solo il proprietario |
|
| Elimina (nasconde) il template da tutti gli elenchi |
✋ = il tool ha effetti verso l'esterno (crea, invia email, elimina): Claude chiede sempre conferma prima di eseguirlo.
Come si posizionano i placeholder
position_x/position_y: percentuale della pagina (0–100 esclusi), origine in basso a sinistra (come nell'editor dell'app).page_number: parte da 1.Tipi:
signature,initials,text(richiedetext_label),checkbox_optional,checkbox_required.I firmatari si collegano ai campi tramite
source_id→signer_source_id.I PDF ruotati (
/Rotate 90/180/270) vengono rifiutati dall'API.
Flussi di lavoro tipici
0. Invio in firma "intelligente": l'AI mappa i campi da sola
"Prendi
/Users/me/Desktop/Contratto.pdf, trova dove devono firmare le parti e mandalo a cliente@example.com e fornitore@example.com."
Cosa succede dietro le quinte:
locate_pdf_textanalizza il PDF e trova le ancore: le righe "Firma del Cliente" / "Firma del Fornitore" (o i nomi delle parti) con le loro coordinate esatte in percentuale.Claude propone la mappatura: "Metto il campo firma del cliente a pagina 4, sopra l'etichetta 'Firma del Cliente' (x 17%, y 14%), e quello del fornitore accanto (x 50%, y 14%). Confermi?"
Alla conferma,
create_pdf_document_from_uploadcarica il PDF con i placeholder posizionati e invia le email di firma.(Opzionale)
preview_pdf_templateper un controllo visivo se si è passati da un template.
Le coordinate restituite da locate_pdf_text sono già nel sistema dei placeholder HEU (percentuale, origine in basso a sinistra): nessuna conversione necessaria. Per layout complessi si può chiedere l'intera mappa della pagina con include_all_lines=true, o cercare termini specifici (search_terms=["Il Committente", "Il Prestatore"]).
⚠️ Limite: funziona sui PDF con testo. Le scansioni senza OCR non hanno testo estraibile — in quel caso indicare le posizioni manualmente.
1. Mandare in firma un PDF dal computer (tutto via chat)
"Prendi
/Users/me/Desktop/NDA.pdfe mandalo in firma a Mario Rossi (mario@example.com). Campo firma in basso a destra dell'ultima pagina, oggetto email 'NDA da firmare'."
Claude usa create_pdf_document_from_upload → il documento è creato e Mario riceve subito l'email. Poi:
"Mario ha firmato?" →
get_pdf_document"Sollecitalo" →prompt_pdf_document_signature"È firmato, scaricami il fascicolo completo" →download_pdf_bundle
2. Contratti ricorrenti con template
"Crea un template dal file
Contratto-tipo.pdfcon due firmatari: cliente e fornitore. Firma del cliente a pagina 3 in basso." →create_pdf_template"Fammi vedere l'anteprima per controllare le posizioni" →preview_pdf_template"Ora usalo per mandare il contratto ad ACME srl" →create_pdf_document
3. Analisi documentale (l'AI legge i contratti)
"Riassumi il contratto
abc-123e dimmi durata e condizioni di recesso" →read_heu_document"Confronta le clausole di responsabilità dei contratti X e Y" → dueread_heu_document"Estrai i dati delle parti: ragione sociale, P.IVA, SDI, PEC" →extract_heu_document_parties
L'estrazione parti è pensata per l'integrazione con flussi di fatturazione elettronica italiana: il codice univoco SDI e la P.IVA estratti dal contratto possono alimentare direttamente l'anagrafica del gestionale.
4. Monitoraggio e amministrazione
"Quali documenti di luglio non sono ancora stati firmati da tutti?" →
list_heu_documentscon date +have_editors_signed=false"Annulla la richiesta di firma del PDF 42, l'abbiamo mandata alla persona sbagliata" →cancel_pdf_document
Comportamenti e limiti da conoscere
Cosa | Limite / comportamento |
Rate limit API | 300 richieste / 5 minuti (header |
Solleciti firma | 1 ogni 24 ore per documento |
Upload PDF | Max 5 MB, |
Lettura testo | Max 100 pagine se |
Firma FEA | Richiede crediti FEA disponibili per ogni firmatario (422 se insufficienti) |
| Passare sempre entrambe |
Annullamento PDF | Possibile solo senza attività di firma (409 altrimenti) |
Download | I binari vengono salvati su disco ( |
Stati dei documenti
Stato | Significato |
| In attesa di firme |
| In preparazione/modifica |
| In revisione |
| Flusso completato (non firmato) |
| Completamente firmato |
Sicurezza
L'API key è letta solo da variabile d'ambiente: mai nel codice, mai nelle risposte, mai nei log.
I tool con effetti esterni (✋) sono istruiti per richiedere sempre conferma esplicita all'utente.
I file scaricati restano sul filesystem locale.
Sviluppo
git clone https://github.com/heulegal/heu-mcp.git
cd heu-mcp
python3 -m venv venv
source venv/bin/activate
pip install -e .
# Avvio manuale per debug
HEU_API_KEY=... python server.pyLa spec OpenAPI di riferimento è pubblicata su https://api.heulegal.com/v1/specs/v1.yaml (docs interattive: https://api.heulegal.com/v1/docs).
Licenza
MIT — vedi LICENSE.
Link
Available Tools
18 toolscreate_heu_documentB
Crea e condivide un nuovo documento HEU partendo da un template esistente. Invia email ai destinatari. IMPORTANTE: chiedere conferma all'utente prima di eseguire.
| Name | Required | Description | Default |
|---|---|---|---|
| source_document_id | Yes | ID del template sorgente | |
| document_name | No | Nome del nuovo documento | |
| document_type | No | Default: document | |
| email_subject | Yes | Oggetto email di condivisione | |
| email_text | Yes | Corpo email di condivisione | |
| email_to | Yes | Lista email destinatari (oppure stringa singola) | |
| placeholders | No | Mappa key->value dei placeholder da sostituire nel template (chiave = nome placeholder) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses creation, sharing, and email sending, and asks for confirmation. However, it lacks details on side effects (e.g., whether the template is modified), authentication requirements, rate limits, or idempotency. The side effects are stated but insufficiently deep.
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 three sentences, each earning its place: first defines core action, second adds email detail, third provides critical usage instruction. It is front-loaded with the main action and contains no fluff.
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 7 parameters, a nested object, and no output schema, the description is incomplete. It does not explain what HEU documents are, what the return value is, or error conditions. The confirmation instruction is good, but overall context is insufficient for a tool of this complexity.
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 input schema has 100% coverage, so parameters are already described. The description adds no new semantic information beyond what is in the schema; it merely mentions 'existing template' and 'email' which align with existing parameter descriptions. 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 clearly states the tool creates and shares a new HEU document from an existing template and sends email. It distinguishes itself from siblings like create_pdf_document by specifying the HEU document type and the template-based creation process.
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 includes an instruction to ask for user confirmation before executing, which is a usage guideline. However, it does not explicitly state when to use this tool versus alternatives like create_pdf_document or 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.
create_pdf_documentA
Crea e condivide un nuovo PDF firmabile partendo da un template PDF esistente. Richiede signers e (opzionalmente) i valori dei placeholder. Con signature_type='fea' serve avere credito FEA sufficiente. IMPORTANTE: chiedere conferma all'utente prima di eseguire.
| Name | Required | Description | Default |
|---|---|---|---|
| source_document_id | Yes | ID del template PDF sorgente | |
| document_name | No | Nome del nuovo documento | |
| signature_type | No | Tipo firma. Default: fes | |
| email_subject | Yes | Oggetto email di condivisione | |
| email_body | Yes | Corpo email di condivisione | |
| signers | Yes | Lista firmatari (richiesto) | |
| placeholders | No | Valori dei placeholder (opzionale) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description adequately discloses creation and sharing behavior, the need for FEA credit, and the requirement for user confirmation. However, it does not describe error handling, response format, or what happens on the server side.
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 concise (three sentences) and front-loads the core purpose. However, the safety note is placed at the end, which could be more prominent. Overall efficient but not maximally structured.
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 the tool has 7 parameters, no output schema, and no annotations, the description covers the main inputs, a conditional requirement, and a safety guideline. It lacks details about the sharing process, default values, and error conditions, making it somewhat incomplete for an agent to fully anticipate outcomes.
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 description adds only marginal value beyond the schema. It reiterates the need for signers and placeholder values and notes the special case for signature_type, but does not provide new syntactic or structural details.
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 clearly states the tool creates and shares a new signable PDF from an existing template, distinguishing it from sibling tools like create_heu_document (for other document types) and read-only 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 description specifies required inputs (signers, optional placeholders) and a conditional requirement (FEA credit for signature_type='fea'), and includes an explicit instruction to ask user confirmation before execution. However, it does not discuss when to use this tool versus alternatives such as create_heu_document.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_heu_document_pdfA
Scarica il PDF di un documento HEU e lo salva localmente. Ritorna il path del file. Layout opzionale (codici a 3 cifre della UI HEU).
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ID del documento HEU | |
| layout | No | Codice layout (opzionale) | |
| has_index | No | Includi indice (opzionale) | |
| has_footer | No | Includi footer (opzionale) | |
| output_path | No | Path output personalizzato (opzionale, default: HEU_DOWNLOAD_DIR/heu_<id>.pdf) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral burden. It states the tool saves locally and returns path but does not disclose important traits such as overwrite behavior, error handling, authentication needs, or network requirements. The minimal disclosure is insufficient for a mutation-like 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?
The description is two sentences, efficiently conveying the core function and one key optional parameter. It is front-loaded with the main action and result. However, it could be more structured (e.g., listing optional parameters) but remains concise without 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?
Given 5 parameters, no output schema, and no annotations, the description covers the main function and layout parameter but omits detailed behavior for optional parameters like has_index, has_footer, and output_path. It is adequate for the core purpose but leaves gaps for comprehensive use.
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 covers all 5 parameters with descriptions. The description adds value by explaining the layout parameter as codes from the HEU UI ('codici a 3 cifre della UI HEU'), which is not evident from the enum list alone. Other parameters are not elaborated, but schema coverage is high, so baseline is 3, and the layout insight raises 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?
The description clearly states the tool downloads a PDF of an HEU document, saves it locally, and returns the file path. It specifies the object (HEU document) and action (download and save PDF), distinguishing it from siblings like get_heu_document or read_heu_document which likely return content 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?
The description implies usage for downloading PDFs but provides no explicit guidance on when to use this tool versus alternatives. It mentions the optional layout parameter from the HEU UI but does not give prerequisites or scenarios where other tools are preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_heu_document_partiesB
Estrae i dati anagrafici delle parti da un documento HEU. Combina i metadati registrati (firmatari, ruoli, stato firma) con dati estratti dal testo del contratto: codice fiscale, P.IVA, codice univoco SDI, email/PEC, luogo e data di nascita, indirizzi, CAP. Pattern ottimizzati per contratti italiani.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ID del documento HEU | |
| pages | No | Range pagine: '1-3', '5', '1,3,5-7'. Default: tutte (max 100). Le 'parti' sono spesso in pagina 1-2. | |
| include_text | No | Se true include nel risultato anche il testo grezzo (utile per ulteriore analisi). Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. While it explains the combination of metadata and text extraction, it does not disclose whether the operation is read-only, potential side effects, auth requirements, or limitations (e.g., error 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?
The description is a single concise paragraph that effectively communicates purpose and method. It could be slightly more structured (e.g., bullet points) but is not overly verbose.
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 description explains what data is extracted but lacks information about the output structure or format. Since no output schema is provided, this omission affects completeness. It also does not specify whether results are singular or plural (likely multiple parties).
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 input schema has 100% description coverage, so baseline is 3. The description adds overall context about extracted fields but does not enhance parameter-level understanding beyond schema descriptions.
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 clearly states the tool extracts party data from HEU documents, listing specific data fields and mentioning optimization for Italian contracts. This distinguishes it from siblings like extract_pdf_document_parties.
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 usage for extracting party data from HEU documents but provides no explicit guidance on when to use this tool versus alternatives (e.g., extract_pdf_document_parties) or any exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_pdf_document_partiesA
Estrae i dati anagrafici delle parti da un PDF caricato. Combina i metadati dei firmatari registrati con dati estratti dal testo: codice fiscale, P.IVA, codice univoco SDI, email/PEC, luogo e data di nascita, indirizzi, CAP. Pattern ottimizzati per contratti italiani.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ID del PDF caricato | |
| pages | No | Range pagine: '1-3', '5', '1,3,5-7'. Default: tutte (max 100). | |
| include_text | No | Se true include nel risultato anche il testo grezzo. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It mentions combining metadata from registered signers with text extraction, which suggests read-only analysis, but does not explicitly state whether the tool modifies state, requires permissions, or has rate limits. The absence of destructive/read-only hints is a 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 description is a single sentence but packs substantial information (data fields, source, context). It is efficient and well-structured, though the sentence is somewhat long. No extraneous 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?
Given the tool's moderate complexity, no output schema, and no annotations, the description provides enough context by enumerating extracted data fields and noting optimization for Italian contracts. It covers the essential behavioral aspects, though it could benefit from mentioning whether results include confidence scores or are only from text.
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 baseline is 3. The description does not add parameter-specific details beyond the schema; it only summarizes overall output. Since schema already documents each parameter, the description adds limited extra semantic value.
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 clearly states the tool extracts anagraphic data of parties from a PDF, listing specific data fields (codice fiscale, P.IVA, etc.) and noting optimization for Italian contracts. This is a specific verb+resource and distinguishes it from siblings like 'extract_heu_document_parties' by targeting PDF 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 description explains what the tool does but does not provide any guidance on when to use it versus alternatives (e.g., 'extract_heu_document_parties') or when not to use it. Usage context is implied from the purpose, but no explicit 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.
get_heu_documentC
Dettaglio di un documento o template HEU per ID.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ID del documento (UUID per document/template HEU) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are not provided, so the description carries the full burden for behavioral transparency. It only says 'Dettaglio' (detail), implying a read operation, but does not explicitly state it is read-only, mention required permissions, or disclose any side effects. For a retrieval tool, this is insufficient.
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, short phrase with no extraneous words. It is concise and 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?
With only one parameter and no output schema, the description should clarify what 'dettaglio' entails (e.g., fields returned, structure). It leaves the agent guessing about the output, making it incomplete for effective use.
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 input schema has 100% coverage, documenting the single parameter 'document_id' as a UUID. The description redundantly says 'per ID', adding no new meaning beyond the schema. Baseline score 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 that the tool retrieves details of a HEU document or template by ID, which is clear. However, it does not differentiate from sibling tools like 'get_pdf_document' or 'read_heu_document', so the purpose is clear but not distinctly scoped.
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 is provided on when to use this tool versus alternatives such as 'read_heu_document' or 'get_pdf_document'. The context signals list many sibling tools, and the description offers no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_heu_healthA
Health check API HEU. Ritorna { message: 'ok', status: 200 } se operativa.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description specifies the success response but does not indicate what happens if the service is not operational (e.g., error response or timeout). No side effects are mentioned, though it is likely safe.
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 extremely concise, one sentence, with no wasted words. It includes both purpose and response format efficiently.
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 health check with no parameters and no output schema, the description covers the essentials: what it does and what it returns. It could mention that it is safe and has no side effects, but is otherwise 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?
There are no parameters, so schema coverage is 100%. The description adds value by stating the response format, which is not in the schema. Baseline for zero params is 4.
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 clearly states it is a health check API that returns a specific success response. This distinguishes it from all sibling tools, which are document-related operations, making its purpose 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 does not explicitly state when to use this tool versus alternatives, but the context of sibling tools implies it is for health monitoring. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pdf_documentC
Dettaglio di un PDF documento/template HEU per ID.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ID del PDF |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behaviors. It does not mention side effects, authentication, or output characteristics beyond 'detail'.
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 sentence with no filler, clearly identifies the operation. Could be improved by adding context without increasing 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?
Lacks information about what 'detail' includes. No output schema, so description should clarify return fields. Incomplete for agent decision-making.
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 covers parameter with 'ID del PDF' description. The description adds 'per ID', which is redundant. No additional semantic value beyond 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?
Description clearly states action ('get detail') and resource ('PDF document/template HEU') by ID. It distinguishes from siblings like 'get_heu_document' by mentioning 'HEU' but could be more precise about the difference between document and template.
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 tool versus alternatives. Does not mention context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_heu_document_placeholdersB
Lista i placeholder di un documento/template HEU (chiavi sostituibili nel testo).
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ID del documento HEU |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fails to disclose behavioral traits such as read-only nature, required permissions, or error handling. It only states the function without 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?
The description is a single sentence that directly conveys the purpose with no extraneous words. It is highly concise and 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 list operation with one parameter and no output schema, the description covers the core function but lacks details on return format or output shape. Adequate but not exhaustive.
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% as the only parameter (document_id) is described. The description adds no additional meaning beyond the schema, so baseline score 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 clearly states the tool lists placeholders for an HEU document/template, specifying they are replaceable keys. The verb 'list' and resource 'placeholders' are specific, and the name includes 'heu' to differentiate from PDF 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 is provided on when to use this tool versus alternative siblings like list_pdf_document_placeholders. No context for prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_heu_documentsA
Lista documenti/template nativi HEU con filtri opzionali. IMPORTANTE: quando filtri per intervallo di date passa SEMPRE entrambi i parametri 'created_from' e 'created_to' insieme, altrimenti l'API potrebbe non restituire tutti i documenti del periodo. Se vuoi tutti i documenti senza limiti di data, ometti entrambi.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filtra per tipo | |
| sort | No | Ordinamento per data | |
| created_from | No | Data inizio del filtro (ISO 8601, es. 2025-01-01T00:00:00Z). USA SEMPRE INSIEME a 'created_to': passare solo una delle due date può far escludere documenti dal risultato. | |
| created_to | No | Data fine del filtro (ISO 8601, es. 2025-01-31T23:59:59Z). USA SEMPRE INSIEME a 'created_from'. | |
| have_editors_signed | No | Filtra per: tutti gli editor hanno firmato |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must convey behavioral traits. It does not explicitly state safety (e.g., read-only) or side effects, but the action 'list' implies no destructive behavior. Basic transparency is adequate for a listing 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 sentences with no redundant words. Purpose is stated first, followed by important usage warning. Every sentence adds value.
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 5 optional parameters and no output schema, the description covers the key behavior (listing with filters) and the critical constraint on date parameters. It does not explain return format, which is acceptable as the tool likely returns document/template objects consistent with other 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 100%, but description adds critical usage context for 'created_from' and 'created_to' (must be paired). Other parameters ('type', 'sort', 'have_editors_signed') are sufficiently described in 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?
The description clearly states the tool lists HEU native documents/templates with optional filters. It distinguishes from sibling tools like 'create_heu_document' or 'get_heu_document' by specifying 'list' and 'nativi HEU'.
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?
Explicit guidance on using date range parameters: always pass both 'created_from' and 'created_to' together, and omit both to get all documents. This is clear usage advice, though it does not mention when to prefer this over other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pdf_document_placeholdersC
Lista tutti i placeholder/campi di firma di un PDF.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ID del PDF |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full behavioral disclosure burden. It only states the action without mentioning read-only nature, authorization needs, rate limits, or output format. For a simple list operation, this is insufficient.
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 is front-loaded and contains no extraneous words. Every word earns its place, achieving maximum 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?
The tool has a simple single-parameter input and no output schema, but the description does not specify what is returned (e.g., list of placeholder IDs or objects). With no annotations, it lacks completeness for an agent to fully understand 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 100% with one parameter (document_id) described as 'ID del PDF'. The description adds no extra meaning beyond the schema, so 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 clearly states the tool lists placeholders/signature fields of a PDF, using a specific verb and resource. However, it does not differentiate from sibling tools like list_pdf_document_signer_placeholders, which might list placeholders per signer, so it's clear but not fully distinctive.
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 tool vs alternatives. Sibling tools exist for similar purposes (e.g., list_pdf_document_signer_placeholders, list_pdf_document_signers), but the description provides no exclusions or context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pdf_documentsC
Lista PDF documenti/template caricati su HEU.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Tipo (richiesto) | |
| sort | No | Ordinamento |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states 'list'. It does not disclose any behavioral traits such as whether the listing is paginated, what fields are returned, ordering defaults, error handling, or if it supports filtering beyond the 'type' parameter. This is a significant gap for a list 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?
The description is a single concise sentence that front-loads the main action. It is efficient, but it may be too brief considering the lack of behavioral details. Nonetheless, no extra words are 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?
Given the simple nature of a list tool with 2 parameters and no output schema, the description is too minimal. It does not explain what the output contains (e.g., just names, full objects), or whether it returns all items or supports pagination. The presence of sibling list tools with similar names makes this lack of detail more impactful.
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 input schema has 100% coverage with descriptions for both parameters ('type' and 'sort'). However, the description adds no additional meaning beyond the schema's minimal labels. The baseline score of 3 is appropriate as the schema already does the work.
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 clearly states the verb 'Lista' (list) and the resource 'PDF documenti/template caricati su HEU' (PDF documents/templates uploaded to HEU). This distinguishes it from sibling tools like list_heu_documents (which lists all HEU documents) and list_pdf_document_placeholders (which lists placeholders within a PDF 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?
The description provides no guidance on when to use this tool vs alternatives. Sibling tools exist (e.g., list_heu_documents for non-PDF documents), but no exclusions or context are given. The agent must infer usage solely from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pdf_document_signer_placeholdersA
Lista i placeholder/campi di firma di un signer specifico su un PDF.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ID del PDF | |
| signer_id | Yes | ID del firmatario |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It conveys a read-only operation ('Lista') but does not mention side effects, auth requirements, rate limits, or return format. The behavior is minimally transparent beyond the 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?
The description is a single, front-loaded sentence with a clear verb and resource. Every word is purposeful. Slightly more structure could be added, but it is efficient.
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 the simple nature of the tool (list, two required parameters, no output schema), the description is complete enough for an agent to understand its purpose and differentiate from siblings. It could mention return format but is adequate.
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 both parameters described by name only. The description adds 'specific signer' but no extra semantics beyond the schema. Baseline score 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 clearly states the verb 'List' and the resource 'placeholder/campi di firma di un signer specifico su un PDF'. It distinguishes from sibling tools like list_pdf_document_placeholders (all placeholders) and list_pdf_document_signers (just signers), making the specific scope evident.
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 use when needing placeholders for a specific signer, but does not explicitly state when to use this tool over alternatives, nor does it provide any exclusion criteria. It lacks explicit guidance on context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pdf_document_signersB
Lista i firmatari di un PDF.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ID del PDF |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like read-only nature or dependencies. It only states the action without any transparency on side effects or 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?
The description is extremely concise at one sentence, with no wasted words. However, it could be structured to front-load key information, but given simplicity, this is acceptable.
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?
Despite low complexity (one parameter, no output schema), the description does not hint at return format or any additional context. It is incomplete for an agent to fully understand what to expect.
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% for the single parameter document_id. The description adds no additional meaning beyond the schema, which already defines the parameter. 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 'Lista i firmatari di un PDF' clearly states the verb (list) and resource (signatories of a PDF), distinguishing it from sibling tools like list_pdf_documents and list_pdf_document_placeholders.
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 is provided on when to use this tool versus alternatives such as extract_pdf_document_parties or list_pdf_document_placeholders. There is no mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prompt_heu_document_signatureA
Invia un sollecito di firma per un documento HEU. Limite: 1 prompt ogni 24h per documento (altrimenti 429). IMPORTANTE: chiedere conferma all'utente prima di eseguire.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ID del documento HEU |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses the rate limit and confirmation requirement, which adds context beyond a simple action description. However, it lacks details on response format or whether the operation is idempotent.
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 concise: three sentences covering purpose, a behavioral constraint, and a user confirmation requirement. No unnecessary words, and the critical information is 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?
Given the tool's simplicity (one parameter, no output schema), the description covers the core purpose, a key behavioral note, and a mandatory precondition. It does not specify potential side effects or failure cases, but these are minor gaps for a straightforward action.
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% (the single parameter 'document_id' is fully described in the schema). The description does not add any additional meaning or usage hints beyond what the schema already 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 clearly states the action: 'Invia un sollecito di firma per un documento HEU' (Send a signature reminder for an HEU document). It uses a specific verb and resource, and distinguishes from sibling tools that target PDF 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?
Includes important usage constraints: a rate limit of 1 prompt per 24 hours per document (leading to 429 error) and an instruction to ask user confirmation before executing. These guide the agent on when and how to call the tool, though it does not explicitly contrast with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prompt_pdf_document_signatureA
Invia un sollecito di firma per un PDF. IMPORTANTE: chiedere conferma all'utente prima di eseguire.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ID del PDF |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It notes the action and a user-consent step but does not detail side effects, permissions, or return 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?
Two concise sentences with no wasted words. The important note is highlighted. Could incorporate a bit more context about the recipient or process.
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?
Adequate for a simple tool with one parameter, but lacks details on prerequisites (e.g., document must have signers) and success/failure outcomes.
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 baseline is 3. The description adds no extra meaning beyond 'ID del PDF' already 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?
The description clearly states the action ('invia un sollecito di firma') and the resource ('per un PDF'), distinguishing it from siblings like prompt_heu_document_signature.
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?
Includes an explicit instruction to ask user confirmation before executing, providing strong usage guidance. Missing explicit alternatives but context implies when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_heu_documentA
Legge il contenuto testuale di un documento HEU senza salvarlo su disco. Scarica il PDF dall'API HEU, ne estrae il testo e lo restituisce direttamente nella risposta — utile per riassumere, cercare clausole, confrontare contratti. Default: tutte le pagine fino a un limite di 100. Per documenti più lunghi usa il parametro 'pages'.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ID del documento HEU | |
| pages | No | Range pagine: '1-3', '5', '1,3,5-7'. Default: tutte (max 100). | |
| layout | No | Codice layout (opzionale) | |
| has_index | No | Includi indice (opzionale) | |
| has_footer | No | Includi footer (opzionale) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full burden. It discloses that the tool downloads a PDF, extracts text, does not save to disk, and defaults to all pages up to 100. However, it does not mention idempotency, side effects, authentication, or rate limits. The behavioral disclosure is decent but incomplete.
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 two sentences, front-loaded with the main action and use cases. Every sentence adds information without redundancy. It is highly concise and well-structured.
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, so the description should explain return format. It states text is returned in the response but does not specify format (plain text, structured, etc.). It also omits error handling (e.g., document not found). For a read tool with 5 parameters, the description covers primary use but lacks completeness in edge cases and output details.
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?
Input schema has 100% description coverage, so each parameter is already explained. The description adds value by clarifying the default page range and suggesting the 'pages' parameter for longer documents. This is a minor addition; 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 clearly states the tool reads textual content of a HEU document without saving to disk, and lists specific use cases (summarizing, searching clauses, comparing contracts). This distinguishes it from siblings like read_pdf_document (generic PDF) and download_heu_document_pdf (downloads file).
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 provides context ('utile per riassumere, cercare clausole, confrontare contratti') but does not explicitly state when not to use this tool or mention alternatives. It lacks exclusions or comparisons to siblings, which would help an agent decide between similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_pdf_documentA
Legge il contenuto testuale di un PDF caricato senza salvarlo su disco. Estrae il testo dal PDF e lo restituisce direttamente nella risposta. Default: tutte le pagine fino a un limite di 100. Nota: usa lo stesso endpoint di download dei documenti HEU; se l'API non lo supporta per i PDF caricati, restituirà un errore esplicito.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ID del PDF caricato | |
| pages | No | Range pagine: '1-3', '5', '1,3,5-7'. Default: tutte (max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool reads without disk storage, defaults to all pages up to 100, and notes potential API error. However, it does not explicitly state read-only or destructive nature, though implied.
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 with no wasted words. Front-loaded with purpose, then key defaults and a critical note. Efficient and scannable.
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 two parameters and no output schema, the description covers the main functionality, default behavior, and a potential error condition. It is adequate for a simple read tool, though return format and other errors are not detailed.
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%. Description adds default behavior for 'pages' parameter (all pages up to 100) and notes endpoint dependency, which aids parameter understanding beyond schema descriptions.
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 clearly states it reads the textual content of an uploaded PDF without saving to disk, using specific verb 'Legge' and resource 'PDF caricato'. It distinguishes from siblings like download_heu_document_pdf and read_heu_document by focusing on uploaded PDFs and text extraction.
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 does not explicitly guide when to use this tool over alternatives. It mentions a note about endpoint dependency but lacks comparison to siblings like extraction or download tools. Usage is implied but not clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Tools are clearly split into HEU and PDF categories with distinct operations. Each tool has a unique purpose and the descriptions clearly differentiate them, leaving no ambiguity.
All tool names follow a consistent verb_noun pattern in snake_case, with the resource type (heu/pdf) included in the noun. The naming is predictable and uniform.
With 18 tools, the server covers the necessary operations for document management (create, read, list, extract, signature) without being excessive. The count is well-scoped for the domain.
The tool surface covers core workflows: creation, retrieval, reading, extraction, and signature prompting. Missing operations like delete/update are understandable, but lack of PDF upload and download for PDF documents is a minor gap.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Automate eSignature workflows and signing tasks via natural language commands.
Send AI-created PDFs for signature, track signers, and return verifiable document evidence.
Send documents for e-signature, track signing status, and download signed PDFs. No API key required.
PDF tools for Claude: merge, split, compress, convert, OCR & more. Requires a PDFHaul API key.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables legal document analysis using Azure Blob Storage and Anthropic Claude API with streaming capabilities, prompt library management, and document retrieval for PDF files.
- FlicenseNot gradedqualityNot gradedmaintenanceEnables Claude to interact with Google Docs to list, read, create, search, and update documents in a user's Google Drive. It provides a suite of tools and prompts for document management and content analysis using OAuth 2.0 authentication.1,303
- FlicenseNot gradedqualityDmaintenanceEnables users to create, manage, and track electronic signing requests and templates through Claude Desktop and other MCP-compatible clients. Provides multi-tenant authentication with customer API keys for secure document workflow operations.66
- AlicenseNot gradedqualityDmaintenanceEnables AI tools to read and write HERO documents, projects, tables, and templates, with support for editing, clauses, and authentication.10ISC
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/heulegal/heu-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server