Instalación

npm install @anthropic-ai/claude-agent-sdk

Funciones

query()

La función principal para interactuar con Claude Code. Crea un generador asincrónico que transmite mensajes a medida que llegan.
function query({
  prompt,
  options
}: {
  prompt: string | AsyncIterable<SDKUserMessage>;
  options?: Options;
}): Query

Parámetros

ParámetroTipoDescripción
promptstring | AsyncIterable<SDKUserMessage>El mensaje de entrada como una cadena o iterable asincrónico para modo de transmisión
optionsOptionsObjeto de configuración opcional (ver tipo Options a continuación)

Devuelve

Devuelve un objeto Query que extiende AsyncGenerator<SDKMessage, void> con métodos adicionales.

tool()

Crea una definición de herramienta MCP segura de tipos para usar con servidores MCP del SDK.
function tool<Schema extends ZodRawShape>(
  name: string,
  description: string,
  inputSchema: Schema,
  handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
): SdkMcpToolDefinition<Schema>

Parámetros

ParámetroTipoDescripción
namestringEl nombre de la herramienta
descriptionstringUna descripción de lo que hace la herramienta
inputSchemaSchema extends ZodRawShapeEsquema Zod que define los parámetros de entrada de la herramienta
handler(args, extra) => Promise<CallToolResult>Función asincrónica que ejecuta la lógica de la herramienta

createSdkMcpServer()

Crea una instancia de servidor MCP que se ejecuta en el mismo proceso que tu aplicación.
function createSdkMcpServer(options: {
  name: string;
  version?: string;
  tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance

Parámetros

ParámetroTipoDescripción
options.namestringEl nombre del servidor MCP
options.versionstringCadena de versión opcional
options.toolsArray<SdkMcpToolDefinition>Matriz de definiciones de herramientas creadas con tool()

Tipos

Options

Objeto de configuración para la función query().
PropiedadTipoPredeterminadoDescripción
abortControllerAbortControllernew AbortController()Controlador para cancelar operaciones
additionalDirectoriesstring[][]Directorios adicionales a los que Claude puede acceder
agentsRecord<string, [AgentDefinition](#agentdefinition)>undefinedDefinir suagentes programáticamente
allowedToolsstring[]Todas las herramientasLista de nombres de herramientas permitidas
canUseToolCanUseToolundefinedFunción de permiso personalizada para el uso de herramientas
continuebooleanfalseContinuar la conversación más reciente
cwdstringprocess.cwd()Directorio de trabajo actual
disallowedToolsstring[][]Lista de nombres de herramientas no permitidas
envDict<string>process.envVariables de entorno
executable'bun' | 'deno' | 'node'Detectado automáticamenteTiempo de ejecución de JavaScript a usar
executableArgsstring[][]Argumentos a pasar al ejecutable
extraArgsRecord<string, string | null>{}Argumentos adicionales
fallbackModelstringundefinedModelo a usar si el principal falla
forkSessionbooleanfalseAl reanudar con resume, bifurcar a un nuevo ID de sesión en lugar de continuar la sesión original
hooksPartial<Record<HookEvent, HookCallbackMatcher[]>>{}Devoluciones de llamada de gancho para eventos
includePartialMessagesbooleanfalseIncluir eventos de mensajes parciales
maxThinkingTokensnumberundefinedTokens máximos para el proceso de pensamiento
maxTurnsnumberundefinedTurnos de conversación máximos
mcpServersRecord<string, [McpServerConfig](#mcpserverconfig)>{}Configuraciones de servidor MCP
modelstringPredeterminado de CLIModelo Claude a usar
pathToClaudeCodeExecutablestringDetectado automáticamenteRuta al ejecutable de Claude Code
permissionModePermissionMode'default'Modo de permiso para la sesión
permissionPromptToolNamestringundefinedNombre de herramienta MCP para mensajes de permiso
pluginsSdkPluginConfig[][]Cargar complementos personalizados desde rutas locales. Ver Complementos para detalles
resumestringundefinedID de sesión a reanudar
settingSourcesSettingSource[][] (sin configuración)Controlar qué configuración del sistema de archivos cargar. Cuando se omite, no se carga ninguna configuración. Nota: Debe incluir 'project' para cargar archivos CLAUDE.md
stderr(data: string) => voidundefinedDevolución de llamada para salida de stderr
strictMcpConfigbooleanfalseAplicar validación MCP estricta
systemPromptstring | { type: 'preset'; preset: 'claude_code'; append?: string }undefined (mensaje vacío)Configuración del mensaje del sistema. Pasar una cadena para un mensaje personalizado, o { type: 'preset', preset: 'claude_code' } para usar el mensaje del sistema de Claude Code. Al usar la forma de objeto preestablecido, agregue append para extender el mensaje del sistema con instrucciones adicionales

Query

Interfaz devuelta por la función query().
interface Query extends AsyncGenerator<SDKMessage, void> {
  interrupt(): Promise<void>;
  setPermissionMode(mode: PermissionMode): Promise<void>;
}

Métodos

MétodoDescripción
interrupt()Interrumpe la consulta (solo disponible en modo de entrada de transmisión)
setPermissionMode()Cambia el modo de permiso (solo disponible en modo de entrada de transmisión)

AgentDefinition

Configuración para un suagente definido programáticamente.
type AgentDefinition = {
  description: string;
  tools?: string[];
  prompt: string;
  model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}
CampoRequeridoDescripción
descriptionDescripción en lenguaje natural de cuándo usar este agente
toolsNoMatriz de nombres de herramientas permitidas. Si se omite, hereda todas las herramientas
promptEl mensaje del sistema del agente
modelNoAnulación de modelo para este agente. Si se omite, usa el modelo principal

SettingSource

Controla qué fuentes de configuración basadas en el sistema de archivos carga el SDK.
type SettingSource = 'user' | 'project' | 'local';
ValorDescripciónUbicación
'user'Configuración global del usuario~/.claude/settings.json
'project'Configuración compartida del proyecto (controlada por versión).claude/settings.json
'local'Configuración local del proyecto (ignorada por git).claude/settings.local.json

Comportamiento predeterminado

Cuando settingSources está omitido o indefinido, el SDK no carga ninguna configuración del sistema de archivos. Esto proporciona aislamiento para aplicaciones SDK.

¿Por qué usar settingSources?

Cargar toda la configuración del sistema de archivos (comportamiento heredado):
// Cargar toda la configuración como lo hizo SDK v0.0.x
const result = query({
  prompt: "Analiza este código",
  options: {
    settingSources: ['user', 'project', 'local']  // Cargar toda la configuración
  }
});
Cargar solo fuentes de configuración específicas:
// Cargar solo configuración del proyecto, ignorar usuario y local
const result = query({
  prompt: "Ejecutar verificaciones de CI",
  options: {
    settingSources: ['project']  // Solo .claude/settings.json
  }
});
Entornos de prueba e integración continua:
// Garantizar comportamiento consistente en CI excluyendo configuración local
const result = query({
  prompt: "Ejecutar pruebas",
  options: {
    settingSources: ['project'],  // Solo configuración compartida del equipo
    permissionMode: 'bypassPermissions'
  }
});
Aplicaciones solo SDK:
// Definir todo programáticamente (comportamiento predeterminado)
// Sin dependencias del sistema de archivos - settingSources predeterminado a []
const result = query({
  prompt: "Revisar este PR",
  options: {
    // settingSources: [] es el predeterminado, no es necesario especificar
    agents: { /* ... */ },
    mcpServers: { /* ... */ },
    allowedTools: ['Read', 'Grep', 'Glob']
  }
});
Cargar instrucciones del proyecto CLAUDE.md:
// Cargar configuración del proyecto para incluir archivos CLAUDE.md
const result = query({
  prompt: "Agregar una nueva característica siguiendo las convenciones del proyecto",
  options: {
    systemPrompt: {
      type: 'preset',
      preset: 'claude_code'  // Requerido para usar CLAUDE.md
    },
    settingSources: ['project'],  // Carga CLAUDE.md desde el directorio del proyecto
    allowedTools: ['Read', 'Write', 'Edit']
  }
});

Precedencia de configuración

Cuando se cargan múltiples fuentes, la configuración se fusiona con esta precedencia (mayor a menor):
  1. Configuración local (.claude/settings.local.json)
  2. Configuración del proyecto (.claude/settings.json)
  3. Configuración del usuario (~/.claude/settings.json)
Las opciones programáticas (como agents, allowedTools) siempre anulan la configuración del sistema de archivos.

PermissionMode

type PermissionMode =
  | 'default'           // Comportamiento de permiso estándar
  | 'acceptEdits'       // Aceptar automáticamente ediciones de archivos
  | 'bypassPermissions' // Omitir todas las verificaciones de permiso
  | 'plan'              // Modo de planificación - sin ejecución

CanUseTool

Tipo de función de permiso personalizado para controlar el uso de herramientas.
type CanUseTool = (
  toolName: string,
  input: ToolInput,
  options: {
    signal: AbortSignal;
    suggestions?: PermissionUpdate[];
  }
) => Promise<PermissionResult>;

PermissionResult

Resultado de una verificación de permiso.
type PermissionResult = 
  | {
      behavior: 'allow';
      updatedInput: ToolInput;
      updatedPermissions?: PermissionUpdate[];
    }
  | {
      behavior: 'deny';
      message: string;
      interrupt?: boolean;
    }

McpServerConfig

Configuración para servidores MCP.
type McpServerConfig = 
  | McpStdioServerConfig
  | McpSSEServerConfig
  | McpHttpServerConfig
  | McpSdkServerConfigWithInstance;

McpStdioServerConfig

type McpStdioServerConfig = {
  type?: 'stdio';
  command: string;
  args?: string[];
  env?: Record<string, string>;
}

McpSSEServerConfig

type McpSSEServerConfig = {
  type: 'sse';
  url: string;
  headers?: Record<string, string>;
}

McpHttpServerConfig

type McpHttpServerConfig = {
  type: 'http';
  url: string;
  headers?: Record<string, string>;
}

McpSdkServerConfigWithInstance

type McpSdkServerConfigWithInstance = {
  type: 'sdk';
  name: string;
  instance: McpServer;
}

SdkPluginConfig

Configuración para cargar complementos en el SDK.
type SdkPluginConfig = {
  type: 'local';
  path: string;
}
CampoTipoDescripción
type'local'Debe ser 'local' (actualmente solo se admiten complementos locales)
pathstringRuta absoluta o relativa al directorio del complemento
Ejemplo:
plugins: [
  { type: 'local', path: './my-plugin' },
  { type: 'local', path: '/absolute/path/to/plugin' }
]
Para información completa sobre cómo crear y usar complementos, ver Complementos.

Tipos de Mensaje

SDKMessage

Tipo de unión de todos los mensajes posibles devueltos por la consulta.
type SDKMessage = 
  | SDKAssistantMessage
  | SDKUserMessage
  | SDKUserMessageReplay
  | SDKResultMessage
  | SDKSystemMessage
  | SDKPartialAssistantMessage
  | SDKCompactBoundaryMessage;

SDKAssistantMessage

Mensaje de respuesta del asistente.
type SDKAssistantMessage = {
  type: 'assistant';
  uuid: UUID;
  session_id: string;
  message: APIAssistantMessage; // Del SDK de Anthropic
  parent_tool_use_id: string | null;
}

SDKUserMessage

Mensaje de entrada del usuario.
type SDKUserMessage = {
  type: 'user';
  uuid?: UUID;
  session_id: string;
  message: APIUserMessage; // Del SDK de Anthropic
  parent_tool_use_id: string | null;
}

SDKUserMessageReplay

Mensaje de usuario reproducido con UUID requerido.
type SDKUserMessageReplay = {
  type: 'user';
  uuid: UUID;
  session_id: string;
  message: APIUserMessage;
  parent_tool_use_id: string | null;
}

SDKResultMessage

Mensaje de resultado final.
type SDKResultMessage = 
  | {
      type: 'result';
      subtype: 'success';
      uuid: UUID;
      session_id: string;
      duration_ms: number;
      duration_api_ms: number;
      is_error: boolean;
      num_turns: number;
      result: string;
      total_cost_usd: number;
      usage: NonNullableUsage;
      permission_denials: SDKPermissionDenial[];
    }
  | {
      type: 'result';
      subtype: 'error_max_turns' | 'error_during_execution';
      uuid: UUID;
      session_id: string;
      duration_ms: number;
      duration_api_ms: number;
      is_error: boolean;
      num_turns: number;
      total_cost_usd: number;
      usage: NonNullableUsage;
      permission_denials: SDKPermissionDenial[];
    }

SDKSystemMessage

Mensaje de inicialización del sistema.
type SDKSystemMessage = {
  type: 'system';
  subtype: 'init';
  uuid: UUID;
  session_id: string;
  apiKeySource: ApiKeySource;
  cwd: string;
  tools: string[];
  mcp_servers: {
    name: string;
    status: string;
  }[];
  model: string;
  permissionMode: PermissionMode;
  slash_commands: string[];
  output_style: string;
}

SDKPartialAssistantMessage

Mensaje parcial de transmisión (solo cuando includePartialMessages es verdadero).
type SDKPartialAssistantMessage = {
  type: 'stream_event';
  event: RawMessageStreamEvent; // Del SDK de Anthropic
  parent_tool_use_id: string | null;
  uuid: UUID;
  session_id: string;
}

SDKCompactBoundaryMessage

Mensaje que indica un límite de compactación de conversación.
type SDKCompactBoundaryMessage = {
  type: 'system';
  subtype: 'compact_boundary';
  uuid: UUID;
  session_id: string;
  compact_metadata: {
    trigger: 'manual' | 'auto';
    pre_tokens: number;
  };
}

SDKPermissionDenial

Información sobre un uso de herramienta denegado.
type SDKPermissionDenial = {
  tool_name: string;
  tool_use_id: string;
  tool_input: ToolInput;
}

Tipos de Gancho

HookEvent

Eventos de gancho disponibles.
type HookEvent = 
  | 'PreToolUse'
  | 'PostToolUse'
  | 'Notification'
  | 'UserPromptSubmit'
  | 'SessionStart'
  | 'SessionEnd'
  | 'Stop'
  | 'SubagentStop'
  | 'PreCompact';

HookCallback

Tipo de función de devolución de llamada de gancho.
type HookCallback = (
  input: HookInput, // Unión de todos los tipos de entrada de gancho
  toolUseID: string | undefined,
  options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;

HookCallbackMatcher

Configuración de gancho con coincidencia opcional.
interface HookCallbackMatcher {
  matcher?: string;
  hooks: HookCallback[];
}

HookInput

Tipo de unión de todos los tipos de entrada de gancho.
type HookInput = 
  | PreToolUseHookInput
  | PostToolUseHookInput
  | NotificationHookInput
  | UserPromptSubmitHookInput
  | SessionStartHookInput
  | SessionEndHookInput
  | StopHookInput
  | SubagentStopHookInput
  | PreCompactHookInput;

BaseHookInput

Interfaz base que todos los tipos de entrada de gancho extienden.
type BaseHookInput = {
  session_id: string;
  transcript_path: string;
  cwd: string;
  permission_mode?: string;
}

PreToolUseHookInput

type PreToolUseHookInput = BaseHookInput & {
  hook_event_name: 'PreToolUse';
  tool_name: string;
  tool_input: ToolInput;
}

PostToolUseHookInput

type PostToolUseHookInput = BaseHookInput & {
  hook_event_name: 'PostToolUse';
  tool_name: string;
  tool_input: ToolInput;
  tool_response: ToolOutput;
}

NotificationHookInput

type NotificationHookInput = BaseHookInput & {
  hook_event_name: 'Notification';
  message: string;
  title?: string;
}

UserPromptSubmitHookInput

type UserPromptSubmitHookInput = BaseHookInput & {
  hook_event_name: 'UserPromptSubmit';
  prompt: string;
}

SessionStartHookInput

type SessionStartHookInput = BaseHookInput & {
  hook_event_name: 'SessionStart';
  source: 'startup' | 'resume' | 'clear' | 'compact';
}

SessionEndHookInput

type SessionEndHookInput = BaseHookInput & {
  hook_event_name: 'SessionEnd';
  reason: 'clear' | 'logout' | 'prompt_input_exit' | 'other';
}

StopHookInput

type StopHookInput = BaseHookInput & {
  hook_event_name: 'Stop';
  stop_hook_active: boolean;
}

SubagentStopHookInput

type SubagentStopHookInput = BaseHookInput & {
  hook_event_name: 'SubagentStop';
  stop_hook_active: boolean;
}

PreCompactHookInput

type PreCompactHookInput = BaseHookInput & {
  hook_event_name: 'PreCompact';
  trigger: 'manual' | 'auto';
  custom_instructions: string | null;
}

HookJSONOutput

Valor de retorno del gancho.
type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;

AsyncHookJSONOutput

type AsyncHookJSONOutput = {
  async: true;
  asyncTimeout?: number;
}

SyncHookJSONOutput

type SyncHookJSONOutput = {
  continue?: boolean;
  suppressOutput?: boolean;
  stopReason?: string;
  decision?: 'approve' | 'block';
  systemMessage?: string;
  reason?: string;
  hookSpecificOutput?:
    | {
        hookEventName: 'PreToolUse';
        permissionDecision?: 'allow' | 'deny' | 'ask';
        permissionDecisionReason?: string;
      }
    | {
        hookEventName: 'UserPromptSubmit';
        additionalContext?: string;
      }
    | {
        hookEventName: 'SessionStart';
        additionalContext?: string;
      }
    | {
        hookEventName: 'PostToolUse';
        additionalContext?: string;
      };
}

Tipos de Entrada de Herramienta

Documentación de esquemas de entrada para todas las herramientas integradas de Claude Code. Estos tipos se exportan desde @anthropic-ai/claude-agent-sdk y se pueden usar para interacciones de herramientas seguras de tipos.

ToolInput

Nota: Este es un tipo de solo documentación para claridad. Representa la unión de todos los tipos de entrada de herramienta.
type ToolInput = 
  | AgentInput
  | BashInput
  | BashOutputInput
  | FileEditInput
  | FileReadInput
  | FileWriteInput
  | GlobInput
  | GrepInput
  | KillShellInput
  | NotebookEditInput
  | WebFetchInput
  | WebSearchInput
  | TodoWriteInput
  | ExitPlanModeInput
  | ListMcpResourcesInput
  | ReadMcpResourceInput;

Tarea

Nombre de herramienta: Task
interface AgentInput {
  /**
   * Una descripción breve (3-5 palabras) de la tarea
   */
  description: string;
  /**
   * La tarea que el agente debe realizar
   */
  prompt: string;
  /**
   * El tipo de agente especializado a usar para esta tarea
   */
  subagent_type: string;
}
Lanza un nuevo agente para manejar tareas complejas y multietapa de forma autónoma.

Bash

Nombre de herramienta: Bash
interface BashInput {
  /**
   * El comando a ejecutar
   */
  command: string;
  /**
   * Tiempo de espera opcional en milisegundos (máximo 600000)
   */
  timeout?: number;
  /**
   * Descripción clara y concisa de lo que hace este comando en 5-10 palabras
   */
  description?: string;
  /**
   * Establecer en verdadero para ejecutar este comando en segundo plano
   */
  run_in_background?: boolean;
}
Ejecuta comandos bash en una sesión de shell persistente con tiempo de espera opcional y ejecución en segundo plano.

BashOutput

Nombre de herramienta: BashOutput
interface BashOutputInput {
  /**
   * El ID del shell en segundo plano del que recuperar la salida
   */
  bash_id: string;
  /**
   * Expresión regular opcional para filtrar líneas de salida
   */
  filter?: string;
}
Recupera la salida de un shell bash en segundo plano en ejecución o completado.

Editar

Nombre de herramienta: Edit
interface FileEditInput {
  /**
   * La ruta absoluta al archivo a modificar
   */
  file_path: string;
  /**
   * El texto a reemplazar
   */
  old_string: string;
  /**
   * El texto para reemplazarlo (debe ser diferente de old_string)
   */
  new_string: string;
  /**
   * Reemplazar todas las ocurrencias de old_string (predeterminado falso)
   */
  replace_all?: boolean;
}
Realiza reemplazos de cadenas exactas en archivos.

Leer

Nombre de herramienta: Read
interface FileReadInput {
  /**
   * La ruta absoluta al archivo a leer
   */
  file_path: string;
  /**
   * El número de línea desde el que comenzar a leer
   */
  offset?: number;
  /**
   * El número de líneas a leer
   */
  limit?: number;
}
Lee archivos del sistema de archivos local, incluyendo texto, imágenes, PDFs y cuadernos Jupyter.

Escribir

Nombre de herramienta: Write
interface FileWriteInput {
  /**
   * La ruta absoluta al archivo a escribir
   */
  file_path: string;
  /**
   * El contenido a escribir en el archivo
   */
  content: string;
}
Escribe un archivo en el sistema de archivos local, sobrescribiendo si existe.

Glob

Nombre de herramienta: Glob
interface GlobInput {
  /**
   * El patrón glob para coincidir archivos
   */
  pattern: string;
  /**
   * El directorio a buscar (predeterminado a cwd)
   */
  path?: string;
}
Coincidencia rápida de patrones de archivo que funciona con cualquier tamaño de base de código.

Grep

Nombre de herramienta: Grep
interface GrepInput {
  /**
   * El patrón de expresión regular a buscar
   */
  pattern: string;
  /**
   * Archivo o directorio a buscar (predeterminado a cwd)
   */
  path?: string;
  /**
   * Patrón glob para filtrar archivos (p. ej. "*.js")
   */
  glob?: string;
  /**
   * Tipo de archivo a buscar (p. ej. "js", "py", "rust")
   */
  type?: string;
  /**
   * Modo de salida: "content", "files_with_matches", o "count"
   */
  output_mode?: 'content' | 'files_with_matches' | 'count';
  /**
   * Búsqueda sin distinción de mayúsculas y minúsculas
   */
  '-i'?: boolean;
  /**
   * Mostrar números de línea (para modo de contenido)
   */
  '-n'?: boolean;
  /**
   * Líneas a mostrar antes de cada coincidencia
   */
  '-B'?: number;
  /**
   * Líneas a mostrar después de cada coincidencia
   */
  '-A'?: number;
  /**
   * Líneas a mostrar antes y después de cada coincidencia
   */
  '-C'?: number;
  /**
   * Limitar la salida a las primeras N líneas/entradas
   */
  head_limit?: number;
  /**
   * Habilitar modo multilínea
   */
  multiline?: boolean;
}
Herramienta de búsqueda potente construida en ripgrep con soporte de expresiones regulares.

KillBash

Nombre de herramienta: KillBash
interface KillShellInput {
  /**
   * El ID del shell en segundo plano a matar
   */
  shell_id: string;
}
Mata un shell bash en segundo plano en ejecución por su ID.

NotebookEdit

Nombre de herramienta: NotebookEdit
interface NotebookEditInput {
  /**
   * La ruta absoluta al archivo del cuaderno Jupyter
   */
  notebook_path: string;
  /**
   * El ID de la celda a editar
   */
  cell_id?: string;
  /**
   * La nueva fuente para la celda
   */
  new_source: string;
  /**
   * El tipo de la celda (código o markdown)
   */
  cell_type?: 'code' | 'markdown';
  /**
   * El tipo de edición (reemplazar, insertar, eliminar)
   */
  edit_mode?: 'replace' | 'insert' | 'delete';
}
Edita celdas en archivos de cuaderno Jupyter.

WebFetch

Nombre de herramienta: WebFetch
interface WebFetchInput {
  /**
   * La URL de la que obtener contenido
   */
  url: string;
  /**
   * El mensaje a ejecutar en el contenido obtenido
   */
  prompt: string;
}
Obtiene contenido de una URL y lo procesa con un modelo de IA.

WebSearch

Nombre de herramienta: WebSearch
interface WebSearchInput {
  /**
   * La consulta de búsqueda a usar
   */
  query: string;
  /**
   * Solo incluir resultados de estos dominios
   */
  allowed_domains?: string[];
  /**
   * Nunca incluir resultados de estos dominios
   */
  blocked_domains?: string[];
}
Busca en la web y devuelve resultados formateados.

TodoWrite

Nombre de herramienta: TodoWrite
interface TodoWriteInput {
  /**
   * La lista de tareas actualizada
   */
  todos: Array<{
    /**
     * La descripción de la tarea
     */
    content: string;
    /**
     * El estado de la tarea
     */
    status: 'pending' | 'in_progress' | 'completed';
    /**
     * Forma activa de la descripción de la tarea
     */
    activeForm: string;
  }>;
}
Crea y gestiona una lista de tareas estructurada para rastrear el progreso.

ExitPlanMode

Nombre de herramienta: ExitPlanMode
interface ExitPlanModeInput {
  /**
   * El plan a ejecutar por el usuario para aprobación
   */
  plan: string;
}
Sale del modo de planificación e indica al usuario que apruebe el plan.

ListMcpResources

Nombre de herramienta: ListMcpResources
interface ListMcpResourcesInput {
  /**
   * Nombre de servidor opcional para filtrar recursos por
   */
  server?: string;
}
Lista los recursos MCP disponibles de servidores conectados.

ReadMcpResource

Nombre de herramienta: ReadMcpResource
interface ReadMcpResourceInput {
  /**
   * El nombre del servidor MCP
   */
  server: string;
  /**
   * El URI del recurso a leer
   */
  uri: string;
}
Lee un recurso MCP específico de un servidor.

Tipos de Salida de Herramienta

Documentación de esquemas de salida para todas las herramientas integradas de Claude Code. Estos tipos representan los datos de respuesta reales devueltos por cada herramienta.

ToolOutput

Nota: Este es un tipo de solo documentación para claridad. Representa la unión de todos los tipos de salida de herramienta.
type ToolOutput = 
  | TaskOutput
  | BashOutput
  | BashOutputToolOutput
  | EditOutput
  | ReadOutput
  | WriteOutput
  | GlobOutput
  | GrepOutput
  | KillBashOutput
  | NotebookEditOutput
  | WebFetchOutput
  | WebSearchOutput
  | TodoWriteOutput
  | ExitPlanModeOutput
  | ListMcpResourcesOutput
  | ReadMcpResourceOutput;

Tarea

Nombre de herramienta: Task
interface TaskOutput {
  /**
   * Mensaje de resultado final del suagente
   */
  result: string;
  /**
   * Estadísticas de uso de tokens
   */
  usage?: {
    input_tokens: number;
    output_tokens: number;
    cache_creation_input_tokens?: number;
    cache_read_input_tokens?: number;
  };
  /**
   * Costo total en USD
   */
  total_cost_usd?: number;
  /**
   * Duración de ejecución en milisegundos
   */
  duration_ms?: number;
}
Devuelve el resultado final del suagente después de completar la tarea delegada.

Bash

Nombre de herramienta: Bash
interface BashOutput {
  /**
   * Salida combinada de stdout y stderr
   */
  output: string;
  /**
   * Código de salida del comando
   */
  exitCode: number;
  /**
   * Si el comando fue matado debido a tiempo de espera
   */
  killed?: boolean;
  /**
   * ID de shell para procesos en segundo plano
   */
  shellId?: string;
}
Devuelve la salida del comando con estado de salida. Los comandos en segundo plano devuelven inmediatamente con un shellId.

BashOutput

Nombre de herramienta: BashOutput
interface BashOutputToolOutput {
  /**
   * Nueva salida desde la última verificación
   */
  output: string;
  /**
   * Estado actual del shell
   */
  status: 'running' | 'completed' | 'failed';
  /**
   * Código de salida (cuando se completa)
   */
  exitCode?: number;
}
Devuelve la salida incremental de shells en segundo plano.

Editar

Nombre de herramienta: Edit
interface EditOutput {
  /**
   * Mensaje de confirmación
   */
  message: string;
  /**
   * Número de reemplazos realizados
   */
  replacements: number;
  /**
   * Ruta del archivo que fue editado
   */
  file_path: string;
}
Devuelve confirmación de ediciones exitosas con recuento de reemplazos.

Leer

Nombre de herramienta: Read
type ReadOutput = 
  | TextFileOutput
  | ImageFileOutput
  | PDFFileOutput
  | NotebookFileOutput;

interface TextFileOutput {
  /**
   * Contenido del archivo con números de línea
   */
  content: string;
  /**
   * Número total de líneas en el archivo
   */
  total_lines: number;
  /**
   * Líneas realmente devueltas
   */
  lines_returned: number;
}

interface ImageFileOutput {
  /**
   * Datos de imagen codificados en base64
   */
  image: string;
  /**
   * Tipo MIME de imagen
   */
  mime_type: string;
  /**
   * Tamaño del archivo en bytes
   */
  file_size: number;
}

interface PDFFileOutput {
  /**
   * Matriz de contenidos de página
   */
  pages: Array<{
    page_number: number;
    text?: string;
    images?: Array<{
      image: string;
      mime_type: string;
    }>;
  }>;
  /**
   * Número total de páginas
   */
  total_pages: number;
}

interface NotebookFileOutput {
  /**
   * Celdas del cuaderno Jupyter
   */
  cells: Array<{
    cell_type: 'code' | 'markdown';
    source: string;
    outputs?: any[];
    execution_count?: number;
  }>;
  /**
   * Metadatos del cuaderno
   */
  metadata?: Record<string, any>;
}
Devuelve el contenido del archivo en formato apropiado para el tipo de archivo.

Escribir

Nombre de herramienta: Write
interface WriteOutput {
  /**
   * Mensaje de éxito
   */
  message: string;
  /**
   * Número de bytes escritos
   */
  bytes_written: number;
  /**
   * Ruta del archivo que fue escrito
   */
  file_path: string;
}
Devuelve confirmación después de escribir exitosamente el archivo.

Glob

Nombre de herramienta: Glob
interface GlobOutput {
  /**
   * Matriz de rutas de archivo coincidentes
   */
  matches: string[];
  /**
   * Número de coincidencias encontradas
   */
  count: number;
  /**
   * Directorio de búsqueda utilizado
   */
  search_path: string;
}
Devuelve rutas de archivo que coinciden con el patrón glob, ordenadas por tiempo de modificación.

Grep

Nombre de herramienta: Grep
type GrepOutput = 
  | GrepContentOutput
  | GrepFilesOutput
  | GrepCountOutput;

interface GrepContentOutput {
  /**
   * Líneas coincidentes con contexto
   */
  matches: Array<{
    file: string;
    line_number?: number;
    line: string;
    before_context?: string[];
    after_context?: string[];
  }>;
  /**
   * Número total de coincidencias
   */
  total_matches: number;
}

interface GrepFilesOutput {
  /**
   * Archivos que contienen coincidencias
   */
  files: string[];
  /**
   * Número de archivos con coincidencias
   */
  count: number;
}

interface GrepCountOutput {
  /**
   * Recuentos de coincidencias por archivo
   */
  counts: Array<{
    file: string;
    count: number;
  }>;
  /**
   * Total de coincidencias en todos los archivos
   */
  total: number;
}
Devuelve resultados de búsqueda en el formato especificado por output_mode.

KillBash

Nombre de herramienta: KillBash
interface KillBashOutput {
  /**
   * Mensaje de éxito
   */
  message: string;
  /**
   * ID del shell matado
   */
  shell_id: string;
}
Devuelve confirmación después de terminar el shell en segundo plano.

NotebookEdit

Nombre de herramienta: NotebookEdit
interface NotebookEditOutput {
  /**
   * Mensaje de éxito
   */
  message: string;
  /**
   * Tipo de edición realizada
   */
  edit_type: 'replaced' | 'inserted' | 'deleted';
  /**
   * ID de celda que fue afectada
   */
  cell_id?: string;
  /**
   * Total de celdas en el cuaderno después de la edición
   */
  total_cells: number;
}
Devuelve confirmación después de modificar el cuaderno Jupyter.

WebFetch

Nombre de herramienta: WebFetch
interface WebFetchOutput {
  /**
   * Respuesta del modelo de IA al mensaje
   */
  response: string;
  /**
   * URL que fue obtenida
   */
  url: string;
  /**
   * URL final después de redirecciones
   */
  final_url?: string;
  /**
   * Código de estado HTTP
   */
  status_code?: number;
}
Devuelve el análisis de la IA del contenido web obtenido.

WebSearch

Nombre de herramienta: WebSearch
interface WebSearchOutput {
  /**
   * Resultados de búsqueda
   */
  results: Array<{
    title: string;
    url: string;
    snippet: string;
    /**
     * Metadatos adicionales si están disponibles
     */
    metadata?: Record<string, any>;
  }>;
  /**
   * Número total de resultados
   */
  total_results: number;
  /**
   * La consulta que fue buscada
   */
  query: string;
}
Devuelve resultados de búsqueda formateados de la web.

TodoWrite

Nombre de herramienta: TodoWrite
interface TodoWriteOutput {
  /**
   * Mensaje de éxito
   */
  message: string;
  /**
   * Estadísticas de tareas actuales
   */
  stats: {
    total: number;
    pending: number;
    in_progress: number;
    completed: number;
  };
}
Devuelve confirmación con estadísticas de tareas actuales.

ExitPlanMode

Nombre de herramienta: ExitPlanMode
interface ExitPlanModeOutput {
  /**
   * Mensaje de confirmación
   */
  message: string;
  /**
   * Si el usuario aprobó el plan
   */
  approved?: boolean;
}
Devuelve confirmación después de salir del modo de planificación.

ListMcpResources

Nombre de herramienta: ListMcpResources
interface ListMcpResourcesOutput {
  /**
   * Recursos disponibles
   */
  resources: Array<{
    uri: string;
    name: string;
    description?: string;
    mimeType?: string;
    server: string;
  }>;
  /**
   * Número total de recursos
   */
  total: number;
}
Devuelve lista de recursos MCP disponibles.

ReadMcpResource

Nombre de herramienta: ReadMcpResource
interface ReadMcpResourceOutput {
  /**
   * Contenidos del recurso
   */
  contents: Array<{
    uri: string;
    mimeType?: string;
    text?: string;
    blob?: string;
  }>;
  /**
   * Servidor que proporcionó el recurso
   */
  server: string;
}
Devuelve el contenido del recurso MCP solicitado.

Tipos de Permiso

PermissionUpdate

Operaciones para actualizar permisos.
type PermissionUpdate = 
  | {
      type: 'addRules';
      rules: PermissionRuleValue[];
      behavior: PermissionBehavior;
      destination: PermissionUpdateDestination;
    }
  | {
      type: 'replaceRules';
      rules: PermissionRuleValue[];
      behavior: PermissionBehavior;
      destination: PermissionUpdateDestination;
    }
  | {
      type: 'removeRules';
      rules: PermissionRuleValue[];
      behavior: PermissionBehavior;
      destination: PermissionUpdateDestination;
    }
  | {
      type: 'setMode';
      mode: PermissionMode;
      destination: PermissionUpdateDestination;
    }
  | {
      type: 'addDirectories';
      directories: string[];
      destination: PermissionUpdateDestination;
    }
  | {
      type: 'removeDirectories';
      directories: string[];
      destination: PermissionUpdateDestination;
    }

PermissionBehavior

type PermissionBehavior = 'allow' | 'deny' | 'ask';

PermissionUpdateDestination

type PermissionUpdateDestination = 
  | 'userSettings'     // Configuración global del usuario
  | 'projectSettings'  // Configuración del proyecto por directorio
  | 'localSettings'    // Configuración local ignorada por git
  | 'session'          // Solo sesión actual

PermissionRuleValue

type PermissionRuleValue = {
  toolName: string;
  ruleContent?: string;
}

Otros Tipos

ApiKeySource

type ApiKeySource = 'user' | 'project' | 'org' | 'temporary';

ConfigScope

type ConfigScope = 'local' | 'user' | 'project';

NonNullableUsage

Una versión de Usage con todos los campos anulables hechos no anulables.
type NonNullableUsage = {
  [K in keyof Usage]: NonNullable<Usage[K]>;
}

Usage

Estadísticas de uso de tokens (de @anthropic-ai/sdk).
type Usage = {
  input_tokens: number | null;
  output_tokens: number | null;
  cache_creation_input_tokens?: number | null;
  cache_read_input_tokens?: number | null;
}

CallToolResult

Tipo de resultado de herramienta MCP (de @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
  content: Array<{
    type: 'text' | 'image' | 'resource';
    // Los campos adicionales varían según el tipo
  }>;
  isError?: boolean;
}

AbortError

Clase de error personalizada para operaciones de aborto.
class AbortError extends Error {}

Ver también