MCP Aruba Email & Calendar Server
The MCP Aruba Email & Calendar Server enables AI assistants like Claude or GitHub Copilot to manage Aruba email and calendar services through secure IMAP/SMTP/CalDAV connections.
Email Management:
π§ List emails β Browse your mailbox with optional sender/folder filters and result limits
π Read emails β Retrieve full email content by ID (HTML converted to clean text)
π Search emails β Find emails by subject/body content with optional date and folder filters
βοΈ Send emails β Compose and send emails via SMTP with CC recipients, custom sender names, and signatures
π Handle attachments β List and download email attachments (PDFs, images, documents)
πΎ Export emails β Save emails in RFC822 format for backup
π¬ Check bounced emails β Detect delivery failures and bounce-back notifications
Email Signature Features:
Create, save, retrieve, and list professional HTML signatures with photos, colors, and styles (professional, minimal, or colorful)
Calendar Management:
π Create events β Schedule events with title, time, description, location, and attendees
π List events β View upcoming events within a specified date range
β /β/β Respond to invitations β Accept, decline, or mark events as tentative with optional comments
ποΈ Delete events β Remove events from your calendar by UID
Security & Integration:
π Runs locally β credentials never leave your machine
π‘οΈ SSL/TLS encryption over IMAPS (993), SMTPS (465), and HTTPS
π€ Integrates with Claude Desktop, VS Code Copilot, and MCP Registry (Smithery)
β‘ Efficient connection pooling with configurable result limits
Supports automatic uploading of profile and brand photos to Imgur for use in custom email signatures.
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., "@MCP Aruba Email & Calendar ServerList my recent emails and check my calendar for upcoming meetings today"
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.
MCP Aruba Email & Calendar Server
Italiano | English
Server MCP (Model Context Protocol) per accedere a email e calendario Aruba tramite IMAP/SMTP/CalDAV. Integra facilmente email e calendario Aruba con assistenti AI come Claude!
π¦ Come Installare
Opzione 1: Estensione VS Code (PiΓΉ Semplice) β
Per usare con GitHub Copilot in VS Code:
Installa l'estensione dal VS Code Marketplace
Configura le credenziali con
β+Shift+Pβ "Aruba Email: Configure Credentials"Usa direttamente in Copilot Chat!
π Guida completa estensione VS Code
Opzione 2: Da Smithery (Registro MCP) π
Per usare con @mcp aruba in VS Code o altri client MCP:
Il server Γ¨ disponibile su Smithery
In VS Code Copilot Chat, digita
@mcp arubae segui le istruzioniOppure installa da CLI:
smithery install io.github.jackfioru92/aruba-email
Opzione 3: Installazione Manuale (Per Claude Desktop)
Per usare con Claude Desktop:
Related MCP server: Mailbridge MCP
FunzionalitΓ
π§ Elenca email - Naviga nella casella con filtri per mittente
π Cerca email - Ricerca per oggetto/corpo con filtri data
π Leggi email - Ottieni il contenuto completo (HTML convertito in testo pulito)
βοΈ Invia email - Invia email via SMTP con firma personalizzata
βοΈ Firma email - Crea firme professionali con foto e colori brand
π Allegati - Lista e scarica allegati email (PDF, immagini, documenti)
πΎ Esporta .eml - Esporta email in formato RFC822 per backup
Calendario
π Crea eventi - Crea eventi calendario con partecipanti
π Elenca eventi - Visualizza eventi futuri
β Accetta inviti - Accetta inviti calendario
β Declina inviti - Declina inviti calendario
β Forse - Rispondi "forse" agli inviti calendario
ποΈ Elimina eventi - Rimuovi eventi dal calendario
Generale
π Sicuro - Usa IMAP/SMTP/CalDAV su SSL/TLS
β‘ Veloce - Gestione efficiente delle connessioni con context manager
π€ Pronto per AI - Funziona perfettamente con Claude Desktop e altri client MCP
Configurazione (Solo per Installazione Manuale)
Copia
.env.examplein.env:
cp .env.example .envModifica
.envcon le tue credenziali Aruba:
# Configurazione Email
IMAP_HOST=imaps.aruba.it
IMAP_PORT=993
IMAP_USERNAME=tua_email@aruba.it
IMAP_PASSWORD=tua_password
SMTP_HOST=smtps.aruba.it
SMTP_PORT=465
# Configurazione Calendario
CALDAV_URL=https://syncdav.aruba.it/calendars/tua_email@aruba.it/
CALDAV_USERNAME=tua_email@aruba.it
CALDAV_PASSWORD=tua_password(Opzionale) Configura la tua firma email personalizzata:
Metodo 1: Script Interattivo (Consigliato)
# Esegui lo script interattivo python setup_signature.pyLo script ti guiderΓ nella creazione di una firma professionale con:
π Informazioni personali (nome, ruolo, azienda, contatti)
π¨ Scelta dello stile (professional, minimal, colorful)
π Personalizzazione colori
πΈ Upload automatico foto su Imgur (opzionale)
Metodo 2: Tramite Claude (Ancora piΓΉ semplice!)
Dopo aver configurato Claude Desktop, chiedi direttamente: "Crea una firma email per me con nome Mario Rossi, ruolo Software Developer, azienda TechCorp e colore #0066cc" "Configura la mia firma con questa foto: /path/to/photo.jpg" "Imposta una firma minimal con solo nome e email"Claude userΓ automaticamente i tool MCP per creare la tua firma!
La firma verrΓ inclusa automaticamente in tutte le email inviate.
Nota: Le credenziali sono memorizzate localmente e non lasciano mai il tuo computer. Il server MCP viene eseguito localmente e si connette direttamente ai server Aruba.
Utilizzo
π Inizio Rapido: Visualizza le Ultime Email
Il modo piΓΉ veloce per iniziare:
# Installa dipendenze
pip install -e .
# Configura credenziali (copia e modifica .env.example)
cp .env.example .env
# Modifica .env con le tue credenziali Aruba
# Mostra le ultime email
python cli.py emails 5
# Oppure usa lo script demo
python demo_list_emails.pyVuoi usare Claude? Dopo la configurazione, chiedi semplicemente:
Mostrami le ultime 5 email
Dammi le email piΓΉ recenti
Quali email ho ricevuto oggi?π Guida completa: Vedi GUIDA_UTILIZZO_EMAIL.md per tutti i metodi disponibili.
Esegui il server direttamente
python -m mcp_aruba.serverConfigura con Claude Desktop
Vedi CLAUDE_SETUP.md per istruzioni dettagliate.
Configurazione rapida per ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"aruba-email-calendar": {
"command": "python",
"args": ["-m", "mcp_aruba.server"],
"env": {
"IMAP_HOST": "imaps.aruba.it",
"IMAP_PORT": "993",
"IMAP_USERNAME": "tua_email@aruba.it",
"IMAP_PASSWORD": "tua_password",
"SMTP_HOST": "smtps.aruba.it",
"SMTP_PORT": "465",
"CALDAV_URL": "https://syncdav.aruba.it/calendars/tua_email@aruba.it/",
"CALDAV_USERNAME": "tua_email@aruba.it",
"CALDAV_PASSWORD": "tua_password"
}
}
}
}Configura con VS Code Copilot
Vedi VSCODE_SETUP.md per istruzioni dettagliate sull'uso di questo server con l'estensione Copilot MCP di VS Code.
Usa la CLI rapida
# Attiva ambiente virtuale
source .venv/bin/activate
# Mostra ultime 5 email
python cli.py emails
# Mostra ultime 10 email
python cli.py emails 10
# Mostra eventi prossimi 7 giorni
python cli.py calendar
# Mostra eventi prossimi 14 giorni
python cli.py calendar 14Strumenti Disponibili
Strumenti Email
list_emails
Elenca email recenti con filtri opzionali.
Parametri:
folder(str, default: "INBOX") - Cartella email da leggeresender_filter(str, opzionale) - Filtra per email mittentelimit(int, default: 10, max: 50) - Numero di email da restituire
Esempi:
Mostra le ultime 5 email da john@example.com
Elenca email recenti nella mia inbox
Dammi le 10 email piΓΉ recenti dal mio caporead_email
Leggi il contenuto completo di un'email specifica.
Parametri:
email_id(str) - ID email da list_emailsfolder(str, default: "INBOX") - Cartella email
Esempi:
Leggi l'email 123
Mostrami il contenuto completo dell'email 456search_emails
Cerca email per oggetto o contenuto corpo.
Parametri:
query(str) - Query di ricercafolder(str, default: "INBOX") - Cartella dove cercarefrom_date(str, opzionale) - Solo email da questa data (formato: DD-MMM-YYYY)limit(int, default: 10, max: 50) - Numero massimo di risultati
Esempi:
Cerca email che parlano di "API" dalla settimana scorsa
Trova tutte le email su "fattura" da dicembresend_email
Invia un'email via SMTP.
Parametri:
to(str) - Indirizzo email destinatariosubject(str) - Oggetto emailbody(str) - Corpo email (testo semplice)cc(str, opzionale) - Indirizzi email in CC, separati da virgolafrom_name(str, default: "Giacomo Fiorucci") - Nome visualizzato mittenteuse_signature(bool, default: True) - Include la firma email se configurataverify_recipient(bool, default: True) - Verifica che l'email destinatario esista
Esempi:
Invia un'email a colleague@example.com ringraziando per l'aggiornamento
Rispondi a john@example.com con lo stato del progetto
Invia un'email a client@example.com con CC a manager@company.comNota sulla firma: Se hai configurato una firma usando setup_signature.py, verrΓ automaticamente inclusa nelle email. Puoi disabilitarla temporaneamente con use_signature=False.
set_email_signature
Configura una firma email personalizzata.
Parametri:
name(str) - Nome completoemail(str) - Indirizzo emailrole(str, opzionale) - Ruolo/posizionecompany(str, opzionale) - Nome aziendaphone(str, opzionale) - Numero di telefonowebsite(str, opzionale) - Sito webphoto_input(str, opzionale) - Percorso file foto o URL (upload automatico su Imgur)style(str, default: "professional") - Stile: professional, minimal, colorfulcolor(str, default: "#0066cc") - Colore principale (formato esadecimale)signature_name(str, default: "default") - Nome identificativo firma
Esempi:
Crea una firma con il mio nome, ruolo e foto del profilo
Configura una firma professionale con logo aziendaleget_email_signature
Ottieni la firma email corrente.
Parametri:
signature_name(str, default: "default") - Nome firma da recuperare
list_email_signatures
Elenca tutte le firme email salvate.
Strumenti Calendario
create_calendar_event
Crea un nuovo evento calendario.
Parametri:
summary(str) - Titolo eventostart(str) - Data/ora inizio in formato ISO (YYYY-MM-DDTHH:MM:SS)end(str) - Data/ora fine in formato ISOdescription(str, opzionale) - Descrizione eventolocation(str, opzionale) - Luogo eventoattendees(str, opzionale) - Lista email partecipanti separati da virgola
Esempi:
Crea un meeting chiamato "Riunione Team" domani alle 15 per 1 ora
Programma un "Project Review" il 10 dicembre alle 14 con john@example.comlist_calendar_events
Elenca eventi calendario in un intervallo di date.
Parametri:
start_date(str, opzionale) - Data inizio in formato ISO (default: oggi)end_date(str, opzionale) - Data fine in formato ISO (default: 30 giorni da ora)limit(int, default: 50) - Eventi massimi da restituire
Esempi:
Mostrami il mio calendario per questa settimana
Quali eventi ho a dicembre?
Elenca tutti i miei meeting per i prossimi 7 giorniaccept_calendar_event
Accetta un invito calendario.
Parametri:
event_uid(str) - UID dell'eventocomment(str, opzionale) - Commento opzionale
Esempi:
Accetta l'invito al meeting "Team Standup"
Accetta l'evento abc123@aruba.it con commento "Non vedo l'ora!"decline_calendar_event
Declina un invito calendario.
Parametri:
event_uid(str) - UID dell'eventocomment(str, opzionale) - Commento opzionale
Esempi:
Declina l'evento abc123@aruba.it
Declina il meeting con commento "Mi dispiace, ho un conflitto"tentative_calendar_event
Rispondi "forse" a un invito calendario.
Parametri:
event_uid(str) - UID dell'eventocomment(str, opzionale) - Commento opzionale
Esempi:
Rispondi forse all'evento abc123@aruba.it
Segna come "forse" il meeting di domani
Forse partecipo al meeting di domanidelete_calendar_event
Elimina un evento calendario.
Parametri:
event_uid(str) - UID dell'evento da eliminare
Esempi:
Elimina l'evento abc123@aruba.it
Cancella il mio meeting delle 14Casi d'Uso
π¬ Comunicazione Team
Mostrami le ultime email dai membri del mio team
Elenca email non lette da project@company.comπ Tracking Progetti
Cerca email che menzionano "modifiche API" dall'ultima settimana
Trova tutte le email su "fattura" dal 1Β° dicembreπ Riepilogo Email Giornaliero
Riassumi tutte le email che ho ricevuto oggi
Mostrami le email importanti di stamattinaβοΈ Risposte Rapide
Invia un'email a colleague@example.com ringraziandoli per l'aggiornamento
Rispondi a john@example.com con lo stato del progettoπ Gestione Calendario
Quali meeting ho questa settimana?
Crea una riunione team per domani alle 15
Accetta l'invito calendario per la review di venerdì
Declina il meeting di lunedì, sono in vacanza
Mostrami il mio programma per la prossima settimanaπ€ Gestione Email & Calendario con AI
Con Claude Desktop o VS Code Copilot, puoi:
Chiedere a Claude di riassumere piΓΉ email
Creare risposte basate sul contenuto email
Estrarre task da thread email
Organizzare e categorizzare email automaticamente
Programmare meeting basati su conversazioni email
Gestire conflitti calendario e trovare fasce orarie disponibili
Stack Tecnologico
Python 3.10+ - Python moderno
MCP SDK 1.2.0+ - Model Context Protocol per integrazione AI
imaplib - Client IMAP libreria standard (supporto SSL/TLS)
smtplib - Client SMTP libreria standard (supporto SSL/TLS)
email - Parsing email e gestione MIME
caldav - Protocollo CalDAV per accesso calendario
icalendar - Parsing e generazione formato iCalendar
python-dotenv - Gestione variabili ambiente
Sicurezza & Privacy
π Esecuzione locale - Il server gira sul tuo computer, le credenziali non lasciano mai la tua macchina
π‘οΈ Crittografia SSL/TLS - Tutte le connessioni usano protocolli sicuri (IMAPS porta 993, SMTPS porta 465, HTTPS per CalDAV)
π Variabili ambiente - Credenziali salvate nel file
.env(gitignored di default)π Troncamento corpo - Corpo email limitato a 5000 caratteri per prevenire overflow del contesto
β Nessun servizio esterno - Connessione diretta solo ai server Aruba
Best Practice Sicurezza
Non committare mai il file
.envnel controllo versioneUsa password forti e uniche per il tuo account email
Considera l'abilitazione 2FA sul tuo account Aruba
Ruota regolarmente le tue credenziali
Rivedi i log del server MCP per attivitΓ sospette
Performance
β‘ Connection pooling via context manager
π Limiti risultati configurabili per prevenire problemi di memoria
π Connessioni on-demand (nessun processo in background)
πΎ Footprint di memoria minimo
Sviluppo
Eseguire i Test
# Attiva ambiente virtuale
source .venv/bin/activate
# Esegui test connessione email
python test_connection.py
# Esegui test connessione calendario
python test_calendar.py
# Test creazione evento
python test_create_event.py
# Test invio invito calendario
python send_invite.pyQualitΓ Codice
# Formatta codice
black src/
# Type checking
mypy src/
# Linting
pylint src/Abilitare Sincronizzazione CalDAV
Per usare le funzionalitΓ calendario, devi abilitare la sincronizzazione CalDAV in Aruba Webmail:
Vai su https://webmail.aruba.it
Naviga alla sezione Calendario
Clicca su "Sincronizza calendario"
Scegli "Calendari" β "Procedi"
Seleziona "Lettura e modifica" (CalDAV) β "Procedi"
Seleziona i calendari da sincronizzare β "Procedi"
Una volta abilitato, potrai gestire completamente i tuoi calendari tramite il server MCP!
Risoluzione Problemi
Calendario non disponibile
Se vedi "No calendar available", devi abilitare la sincronizzazione CalDAV (vedi sezione sopra).
Errori connessione
Verifica che le credenziali in
.envsiano corretteControlla che le porte 993 (IMAP), 465 (SMTP), 443 (CalDAV) non siano bloccate
Verifica le impostazioni firewall
Prova a eseguire gli script di test
Email o eventi non visualizzati
Verifica di avere i permessi corretti sull'account
Controlla i filtri applicati (sender_filter, date filters)
Aumenta il limite di risultati
FAQ
Q: Γ sicuro memorizzare le mie credenziali nel file .env?
A: Sì, finché il file .env non viene committato nel controllo versione. à già incluso in .gitignore. Le credenziali rimangono sul tuo computer locale.
Q: Posso usare questo con altri provider email?
A: Il server Γ¨ ottimizzato per Aruba, ma puoi adattarlo per altri provider che supportano IMAP/SMTP/CalDAV modificando le configurazioni.
Q: Quanto costano i server MCP?
A: I server MCP sono gratuiti! Questo Γ¨ software open-source. Hai solo bisogno di un abbonamento Claude o GitHub Copilot per usarlo con quegli AI.
Q: I miei dati vengono inviati a terze parti?
A: No! Il server gira localmente e si connette direttamente ai server Aruba. Nessun dato passa attraverso servizi terzi.
Q: Posso contribuire al progetto?
A: Assolutamente! Vedi CONTRIBUTING.md per linee guida.
Contribuire
I contributi sono benvenuti! Per favore:
Fai un fork del repository
Crea un feature branch (
git checkout -b feature/funzionalita-fantastica)Committa le modifiche (
git commit -m 'Aggiungi funzionalitΓ fantastica')Pusha al branch (
git push origin feature/funzionalita-fantastica)Apri una Pull Request
Vedi CONTRIBUTING.md per dettagli completi.
Roadmap
Supporto IMAP IDLE per notifiche real-time
Gestione allegati email
Composizione email HTML
Suite test pytest
Supporto account multipli
Eventi calendario ricorrenti
Notifiche calendario
Integrazione con altri calendari (Google Calendar, Outlook)
Documentazione
README.md - Documentazione principale (Italiano)
README_EN.md - Documentation in English
GUIDA_UTILIZZO_EMAIL.md - Guida completa: Come vedere le ultime email π§
EXAMPLES.md - Esempi d'uso
CLAUDE_SETUP.md - Setup Claude Desktop
VSCODE_SETUP.md - Setup VS Code Copilot MCP
docs/VSCODE_EXTENSION.md - Estensione VS Code Marketplace
docs/MCP_REGISTRY.md - Pubblicazione MCP Registry
SIGNATURE_EXAMPLES.md - Esempi firme email
CONTRIBUTING.md - Guida contribuzioni
LICENSE - Licenza MIT
Installazione Rapida
Da PyPI
pip install mcp-arubaDa VS Code Marketplace
Cerca "MCP Aruba Email" nel marketplace VS Code o installa direttamente:
code --install-extension jackfioru92.mcp-aruba-emailDa MCP Registry
Il server Γ¨ disponibile su MCP Registry
Supporto
Se incontri problemi:
Controlla la sezione Risoluzione Problemi
Esegui gli script di test per verificare la connessione
Controlla i log per messaggi d'errore
Apri un issue su GitHub
Licenza
Questo progetto Γ¨ rilasciato sotto licenza MIT. Vedi il file LICENSE per dettagli.
Autore
Giacomo Fiorucci - giacomo.fiorucci@emotion-team.com
Ringraziamenti
Model Context Protocol per il framework MCP
Anthropic per Claude Desktop
GitHub per Copilot
Aruba per i servizi email e calendario affidabili
β Se questo progetto ti Γ¨ utile, considera di dargli una stella su GitHub!
Available Tools
14 toolsaccept_calendar_eventA
Accept a calendar event invitation.
Args:
event_uid: UID of the event to accept
comment: Optional comment for the acceptance
Returns:
Response status
Example:
accept_calendar_event(
event_uid="abc123@aruba.it",
comment="Ci sarΓ²!"
)
| Name | Required | Description | Default |
|---|---|---|---|
| event_uid | Yes | ||
| comment | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions the action ('Accept'), it doesn't describe what acceptance entails (e.g., updates to calendar, notifications sent, permissions required), response format details beyond 'Response status', or any side effects. The example helps but doesn't fully compensate.
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 well-structured and front-loaded with the purpose, followed by organized sections for Args, Returns, and Example. Every sentence adds value with no redundant information, making it efficient for an AI 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?
Given the tool's moderate complexity (mutation action with 2 parameters), no annotations, but an output schema exists, the description is reasonably complete. It covers purpose, parameters, and includes an example, though more behavioral context would enhance completeness for a mutation 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 description coverage is 0%, so the description must compensate. It provides clear parameter explanations: 'event_uid: UID of the event to accept' and 'comment: Optional comment for the acceptance', adding meaningful context beyond the bare schema. However, it doesn't specify UID format or comment constraints.
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 specific action ('Accept a calendar event invitation') and identifies the resource ('calendar event invitation'). It distinguishes from sibling tools like 'decline_calendar_event' and 'tentative_calendar_event' by specifying the acceptance action.
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 context (accepting calendar invitations) but doesn't explicitly state when to use this tool versus alternatives like 'decline_calendar_event' or 'tentative_calendar_event'. No guidance on prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_bounced_emailsA
Check for bounced or failed email delivery notifications.
This tool searches for delivery failure notifications (bounce-backs) that indicate
emails could not be delivered. Common reasons include:
- Recipient mailbox does not exist
- Recipient mailbox is full
- Message rejected by recipient server
Args:
folder: Mail folder to check (default: INBOX)
limit: Maximum number of bounce notifications to check (default: 20)
Returns:
List of bounce notifications with failed recipient and reason
Example:
check_bounced_emails(limit=10)
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | INBOX | |
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well by explaining what the tool does (searches for bounce notifications), listing common reasons for bounces, and describing the return format. However, it doesn't mention potential side effects, authentication requirements, or 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?
The description is well-structured and appropriately sized, with clear sections for purpose, common reasons, parameters, returns, and an example. Every sentence adds value without redundancy, and the information is front-loaded with the core purpose 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?
Given the tool's moderate complexity, no annotations, and the presence of an output schema (which handles return value documentation), the description is complete enough. It covers purpose, usage context, parameter meanings, and includes an example, providing sufficient guidance for an AI agent.
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 adds significant value beyond the input schema, which has 0% description coverage. It explains what 'folder' and 'limit' parameters mean (mail folder to check and maximum number of notifications), provides default values, and includes an example showing how to use the limit 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 clearly states the tool's purpose with a specific verb ('check') and resource ('bounced or failed email delivery notifications'), distinguishing it from sibling tools like list_emails or search_emails that handle general email operations rather than specifically bounce notifications.
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 clear context for when to use this tool by explaining it searches for delivery failure notifications, but it doesn't explicitly state when not to use it or name specific alternatives among the sibling tools (like search_emails for general email searching).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_calendar_eventA
Create a new calendar event.
Args:
summary: Event title
start: Start datetime in ISO format (e.g., "2025-12-05T10:00:00")
end: End datetime in ISO format (e.g., "2025-12-05T11:00:00")
description: Event description (optional)
location: Event location (optional)
attendees: Comma-separated list of attendee email addresses (optional)
Returns:
Created event details including UID
Example:
create_calendar_event(
summary="Team Meeting",
start="2025-12-05T10:00:00",
end="2025-12-05T11:00:00",
description="Discussione sui nuovi progetti",
location="Sala Riunioni A",
attendees="christopher.caponi@emotion-team.com,marco.rossi@example.com"
)
| Name | Required | Description | Default |
|---|---|---|---|
| summary | Yes | ||
| start | Yes | ||
| end | Yes | ||
| description | No | ||
| location | No | ||
| attendees | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions the tool creates events and returns details including UID, it lacks critical information about permissions required, whether attendees receive invitations, error conditions, or rate limits. For a mutation tool with zero annotation coverage, 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 well-structured with clear sections (Args, Returns, Example) and front-loads the core purpose. While the example is detailed, it serves a practical purpose. Some sentences could be more concise, but overall it's efficiently organized.
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 complexity (6 parameters, mutation operation) and the presence of an output schema (which handles return values), the description covers parameters well but lacks behavioral context. With no annotations and incomplete behavioral disclosure, it's adequate but has clear gaps for a creation 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?
The description provides comprehensive parameter documentation beyond the schema, which has 0% description coverage. It explains each parameter's purpose, format requirements (ISO format for dates, comma-separated list for attendees), and optionality, adding significant value over the bare 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 specific action ('Create a new calendar event') with the resource ('calendar event'), distinguishing it from sibling tools like 'delete_calendar_event' or 'list_calendar_events'. The verb 'create' is unambiguous and directly communicates the tool's function.
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 versus alternatives like 'tentative_calendar_event' or 'accept_calendar_event', nor does it mention any prerequisites or contextual constraints. It simply states what the tool does without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decline_calendar_eventA
Decline a calendar event invitation.
Args:
event_uid: UID of the event to decline
comment: Optional comment for the decline
Returns:
Response status
Example:
decline_calendar_event(
event_uid="abc123@aruba.it",
comment="Purtroppo non posso partecipare"
)
| Name | Required | Description | Default |
|---|---|---|---|
| event_uid | Yes | ||
| comment | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('Decline') which implies a mutation, but doesn't disclose important behavioral traits like permission requirements, whether the decline is reversible, how it affects the calendar, or rate limits. The example adds some context but not comprehensive behavioral information.
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 efficiently structured with clear sections (Args, Returns, Example). Every sentence earns its place - the purpose statement is front-loaded, parameter explanations are concise, and the example demonstrates practical usage without unnecessary 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?
Given the tool has an output schema (which handles return values) and the description covers both parameters despite 0% schema coverage, the description is reasonably complete. However, as a mutation tool with no annotations, it could benefit from more behavioral context about what 'decline' actually entails in the system.
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 0% schema description coverage, the description compensates well by explaining both parameters: event_uid ('UID of the event to decline') and comment ('Optional comment for the decline'). It clarifies which parameter is required and which is optional, adding meaningful context beyond the bare 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 specific action ('Decline') and resource ('a calendar event invitation'), distinguishing it from sibling tools like accept_calendar_event or tentative_calendar_event. The verb+resource combination is precise and 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 usage context (declining an invitation) but doesn't explicitly state when to use this tool versus alternatives like accept_calendar_event or delete_calendar_event. No guidance is provided about prerequisites (e.g., needing an invitation) or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_calendar_eventB
Delete a calendar event.
Args:
event_uid: UID of the event to delete
Returns:
Deletion status
Example:
delete_calendar_event(event_uid="abc123@aruba.it")
| Name | Required | Description | Default |
|---|---|---|---|
| event_uid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool deletes an event and returns a status, but lacks critical details such as whether deletion is permanent, requires specific permissions, affects recurring events, or has rate limits. This is inadequate for a destructive operation with zero annotation coverage.
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 well-structured and front-loaded with the core purpose, followed by clear sections for Args, Returns, and an Example. Every sentence earns its place by providing essential information without redundancy, making it efficient and easy to parse.
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 complexity (a destructive operation with no annotations) and the presence of an output schema (which likely covers return values), the description is partially complete. It explains the action and parameter but misses key behavioral aspects like safety warnings or usage context. The output schema reduces the need to detail returns, but more guidance is needed for a mutation 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?
The description adds meaningful context for the single parameter 'event_uid' by explaining it's the 'UID of the event to delete' and providing an example format ('abc123@aruba.it'), which compensates for the 0% schema description coverage. Since there's only one parameter, this is sufficient to achieve a high score despite 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?
The description clearly states the tool's purpose with a specific verb ('Delete') and resource ('a calendar event'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'decline_calendar_event' or 'tentative_calendar_event', which might handle event status changes rather than deletion.
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. For example, it doesn't clarify if this should be used instead of 'decline_calendar_event' for removing events or if there are prerequisites like needing event ownership. The description only states what it does, not when or why to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_email_signatureC
Get a saved email signature.
Args:
signature_name: Name of signature to retrieve (default: "default")
Returns:
Signature content or error
Example:
get_email_signature()
| Name | Required | Description | Default |
|---|---|---|---|
| signature_name | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't mention permissions needed, error conditions (beyond a vague 'error' reference), or whether it's read-only (implied but not explicit). For a tool with zero annotation coverage, 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 appropriately sized and front-loaded, with the core purpose stated first. The Args and Returns sections are structured, but the Example is redundant (repeating the tool name) and could be more informative, slightly reducing 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?
Given the tool's low complexity (1 parameter, no annotations, but has an output schema), the description is minimally adequate. It covers the basic operation and parameter, but lacks details on error handling, sibling tool differentiation, and behavioral context, making it incomplete for optimal agent 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 description adds minimal value beyond the input schema. It explains the parameter 'signature_name' and its default, but with 0% schema description coverage, it doesn't compensate fullyβe.g., it doesn't clarify if the name is case-sensitive or what happens if the signature doesn't exist. The baseline is 3 since the schema lacks descriptions, but the tool's description only partially fills 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 clearly states the tool's purpose with a specific verb ('Get') and resource ('saved email signature'), making it immediately understandable. However, it doesn't differentiate from the sibling tool 'list_email_signatures', which might retrieve multiple signatures versus this tool retrieving a specific one.
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 versus alternatives like 'list_email_signatures' or other email-related tools. It lacks context about prerequisites (e.g., needing existing signatures) or exclusions, leaving usage decisions unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_calendar_eventsB
List calendar events within a date range.
Args:
start_date: Start date in ISO format (default: today)
end_date: End date in ISO format (default: 30 days from now)
limit: Maximum number of events to return (default: 50)
Returns:
List of calendar events
Example:
list_calendar_events(
start_date="2025-12-01T00:00:00",
end_date="2025-12-31T23:59:59",
limit=20
)
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | ||
| end_date | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool lists events within a date range and returns a list, but lacks details on permissions, rate limits, pagination, error handling, or whether it's read-only (implied but not stated). For a tool with zero annotation coverage, 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 description is appropriately sized and well-structured, with a clear purpose statement followed by sections for Args, Returns, and an Example. Every sentence adds value, such as clarifying parameter formats and defaults. Minor improvements could include briefer phrasing, but it's efficient overall.
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 low complexity (3 parameters, no nested objects) and the presence of an output schema (which handles return values), the description is mostly complete. It covers parameters thoroughly and states the return type. However, it lacks behavioral context like permissions or error handling, which is notable since no annotations are provided.
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 adds substantial meaning beyond the input schema, which has 0% schema description coverage. It explains each parameter's purpose, format (ISO format for dates), and default values (today, 30 days from now, 50 for limit). This fully compensates for the schema's lack of descriptions, providing clear semantics for all three 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 clearly states the tool's purpose: 'List calendar events within a date range.' It specifies the verb ('List') and resource ('calendar events'), making the action unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'search_emails' or 'create_calendar_event', which would require 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 provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools (e.g., 'create_calendar_event' for adding events or 'search_emails' for email-related queries) or specify contexts like viewing upcoming events versus historical data. Usage is implied only by the tool's 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_emailsB
List emails from the specified folder.
Args:
folder: Mail folder to list from (default: INBOX)
sender_filter: Optional filter by sender email address (e.g., "denisa@c-tic.it")
limit: Maximum number of emails to return (default: 10, max: 50)
Returns:
List of email summaries with id, from, to, subject, date, and body preview
Example:
list_emails(sender_filter="denisa@c-tic.it", limit=5)
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | INBOX | |
| sender_filter | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions default values and limits (e.g., 'default: 10, max: 50') and describes the return format, but fails to address critical aspects like authentication requirements, rate limits, error handling, or pagination behavior for a list 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 well-structured with sections for Args, Returns, and Example, making it easy to scan. It's appropriately sized with no redundant information, though the example could be more integrated to enhance flow.
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 (3 parameters, no annotations, but with an output schema), the description is partially complete. It covers parameters and return values adequately, but lacks context on behavioral traits like error handling or performance limits, leaving gaps in overall understanding.
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 description coverage is 0%, so the description must compensate. It effectively adds meaning by explaining each parameter's purpose, default values, and constraints (e.g., 'folder: Mail folder to list from (default: INBOX)', 'limit: Maximum number of emails to return (default: 10, max: 50)'), providing clear semantics beyond the bare 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 tool's purpose: 'List emails from the specified folder.' It specifies the verb ('list') and resource ('emails'), making the action explicit. However, it doesn't differentiate from sibling tools like 'search_emails' or 'read_email', which limits the score to 4 instead of 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 provides no guidance on when to use this tool versus alternatives like 'search_emails' or 'read_email'. It includes an example but lacks explicit context or exclusions for tool selection, offering minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_email_signaturesB
List all saved email signatures.
Returns:
Dictionary of all signatures
Example:
list_email_signatures()
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'List all saved email signatures' and returns a 'Dictionary of all signatures', which implies a read-only operation but doesn't clarify permissions, rate limits, or error handling. For a tool with zero annotation coverage, this is a significant gap in transparency.
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 front-loaded with the core purpose in the first sentence, followed by return value and an example. Each sentence adds value: the first states what it does, the second clarifies the output, and the third provides usage syntax. It's efficient with minimal waste, though the example could be slightly more informative.
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 0 parameters, an output schema exists, and no annotations, the description is minimally complete. It covers the basic action and return type, but lacks details on behavioral aspects like error cases or data format. For a simple list tool, this is adequate but leaves room for improvement in context.
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 has 0 parameters, and the input schema has 100% description coverage (though empty). The description correctly indicates no parameters are needed by showing 'list_email_signatures()' in the example. Since there are no parameters to document, the description adequately addresses this by omission, warranting a high score.
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 resource ('all saved email signatures'), making the purpose immediately understandable. It distinguishes from siblings like 'get_email_signature' (singular) and 'set_email_signature' (write operation). However, it doesn't explicitly contrast with other list tools like 'list_emails' or 'list_calendar_events', keeping it from a perfect score.
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. For instance, it doesn't mention if this should be used before setting a signature or how it relates to 'get_email_signature'. The description lacks any context about prerequisites or exclusions, leaving usage entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_emailA
Read the full content of a specific email.
Args:
email_id: Email ID to read (from list_emails)
folder: Mail folder (default: INBOX)
Returns:
Full email content with from, to, subject, date, and body
Example:
read_email(email_id="123")
| Name | Required | Description | Default |
|---|---|---|---|
| email_id | Yes | ||
| folder | No | INBOX |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that it reads full content and returns specific fields, but lacks details on permissions, rate limits, error handling, or whether it's read-only (implied by 'read' but not explicit). It adds some behavioral context but misses key operational traits.
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 well-structured and front-loaded with the core purpose, followed by args, returns, and an example. Every sentence adds value without redundancy, making it efficient and easy to parse for an AI 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?
Given no annotations, 0% schema coverage, but an output schema exists, the description is mostly complete. It covers purpose, parameters, and returns, but could improve by addressing behavioral aspects like auth or errors. The output schema reduces the need to explain return values in 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 description coverage is 0%, so the description must compensate. It explains email_id as 'Email ID to read (from list_emails)' and folder as 'Mail folder (default: INBOX)', adding meaning beyond the schema's basic titles. However, it doesn't detail folder options or email_id format, leaving some gaps.
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 specific action ('Read the full content') and resource ('a specific email'), distinguishing it from siblings like list_emails (which lists emails) or search_emails (which searches). It precisely defines what the tool does without being vague or tautological.
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 by mentioning 'from list_emails' for email_id, suggesting it should be used after listing emails, but it doesn't explicitly state when to use this tool versus alternatives like search_emails or provide exclusions. The guidance is present but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_emailsB
Search emails by subject or body content.
Args:
query: Search query string (searches in subject and body)
folder: Mail folder to search in (default: INBOX)
from_date: Only emails from this date onwards (format: DD-MMM-YYYY, e.g., "01-Dec-2024")
limit: Maximum number of results (default: 10, max: 50)
Returns:
List of matching emails
Example:
search_emails(query="API", from_date="01-Dec-2024", limit=5)
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| folder | No | INBOX | |
| from_date | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the tool returns a list of matching emails, which is basic, but fails to disclose critical behavioral traits such as authentication requirements, rate limits, error handling, or whether it's read-only or destructive. This is inadequate for a search tool with no annotation coverage.
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 appropriately sized and front-loaded, starting with the purpose, followed by a structured breakdown of args and returns, and ending with an example. Every sentence adds value without redundancy, making it efficient and easy to parse.
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 (4 parameters, 1 required), no annotations, and an output schema present, the description is partially complete. It covers parameters well but lacks behavioral context and usage guidelines. The output schema reduces the need to explain return values, but overall, it's adequate with clear gaps.
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 adds significant meaning beyond the input schema, which has 0% schema description coverage. It explains each parameter's purpose, defaults, and formats (e.g., date format, limit max), compensating well for the schema's lack of descriptions. However, it doesn't fully cover all nuances, such as the 'from_date' accepting null, keeping it from a perfect score.
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's purpose as 'Search emails by subject or body content,' which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'list_emails' or 'read_email,' which might have overlapping functionality, so it doesn't reach the highest score.
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 versus alternatives like 'list_emails' or 'read_email.' It includes an example but lacks explicit context, prerequisites, or exclusions, leaving the agent to infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_emailB
Send an email via SMTP.
Args:
to: Recipient email address
subject: Email subject
body: Email body (plain text)
cc: Optional CC email addresses (comma-separated)
from_name: Sender display name (default: "Giacomo Fiorucci")
Returns:
Send status with details
Example:
send_email(
to="christopher.caponi@emotion-team.com",
subject="Ciao Christopher!",
body="Come stai? Ti scrivo per...",
from_name="Giacomo Fiorucci"
)
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ||
| subject | Yes | ||
| body | Yes | ||
| cc | No | ||
| from_name | No | Giacomo Fiorucci |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but provides minimal behavioral information. It mentions the transport mechanism ('via SMTP') and shows a default sender name, but doesn't disclose important behavioral traits like authentication requirements, rate limits, error conditions, whether emails are queued or sent immediately, or what happens with invalid addresses. The 'Returns' section is vague about what 'details' includes.
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 well-structured with clear sections (purpose, args, returns, example) and efficiently communicates essential information. The example is helpful but could be more concise. Some sentences like 'Send an email via SMTP' are perfectly efficient, while the example shows multiple parameters that 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?
For a 5-parameter mutation tool with no annotations but with output schema, the description covers the basic purpose and parameters adequately. However, it lacks important context about behavioral implications (side effects, error handling, authentication needs) that would be crucial for safe usage. The presence of an output schema reduces the need to document return values, but other gaps remain significant.
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 0% schema description coverage, the description compensates well by providing clear parameter documentation in the 'Args' section, including data types, optionality, and default values. It adds meaningful context beyond the bare schema, explaining that 'cc' accepts comma-separated addresses and 'from_name' has a specific default. However, it doesn't explain format constraints (e.g., email validation) or provide examples for complex cases.
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 specific action ('Send an email via SMTP') and resource ('email'), distinguishing it from sibling tools like list_emails or read_email. It provides a concrete verb+resource combination that leaves no ambiguity about the tool's function.
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 versus alternatives like list_emails or search_emails. There's no mention of prerequisites, appropriate contexts, or when other email-related tools might be more suitable. The example shows usage but doesn't explain context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_email_signatureA
Create and save a professional email signature with optional photo and colors.
The signature will be automatically appended to all sent emails.
If photo_url or color are provided, an HTML signature will be created.
Args:
name: Full name (e.g., "Giacomo Fiorucci")
email: Email address
role: Job title/role (optional, e.g., "Software Developer")
company: Company name (optional, e.g., "Emotion Team")
phone: Phone number (optional, e.g., "+39 123 456 7890")
photo_url: URL or local file path to profile photo (optional, auto-uploads if local file)
color: Hex color code for accents (optional, e.g., "#0066cc", "#FF5722")
style: Signature style - "professional", "minimal", "colorful" (default: "professional")
signature_name: Name to save signature as (default: "default")
Returns:
Confirmation with signature preview
Examples:
# Simple text signature
set_email_signature(
name="Giacomo Fiorucci",
email="giacomo.fiorucci@emotion-team.com",
role="Software Developer",
company="Emotion Team"
)
# HTML signature with photo and custom color
set_email_signature(
name="Giacomo Fiorucci",
email="giacomo.fiorucci@emotion-team.com",
role="Software Developer",
company="Emotion Team",
phone="+39 123 456 7890",
photo_url="https://example.com/photo.jpg",
color="#0066cc",
style="professional"
)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| Yes | |||
| role | No | ||
| company | No | ||
| phone | No | ||
| photo_url | No | ||
| color | No | ||
| style | No | professional | |
| signature_name | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behaviors: the signature is automatically appended to sent emails, photo_url auto-uploads local files, and it returns a confirmation with preview. It doesn't cover permissions, rate limits, or error handling, but provides substantial operational 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 well-structured and front-loaded with the core purpose, followed by organized sections for args, returns, and examples. Every sentence adds value, with no redundancy, making it efficient despite its comprehensiveness.
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 complexity (9 parameters, no annotations, but with output schema), the description is complete. It covers purpose, usage, parameters, behavior, and examples. The output schema handles return values, so the description appropriately focuses on input and operational context.
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 fully. It provides detailed semantics for all 9 parameters, including examples, optional/default values, and behavioral effects (e.g., photo_url triggers HTML signature). This adds significant meaning beyond the bare 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 tool's purpose with specific verbs ('create and save') and resource ('professional email signature'), distinguishing it from sibling tools like get_email_signature or list_email_signatures. It explains the outcome ('automatically appended to all sent emails') and differentiates between text and HTML signatures based on optional parameters.
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 clear context on when to use this tool (to create signatures that will be appended to emails) and implies usage through parameter descriptions (e.g., photo_url creates HTML signatures). However, it doesn't explicitly state when NOT to use it or name alternatives like get_email_signature for retrieval, though the distinction is clear from purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tentative_calendar_eventA
Mark a calendar event as tentative (maybe attending).
Args:
event_uid: UID of the event
comment: Optional comment
Returns:
Response status
Example:
tentative_calendar_event(
event_uid="abc123@aruba.it",
comment="Forse riesco a partecipare"
)
| Name | Required | Description | Default |
|---|---|---|---|
| event_uid | Yes | ||
| comment | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the action ('Mark a calendar event as tentative') and return value ('Response status'), but lacks details on permissions needed, whether this is reversible, rate limits, or what specific status codes might be returned. The example adds some context but not comprehensive behavioral traits.
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 efficiently structured with a clear purpose statement, parameter explanations, return value note, and a practical example. Every sentence adds value without redundancy, and information is front-loaded appropriately.
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 (2 parameters, mutation action), no annotations, but with an output schema (implied by 'Returns: Response status'), the description is reasonably complete. It covers purpose, parameters, and returns, though could benefit from more behavioral context like error conditions or side effects.
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 adds meaningful semantics beyond the input schema, which has 0% description coverage. It explains that 'event_uid' is the 'UID of the event' and 'comment' is an 'Optional comment' for providing context like 'Forse riesco a partecipare'. This compensates well for the schema's lack of descriptions, though it doesn't detail UID format or comment constraints.
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's purpose: 'Mark a calendar event as tentative (maybe attending).' It specifies the verb ('Mark'), resource ('calendar event'), and action ('as tentative'), but doesn't explicitly distinguish it from sibling tools like accept_calendar_event or decline_calendar_event beyond the different status.
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 context through the phrase 'maybe attending' and the example comment, suggesting this is for uncertain attendance. However, it doesn't explicitly state when to use this tool versus accept_calendar_event or decline_calendar_event, nor does it mention prerequisites like event access permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with no significant overlap. Calendar tools handle specific actions (accept, decline, tentative, create, delete, list), email tools cover distinct operations (list, read, search, send, check bounces, manage signatures), and the separation between email and calendar domains is clear. An agent can easily differentiate between tools like list_emails and search_emails or accept_calendar_event and decline_calendar_event.
All tool names follow a consistent verb_noun pattern with snake_case throughout. Calendar tools use verbs like accept, decline, create, delete, list, tentative paired with 'calendar_event', while email tools use verbs like list, read, search, send, check, get, set paired with 'email' or related nouns (e.g., 'email_signature', 'bounced_emails'). This uniformity makes the tool set predictable and easy to navigate.
With 14 tools, the count is well-suited for the server's dual-domain purpose of email and calendar management. It provides comprehensive coverage without being overwhelming, balancing core operations (e.g., CRUD for events, email listing/sending) with specialized utilities (e.g., signature management, bounce checking). This scope aligns with typical productivity server expectations.
The tool set offers strong coverage for both email and calendar domains, including full lifecycle management for calendar events (create, list, accept/decline/tentative, delete) and essential email operations (send, list, read, search, bounce checking, signature management). Minor gaps exist, such as no tools for updating calendar events or managing email folders, but agents can work around these with the provided tools without significant hindrance.
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
Connect any mailbox to Claude, ChatGPT & AI: read, send, reply, schedule & search emails.
Read, send, file and search email in any IMAP or Microsoft 365 mailbox, and check it arrived.
Your real Gmail, Outlook and calendars, worked as you: read, draft, send, schedule, organize.
GDPR-compliant calendar access for AI assistants. Google, Microsoft 365, Apple & more. EU-hosted.
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables AI assistants to read, search, compose, and send emails by connecting to any IMAP/SMTP provider. It supports comprehensive mailbox management, including draft handling and message deletion, directly through natural language.1040710MIT
- AlicenseNot gradedqualityCmaintenanceConnects AI assistants to email accounts via IMAP/SMTP, enabling reading, searching, sending, and organizing emails with features like smart drafts, scheduling, and attachment handling.2712MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with email accounts via IMAP and SMTP, supporting mailbox listing, email search, retrieval, sending, and management.MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to send, read, and manage emails via SMTP and IMAP, with support for attachments, threads, and mailbox organization.16421MIT
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/jackfioru92/mcp-aruba-email'
If you have feedback or need assistance with the MCP directory API, please join our Discord server