Sábado, 25 de julio de 2026  ·  LATAM / Español
ÚLTIMA HORA
Anthropic lanza mejoras en la API de Claude para América Latina  ·  MCP 2026-07-28 ya en release candidate  ·  Claude Sonnet 5 supera benchmarks de coding agéntico  ·  Claude Code alcanza $1B de run-rate en 6 meses  ·  NSA publica guía de seguridad para el protocolo MCP
Hace 45 min →
Intermedio 45 min en total 6 pasos

Cómo hacer que Claude automatice tareas con la API

Construye un agente con Claude que ejecuta herramientas y automatiza tareas reales de principio a fin.

Imagen de portada editorial · Cómo hacer que Claude automatice tareas con la API · Educación · Claude Builders
Requisitos
  • Python 3.9+ instalado
  • Cuenta en console.anthropic.com con crédito
  • API key de Anthropic
  • Conocimientos básicos de Python y APIs REST
Lo que vas a aprender
  • Configurar el SDK de Anthropic y autenticar tu API key
  • Definir herramientas (tools) para que Claude ejecute funciones reales
  • Implementar el bucle agéntico de tool use para automatizar tareas
  • Manejar errores y encadenar varias acciones sin intervención manual
PASO 1 · ~5 min

Instalar el SDK y configurar la API key

El primer paso es preparar tu entorno. Anthropic ofrece un SDK oficial de Python que simplifica las llamadas a la API. Instálalo con pip y guarda tu API key como variable de entorno para no exponerla en el código (buena práctica esencial si vas a subir el proyecto a Git). Crea tu API key en console.anthropic.com dentro de la sección API Keys. En España y LATAM el proceso es idéntico; solo necesitas una tarjeta para añadir crédito. Exporta la clave en tu terminal antes de ejecutar cualquier script. En Windows usa `set` en lugar de `export`. La automatización real empieza cuando Claude puede llamar a funciones de tu código: eso es tool use (o function calling). Pero antes verificamos que la conexión básica funcione con una llamada simple.

bash
pip install anthropic

# En Linux/macOS (España/LATAM)
export ANTHROPIC_API_KEY="sk-ant-tu-clave-aqui"

# En Windows (PowerShell)
# $env:ANTHROPIC_API_KEY="sk-ant-tu-clave-aqui"
ConsejoGuarda la key en un archivo .env y añádelo a .gitignore para no filtrarla nunca en un repositorio público.
Error comúnNo pongas la API key directamente en el código fuente: es el error de seguridad más común y puede generarte cargos si se filtra.
PASO 2 · ~5 min

Verificar la conexión con una llamada simple

Antes de automatizar nada, confirma que el SDK y la key funcionan con una petición mínima. Esto te ahorra depurar problemas de red o autenticación más adelante, cuando el código sea complejo. Usamos el modelo claude-opus-4-8 por defecto. El parámetro `max_tokens` limita la longitud de la respuesta y `messages` contiene el historial de la conversación. Cada mensaje tiene un `role` (user o assistant) y un `content`. Si ves la respuesta impresa en consola, tu entorno está listo. Si recibes un error 401, la key es incorrecta o no está exportada; un 429 significa que has superado el límite de tasa o no tienes crédito.

python
import anthropic

client = anthropic.Anthropic()  # lee ANTHROPIC_API_KEY del entorno

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Responde solo con: conexión OK"}
    ],
)

print(response.content[0].text)
ConsejoSi no pasas api_key al constructor, el SDK la toma automáticamente de la variable de entorno ANTHROPIC_API_KEY.
Error comúnUn error 401 casi siempre significa que olvidaste exportar la variable de entorno en la misma terminal donde ejecutas el script.
PASO 3 · ~8 min

Definir las herramientas que Claude podrá usar

La automatización de tareas se basa en tool use: describes a Claude qué funciones tiene disponibles y él decide cuándo llamarlas. Cada herramienta se define con un nombre, una descripción clara y un esquema JSON de entrada (input_schema). La descripción es crítica: Claude decide cuándo usar cada herramienta basándose en ella, así que sé específico. Aquí definimos dos herramientas de ejemplo: una para consultar el tiempo y otra para guardar una nota en disco. En un caso real conectarías con APIs propias, bases de datos o servicios como Slack o Notion. El `input_schema` sigue el estándar JSON Schema. Marca como `required` los parámetros obligatorios para que Claude no los omita. Cuanto más precisa sea la descripción de cada parámetro, menos errores cometerá el modelo al invocar la función.

python
tools = [
    {
        "name": "consultar_tiempo",
        "description": "Devuelve la temperatura actual de una ciudad española o de LATAM.",
        "input_schema": {
            "type": "object",
            "properties": {
                "ciudad": {"type": "string", "description": "Nombre de la ciudad, p.ej. Madrid"}
            },
            "required": ["ciudad"],
        },
    },
    {
        "name": "guardar_nota",
        "description": "Guarda un texto en un archivo local para registro.",
        "input_schema": {
            "type": "object",
            "properties": {
                "contenido": {"type": "string", "description": "Texto a guardar"}
            },
            "required": ["contenido"],
        },
    },
]
ConsejoEscribe las descripciones como si se las explicaras a un becario: cuanto más contexto, mejor decide Claude qué herramienta usar.
Error comúnSi dos herramientas tienen descripciones ambiguas o solapadas, Claude puede elegir la incorrecta. Diferéncialas con claridad.
PASO 4 · ~8 min

Implementar las funciones reales en Python

Claude no ejecuta código por ti: solo te dice qué función llamar y con qué argumentos. Tú eres responsable de ejecutar la lógica real. Aquí implementamos las funciones que corresponden a las herramientas definidas. Para `consultar_tiempo` simulamos una respuesta, pero en producción harías una petición a una API real como AEMET (España) u OpenWeather. Para `guardar_nota` escribimos en un archivo local. Lo importante es crear un despachador (dispatcher) que reciba el nombre de la herramienta y sus argumentos, y devuelva el resultado como texto. Ese resultado se lo devolveremos a Claude en el siguiente paso para que continúe la tarea. Mantén cada función pequeña y con manejo de errores: si falla, devuelve un mensaje descriptivo en lugar de reventar el programa.

python
import json

def consultar_tiempo(ciudad):
    # En producción: llamada real a AEMET u OpenWeather
    datos = {"Madrid": 28, "Bogotá": 18, "Buenos Aires": 22}
    temp = datos.get(ciudad, 20)
    return f"En {ciudad} hay {temp}°C"

def guardar_nota(contenido):
    with open("notas.txt", "a", encoding="utf-8") as f:
        f.write(contenido + "\n")
    return "Nota guardada correctamente"

def ejecutar_herramienta(nombre, args):
    if nombre == "consultar_tiempo":
        return consultar_tiempo(args["ciudad"])
    if nombre == "guardar_nota":
        return guardar_nota(args["contenido"])
    return f"Herramienta desconocida: {nombre}"
ConsejoEnvuelve cada función en try/except y devuelve el error como texto: Claude puede reintentar o explicar el fallo al usuario.
Error comúnNunca ejecutes código arbitrario que Claude genere sin validarlo. Restringe siempre las acciones a funciones controladas.
PASO 5 · ~10 min

Construir el bucle agéntico de automatización

Aquí está el corazón de la automatización. Cuando Claude decide usar una herramienta, la respuesta tiene `stop_reason == 'tool_use'`. Tú ejecutas la función, le devuelves el resultado, y Claude continúa hasta completar la tarea. Este ciclo se repite hasta que ya no necesita más herramientas. El bucle acumula todos los mensajes (los del usuario, los del assistant y los resultados de las herramientas) para mantener el contexto. Es fundamental enviar el `tool_use_id` correcto en cada resultado para que Claude sepa a qué llamada corresponde. Con este patrón, Claude puede encadenar varias acciones automáticamente: consultar el tiempo, decidir qué escribir y guardar una nota, todo con una sola instrucción tuya. Esto es lo que convierte a Claude en un agente autónomo.

python
messages = [
    {"role": "user", "content": "Consulta el tiempo en Madrid y guarda una nota con el resultado."}
]

while True:
    resp = client.messages.create(
        model="claude-opus-4-8",
        max_tokens=1024,
        tools=tools,
        messages=messages,
    )

    if resp.stop_reason != "tool_use":
        print(resp.content[0].text)
        break

    messages.append({"role": "assistant", "content": resp.content})
    resultados = []
    for bloque in resp.content:
        if bloque.type == "tool_use":
            salida = ejecutar_herramienta(bloque.name, bloque.input)
            resultados.append({
                "type": "tool_result",
                "tool_use_id": bloque.id,
                "content": salida,
            })
    messages.append({"role": "user", "content": resultados})
ConsejoAñade un contador de iteraciones máximas (p.ej. 10) para evitar bucles infinitos si algo sale mal.
Error comúnSi olvidas añadir la respuesta del assistant a `messages` antes de enviar los tool_result, la API devolverá un error de secuencia de mensajes.
PASO 6 · ~9 min

Probar y ampliar tu agente

Ejecuta el script completo. Deberías ver cómo Claude consulta el tiempo, procesa el dato y guarda la nota sin que intervengas entre pasos. Revisa el archivo notas.txt para confirmar que la acción se ejecutó. A partir de aquí, la automatización crece conectando herramientas reales: enviar emails con SMTP, crear tickets en Jira, consultar tu base de datos PostgreSQL o publicar en redes. El patrón es siempre el mismo: describe la herramienta, implementa la función, deja que el bucle agéntico orqueste. Para casos avanzados con muchas integraciones, conviene explorar MCP (Model Context Protocol), el estándar de Anthropic para conectar Claude a fuentes de datos y servicios de forma reutilizable. También puedes añadir logging para auditar cada acción, algo imprescindible en entornos de producción con requisitos de cumplimiento como el RGPD europeo.

python
# Ejemplo de nueva herramienta: enviar email
# Añádela a la lista `tools` y a `ejecutar_herramienta`
import smtplib
from email.message import EmailMessage

def enviar_email(destino, asunto, cuerpo):
    msg = EmailMessage()
    msg["To"] = destino
    msg["Subject"] = asunto
    msg.set_content(cuerpo)
    # Configura tu servidor SMTP real aquí
    return f"Email enviado a {destino}"
ConsejoEmpieza con herramientas de solo lectura antes de dar a Claude acciones que modifican datos o envían mensajes reales.
Error comúnEn producción, valida y registra cada acción destructiva (borrar, enviar, pagar) antes de ejecutarla automáticamente.
Resultado

Has construido un agente funcional con la API de Claude capaz de automatizar tareas encadenando herramientas reales mediante el bucle de tool use. Ahora entiendes cómo definir herramientas, implementar sus funciones y orquestar la ejecución autónoma. Con esta base puedes construir tu primera app con IA que conecte Claude a tus propios servicios, APIs y bases de datos para eliminar trabajo manual repetitivo.

PRÓXIMOS PASOS