Escenario Customer Support Resolution Agent. Un cliente escribe: «¿Dónde está mi pedido 4500012345?». El agente, en lugar de consultar el pedido, llama a get_customer. Lo revisas y las descripciones de las dos herramientas son de una línea: «Obtiene información del cliente» y «Obtiene detalles del pedido». Las dos aceptan identificadores parecidos. Para Claude, son casi la misma herramienta.
Claude no ve tu código ni tu backend. Ve un nombre, una descripción y un esquema. Con eso decide qué llamar, con qué argumentos y qué hacer si algo falla. El dominio 2, Tool Design & MCP Integration (18 %, unas 11 preguntas), va de diseñar bien esa superficie: descripciones, errores, reparto de herramientas entre agentes, configuración de servidores MCP y uso de las herramientas integradas.
Las descripciones son la interfaz (2.1)
La guía lo dice sin rodeos: la descripción es el mecanismo principal que usa el modelo para elegir herramienta. Si es mínima, la selección entre herramientas parecidas será poco fiable. Una buena descripción cuenta qué hace, qué formato de entrada espera, un par de ejemplos de consultas, casos límite y, sobre todo, cuándo usarla frente a la herramienta parecida. Mira la diferencia:
lookup_order Obtiene detalles del pedido.
Claude no sabe si esto o get_customer es lo adecuado cuando le dan un número.
Tres técnicas más que aparecen en los task statements:
- Renombrar para quitar solapes. Si
analyze_contentyanalyze_documentse confunden, renombra la primera a algo específico comoextract_web_resultsy ajusta su descripción al caso web. - Partir herramientas genéricas en herramientas con contrato claro: un
analyze_documentque lo hace todo se convierte enextract_data_points,summarize_contentyverify_claim_against_source. - Revisar el prompt del sistema. Una instrucción del tipo «ante cualquier duda sobre cuentas, consulta al cliente» puede crear una asociación por palabra clave que tapa descripciones bien escritas.
Errores que ayudan a decidir (2.2)
Un error genérico («Operation failed») deja al agente sin saber si reintentar, pedir otro dato o explicar algo al cliente. En MCP, una herramienta comunica que ha fallado con la marca isError en su resultado. Lo que la guía añade es metadatos estructurados en ese error: una categoría, si es reintentable y una explicación legible.
Timeout, servicio caído
Reintentable. El agente (o el subagente, localmente) puede volver a intentarlo. Si no se resuelve, propaga el error con lo que intentó y los resultados parciales.
Entrada incorrecta
No sirve repetir lo mismo. Hay que corregir el argumento: pedir al cliente el dato bien escrito o ajustar el formato.
Viola una política
No reintentable. Incluye una explicación apta para el cliente, por ejemplo que el plazo de devolución terminó, para que el agente la comunique bien.
Sin autorización
No reintentable por el agente. Suele llevar a escalar o a otro camino, no a insistir.
Un resultado de error bien construido se parece a esto (el formato exacto de los campos es tuyo; lo que cuenta es que el agente pueda decidir):
{
"isError": true,
"content": [{ "type": "text", "text": "{\"errorCategory\": \"business\", \"isRetryable\": false, \"message\": \"El plazo de devolución de 30 días terminó el 12 de septiembre\"}" }]
}
Y una distinción que el examen repite en los dominios 2 y 5: un fallo de acceso no es un resultado vacío. «No he podido consultar» y «he consultado y no hay coincidencias» son cosas distintas. Si devuelves un vacío como éxito cuando en realidad hubo timeout, el agente concluirá algo falso.
Cuántas herramientas y para quién (2.3)
Más herramientas no es mejor. La guía pone el ejemplo de un agente con 18 herramientas frente a uno con 4 o 5: cuantas más opciones, peor elige. Y un agente con herramientas fuera de su especialidad tiende a usarlas mal, como un subagente de síntesis que se pone a buscar en la web.
- Restringe por rol. Cada subagente, solo lo que necesita.
- Sustituye lo genérico por lo acotado. Mejor un
load_documentque valida que la URL es un documento que unfetch_urlabierto a cualquier cosa. - Herramientas cruzadas con alcance limitado. Si síntesis necesita verificar datos simples muy a menudo, dale un
verify_factacotado para ese caso frecuente y deja lo complejo al coordinador.
Aquí entra tool_choice, que en la API admite auto (Claude decide si llama a una herramienta; es el valor por defecto con herramientas), any (tiene que llamar a alguna, la que elija), una herramienta concreta por nombre (tiene que llamar a esa) y none. La guía usa any para garantizar que el modelo llame a una herramienta en vez de contestar con texto, y el forzado por nombre para asegurar que un paso, como extract_metadata, va primero.
Ojo con un matiz de hoy: según la documentación de la API, Claude Opus 5.5, Sonnet 5.5 y Fable 5.1 rechazan con un error 400 el uso forzado (any o una herramienta concreta). En esos modelos la alternativa es auto con strict tool use para garantizar entradas válidas, o structured outputs si necesitas una respuesta con forma JSON fija. Haiku 5.5 sí lo admite, aunque entonces llama a la herramienta sin pensar antes. Para el examen, sabe qué hace cada opción de tool_choice, tal como la describe la guía; para tus proyectos, comprueba qué admite el modelo que uses.
Escenario Multi-Agent Research System. El subagente de síntesis tiene acceso a las 14 herramientas del sistema y a menudo lanza búsquedas web por su cuenta, duplicando trabajo y saltándose al coordinador. ¿Qué haces primero?
MCP en Claude Code y en tus agentes (2.4)
Un servidor MCP expone herramientas (acciones) y recursos (contenido que se puede leer). Cuando Claude Code o tu agente se conecta a varios servidores, descubre las herramientas de todos al conectar y las tiene disponibles a la vez.
La configuración en Claude Code tiene alcances distintos, y el examen pregunta cuál usar:
Proyecto · .mcp.json
en la raíz del repositorio
- Se versiona: todo el equipo lo recibe al clonar
- Para herramientas compartidas: Jira, GitHub, la base de datos de desarrollo
- Credenciales con variables de entorno: `${GITHUB_TOKEN}`, nunca el secreto en el fichero
- Se crea con `claude mcp add --scope project`
Usuario · ~/.claude.json
en tu directorio personal
- Solo para ti, no se comparte por Git
- Para servidores personales o experimentales
- Con `--scope user` vale en todos tus proyectos
- Con el alcance local (el de por defecto) vale solo en el proyecto actual
Los dos conviven: los servidores del proyecto y los tuyos están disponibles a la vez en la misma sesión.
Un .mcp.json de equipo, con el secreto fuera del fichero (${VAR} toma el valor de la variable de entorno y ${VAR:-valor} añade uno por defecto):
{
"mcpServers": {
"incidencias": {
"type": "http",
"url": "${INCIDENCIAS_URL:-https://mcp.ejemplo.interno}/mcp",
"headers": { "Authorization": "Bearer ${INCIDENCIAS_TOKEN}" }
}
}
}
Más criterios de la guía para este task statement:
- Usa servidores de la comunidad para integraciones estándar (Jira, por ejemplo) y reserva los servidores propios para flujos específicos del equipo. En SAP es igual: antes de escribir un servidor que envuelva una API OData publicada, mira si ya existe uno mantenido y avalado; y usa siempre las vías oficiales (tienes más en Claude y SAP y Conexiones).
- Describe bien las herramientas MCP. Si la descripción es pobre, el agente preferirá una herramienta integrada como Grep aunque la MCP sea más capaz.
- Expón catálogos como recursos. Un índice de incidencias, la jerarquía de la documentación o el esquema de una base de datos como recurso MCP dan visibilidad al agente sin que tenga que hacer llamadas exploratorias.
En el Agent SDK, las herramientas MCP se nombran mcp__<servidor>__<herramienta>: un process_refund en un servidor llamado soporte es mcp__soporte__process_refund. Ese es el nombre que usas en listas de herramientas permitidas y en los matchers de los hooks.
Las herramientas integradas: cada una a lo suyo (2.5)
El escenario Developer Productivity with Claude gira alrededor de las herramientas integradas. El examen espera que sepas elegir la adecuada sin dudar:
Grep · Buscar en el contenido
Busca patrones dentro de los archivos: todas las llamadas a una función, un mensaje de error, un import. Es el punto de entrada para entender un código desconocido.
Pulsa cada una. La pregunta típica es Grep frente a Glob, y qué hacer cuando Edit falla.
Dos hábitos que la guía considera buena práctica: construir el entendimiento de forma incremental (Grep para encontrar la entrada, Read para seguir el hilo) en lugar de leer todos los archivos al principio, y, para rastrear el uso de funciones a través de módulos que las reexportan, listar primero todos los nombres exportados y luego buscar cada uno.
Para el examen
Dominio · Dominio 2 · Tool Design & MCP Integration (18 %)
Lo que tienes que dominar
- La descripción es lo que usa Claude para elegir: formato de entrada, ejemplos, límites y cuándo usar esta frente a la parecida.
- Solapes: renombrar y reescribir; herramientas genéricas: partirlas con contratos claros.
- Errores con
isErrory metadatos: categoría, si es reintentable y mensaje legible. Fallo de acceso no es resultado vacío. - Pocas herramientas por agente y ajustadas a su rol; herramientas cruzadas acotadas para lo frecuente.
tool_choice:auto,anyy forzado por nombre (en la doc actual, Opus 5.5, Sonnet 5.5 y Fable 5.1 no admiten el forzado)..mcp.jsonpara el equipo con${VARIABLES};~/.claude.jsonpara lo personal; todos los servidores a la vez.- Recursos MCP para catálogos; Grep para contenido, Glob para rutas, Read y Write si Edit no encuentra ancla única.
Donde se suele fallar
- Responder «más ejemplos few-shot» o «una capa de enrutado» cuando el problema es una descripción mínima.
- Fusionar herramientas en una genérica como primera medida.
- Devolver «Operation failed» para todo, o un vacío como éxito tras un timeout.
- Dar a un subagente todas las herramientas por si acaso.
- Poner un token en
.mcp.jsono configurar en~/.claude.jsonalgo que debe tener todo el equipo.
Checklist para el examen
0 de 7 dominadosMarca lo que ya sabrías responder en el examen.
Ponte a prueba
Tipo test
6 preguntas sobre esta lección. Responde una a una; verás las soluciones al terminar.
Siguiente paso
Próxima lección: Workflows con Claude Code: CLAUDE.md, reglas por rutas, commands y skills, plan mode y CI/CD (dominio 3).