Migadu MCP Server
Servidor MCP de Migadu
Controla tu alojamiento de correo electrónico de Migadu desde asistentes de IA a través del Protocolo de Contexto de Modelo (MCP).
¿Qué es Migadu?
Migadu es un proveedor de correo electrónico suizo que cobra según el uso real en lugar del número de buzones, con SMTP/IMAP/POP3 estándar y sin ataduras.
Related MCP server: IMAP Email MCP Server
Qué hace esto
Cubre toda la superficie de la API de Migadu como herramientas MCP:
Dominios: creación, actualización, activación, registros DNS, diagnósticos, uso
Buzones: CRUD, respuestas automáticas, restablecimiento de contraseñas
Alias: reglas de reenvío sin un buzón detrás
Identidades: direcciones de envío en un buzón
Reenvíos: copias de entrega externa con flujo de confirmación
Reescrituras: reglas de enrutamiento basadas en patrones
Configuración
Obtén una clave de API en Administración de Migadu → Mi cuenta → Claves de API.
Añádela a la configuración de tu cliente MCP (por ejemplo, Claude Desktop, ~/.claude.json, etc.):
{
"mcpServers": {
"migadu": {
"command": "uvx",
"args": ["migadu-mcp"],
"env": {
"MIGADU_EMAIL": "you@example.com",
"MIGADU_API_KEY": "your-api-key",
"MIGADU_DOMAIN": "example.com"
}
}
}
}O a través de la CLI de Claude Code:
claude mcp add migadu \
--env MIGADU_EMAIL=you@example.com \
--env MIGADU_API_KEY=your-api-key \
--env MIGADU_DOMAIN=example.com \
-- uvx migadu-mcpMIGADU_DOMAIN es opcional. Es el dominio predeterminado utilizado por herramientas como list_mailboxes cuando no pasas uno explícitamente. Omítelo si gestionas varios dominios y prefieres pasar domain en cada llamada.
Ejemplo de uso
Una vez configurado, pide a tu asistente de IA cosas como:
"Incorpora un nuevo dominio
acme.example: guíame a través de la configuración DNS y la activación""Crea buzones para alice@acme.example y bob@acme.example"
"Configura
support@acme.examplecomo un alias para Alice y Bob""Configura una respuesta automática en
vacation@acme.examplehasta el 15 de enero""Elimina los buzones de todos los que se fueron: lista de direcciones..."
Se han registrado tres prompts integrados para estructurar flujos de trabajo comunes: mailbox_creation_wizard, bulk_operation_planner, domain_onboarding.
Herramientas
Dominio
list_domains, get_domain, create_domain, update_domain, get_domain_records, get_domain_diagnostics, activate_domain, get_domain_usage
Buzón
list_mailboxes, get_mailbox, create_mailbox, update_mailbox, delete_mailbox, reset_mailbox_password, set_autoresponder
Alias
list_aliases, get_alias, create_alias, update_alias, delete_alias
Identidad
list_identities, get_identity, create_identity, update_identity, delete_identity
Reenvío
list_forwardings, get_forwarding, create_forwarding, update_forwarding, delete_forwarding
Reescritura
list_rewrites, get_rewrite, create_rewrite, update_rewrite, delete_rewrite
Todas las herramientas de mutación (create_*, update_*, delete_*, activate_*, set_autoresponder, reset_mailbox_password) aceptan una list[dict] de elementos y devuelven un sobre de resultados masivos con éxito/fallo por elemento. Una lista de un solo elemento también funciona.
Recursos
Vistas de solo lectura direccionables por URI:
domains://— todos los dominios de la cuentadomain://{name}— configuración completa de un dominiodomain-records://{name}— registros DNS necesarios para la configuracióndomain-usage://{name}— métricas de mensajes + almacenamientomailboxes://{domain}— buzones de un dominiomailbox://{domain}/{local_part}— un buzónidentities://{domain}/{mailbox}— identidades en un buzónforwardings://{domain}/{mailbox}— reenvíos en un buzónaliases://{domain}— alias de un dominiorewrites://{domain}— reglas de reescritura para un dominio
Notas
La API de Migadu devuelve HTTP 500 en un DELETE exitoso (peculiaridad conocida). El cliente trata 200/204/404/500 como éxito en DELETE; otros códigos generan un error.
Un
httpx.AsyncClientde larga duración por proceso de servidor, cerrado al apagarse mediante el hook de ciclo de vida de FastMCP.Las herramientas
list_*pasan las respuestas a través de un resumidor estático cuando superan los ~2000 tokens, devolviendo un recuento más una muestra en lugar de inundar el contexto.
Desarrollo
git clone https://github.com/Michaelzag/migadu-mcp.git
cd migadu-mcp
uv sync --group dev
# Quality gates (same as CI)
uv run ruff format --check .
uv run ruff check migadu_mcp/ tests/
uv run ty check migadu_mcp/
uv run pytest
uv run bandit -r migadu_mcp/Las pruebas utilizan respx para simular la API de Migadu: no se necesitan credenciales. Las pruebas de integración (bajo @pytest.mark.integration) acceden a la API real y se omiten de forma predeterminada.
Licencia
MIT: consulta LICENSE.
Available Tools
35 toolsactivate_domainAIdempotent
Activate domain(s) once DNS records are configured. Fails with 422 if DNS validation fails. List of dicts with: name.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover idempotency and non-destructiveness; description adds validation behavior (422 failure) and input structure (list of dicts with name). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with key info. Could group related details but overall 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?
Covers purpose, prerequisite, failure mode, and param structure. Lacks success response details but adequate for typical activation 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 has 0% coverage for items array; description clarifies each dict must have a 'name' field, adding essential meaning 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 verb 'Activate' and resource 'domain(s)', with prerequisite 'once DNS records are configured'. Distinguishes from siblings like create_domain and update_domain.
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?
Specifies when to use (after DNS configuration) and failure condition (422 if DNS validation fails). While not exhaustive on alternatives, it provides sufficient usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_aliasA
Create alias(es). List of dicts with: target, destinations (list or CSV), domain (optional), is_internal (optional).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint=false), and description matches. No additional behavioral context beyond what annotations provide, such as permissions or side effects.
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 that is front-loaded with purpose and contains no wasted words. Efficiently conveys core information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks information on error handling, idempotency, or duplicate behavior. For a creation tool with no output schema and a simple description, it is adequate but not thorough.
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 is minimal with 0% coverage, but description compensates by detailing expected fields (target, destinations, domain, is_internal), adding meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Create alias(es)' with specific verb and resource, and distinguishes from sibling create tools like create_forwarding or create_identity.
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 other creation tools. The description does not provide any context or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_domainA
Create domain(s). Migadu recommends hosted_dns=False (use external DNS). List of dicts with: name, hosted_dns (optional, default false), create_default_addresses (optional, default true).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions creation and optional parameters, but does not detail side effects or behaviors beyond the annotations. Given annotations already mark it as non-read-only, the added value is moderate.
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-loading the purpose and then detailing the structure. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (one nested parameter) and lack of output schema, the description adequately covers input format and a key recommendation. It could be improved by mentioning output or success criteria, but it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a generic 'items' array with no property details. The description compensates by specifying that each dict contains 'name', optional 'hosted_dns' (default false), and optional 'create_default_addresses' (default true), which is essential for correct usage.
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 'Create domain(s)', indicating the action of creating one or more domains. It distinguishes from 'update_domain' or 'activate_domain' implicitly but could be more explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a recommendation from Migadu regarding 'hosted_dns=False', providing usage context. However, it does not specify when to use this tool over alternatives like 'activate_domain' or contrast with update operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_forwardingB
Create forwarding(s). Forwardings require external-user confirmation. List of dicts with: mailbox, address, domain (optional), expires_on (optional, YYYY-MM-DD), remove_upon_expiry (optional).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not read-only and not destructive, which is consistent with creation. The description adds a behavioral note that forwardings require external-user confirmation, which is valuable beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three distinct pieces of information: action, behavioral note, and parameter structure. The first sentence is somewhat redundant with the tool name, but overall no unnecessary 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?
The description does not mention return values or response format, which is a gap given there is no output schema. It also lacks details on validation or required fields beyond what's implied.
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 0% description coverage, so the description compensates by explaining the structure of the 'items' array, listing fields with optionality and date format. This provides essential meaning missing from 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 'Create forwarding(s)' with a list of required fields, making the purpose clear. However, it does not differentiate from sibling tools like create_alias or create_rewrite.
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 explicit guidance on when to use this tool versus alternatives. The description does not mention scenarios where forwarding is appropriate compared to aliases or rewrites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_identityC
Create identit(ies). List of dicts with: target, mailbox, name, password, domain (optional).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (consistent) and openWorldHint=true, but the description lacks details on idempotency, error handling, or side effects. It doesn't address what happens if an identity already exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise single sentence that front-loads the action and required parameters. No redundant text, though it could be slightly more 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 and minimal description. For a creation tool with array input, more details on return value, atomicity, and validation rules are needed. Siblings exist but are not referenced.
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 only has 'items' with no item structure. The description adds meaning by listing fields (target, mailbox, name, password, domain), compensating for 0% schema coverage. However, it doesn't specify field types or 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 'Create identit(ies)' with input fields (target, mailbox, name, password, domain). It distinguishes from sibling tools like create_mailbox or create_domain, though 'identity' could be more explicitly defined.
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 or when not to use this tool. No mention of alternatives or prerequisites. For instance, it doesn't clarify if domain is required or if items are processed individually.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_mailboxA
Create mailbox(es). List of dicts with: target, name, password or password_recovery_email, is_internal (optional), forwarding_to (optional).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is not read-only, not destructive, not idempotent, and open-world. The description only confirms creation, adding no additional behavioral context such as permissions or side effects beyond the open-world hint.
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 front-loads the purpose and then lists parameters efficiently. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and a nested input structure, the description explains the input format well. However, it omits return value details or potential error conditions. Annotations provide open-world hint but description doesn't elaborate, leaving minor 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?
Input schema has 0% description coverage, but the description thoroughly explains the required fields (target, name, password or password_recovery_email) and optional ones (is_internal, forwarding_to), adding critical meaning beyond the raw 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 'Create mailbox(es)' with a specific verb and resource, and distinguishes from siblings like create_alias or create_domain. It also details the input format, making the 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 implies when to use (to create mailboxes) but provides no explicit guidance on when not to use or alternatives. Given sibling tools, it's clear but not directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_rewriteB
Create rewrite rule(s). List of dicts with: name, local_part_rule (pattern), destinations, domain (optional), order_num (optional).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint false (modifies state) and destructiveHint false (not destructive). The description adds no behavioral details beyond 'create'. It does not disclose if rules are merged, overwritten, or validated, nor does it mention side effects or permissions. The description provides minimal transparency beyond the annotation hints.
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 efficiently states the action and lists the fields. It is front-loaded with the purpose and then details the structure. No superfluous words. However, it could be slightly improved by specifying that 'items' is an array parameter.
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 complexity of creating rewrite rules (multiple fields with optional parameters) and the lack of schema details, the description provides a basic field list but omits field types, constraints (e.g., required vs optional), and formatting. Without an output schema, the agent may wonder about return values. The description is adequate but leaves 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?
Schema coverage is 0%, with only an array of objects property defined. The description lists the expected dictionary keys (name, local_part_rule, destinations, domain, order_num), adding critical semantic meaning that the schema lacks. This effectively compensates for the empty schema, though it could be more detailed (e.g., specifying types or 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 purpose: 'Create rewrite rule(s)' with a list of dictionaries. The verb 'create' and resource 'rewrite rule' are specific. However, it does not distinguish this tool from other creation tools like create_alias or create_forwarding, which are siblings. The listing of fields adds clarity but misses differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., create_alias, create_forwarding). There is no mention of prerequisites, when not to use, or context about rewrite rules. The description is purely functional without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_aliasADestructiveIdempotent
Delete alias(es). DESTRUCTIVE. List of dicts with: target, domain (optional).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true. Description repeats 'DESTRUCTIVE' and adds input format but does not disclose additional behaviors like permanence or cascading effects.
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?
Extremely concise: one short sentence with key information. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with one parameter and no output schema, the description adequately explains input structure and destructive nature. Could add more about recovery options but not necessary.
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 provides minimal info (0% coverage). The description compensates by specifying that items should be a list of dicts with required 'target' and optional 'domain', crucial for correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the action 'Delete' and resource 'alias(es)' clearly. Distinct from sibling tools like create_alias and update_alias, and provides a hint about input format.
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 'DESTRUCTIVE' to imply cautious use, but does not explicitly state when to use versus alternatives or any prerequisites. Usage is implied but not detailed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_forwardingADestructiveIdempotent
Delete forwarding(s). DESTRUCTIVE. List of dicts with: mailbox, address, domain (optional).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation already declares destructiveHint=true. The description adds 'DESTRUCTIVE' which aligns with that. It also describes the input structure (list of dicts with keys), but does not disclose further behavioral traits like error handling or partial failure 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?
The description is extremely concise with one sentence and a short list. It front-loads the purpose ('Delete forwarding(s)') and immediately provides essential parameter structure. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (delete with one parameter), the description covers the essential input format. It does not explain what a forwarding is or mention any side effects, but given sibling context and annotations, it is nearly complete. A minor gap is not explicitly stating that mailbox and address are required.
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 0% description coverage. The description partially compensates by stating that 'items' is a list of dicts with keys mailbox, address, and optional domain. However, it does not specify which are required or provide types/validation rules.
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 (delete), the resource (forwarding(s)), and hints at the input format. It distinguishes from sibling tools like delete_alias or delete_mailbox by specifying 'forwarding'.
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 like update_forwarding or list_forwardings. No prerequisites or usage context provided beyond the basic operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_identityBDestructiveIdempotent
Delete identit(ies). DESTRUCTIVE. List of dicts with: target, mailbox, domain (optional).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint, idempotentHint, and openWorldHint. The description adds 'DESTRUCTIVE' but does not elaborate on behavioral consequences (e.g., error handling, partial success). It meets minimum expectations beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with minimal waste; every word contributes essential information. Highly efficient for the content conveyed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete with one parameter and no output schema, the description is adequate but lacks details on idempotency behavior, error cases, and relationship to sibling tools. Sufficient for basic understanding but not fully comprehensive.
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 adds crucial meaning by detailing the structure of 'items' (list of dicts with target, mailbox, domain). However, it does not fully specify key constraints (e.g., what 'target' should be).
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 'Delete identit(ies)' and indicates the input format. However, it does not distinguish from sibling tools like delete_alias, which could overlap in context.
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 (e.g., deactivate instead of delete). The 'DESTRUCTIVE' label warns of permanence but lacks context on prerequisites or fallback options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_mailboxADestructiveIdempotent
Delete mailbox(es). DESTRUCTIVE. List of dicts with: target.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint true and idempotentHint true. Description adds 'DESTRUCTIVE' but no additional context about consequences, permissions, or side effects beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise segments with front-loaded action and warning. No redundant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with annotations, the description is nearly complete. It misses only the precise definition of 'target' and error conditions. Output schema is absent, but description doesn't need to cover that.
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 has 0% coverage for items parameter. Description adds 'List of dicts with: target', hinting at the structure, but does not fully specify what 'target' means (e.g., email address or ID). Provides some value beyond empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action 'Delete mailbox(es)' and the resource, with a warning label 'DESTRUCTIVE'. Distinguishes from sibling tools like create_mailbox or update_mailbox.
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 (e.g., delete_alias, delete_forwarding). No prerequisites or conditions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_rewriteADestructiveIdempotent
Delete rewrite rule(s). DESTRUCTIVE. List of dicts with: name, domain (optional).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent hints; the description adds the 'DESTRUCTIVE' warning which aligns, but provides little extra beyond parameter format details.
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 conveys the purpose, destructiveness, and parameter format concisely with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with no output schema, the description covers the essential aspects; it could mention return status 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?
With 0% schema description coverage, the description fully compensates by specifying that items are a list of dicts with name and optional domain, adding critical 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 action ('Delete rewrite rule(s)') and resource, distinguishing it from sibling tools like create_rewrite or update_rewrite.
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 flags the tool as destructive but lacks explicit guidance on when to use it compared to alternatives, such as update_rewrite for modifying rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_aliasBRead-onlyIdempotent
Get alias details by local part.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| domain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds that lookup is by local part, which is useful but does not explain return behavior, error handling, or edge cases, so it meets the baseline with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is appropriately concise for a simple read operation. Front-loaded with verb and resource. Could be slightly more descriptive without being verbose, but no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite rich annotations and two parameters, the description does not explain what 'alias details' includes or the output format. With no output schema, users are left guessing the return structure. Adequate but not complete for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains that 'target' is the local part, but does not mention the optional 'domain' parameter or provide additional context on format or constraints. Only one parameter is partially explained.
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 'Get alias details by local part,' specifying the verb (Get) and resource (alias details) with a key parameter (local part). It distinguishes from sibling tools like list_aliases or create_alias, but assumes knowledge of what 'local part' means.
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 like list_aliases or get_domain. It does not mention when-not to use it, prerequisites, or conditions that favor this tool over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domainBRead-onlyIdempotent
Get full details for a specific domain.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds little beyond stating that it returns 'full details', which is consistent but not particularly insightful.
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, front-loaded, and contains no unnecessary words. It efficiently conveys the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description is minimal, it covers the basic intent for a simple get operation. However, lacking output schema and sibling differentiation, it feels incomplete; e.g., what constitutes 'full details' is ambiguous.
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 single parameter 'name' is not explained beyond its title. With 0% schema description coverage, the description should provide context (e.g., format, constraints) but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'domain', and the scope 'full details for a specific domain'. This distinguishes it from sibling tools like list_domains or get_domain_diagnostics.
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 get_domain_diagnostics or get_domain_usage. There is no mention of exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domain_diagnosticsARead-onlyIdempotent
Run DNS validation diagnostics on a domain. Use after configuring records externally.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint, informing the agent of safety and idempotency. The description adds that the tool runs diagnostics, implying it queries external DNS and returns results without side effects, which is consistent with annotations. No contradictions.
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 long, with the action placed first ('Run DNS validation diagnostics'), making it easy to scan. Every word adds value, and there is no extraneous text.
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 required parameter, no output schema, and clear annotations), the description provides sufficient information: what it does, when to use it, and its read-only nature. No additional context is necessary.
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 0% description coverage, and the description only mentions 'a domain' without explaining what the 'name' parameter expects (e.g., fully qualified domain name, format, or constraints). The description does not compensate for the schema's lack of parameter details, leaving ambiguity about the parameter's format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs DNS validation diagnostics on a domain, which is distinct from sibling tools like get_domain (returns domain info) and get_domain_records (returns records). The verb-resource-action pair is specific 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 provides clear usage context by stating 'Use after configuring records externally,' which helps the agent know the appropriate time to invoke this tool. It does not explicitly exclude other scenarios or name alternatives, but the guidance is sufficient for its simple purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domain_recordsARead-onlyIdempotent
Get the DNS records (MX, SPF, DKIM, DMARC, verification) required for domain setup.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is fully declared. The description adds context about the specific record types returned but does not disclose any additional behavioral traits such as required permissions or response structure.
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 containing 16 words, listing examples in parentheses. Every word is informative, no redundancy. It is appropriately front-loaded and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with one parameter, the description covers the core purpose. However, it omits details about the output format (no output schema) and does not explicitly state that the domain must already exist. Sibling tool names partially compensate for context, but the description could be more 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?
The input schema has one parameter 'name' with zero description coverage (0%). The tool description does not clarify that 'name' likely refers to the domain name, nor does it add any semantics beyond the schema. The agent may not infer the correct parameter meaning.
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 retrieves DNS records (MX, SPF, DKIM, DMARC, verification) for domain setup. It uses a specific verb ('Get') and resource ('DNS records'), and its purpose is distinct from sibling tools like get_domain or get_domain_diagnostics.
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 domain setup but provides no explicit guidance on when to use this tool vs alternatives (e.g., get_domain for general info, get_domain_diagnostics for troubleshooting). No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domain_usageBRead-onlyIdempotent
Get message and storage usage metrics for a domain.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds that it returns 'message and storage usage metrics', which is useful but minimal. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key information. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of annotations, the description is adequate but lacks information about return value structure and parameter details. No output schema to compensate.
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 has 0% description coverage for parameter 'name'. The description does not explain that 'name' refers to the domain name, leaving the agent to infer. No additional semantics provided.
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 retrieves usage metrics for a domain, using a specific verb 'Get' and resource 'domain usage'. It distinguishes from sibling tools like get_domain and get_domain_diagnostics.
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 such as get_domain or get_domain_diagnostics. The description lacks any context about prerequisites or use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_forwardingARead-onlyIdempotent
Get details for a specific forwarding (confirmation status, expiry, active state).
| Name | Required | Description | Default |
|---|---|---|---|
| mailbox | Yes | ||
| address | Yes | ||
| domain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by specifying the fields returned (confirmation status, expiry, active state), providing behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It front-loads the purpose and immediately adds useful detail, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lists return fields but omits parameter explanations and output structure. Given no output schema and 3 parameters, it is incomplete for an agent to use independently.
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%, but the description does not explain any parameters (mailbox, address, domain). The purpose is inferable from the tool name, but the description offers no additional meaning, leaving the agent to guess input semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get details for a specific forwarding' with a specific verb and resource, and lists confirmation status, expiry, and active state, differentiating it from siblings like list_forwardings or create_forwarding.
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 for retrieving a single forwarding's details, but lacks explicit guidance on when to use it versus alternatives like list_forwardings 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.
get_identityCRead-onlyIdempotent
Get full details for a specific identity.
| Name | Required | Description | Default |
|---|---|---|---|
| mailbox | Yes | ||
| identity | Yes | ||
| domain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is clear. The description adds 'full details' but no additional behavioral context beyond what annotations provide.
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 with no unnecessary words. It is front-loaded and efficiently conveys the tool's purpose, though it sacrifices detail for brevity.
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 three parameters (two required) and no output schema, the description lacks completeness. It does not describe the return format, error behavior, or how parameters relate to the query, leaving gaps for the 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?
Schema description coverage is 0%, so the description should compensate by explaining the three parameters. It fails to do so; no mention of how 'mailbox', 'identity', or optional 'domain' are used to identify the identity.
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 'get' and resource 'identity', indicating it retrieves details. It distinguishes itself from sibling tools like 'get_alias' or 'get_mailbox' by specifying the identity resource, but does not differentiate from 'get_domain' or 'get_mailbox' beyond the resource type.
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 like 'list_identities'. The description does not specify that it retrieves a single identity by identifier, nor does it mention prerequisites or context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mailboxARead-onlyIdempotent
Get full mailbox details by email or local part.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. Description adds no behavioral details beyond 'full mailbox details'; no error scenarios or authentication needs are disclosed.
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 that is front-loaded and efficiently conveys core purpose. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter getter without output schema, description is adequate. It lacks detail on return format or errors but is sufficient for basic 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?
Schema description coverage is 0%, but description adds that 'target' can be an email or local part, which clarifies input beyond the schema's bare 'Target' string.
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 it retrieves full mailbox details, specifies input can be email or local part, and is distinct from sibling tools like get_alias or get_domain.
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 (e.g., list_mailboxes). No prerequisites or context about existence of mailbox are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rewriteBRead-onlyIdempotent
Get rewrite rule details by slug/name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| domain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description adds little beyond stating the operation. It does clarify that the tool returns 'details', but this is minimal. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise at a single sentence with no wasted words. However, it could be slightly more informative by including the domain parameter without significantly increasing length. It is front-loaded with the key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 parameters and no output schema, the description covers the primary intent but fails to explain the optional 'domain' parameter or what the returned 'details' include. Given the available annotations, the description is adequate but has 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?
With 0% schema description coverage, the description must compensate. It partially explains the 'name' parameter as 'slug/name', but entirely omits the 'domain' parameter. This leaves users uncertain about its purpose and how to use 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 verb 'Get' and resource 'rewrite rule details' and the identifier type 'by slug/name'. It effectively distinguishes from sibling tools like list_rewrites and create_rewrite. However, it does not mention the optional 'domain' parameter, which could create ambiguity about the tool's scope.
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 (e.g., list_rewrites for listing all rules, or get_alias for alias details). The description implies it is for fetching a single rule's details but does not explicitly state when not to use it or compare with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_aliasesBRead-onlyIdempotent
List aliases for a domain.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description adds little beyond reaffirming the read-only nature. It does not disclose details like pagination or missing domain 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?
The description is a single concise sentence, easily readable. However, it could be expanded with essential details without becoming 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?
For a simple list tool with one optional parameter and no output schema, the description omits critical context such as return format, default behavior when domain is null, and any sorting or filtering.
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 must explain parameters. It only vaguely references 'for a domain' but does not clarify the meaning, format, or effect of a null 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 action 'List aliases' and the resource 'for a domain', distinguishing it from sibling tools like create_alias or delete_alias.
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, nor does it mention any preconditions or limitations such as required permissions or default behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_domainsARead-onlyIdempotent
List all domains for the authenticated account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, providing clear behavioral traits. The description adds only 'for the authenticated account', which does not significantly enhance 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 a single, concise sentence with no superfluous words, front-loading the key action and resource.
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 tool with no parameters and comprehensive annotations, the description sufficiently explains what the tool does. It could hint at the return format, but completeness 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?
No parameters exist, so the description does not need to add parameter semantics. Per rubric, 0 parameters yields baseline 4, and the description adequately conveys the tool's purpose.
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 ('List') and resource ('domains') with scope ('for the authenticated account'). It distinguishes itself from sibling tools like 'get_domain' and 'create_domain'.
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 listing all domains but does not explicitly mention when to avoid it or when to use alternatives like 'get_domain' for specific details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_forwardingsARead-onlyIdempotent
List external forwardings configured on a mailbox.
| Name | Required | Description | Default |
|---|---|---|---|
| mailbox | Yes | ||
| domain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the agent knows it is a safe, read-only operation. The description adds the detail 'external forwardings', providing some context beyond the schema. However, it does not disclose behavior like pagination or ordering, which is acceptable given the annotations cover safety.
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 immediately conveys the core purpose with no extraneous words. It is efficient and front-loaded, making it easy for the agent to parse quickly.
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 is a simple list operation with two parameters and no output schema, the description covers the basics. However, it does not explain the effect of the domain parameter, whether results are ordered, or if there are limits. For a simple tool, this is adequate but leaves minor gaps that could be clarified.
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 clarify parameter meanings. It only implies the 'mailbox' parameter via the phrase 'on a mailbox', but does not explain the optional 'domain' parameter or its purpose. This leaves ambiguity about how the tool filters or scopes results.
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 'external forwardings', specifying the scope 'on a mailbox'. It distinguishes itself from sibling tools like list_aliases or list_domains by focusing on forwardings, and the qualifier 'external' adds specificity.
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 such as get_forwarding (for a specific forwarding) or list_rewrites. There is no mention of prerequisites (e.g., mailbox existence) or context that would help an agent decide between listing and retrieving a single forwarding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_identitiesBRead-onlyIdempotent
List identities (send-as addresses) for a mailbox.
| Name | Required | Description | Default |
|---|---|---|---|
| mailbox | Yes | ||
| domain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, covering safety and idempotency. The description adds minimal context ('send-as addresses') but does not disclose any behavioral traits beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the purpose without extraneous words. However, it could be slightly expanded to include parameter clarification without losing 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?
Given the tool's simplicity (2 parameters, no output schema), the description covers the basic purpose adequately. However, it omits explanation of the 'domain' parameter and what the tool returns (e.g., list of identity objects). With good annotations, it is minimally complete but leaves gaps for the 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?
With 0% schema description coverage, the description should explain the parameters. It only mentions 'for a mailbox', which maps to the 'mailbox' parameter, but fails to describe the optional 'domain' parameter or their formats/constraints. The description does not compensate for the lack of 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 verb 'list' and the resource 'identities (send-as addresses)', and specifies the context 'for a mailbox', making the purpose unambiguous. It distinguishes from siblings like 'get_identity' (singular) and 'create_identity'.
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 'get_identity' for single identites or other list tools. There is no mention of when not to use it or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_mailboxesCRead-onlyIdempotent
List email mailboxes for a domain.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, covering safety and idempotency. The description adds the domain scoping constraint but does not disclose additional behavioral traits beyond what annotations provide. With annotations present, a score of 3 is appropriate.
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, clear sentence with no redundancy. It is appropriately brief for a simple tool, but could be slightly more informative without becoming 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?
Given the tool's simplicity and the presence of good annotations, the description still lacks key context such as the return value format, authentication requirements, or behavior when domain is omitted. Without an output schema, agents need more information to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'for a domain', which implies the domain parameter filters results, but does not explain the default behavior (null meaning all domains?) or add semantic value beyond the parameter name. This is insufficient for the lack of 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 verb (list) and resource (email mailboxes) and scope (for a domain). It is unambiguous and distinguishes itself from sibling list tools by resource type, though it does not explicitly contrast with 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 alternatives like list_aliases, list_forwardings, etc. The description simply states what it does without context or when-not-to-use hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rewritesCRead-onlyIdempotent
List rewrite rules for a domain.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond what annotations already convey (readOnlyHint=true). It does not mention pagination, filtering behavior, or any side effects, leaving the agent to infer from the tool name alone.
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, efficient sentence. However, it is arguably too terse, missing opportunities to add value without significant length increase.
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 tool with no output schema and minimal parameter info, the description is incomplete. It does not explain what 'rewrite rules' are, what the response looks like, or how the domain filter works when omitted. Essential context for proper invocation is lacking.
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's phrase 'for a domain' provides some meaning for the 'domain' parameter, implying it filters results. However, it does not clarify that the parameter is optional or what the default behavior is, leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list) and the resource (rewrite rules) with a context (for a domain). However, it does not differentiate from other list tools like list_aliases or list_domains, which are similar in structure.
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 get_rewrite for a specific rule. The description does not explain when to omit the domain parameter or what happens if it's null.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_mailbox_passwordCIdempotent
Reset mailbox password(s). List of dicts with: target, new_password.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits beyond the basic action. Key side effects (e.g., invalidating existing sessions, needing new login) are not mentioned. The annotations provide some hints (idempotentHint true, openWorldHint true), but the description itself adds no behavioral 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 very short (one sentence), which is efficient but omits essential details about the parameter structure. It could be slightly longer to improve clarity without losing 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?
Given the tool's simplicity (one parameter, no output schema), the description should be sufficient, but it fails to explain the inner structure of the array items or any behavioral effects. Annotations cover some gaps but not all.
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 a single array parameter with no inner structure defined. The description mentions the dictionary fields 'target' and 'new_password' but does not specify types, formats, or constraints. With 0% schema coverage, the description should provide more detail; it does so minimally.
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 explicitly states the action ('Reset mailbox password') and indicates it can handle multiple passwords via plural '(s)'. This clearly distinguishes it from sibling tools like update_mailbox, which might update other settings.
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 like update_mailbox, nor any prerequisites or conditions (e.g., user must have admin rights). The description lacks context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_autoresponderBIdempotent
Configure autoresponder(s). List of dicts with: target, active, subject (optional), body (optional), expires_on (optional, YYYY-MM-DD).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds minimal behavioral context beyond the annotations (idempotent, non-destructive, open world). It does not disclose if the tool overwrites or appends autoresponders, nor any required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the purpose and then details the parameter structure. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the minimal schema and no output schema, the description partially fills gaps with parameter structure but omits types, default behavior (replace vs. append), and the format for 'expires_on'. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a bare 'items' array with no property definitions (0% coverage). The description compensates by detailing the fields expected in each dictionary, providing essential meaning that the schema lacks.
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 configures autoresponders and specifies the parameter structure. However, it does not differentiate from sibling tools, which all have distinct purposes like creating aliases or domains.
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, nor any prerequisites or exclusions. The description only explains the parameter format, leaving the agent without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_aliasBIdempotent
Update alias destinations. List of dicts with: target, destinations (list or CSV), domain (optional).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent, non-destructive behavior. Description adds format details but does not explain side effects such as whether destinations are replaced or merged, or error conditions.
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?
Concise single sentence with clear list of fields. No fluff, though the structure could be improved with bullet points or formatting.
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 complexity (batch update of alias destinations with nested structure) and no output schema, the description leaves many questions unanswered: replacement vs merge, error handling, result format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% with an opaque 'items' array. Description adds crucial meaning: dicts contain 'target', 'destinations' (list or CSV), and 'domain' (optional). Still lacks type definitions but compensates significantly.
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?
Clearly states it updates alias destinations, specifying the resource and action. Distinguishes from siblings like create/delete alias, but does not explicitly differentiate from other update 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?
No guidance on when to use this tool versus alternatives like create_alias or delete_alias. Lacks context on prerequisites or recommended use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_domainAIdempotent
Update domain field(s). List of dicts with: name (required), description (optional), tags (optional).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint true, readOnlyHint false, and destructiveHint false, but the description adds no behavioral details beyond this. It fails to explain effects like whether updates are reversible or what happens if the domain does not exist, leaving the agent with only annotation-provided 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 a single concise sentence followed by a clear list of fields. It is front-loaded with the core action ('Update domain field(s)') and immediately provides necessary structure, with no extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple update tool with one parameter and no output schema, the description adequately covers the input structure. It hints at batch updates via 'list of dicts' but does not clarify if 'name' is the domain identifier or mention error cases. Overall, sufficient for the low 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 provides no description for the 'items' parameter (0% coverage), but the description compensates by defining it as a list of dicts with required 'name' and optional 'description' and 'tags'. This adds essential structure missing from the schema, though it does not explain what 'name' refers to (e.g., domain identifier).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update domain field(s)' indicating the tool modifies domain settings. It specifies the required field 'name' and optional fields 'description' and 'tags', providing a clear purpose. However, it does not differentiate from sibling tools like update_alias or create_domain, missing explicit scoping.
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 updating domain fields, but offers no guidance on when to use this tool versus alternatives like create_domain or get_domain. No prerequisites or exclusions are mentioned, relying on the tool name for context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_forwardingAIdempotent
Update forwarding(s). List of dicts with: mailbox, address (required), and any of: is_active, expires_on, remove_upon_expiry, domain.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide key behavioral hints (idempotent, not destructive). Description adds structure of updateable fields but does not clarify side effects, merging behavior, or error states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence packs function and parameter details efficiently, though separating into two sentences could improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers input structure adequately for a simple update but does not specify return value, whether updates are partial or full replacement, or behavior on conflicts.
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 is minimal (0% coverage). Description compensates by detailing required fields (mailbox, address) and optional fields, providing essential meaning beyond schema structure.
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?
Clearly states update action on forwardings with specific verb+resource. Distinguishes from siblings like create_forwarding and delete_forwarding.
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 explicit guidance on when to use this vs alternatives like update_alias or update_mailbox. Missing context on prerequisites or scenario-specific usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_identityAIdempotent
Update identity settings. List of dicts with: target, mailbox (required) and any of: domain, name, may_send, may_receive, may_access_imap, may_access_pop3, may_access_managesieve, footer_active, footer_plain_body, footer_html_body.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent, non-destructive, non-read-only. Description adds no extra behavioral context (e.g., side effects, auth needs). The field listing is useful but not behavioral.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence packs a lot of detail. Could be broken into a list for readability, but no unnecessary words. Efficient and 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?
Parameter structure is well described, but missing output schema, return value, error conditions, and prerequisites (e.g., identity must exist). Adequate but not comprehensive.
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 has 0% coverage, but description fully explains the items parameter structure: required keys and optional keys. This is crucial for correct invocation.
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?
Clearly states 'Update identity settings' and lists all modifiable fields, differentiating it from create_identity (new) and delete_identity (removal).
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?
Implies usage for modifying identities but lacks explicit context on when to use vs alternatives like create_identity or when not to use. No exclusion criteria are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_mailboxAIdempotent
Update mailbox settings. List of dicts with: target (required) and any of: name, may_send, may_receive, may_access_imap, may_access_pop3, may_access_managesieve, spam_action, spam_aggressiveness, sender_denylist, sender_allowlist, recipient_denylist.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and non-destructive behavior. The description adds the list of updatable fields but does not disclose whether omitted fields are preserved or reset, nor permissions required. Additional transparency beyond annotations is limited.
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 packs all necessary field information efficiently. It is concise with no redundancy, though slightly dense and lacks visual structure.
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 output schema and a complex input with many fields, the description adequately lists all updatable settings. It is complete for typical use, though it omits return value and error conditions.
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 only defines 'items' as an array of any object, missing all semantic structure. The description fully compensates by specifying that each item is a dict with required 'target' and optional fields, adding essential meaning.
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 'Update mailbox settings' which is a specific verb and resource. It distinguishes itself from sibling tools like create_mailbox, get_mailbox, and delete_mailbox, indicating a clear purpose.
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 such as update_alias or set_autoresponder. It lacks explicit context on use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_rewriteBIdempotent
Update rewrite rule(s). List of dicts with: name (required), and any of: new_name, local_part_rule, destinations, order_num, domain.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint and destructiveHint. The description adds minimal behavioral context (update operation) but does not mention partial updates or requirement for existing rules.
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?
Description is one sentence and efficient. Could be improved with formatting, but no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, and description does not mention return value or error handling. With openWorldHint true, lack of field types is problematic. Incomplete 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 coverage is 0%, so the description lists fields (name, new_name, etc.), which is essential. However, it omits types and constraints for those fields (e.g., string vs array), leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it updates rewrite rules, distinguishing it from create/delete/list siblings. However, it does not explicitly indicate that multiple rules can be updated in one call, which would improve clarity.
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 vs alternatives like create_rewrite or delete_rewrite. No prerequisites or conditions mentioned.
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 targeting specific resources (alias, identity, mailbox, rewrite) with clear CRUD operations. The naming and descriptions make it easy to differentiate between tools like create_alias vs. create_mailbox, and destructive delete operations are explicitly labeled. No overlapping or ambiguous functionality exists.
All tools follow a consistent verb_noun pattern using snake_case throughout (e.g., create_alias, delete_mailbox, list_rewrites). The verbs (create, delete, get, list, reset, set, update) are applied uniformly across resources, making the toolset predictable and easy to navigate.
With 21 tools, the count is slightly high but reasonable for a comprehensive email management server covering four resource types (aliases, identities, mailboxes, rewrites) with full CRUD operations and additional utilities like password reset and autoresponder configuration. It feels well-scoped but could be borderline heavy for some agents.
The toolset provides complete CRUD/lifecycle coverage for all four resource types, including create, get, list, update, and delete operations. Additional tools like reset_mailbox_password and set_autoresponder cover essential administrative functions, leaving no obvious gaps for managing email domains and accounts effectively.
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.
Email for AI agents — send, receive as a webhook, manage domains, templates, routing.
Give AI agents secure access to your email via private aliases with dedicated mailbox storage.
AI agents read & send email, manage mailboxes, domains and webhooks via the QMailing API.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables AI assistants to interact with the Zapmail API through natural language commands for domain management, mailbox operations, and exports to third-party platforms like Reachinbox and Instantly. Provides complete coverage of 46+ Zapmail tools with dynamic API integration and multi-workspace support.100473MIT
- 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 gradedqualityDmaintenanceProvides AI assistants with access to PurelyMail's email management API, enabling user, domain, routing, and billing management through natural language.238MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to connect to any email provider via IMAP/SMTP, supporting account management and email operations like listing, sending, and marking emails.MIT
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/Michaelzag/migadu-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server