Referência do Agent SDK - TypeScript
Instalação
npm install @anthropic-ai/claude-agent-sdkFunções
query()
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;
}): QueryParâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
prompt | string | AsyncIterable<SDKUserMessage> | O prompt de entrada como uma string ou iterável assíncrono para modo de transmissão |
options | Options | Objeto de configuração opcional (veja o tipo Options abaixo) |
Retorna
Retorna um objeto Query que estende AsyncGenerator<SDKMessage, void> com métodos adicionais.
tool()
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âmetro | Tipo | Descrição |
|---|---|---|
name | string | O nome da ferramenta |
description | string | Uma descrição do que a ferramenta faz |
inputSchema | Schema extends ZodRawShape | Schema Zod que define os parâmetros de entrada da ferramenta |
handler | (args, extra) => Promise<CallToolResult> | Função assíncrona que executa a lógica da ferramenta |
createSdkMcpServer()
createSdkMcpServer()Cria uma instância de servidor MCP que é executada no mesmo processo que sua aplicação.
function createSdkMcpServer(options: {
name: string;
version?: string;
tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstanceParâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
options.name | string | O nome do servidor MCP |
options.version | string | String de versão opcional |
options.tools | Array<SdkMcpToolDefinition> | Array de definições de ferramentas criadas com tool() |
Tipos
Options
OptionsObjeto de configuração para a função query().
| Propriedade | Tipo | Padrão | Descrição |
|---|---|---|---|
abortController | AbortController | new AbortController() | Controlador para cancelar operações |
additionalDirectories | string[] | [] | Diretórios adicionais que Claude pode acessar |
agents | Record<string, [AgentDefinition](#agentdefinition)> | undefined | Definir suagentes programaticamente |
allowedTools | string[] | Todas as ferramentas | Lista de nomes de ferramentas permitidas |
canUseTool | CanUseTool | undefined | Função de permissão personalizada para uso de ferramentas |
continue | boolean | false | Continuar a conversa mais recente |
cwd | string | process.cwd() | Diretório de trabalho atual |
disallowedTools | string[] | [] | Lista de nomes de ferramentas não permitidas |
env | Dict<string> | process.env | Variáveis de ambiente |
executable | 'bun' | 'deno' | 'node' | Detectado automaticamente | Runtime JavaScript a usar |
executableArgs | string[] | [] | Argumentos a passar para o executável |
extraArgs | Record<string, string | null> | {} | Argumentos adicionais |
fallbackModel | string | undefined | Modelo a usar se o primário falhar |
forkSession | boolean | false | Ao retomar com resume, bifurcar para um novo ID de sessão em vez de continuar a sessão original |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | {} | Callbacks de hook para eventos |
includePartialMessages | boolean | false | Incluir eventos de mensagens parciais |
maxThinkingTokens | number | undefined | Tokens máximos para o processo de pensamento |
maxTurns | number | undefined | Turnos máximos de conversa |
mcpServers | Record<string, [McpServerConfig](#mcpserverconfig)> | {} | Configurações de servidor MCP |
model | string | Padrão da CLI | Modelo Claude a usar |
pathToClaudeCodeExecutable | string | Detectado automaticamente | Caminho para o executável Claude Code |
permissionMode | PermissionMode | 'default' | Modo de permissão para a sessão |
permissionPromptToolName | string | undefined | Nome da ferramenta MCP para prompts de permissão |
plugins | SdkPluginConfig[] | [] | Carregar plugins personalizados de caminhos locais. Veja Plugins para detalhes |
resume | string | undefined | ID de sessão a retomar |
settingSources | SettingSource[] | [] (sem configurações) | Controlar quais configurações do sistema de arquivos carregar. Quando omitido, nenhuma configuração é carregada. Nota: Deve incluir 'project' para carregar arquivos CLAUDE.md |
stderr | (data: string) => void | undefined | Callback para saída stderr |
strictMcpConfig | boolean | false | Aplicar validação MCP rigorosa |
systemPrompt | string | { type: 'preset'; preset: 'claude_code'; append?: string } | undefined (prompt vazio) | Configuração de prompt do sistema. Passe uma string para prompt personalizado, ou { type: 'preset', preset: 'claude_code' } para usar o prompt do sistema do Claude Code. Ao usar a forma de objeto preset, adicione append para estender o prompt do sistema com instruções adicionais |
Query
QueryInterface retornada pela função query().
interface Query extends AsyncGenerator<SDKMessage, void> {
interrupt(): Promise<void>;
setPermissionMode(mode: PermissionMode): Promise<void>;
}Métodos
| Método | Descrição |
|---|---|
interrupt() | Interrompe a consulta (disponível apenas no modo de entrada de transmissão) |
setPermissionMode() | Altera o modo de permissão (disponível apenas no modo de entrada de transmissão) |
AgentDefinition
AgentDefinitionConfiguração para um suagente definido programaticamente.
type AgentDefinition = {
description: string;
tools?: string[];
prompt: string;
model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}| Campo | Obrigatório | Descrição |
|---|---|---|
description | Sim | Descrição em linguagem natural de quando usar este agente |
tools | Não | Array de nomes de ferramentas permitidas. Se omitido, herda todas as ferramentas |
prompt | Sim | O prompt do sistema do agente |
model | Não | Substituição de modelo para este agente. Se omitido, usa o modelo principal |
SettingSource
SettingSourceControla quais fontes de configuração baseadas em sistema de arquivos o SDK carrega configurações.
type SettingSource = 'user' | 'project' | 'local';| Valor | Descrição | Localizaçã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 fez
const result = query({
prompt: "Analyze this code",
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: "Run CI checks",
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: "Run tests",
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: "Review this PR",
options: {
// settingSources: [] é o padrão, não precisa especificar
agents: { /* ... */ },
mcpServers: { /* ... */ },
allowedTools: ['Read', 'Grep', 'Glob']
}
});Carregando instruções do projeto CLAUDE.md:
// Carregar configurações do projeto para incluir arquivos CLAUDE.md
const result = query({
prompt: "Add a new feature following project conventions",
options: {
systemPrompt: {
type: 'preset',
preset: 'claude_code' // Necessário para usar CLAUDE.md
},
settingSources: ['project'], // Carrega CLAUDE.md do diretório do projeto
allowedTools: ['Read', 'Write', 'Edit']
}
});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):
- Configurações locais (
.claude/settings.local.json) - Configurações do projeto (
.claude/settings.json) - Configurações do usuário (
~/.claude/settings.json)
Opções programáticas (como agents, allowedTools) sempre substituem configurações do sistema de arquivos.
PermissionMode
PermissionModetype PermissionMode =
| 'default' // Comportamento de permissão padrão
| 'acceptEdits' // Aceitar automaticamente edições de arquivo
| 'bypassPermissions' // Contornar todas as verificações de permissão
| 'plan' // Modo de planejamento - sem execuçãoCanUseTool
CanUseToolTipo 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
PermissionResultResultado de uma verificação de permissão.
type PermissionResult =
| {
behavior: 'allow';
updatedInput: ToolInput;
updatedPermissions?: PermissionUpdate[];
}
| {
behavior: 'deny';
message: string;
interrupt?: boolean;
}McpServerConfig
McpServerConfigConfiguraçã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;
}SdkPluginConfig
SdkPluginConfigConfiguração para carregar plugins no SDK.
type SdkPluginConfig = {
type: 'local';
path: string;
}| Campo | Tipo | Descrição |
|---|---|---|
type | 'local' | Deve ser 'local' (apenas plugins locais atualmente suportados) |
path | string | Caminho absoluto ou relativo para o diretório do plugin |
Exemplo:
plugins: [
{ type: 'local', path: './my-plugin' },
{ type: 'local', path: '/absolute/path/to/plugin' }
]Para informações completas sobre criação e uso de plugins, veja Plugins.
Tipos de Mensagem
SDKMessage
SDKMessageTipo de união de todas as mensagens possíveis retornadas pela consulta.
type SDKMessage =
| SDKAssistantMessage
| SDKUserMessage
| SDKUserMessageReplay
| SDKResultMessage
| SDKSystemMessage
| SDKPartialAssistantMessage
| SDKCompactBoundaryMessage;SDKAssistantMessage
SDKAssistantMessageMensagem 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
SDKUserMessageMensagem 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
SDKUserMessageReplayMensagem de usuário repetida com UUID obrigatório.
type SDKUserMessageReplay = {
type: 'user';
uuid: UUID;
session_id: string;
message: APIUserMessage;
parent_tool_use_id: string | null;
}SDKResultMessage
SDKResultMessageMensagem 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
SDKSystemMessageMensagem 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
SDKPartialAssistantMessageMensagem parcial de transmissão (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
SDKCompactBoundaryMessageMensagem 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
SDKPermissionDenialInformações sobre um uso de ferramenta negado.
type SDKPermissionDenial = {
tool_name: string;
tool_use_id: string;
tool_input: ToolInput;
}Tipos de Hook
HookEvent
HookEventEventos de hook disponíveis.
type HookEvent =
| 'PreToolUse'
| 'PostToolUse'
| 'Notification'
| 'UserPromptSubmit'
| 'SessionStart'
| 'SessionEnd'
| 'Stop'
| 'SubagentStop'
| 'PreCompact';HookCallback
HookCallbackTipo 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
HookCallbackMatcherConfiguração de hook com matcher opcional.
interface HookCallbackMatcher {
matcher?: string;
hooks: HookCallback[];
}HookInput
HookInputTipo de união de todos os tipos de entrada de hook.
type HookInput =
| PreToolUseHookInput
| PostToolUseHookInput
| NotificationHookInput
| UserPromptSubmitHookInput
| SessionStartHookInput
| SessionEndHookInput
| StopHookInput
| SubagentStopHookInput
| PreCompactHookInput;BaseHookInput
BaseHookInputInterface 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
HookJSONOutputValor de retorno de 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 Claude Code integradas. Esses tipos são exportados de @anthropic-ai/claude-agent-sdk e podem ser usados para interações de ferramentas type-safe.
ToolInput
ToolInputNota: 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
| FileReadInput
| FileWriteInput
| GlobInput
| GrepInput
| KillShellInput
| NotebookEditInput
| WebFetchInput
| WebSearchInput
| TodoWriteInput
| ExitPlanModeInput
| ListMcpResourcesInput
| ReadMcpResourceInput;Task
Nome da ferramenta: Task
interface AgentInput {
/**
* Uma descrição breve (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;
}Inicia 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áximo 600000)
*/
timeout?: number;
/**
* Descrição clara e concisa do que este comando faz em 5-10 palavras
*/
description?: string;
/**
* Defina 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 (deve ser diferente de old_string)
*/
new_string: string;
/**
* Substituir todas as ocorrências de old_string (padrão false)
*/
replace_all?: boolean;
}Realiza substituições exatas de string em arquivos.
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 a pesquisar (padrão 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 a pesquisar
*/
pattern: string;
/**
* Arquivo ou diretório a pesquisar (padrão cwd)
*/
path?: string;
/**
* Padrão glob para filtrar arquivos (ex: "*.js")
*/
glob?: string;
/**
* Tipo de arquivo a 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 a mostrar antes de cada correspondência
*/
'-B'?: number;
/**
* Linhas a mostrar após cada correspondência
*/
'-A'?: number;
/**
* Linhas a mostrar antes e após cada correspondência
*/
'-C'?: number;
/**
* Limitar saída às primeiras N linhas/entradas
*/
head_limit?: number;
/**
* Ativar modo multilinha
*/
multiline?: boolean;
}Ferramenta de pesquisa poderosa construída em ripgrep com suporte a regex.
KillBash
Nome da ferramenta: KillBash
interface KillShellInput {
/**
* O ID do shell em segundo plano a 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 do 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 a executar no conteúdo buscado
*/
prompt: string;
}Busca conteúdo de uma URL e o processa com um modelo de IA.
WebSearch
Nome da ferramenta: WebSearch
interface WebSearchInput {
/**
* A consulta de pesquisa a usar
*/
query: string;
/**
* Incluir apenas resultados desses domínios
*/
allowed_domains?: string[];
/**
* Nunca incluir resultados desses domínios
*/
blocked_domains?: string[];
}Pesquisa a 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 rastrear progresso.
ExitPlanMode
Nome da ferramenta: ExitPlanMode
interface ExitPlanModeInput {
/**
* O plano a executar pelo usuário para aprovação
*/
plan: string;
}Sai do modo de planejamento e solicita ao usuário que aprove 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 a 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 Claude Code integradas. Esses tipos representam os dados de resposta reais retornados por cada ferramenta.
ToolOutput
ToolOutputNota: 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
| ReadOutput
| WriteOutput
| GlobOutput
| GrepOutput
| KillBashOutput
| NotebookEditOutput
| WebFetchOutput
| WebSearchOutput
| TodoWriteOutput
| ExitPlanModeOutput
| ListMcpResourcesOutput
| ReadMcpResourceOutput;Task
Nome da ferramenta: Task
interface TaskOutput {
/**
* Mensagem de resultado final do suagente
*/
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 suagente 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 de 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.
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 com sucesso o arquivo.
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 que foi morto
*/
shell_id: string;
}Retorna confirmação após encerrar o shell em segundo plano.
NotebookEdit
Nome da ferramenta: NotebookEdit
interface NotebookEditOutput {
/**
* Mensagem de sucesso
*/
message: string;
/**
* Tipo de edição realizada
*/
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 de pesquisa
*/
results: Array<{
title: string;
url: string;
snippet: string;
/**
* Metadados adicionais se disponível
*/
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 planejamento.
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
PermissionUpdateOperaçõ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
PermissionBehaviortype PermissionBehavior = 'allow' | 'deny' | 'ask';PermissionUpdateDestination
PermissionUpdateDestinationtype PermissionUpdateDestination =
| 'userSettings' // Configurações globais do usuário
| 'projectSettings' // Configurações do projeto por diretório
| 'localSettings' // Configurações locais gitignored
| 'session' // Apenas sessão atualPermissionRuleValue
PermissionRuleValuetype PermissionRuleValue = {
toolName: string;
ruleContent?: string;
}Outros Tipos
ApiKeySource
ApiKeySourcetype ApiKeySource = 'user' | 'project' | 'org' | 'temporary';ConfigScope
ConfigScopetype ConfigScope = 'local' | 'user' | 'project';NonNullableUsage
NonNullableUsageUma 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
UsageEstatí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
CallToolResultTipo 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
AbortErrorClasse de erro personalizada para operações de aborto.
class AbortError extends Error {}Veja também
- Visão geral do SDK - Conceitos gerais do SDK
- Referência do SDK Python - Documentação do SDK Python
- Referência da CLI - Interface de linha de comando
- Fluxos de trabalho comuns - Guias passo a passo