Instalação

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

Funções

query()

A função principal para interagir com Claude Code. Cria um gerador assíncrono que transmite mensagens conforme chegam.
function query({
  prompt,
  options
}: {
  prompt: string | AsyncIterable<SDKUserMessage>;
  options?: Options;
}): Query

Parâmetros

ParâmetroTipoDescrição
promptstring | AsyncIterable<SDKUserMessage>O prompt de entrada como string ou iterável assíncrono para modo de streaming
optionsOptionsObjeto de configuração opcional (veja o tipo Options abaixo)

Retorna

Retorna um objeto Query que estende AsyncGenerator<SDKMessage, void> com métodos adicionais.

tool()

Cria uma definição de ferramenta MCP type-safe para uso com servidores MCP do 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âmetroTipoDescrição
namestringO nome da ferramenta
descriptionstringUma descrição do que a ferramenta faz
inputSchemaSchema extends ZodRawShapeSchema Zod definindo os parâmetros de entrada da ferramenta
handler(args, extra) => Promise<CallToolResult>Função assíncrona que executa a lógica da ferramenta

createSdkMcpServer()

Cria uma instância de servidor MCP que roda no mesmo processo que sua aplicação.
function createSdkMcpServer(options: {
  name: string;
  version?: string;
  tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance

Parâmetros

ParâmetroTipoDescrição
options.namestringO nome do servidor MCP
options.versionstringString de versão opcional
options.toolsArray<SdkMcpToolDefinition>Array de definições de ferramentas criadas com tool()

Tipos

Options

Objeto de configuração para a função query().
PropriedadeTipoPadrãoDescrição
abortControllerAbortControllernew AbortController()Controlador para cancelar operações
additionalDirectoriesstring[][]Diretórios adicionais que Claude pode acessar
agentsRecord<string, [AgentDefinition](#agentdefinition)>undefinedDefinir subagentes programaticamente
allowedToolsstring[]Todas as ferramentasLista de nomes de ferramentas permitidas
canUseToolCanUseToolundefinedFunção de permissão personalizada para uso de ferramentas
continuebooleanfalseContinuar a conversa mais recente
cwdstringprocess.cwd()Diretório de trabalho atual
disallowedToolsstring[][]Lista de nomes de ferramentas não permitidas
envDict<string>process.envVariáveis de ambiente
executable'bun' | 'deno' | 'node'Auto-detectadoRuntime JavaScript a usar
executableArgsstring[][]Argumentos para passar ao executável
extraArgsRecord<string, string | null>{}Argumentos adicionais
fallbackModelstringundefinedModelo a usar se o primário falhar
forkSessionbooleanfalseAo retomar com resume, bifurcar para um novo ID de sessão em vez de continuar a sessão original
hooksPartial<Record<HookEvent, HookCallbackMatcher[]>>{}Callbacks de hook para eventos
includePartialMessagesbooleanfalseIncluir eventos de mensagem parcial
maxThinkingTokensnumberundefinedMáximo de tokens para processo de pensamento
maxTurnsnumberundefinedMáximo de turnos de conversa
mcpServersRecord<string, [McpServerConfig](#mcpserverconfig)>{}Configurações de servidor MCP
modelstringPadrão do CLIModelo Claude a usar
pathToClaudeCodeExecutablestringAuto-detectadoCaminho para o executável Claude Code
permissionModePermissionMode'default'Modo de permissão para a sessão
permissionPromptToolNamestringundefinedNome da ferramenta MCP para prompts de permissão
resumestringundefinedID da sessão para retomar
settingSourcesSettingSource[][] (sem configurações)Controlar quais configurações do sistema de arquivos carregar. Quando omitido, nenhuma configuração é carregada
stderr(data: string) => voidundefinedCallback para saída stderr
strictMcpConfigbooleanfalseAplicar validação MCP rigorosa
systemPromptstring | { type: 'preset'; preset: 'claude_code'; append?: string }undefined (prompt vazio)Configuração do prompt do sistema. Passe uma string para prompt personalizado, ou { type: 'preset', preset: 'claude_code' } para usar o prompt do sistema do Claude Code

Query

Interface retornada pela função query().
interface Query extends AsyncGenerator<SDKMessage, void> {
  interrupt(): Promise<void>;
  setPermissionMode(mode: PermissionMode): Promise<void>;
}

Métodos

MétodoDescrição
interrupt()Interrompe a consulta (disponível apenas no modo de entrada streaming)
setPermissionMode()Altera o modo de permissão (disponível apenas no modo de entrada streaming)

AgentDefinition

Configuração para um subagente definido programaticamente.
type AgentDefinition = {
  description: string;
  tools?: string[];
  prompt: string;
  model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}
CampoObrigatórioDescrição
descriptionSimDescrição em linguagem natural de quando usar este agente
toolsNãoArray de nomes de ferramentas permitidas. Se omitido, herda todas as ferramentas
promptSimO prompt do sistema do agente
modelNãoSubstituição de modelo para este agente. Se omitido, usa o modelo principal

SettingSource

Controla quais fontes de configuração baseadas no sistema de arquivos o SDK carrega configurações.
type SettingSource = 'user' | 'project' | 'local';
ValorDescriçãoLocalização
'user'Configurações globais do usuário~/.claude/settings.json
'project'Configurações compartilhadas do projeto (controladas por versão).claude/settings.json
'local'Configurações locais do projeto (gitignored).claude/settings.local.json

Comportamento padrão

Quando settingSources é omitido ou undefined, o SDK não carrega nenhuma configuração do sistema de arquivos. Isso fornece isolamento para aplicações SDK.

Por que usar settingSources?

Carregar todas as configurações do sistema de arquivos (comportamento legado):
// Carregar todas as configurações como o SDK v0.0.x fazia
const result = query({
  prompt: "Analisar este código",
  options: {
    settingSources: ['user', 'project', 'local']  // Carregar todas as configurações
  }
});
Carregar apenas fontes de configuração específicas:
// Carregar apenas configurações do projeto, ignorar usuário e local
const result = query({
  prompt: "Executar verificações de CI",
  options: {
    settingSources: ['project']  // Apenas .claude/settings.json
  }
});
Ambientes de teste e CI:
// Garantir comportamento consistente em CI excluindo configurações locais
const result = query({
  prompt: "Executar testes",
  options: {
    settingSources: ['project'],  // Apenas configurações compartilhadas da equipe
    permissionMode: 'bypassPermissions'
  }
});
Aplicações apenas SDK:
// Definir tudo programaticamente (comportamento padrão)
// Sem dependências do sistema de arquivos - settingSources padrão para []
const result = query({
  prompt: "Revisar este PR",
  options: {
    // settingSources: [] é o padrão, não precisa especificar
    agents: { /* ... */ },
    mcpServers: { /* ... */ },
    allowedTools: ['Read', 'Grep', 'Glob']
  }
});

Precedência de configurações

Quando múltiplas fontes são carregadas, as configurações são mescladas com esta precedência (maior para menor):
  1. Configurações locais (.claude/settings.local.json)
  2. Configurações do projeto (.claude/settings.json)
  3. Configurações do usuário (~/.claude/settings.json)
Opções programáticas (como agents, allowedTools) sempre substituem configurações do sistema de arquivos.

PermissionMode

type PermissionMode =
  | 'default'           // Comportamento de permissão padrão
  | 'acceptEdits'       // Auto-aceitar edições de arquivo
  | 'bypassPermissions' // Ignorar todas as verificações de permissão
  | 'plan'              // Modo de planejamento - sem execução

CanUseTool

Tipo de função de permissão personalizada para controlar o uso de ferramentas.
type CanUseTool = (
  toolName: string,
  input: ToolInput,
  options: {
    signal: AbortSignal;
    suggestions?: PermissionUpdate[];
  }
) => Promise<PermissionResult>;

PermissionResult

Resultado de uma verificação de permissão.
type PermissionResult = 
  | {
      behavior: 'allow';
      updatedInput: ToolInput;
      updatedPermissions?: PermissionUpdate[];
    }
  | {
      behavior: 'deny';
      message: string;
      interrupt?: boolean;
    }

McpServerConfig

Configuração 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;
}

Tipos de Mensagem

SDKMessage

Tipo união de todas as mensagens possíveis retornadas pela consulta.
type SDKMessage = 
  | SDKAssistantMessage
  | SDKUserMessage
  | SDKUserMessageReplay
  | SDKResultMessage
  | SDKSystemMessage
  | SDKPartialAssistantMessage
  | SDKCompactBoundaryMessage;

SDKAssistantMessage

Mensagem de resposta do assistente.
type SDKAssistantMessage = {
  type: 'assistant';
  uuid: UUID;
  session_id: string;
  message: APIAssistantMessage; // Do SDK Anthropic
  parent_tool_use_id: string | null;
}

SDKUserMessage

Mensagem de entrada do usuário.
type SDKUserMessage = {
  type: 'user';
  uuid?: UUID;
  session_id: string;
  message: APIUserMessage; // Do SDK Anthropic
  parent_tool_use_id: string | null;
}

SDKUserMessageReplay

Mensagem de usuário reproduzida com UUID obrigatório.
type SDKUserMessageReplay = {
  type: 'user';
  uuid: UUID;
  session_id: string;
  message: APIUserMessage;
  parent_tool_use_id: string | null;
}

SDKResultMessage

Mensagem 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

Mensagem de inicialização do 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

Mensagem parcial de streaming (apenas quando includePartialMessages é true).
type SDKPartialAssistantMessage = {
  type: 'stream_event';
  event: RawMessageStreamEvent; // Do SDK Anthropic
  parent_tool_use_id: string | null;
  uuid: UUID;
  session_id: string;
}

SDKCompactBoundaryMessage

Mensagem indicando um limite de compactação de conversa.
type SDKCompactBoundaryMessage = {
  type: 'system';
  subtype: 'compact_boundary';
  uuid: UUID;
  session_id: string;
  compact_metadata: {
    trigger: 'manual' | 'auto';
    pre_tokens: number;
  };
}

SDKPermissionDenial

Informações sobre um uso de ferramenta negado.
type SDKPermissionDenial = {
  tool_name: string;
  tool_use_id: string;
  tool_input: ToolInput;
}

Tipos de Hook

HookEvent

Eventos de hook disponíveis.
type HookEvent = 
  | 'PreToolUse'
  | 'PostToolUse'
  | 'Notification'
  | 'UserPromptSubmit'
  | 'SessionStart'
  | 'SessionEnd'
  | 'Stop'
  | 'SubagentStop'
  | 'PreCompact';

HookCallback

Tipo de função de callback de hook.
type HookCallback = (
  input: HookInput, // União de todos os tipos de entrada de hook
  toolUseID: string | undefined,
  options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;

HookCallbackMatcher

Configuração de hook com matcher opcional.
interface HookCallbackMatcher {
  matcher?: string;
  hooks: HookCallback[];
}

HookInput

Tipo união de todos os tipos de entrada de hook.
type HookInput = 
  | PreToolUseHookInput
  | PostToolUseHookInput
  | NotificationHookInput
  | UserPromptSubmitHookInput
  | SessionStartHookInput
  | SessionEndHookInput
  | StopHookInput
  | SubagentStopHookInput
  | PreCompactHookInput;

BaseHookInput

Interface base que todos os tipos de entrada de hook estendem.
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 do hook.
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 Ferramenta

Documentação de esquemas de entrada para todas as ferramentas integradas do Claude Code. Estes tipos são exportados de @anthropic-ai/claude-agent-sdk e podem ser usados para interações type-safe com ferramentas.

ToolInput

Nota: Este é um tipo apenas para documentação para clareza. Representa a união de todos os tipos de entrada de ferramenta.
type ToolInput = 
  | AgentInput
  | BashInput
  | BashOutputInput
  | FileEditInput
  | FileMultiEditInput
  | FileReadInput
  | FileWriteInput
  | GlobInput
  | GrepInput
  | KillShellInput
  | NotebookEditInput
  | WebFetchInput
  | WebSearchInput
  | TodoWriteInput
  | ExitPlanModeInput
  | ListMcpResourcesInput
  | ReadMcpResourceInput;

Task

Nome da ferramenta: Task
interface AgentInput {
  /**
   * Uma descrição curta (3-5 palavras) da tarefa
   */
  description: string;
  /**
   * A tarefa para o agente executar
   */
  prompt: string;
  /**
   * O tipo de agente especializado a usar para esta tarefa
   */
  subagent_type: string;
}
Lança um novo agente para lidar com tarefas complexas e multi-etapas de forma autônoma.

Bash

Nome da ferramenta: Bash
interface BashInput {
  /**
   * O comando a executar
   */
  command: string;
  /**
   * Timeout opcional em milissegundos (máx 600000)
   */
  timeout?: number;
  /**
   * Descrição clara e concisa do que este comando faz em 5-10 palavras
   */
  description?: string;
  /**
   * Definir como true para executar este comando em segundo plano
   */
  run_in_background?: boolean;
}
Executa comandos bash em uma sessão de shell persistente com timeout opcional e execução em segundo plano.

BashOutput

Nome da ferramenta: BashOutput
interface BashOutputInput {
  /**
   * O ID do shell em segundo plano para recuperar saída
   */
  bash_id: string;
  /**
   * Regex opcional para filtrar linhas de saída
   */
  filter?: string;
}
Recupera saída de um shell bash em segundo plano em execução ou concluído.

Edit

Nome da ferramenta: Edit
interface FileEditInput {
  /**
   * O caminho absoluto para o arquivo a modificar
   */
  file_path: string;
  /**
   * O texto a substituir
   */
  old_string: string;
  /**
   * O texto para substituir por (deve ser diferente de old_string)
   */
  new_string: string;
  /**
   * Substituir todas as ocorrências de old_string (padrão false)
   */
  replace_all?: boolean;
}
Executa substituições exatas de string em arquivos.

MultiEdit

Nome da ferramenta: MultiEdit
interface FileMultiEditInput {
  /**
   * O caminho absoluto para o arquivo a modificar
   */
  file_path: string;
  /**
   * Array de operações de edição para executar sequencialmente
   */
  edits: Array<{
    /**
     * O texto a substituir
     */
    old_string: string;
    /**
     * O texto para substituir por
     */
    new_string: string;
    /**
     * Substituir todas as ocorrências (padrão false)
     */
    replace_all?: boolean;
  }>;
}
Faz múltiplas edições em um único arquivo em uma operação.

Read

Nome da ferramenta: Read
interface FileReadInput {
  /**
   * O caminho absoluto para o arquivo a ler
   */
  file_path: string;
  /**
   * O número da linha para começar a ler
   */
  offset?: number;
  /**
   * O número de linhas a ler
   */
  limit?: number;
}
Lê arquivos do sistema de arquivos local, incluindo texto, imagens, PDFs e notebooks Jupyter.

Write

Nome da ferramenta: Write
interface FileWriteInput {
  /**
   * O caminho absoluto para o arquivo a escrever
   */
  file_path: string;
  /**
   * O conteúdo a escrever no arquivo
   */
  content: string;
}
Escreve um arquivo no sistema de arquivos local, sobrescrevendo se existir.

Glob

Nome da ferramenta: Glob
interface GlobInput {
  /**
   * O padrão glob para corresponder arquivos
   */
  pattern: string;
  /**
   * O diretório para pesquisar (padrão para cwd)
   */
  path?: string;
}
Correspondência rápida de padrão de arquivo que funciona com qualquer tamanho de base de código.

Grep

Nome da ferramenta: Grep
interface GrepInput {
  /**
   * O padrão de expressão regular para pesquisar
   */
  pattern: string;
  /**
   * Arquivo ou diretório para pesquisar (padrão para cwd)
   */
  path?: string;
  /**
   * Padrão glob para filtrar arquivos (ex. "*.js")
   */
  glob?: string;
  /**
   * Tipo de arquivo para pesquisar (ex. "js", "py", "rust")
   */
  type?: string;
  /**
   * Modo de saída: "content", "files_with_matches", ou "count"
   */
  output_mode?: 'content' | 'files_with_matches' | 'count';
  /**
   * Pesquisa insensível a maiúsculas
   */
  '-i'?: boolean;
  /**
   * Mostrar números de linha (para modo content)
   */
  '-n'?: boolean;
  /**
   * Linhas para mostrar antes de cada correspondência
   */
  '-B'?: number;
  /**
   * Linhas para mostrar depois de cada correspondência
   */
  '-A'?: number;
  /**
   * Linhas para mostrar antes e depois de cada correspondência
   */
  '-C'?: number;
  /**
   * Limitar saída às primeiras N linhas/entradas
   */
  head_limit?: number;
  /**
   * Habilitar modo multilinha
   */
  multiline?: boolean;
}
Ferramenta de pesquisa poderosa construída no ripgrep com suporte a regex.

KillBash

Nome da ferramenta: KillBash
interface KillShellInput {
  /**
   * O ID do shell em segundo plano para matar
   */
  shell_id: string;
}
Mata um shell bash em segundo plano em execução pelo seu ID.

NotebookEdit

Nome da ferramenta: NotebookEdit
interface NotebookEditInput {
  /**
   * O caminho absoluto para o arquivo de notebook Jupyter
   */
  notebook_path: string;
  /**
   * O ID da célula a editar
   */
  cell_id?: string;
  /**
   * A nova fonte para a célula
   */
  new_source: string;
  /**
   * O tipo da célula (code ou markdown)
   */
  cell_type?: 'code' | 'markdown';
  /**
   * O tipo de edição (replace, insert, delete)
   */
  edit_mode?: 'replace' | 'insert' | 'delete';
}
Edita células em arquivos de notebook Jupyter.

WebFetch

Nome da ferramenta: WebFetch
interface WebFetchInput {
  /**
   * A URL para buscar conteúdo
   */
  url: string;
  /**
   * O prompt para executar no conteúdo buscado
   */
  prompt: string;
}
Busca conteúdo de uma URL e processa com um modelo de IA.

WebSearch

Nome da ferramenta: WebSearch
interface WebSearchInput {
  /**
   * A consulta de pesquisa a usar
   */
  query: string;
  /**
   * Incluir apenas resultados destes domínios
   */
  allowed_domains?: string[];
  /**
   * Nunca incluir resultados destes domínios
   */
  blocked_domains?: string[];
}
Pesquisa na web e retorna resultados formatados.

TodoWrite

Nome da ferramenta: TodoWrite
interface TodoWriteInput {
  /**
   * A lista de tarefas atualizada
   */
  todos: Array<{
    /**
     * A descrição da tarefa
     */
    content: string;
    /**
     * O status da tarefa
     */
    status: 'pending' | 'in_progress' | 'completed';
    /**
     * Forma ativa da descrição da tarefa
     */
    activeForm: string;
  }>;
}
Cria e gerencia uma lista de tarefas estruturada para acompanhar progresso.

ExitPlanMode

Nome da ferramenta: ExitPlanMode
interface ExitPlanModeInput {
  /**
   * O plano para executar pelo usuário para aprovação
   */
  plan: string;
}
Sai do modo de planejamento e solicita ao usuário para aprovar o plano.

ListMcpResources

Nome da ferramenta: ListMcpResources
interface ListMcpResourcesInput {
  /**
   * Nome do servidor opcional para filtrar recursos
   */
  server?: string;
}
Lista recursos MCP disponíveis de servidores conectados.

ReadMcpResource

Nome da ferramenta: ReadMcpResource
interface ReadMcpResourceInput {
  /**
   * O nome do servidor MCP
   */
  server: string;
  /**
   * A URI do recurso para ler
   */
  uri: string;
}
Lê um recurso MCP específico de um servidor.

Tipos de Saída de Ferramenta

Documentação de esquemas de saída para todas as ferramentas integradas do Claude Code. Estes tipos representam os dados de resposta reais retornados por cada ferramenta.

ToolOutput

Nota: Este é um tipo apenas para documentação para clareza. Representa a união de todos os tipos de saída de ferramenta.
type ToolOutput = 
  | TaskOutput
  | BashOutput
  | BashOutputToolOutput
  | EditOutput
  | MultiEditOutput
  | ReadOutput
  | WriteOutput
  | GlobOutput
  | GrepOutput
  | KillBashOutput
  | NotebookEditOutput
  | WebFetchOutput
  | WebSearchOutput
  | TodoWriteOutput
  | ExitPlanModeOutput
  | ListMcpResourcesOutput
  | ReadMcpResourceOutput;

Task

Nome da ferramenta: Task
interface TaskOutput {
  /**
   * Mensagem de resultado final do subagente
   */
  result: string;
  /**
   * Estatísticas de uso de token
   */
  usage?: {
    input_tokens: number;
    output_tokens: number;
    cache_creation_input_tokens?: number;
    cache_read_input_tokens?: number;
  };
  /**
   * Custo total em USD
   */
  total_cost_usd?: number;
  /**
   * Duração da execução em milissegundos
   */
  duration_ms?: number;
}
Retorna o resultado final do subagente após completar a tarefa delegada.

Bash

Nome da ferramenta: Bash
interface BashOutput {
  /**
   * Saída combinada de stdout e stderr
   */
  output: string;
  /**
   * Código de saída do comando
   */
  exitCode: number;
  /**
   * Se o comando foi morto devido a timeout
   */
  killed?: boolean;
  /**
   * ID do shell para processos em segundo plano
   */
  shellId?: string;
}
Retorna saída do comando com status de saída. Comandos em segundo plano retornam imediatamente com um shellId.

BashOutput

Nome da ferramenta: BashOutput
interface BashOutputToolOutput {
  /**
   * Nova saída desde a última verificação
   */
  output: string;
  /**
   * Status atual do shell
   */
  status: 'running' | 'completed' | 'failed';
  /**
   * Código de saída (quando concluído)
   */
  exitCode?: number;
}
Retorna saída incremental de shells em segundo plano.

Edit

Nome da ferramenta: Edit
interface EditOutput {
  /**
   * Mensagem de confirmação
   */
  message: string;
  /**
   * Número de substituições feitas
   */
  replacements: number;
  /**
   * Caminho do arquivo que foi editado
   */
  file_path: string;
}
Retorna confirmação de edições bem-sucedidas com contagem de substituições.

MultiEdit

Nome da ferramenta: MultiEdit
interface MultiEditOutput {
  /**
   * Mensagem de sucesso
   */
  message: string;
  /**
   * Número total de edições aplicadas
   */
  edits_applied: number;
  /**
   * Caminho do arquivo que foi editado
   */
  file_path: string;
}
Retorna confirmação após aplicar todas as edições sequencialmente.

Read

Nome da ferramenta: Read
type ReadOutput = 
  | TextFileOutput
  | ImageFileOutput
  | PDFFileOutput
  | NotebookFileOutput;

interface TextFileOutput {
  /**
   * Conteúdo do arquivo com números de linha
   */
  content: string;
  /**
   * Número total de linhas no arquivo
   */
  total_lines: number;
  /**
   * Linhas realmente retornadas
   */
  lines_returned: number;
}

interface ImageFileOutput {
  /**
   * Dados de imagem codificados em base64
   */
  image: string;
  /**
   * Tipo MIME da imagem
   */
  mime_type: string;
  /**
   * Tamanho do arquivo em bytes
   */
  file_size: number;
}

interface PDFFileOutput {
  /**
   * Array de conteúdos 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 {
  /**
   * Células do notebook Jupyter
   */
  cells: Array<{
    cell_type: 'code' | 'markdown';
    source: string;
    outputs?: any[];
    execution_count?: number;
  }>;
  /**
   * Metadados do notebook
   */
  metadata?: Record<string, any>;
}
Retorna conteúdo do arquivo em formato apropriado ao tipo de arquivo.

Write

Nome da ferramenta: Write
interface WriteOutput {
  /**
   * Mensagem de sucesso
   */
  message: string;
  /**
   * Número de bytes escritos
   */
  bytes_written: number;
  /**
   * Caminho do arquivo que foi escrito
   */
  file_path: string;
}
Retorna confirmação após escrever o arquivo com sucesso.

Glob

Nome da ferramenta: Glob
interface GlobOutput {
  /**
   * Array de caminhos de arquivo correspondentes
   */
  matches: string[];
  /**
   * Número de correspondências encontradas
   */
  count: number;
  /**
   * Diretório de pesquisa usado
   */
  search_path: string;
}
Retorna caminhos de arquivo correspondentes ao padrão glob, ordenados por tempo de modificação.

Grep

Nome da ferramenta: Grep
type GrepOutput = 
  | GrepContentOutput
  | GrepFilesOutput
  | GrepCountOutput;

interface GrepContentOutput {
  /**
   * Linhas correspondentes com contexto
   */
  matches: Array<{
    file: string;
    line_number?: number;
    line: string;
    before_context?: string[];
    after_context?: string[];
  }>;
  /**
   * Número total de correspondências
   */
  total_matches: number;
}

interface GrepFilesOutput {
  /**
   * Arquivos contendo correspondências
   */
  files: string[];
  /**
   * Número de arquivos com correspondências
   */
  count: number;
}

interface GrepCountOutput {
  /**
   * Contagens de correspondência por arquivo
   */
  counts: Array<{
    file: string;
    count: number;
  }>;
  /**
   * Total de correspondências em todos os arquivos
   */
  total: number;
}
Retorna resultados de pesquisa no formato especificado por output_mode.

KillBash

Nome da ferramenta: KillBash
interface KillBashOutput {
  /**
   * Mensagem de sucesso
   */
  message: string;
  /**
   * ID do shell morto
   */
  shell_id: string;
}
Retorna confirmação após terminar o shell em segundo plano.

NotebookEdit

Nome da ferramenta: NotebookEdit
interface NotebookEditOutput {
  /**
   * Mensagem de sucesso
   */
  message: string;
  /**
   * Tipo de edição executada
   */
  edit_type: 'replaced' | 'inserted' | 'deleted';
  /**
   * ID da célula que foi afetada
   */
  cell_id?: string;
  /**
   * Total de células no notebook após edição
   */
  total_cells: number;
}
Retorna confirmação após modificar o notebook Jupyter.

WebFetch

Nome da ferramenta: WebFetch
interface WebFetchOutput {
  /**
   * Resposta do modelo de IA ao prompt
   */
  response: string;
  /**
   * URL que foi buscada
   */
  url: string;
  /**
   * URL final após redirecionamentos
   */
  final_url?: string;
  /**
   * Código de status HTTP
   */
  status_code?: number;
}
Retorna a análise da IA do conteúdo web buscado.

WebSearch

Nome da ferramenta: WebSearch
interface WebSearchOutput {
  /**
   * Resultados da pesquisa
   */
  results: Array<{
    title: string;
    url: string;
    snippet: string;
    /**
     * Metadados adicionais se disponíveis
     */
    metadata?: Record<string, any>;
  }>;
  /**
   * Número total de resultados
   */
  total_results: number;
  /**
   * A consulta que foi pesquisada
   */
  query: string;
}
Retorna resultados de pesquisa formatados da web.

TodoWrite

Nome da ferramenta: TodoWrite
interface TodoWriteOutput {
  /**
   * Mensagem de sucesso
   */
  message: string;
  /**
   * Estatísticas atuais de tarefas
   */
  stats: {
    total: number;
    pending: number;
    in_progress: number;
    completed: number;
  };
}
Retorna confirmação com estatísticas atuais de tarefas.

ExitPlanMode

Nome da ferramenta: ExitPlanMode
interface ExitPlanModeOutput {
  /**
   * Mensagem de confirmação
   */
  message: string;
  /**
   * Se o usuário aprovou o plano
   */
  approved?: boolean;
}
Retorna confirmação após sair do modo de plano.

ListMcpResources

Nome da ferramenta: ListMcpResources
interface ListMcpResourcesOutput {
  /**
   * Recursos disponíveis
   */
  resources: Array<{
    uri: string;
    name: string;
    description?: string;
    mimeType?: string;
    server: string;
  }>;
  /**
   * Número total de recursos
   */
  total: number;
}
Retorna lista de recursos MCP disponíveis.

ReadMcpResource

Nome da ferramenta: ReadMcpResource
interface ReadMcpResourceOutput {
  /**
   * Conteúdo do recurso
   */
  contents: Array<{
    uri: string;
    mimeType?: string;
    text?: string;
    blob?: string;
  }>;
  /**
   * Servidor que forneceu o recurso
   */
  server: string;
}
Retorna o conteúdo do recurso MCP solicitado.

Tipos de Permissão

PermissionUpdate

Operações para atualizar permissões.
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 Permission UpdateDestination = 
  | 'userSettings'     // Configurações globais do usuário
  | 'projectSettings'  // Configurações de projeto por diretório
  | 'localSettings'    // Configurações locais gitignored
  | 'session'          // Apenas sessão atual

PermissionRuleValue

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

Outros Tipos

ApiKeySource

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

ConfigScope

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

NonNullableUsage

Uma versão de Usage com todos os campos anuláveis tornados não-anuláveis.
type NonNullableUsage = {
  [K in keyof Usage]: NonNullable<Usage[K]>;
}

Usage

Estatísticas de uso de token (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 ferramenta MCP (de @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
  content: Array<{
    type: 'text' | 'image' | 'resource';
    // Campos adicionais variam por tipo
  }>;
  isError?: boolean;
}

AbortError

Classe de erro personalizada para operações de aborto.
class AbortError extends Error {}

Veja também