Renderz Studio
Academia
Proyectos
Servicios
Arsenal
Repo
Herramientas
Skills
El Oráculo
Guía Gratis
← El Arsenal
DesarrolloAvanzado35 min

Function Calling & Tool Use Avanzado

Schemas · Validación · Chains · el poder real de Claude

ToolsFunctionsSchemas
✓ Guía gratuita · Acceso completo

Mapa rápido · salta al paso que te interese

Anatomía de un Tool

Schema JSON + handler

Patterns avanzados

Chains, validación, retry

Tools de producción

5 tools que vas a usar siempre

01

Anatomía de un Tool: Schema JSON + Handler

Un tool tiene 2 partes: el schema que le dice a Claude qué puede hacer, y el handler que ejecuta la acción. Claude lee el schema, decide cuándo usarlo, y te pasa los argumentos.

Estructura de un tool
// El schema le dice a Claude qué hace el tool y qué parámetros acepta
const tool: Anthropic.Tool = {
  name: 'send_email',
  description: 'Envía un email a un destinatario. Usar solo cuando el usuario pida explícitamente enviar un email.',
  input_schema: {
    type: 'object',
    properties: {
      to: {
        type: 'string',
        format: 'email',
        description: 'Email del destinatario',
      },
      subject: {
        type: 'string',
        maxLength: 200,
        description: 'Asunto del email (max 200 chars)',
      },
      body: {
        type: 'string',
        description: 'Contenido del email en texto plano o HTML',
      },
      priority: {
        type: 'string',
        enum: ['low', 'normal', 'high'],
        default: 'normal',
        description: 'Prioridad del email',
      },
    },
    required: ['to', 'subject', 'body'],
  },
}

// El handler ejecuta la acción
async function handleSendEmail(args: {
  to: string
  subject: string
  body: string
  priority?: string
}): Promise<string> {
  const result = await resend.emails.send({
    from: 'noreply@example.com',
    to: args.to,
    subject: args.subject,
    html: args.body,
  })

  return JSON.stringify({ success: true, id: result.id })
}
Campo del SchemaQué haceTip
nameIdentificador único del toolsnake_case, descriptivo
descriptionLe dice a Claude cuándo usarloIncluí restricciones aquí
input_schemaJSON Schema de los parámetrosUsa descriptions en cada property
requiredParámetros obligatoriosMenos = más flexible

⚠ Advertencia

La description es crítica. Claude decide si usar el tool basándose en la description. Si es vaga, lo va a usar mal. Si es muy específica, no lo va a usar cuando debería.
02

Patterns avanzados

Patterns que hacen la diferencia entre tools que funcionan y tools de producción.

Claude puede llamar múltiples tools en secuencia. El loop sigue hasta que Claude termina.

Agentic loop
async function agentLoop(prompt: string, tools: Anthropic.Tool[]): Promise<string> {
  let messages: Anthropic.MessageParam[] = [
    { role: 'user', content: prompt }
  ]

  while (true) {
    const response = await anthropic.messages.create({
      model: 'claude-sonnet-4-20250514',
      max_tokens: 4096,
      tools,
      messages,
    })

    // Si Claude terminó, devolver el resultado
    if (response.stop_reason === 'end_turn') {
      const text = response.content.find(c => c.type === 'text')
      return text?.text || ''
    }

    // Si Claude quiere usar tools, ejecutarlos
    if (response.stop_reason === 'tool_use') {
      const toolCalls = response.content.filter(c => c.type === 'tool_use')

      // Ejecutar todos los tools en paralelo
      const results = await Promise.all(
        toolCalls.map(async (tc) => ({
          type: 'tool_result' as const,
          tool_use_id: tc.id,
          content: await executeToolCall(tc.name, tc.input),
        }))
      )

      // Agregar la respuesta de Claude y los resultados
      messages.push({ role: 'assistant', content: response.content })
      messages.push({ role: 'user', content: results })
    }
  }
}
03

5 Tools de producción

Tools que vas a usar en casi cualquier proyecto.

{
  name: 'web_search',
  description: 'Busca información actualizada en internet',
  input_schema: {
    type: 'object',
    properties: {
      query: { type: 'string', description: 'Query de búsqueda' },
      num_results: { type: 'number', default: 5, maximum: 10 },
    },
    required: ['query'],
  },
}

"Function calling convierte a Claude de un chatbot en un agente. Sin tools, Claude solo habla. Con tools, Claude hace. La diferencia es abismal."

— El Arsenal, Renderz Studio

Guías relacionadas

MCP Servers

La evolución de tool use

Agentes Autónomos

Tools en acción

¿Quieres el sistema completo?

500+ páginas, 25 capítulos, código de producción, acceso a todas las guías del Arsenal.

Curso Completo · €29

PayPal · Acceso inmediato

¿Hablamos?