Installazione

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

Funzioni

query()

La funzione principale per interagire con Claude Code. Crea un generatore asincrono che trasmette i messaggi man mano che arrivano.
function query({
  prompt,
  options
}: {
  prompt: string | AsyncIterable<SDKUserMessage>;
  options?: Options;
}): Query

Parametri

ParametroTipoDescrizione
promptstring | AsyncIterable<SDKUserMessage>Il prompt di input come stringa o iterabile asincrono per la modalità di streaming
optionsOptionsOggetto di configurazione opzionale (vedi il tipo Options di seguito)

Restituisce

Restituisce un oggetto Query che estende AsyncGenerator<SDKMessage, void> con metodi aggiuntivi.

tool()

Crea una definizione di strumento MCP type-safe per l’uso con i server MCP dell’SDK.
function tool<Schema extends ZodRawShape>(
  name: string,
  description: string,
  inputSchema: Schema,
  handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
): SdkMcpToolDefinition<Schema>

Parametri

ParametroTipoDescrizione
namestringIl nome dello strumento
descriptionstringUna descrizione di cosa fa lo strumento
inputSchemaSchema extends ZodRawShapeSchema Zod che definisce i parametri di input dello strumento
handler(args, extra) => Promise<CallToolResult>Funzione asincrona che esegue la logica dello strumento

createSdkMcpServer()

Crea un’istanza di server MCP che viene eseguita nello stesso processo della tua applicazione.
function createSdkMcpServer(options: {
  name: string;
  version?: string;
  tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance

Parametri

ParametroTipoDescrizione
options.namestringIl nome del server MCP
options.versionstringStringa di versione opzionale
options.toolsArray<SdkMcpToolDefinition>Array di definizioni di strumenti creati con tool()

Tipi

Options

Oggetto di configurazione per la funzione query().
ProprietàTipoPredefinitoDescrizione
abortControllerAbortControllernew AbortController()Controller per annullare le operazioni
additionalDirectoriesstring[][]Directory aggiuntive a cui Claude può accedere
agentsRecord<string, [AgentDefinition](#agentdefinition)>undefinedDefinisci programmaticamente i subagent
allowedToolsstring[]Tutti gli strumentiElenco dei nomi degli strumenti consentiti
canUseToolCanUseToolundefinedFunzione di autorizzazione personalizzata per l’uso dello strumento
continuebooleanfalseContinua la conversazione più recente
cwdstringprocess.cwd()Directory di lavoro corrente
disallowedToolsstring[][]Elenco dei nomi degli strumenti non consentiti
envDict<string>process.envVariabili di ambiente
executable'bun' | 'deno' | 'node'Rilevamento automaticoRuntime JavaScript da utilizzare
executableArgsstring[][]Argomenti da passare all’eseguibile
extraArgsRecord<string, string | null>{}Argomenti aggiuntivi
fallbackModelstringundefinedModello da utilizzare se il primario fallisce
forkSessionbooleanfalseQuando si riprende con resume, esegui il fork a un nuovo ID di sessione invece di continuare la sessione originale
hooksPartial<Record<HookEvent, HookCallbackMatcher[]>>{}Callback hook per gli eventi
includePartialMessagesbooleanfalseIncludi eventi di messaggi parziali
maxThinkingTokensnumberundefinedToken massimi per il processo di thinking
maxTurnsnumberundefinedTurni di conversazione massimi
mcpServersRecord<string, [McpServerConfig](#mcpserverconfig)>{}Configurazioni del server MCP
modelstringPredefinito da CLIModello Claude da utilizzare
pathToClaudeCodeExecutablestringRilevamento automaticoPercorso all’eseguibile Claude Code
permissionModePermissionMode'default'Modalità di autorizzazione per la sessione
permissionPromptToolNamestringundefinedNome dello strumento MCP per i prompt di autorizzazione
pluginsSdkPluginConfig[][]Carica plugin personalizzati da percorsi locali. Vedi Plugin per i dettagli
resumestringundefinedID di sessione da riprendere
settingSourcesSettingSource[][] (nessuna impostazione)Controlla quali impostazioni del filesystem caricare. Se omesso, nessuna impostazione viene caricata. Nota: Deve includere 'project' per caricare i file CLAUDE.md
stderr(data: string) => voidundefinedCallback per l’output stderr
strictMcpConfigbooleanfalseApplica la convalida MCP rigorosa
systemPromptstring | { type: 'preset'; preset: 'claude_code'; append?: string }undefined (prompt vuoto)Configurazione del prompt di sistema. Passa una stringa per un prompt personalizzato, o { type: 'preset', preset: 'claude_code' } per utilizzare il prompt di sistema di Claude Code. Quando si utilizza la forma dell’oggetto preset, aggiungi append per estendere il prompt di sistema con istruzioni aggiuntive

Query

Interfaccia restituita dalla funzione query().
interface Query extends AsyncGenerator<SDKMessage, void> {
  interrupt(): Promise<void>;
  setPermissionMode(mode: PermissionMode): Promise<void>;
}

Metodi

MetodoDescrizione
interrupt()Interrompe la query (disponibile solo in modalità input di streaming)
setPermissionMode()Cambia la modalità di autorizzazione (disponibile solo in modalità input di streaming)

AgentDefinition

Configurazione per un subagent definito programmaticamente.
type AgentDefinition = {
  description: string;
  tools?: string[];
  prompt: string;
  model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}
CampoObbligatorioDescrizione
descriptionDescrizione in linguaggio naturale di quando utilizzare questo agent
toolsNoArray di nomi di strumenti consentiti. Se omesso, eredita tutti gli strumenti
promptIl prompt di sistema dell’agent
modelNoOverride del modello per questo agent. Se omesso, utilizza il modello principale

SettingSource

Controlla quali fonti di configurazione basate su filesystem l’SDK carica le impostazioni da.
type SettingSource = 'user' | 'project' | 'local';
ValoreDescrizionePosizione
'user'Impostazioni utente globali~/.claude/settings.json
'project'Impostazioni di progetto condivise (controllate dalla versione).claude/settings.json
'local'Impostazioni di progetto locali (gitignored).claude/settings.local.json

Comportamento predefinito

Quando settingSources è omesso o undefined, l’SDK non carica alcuna impostazione del filesystem. Questo fornisce isolamento per le applicazioni SDK.

Perché utilizzare settingSources?

Carica tutte le impostazioni del filesystem (comportamento legacy):
// Carica tutte le impostazioni come faceva l'SDK v0.0.x
const result = query({
  prompt: "Analizza questo codice",
  options: {
    settingSources: ['user', 'project', 'local']  // Carica tutte le impostazioni
  }
});
Carica solo fonti di impostazioni specifiche:
// Carica solo le impostazioni di progetto, ignora quelle utente e locali
const result = query({
  prompt: "Esegui i controlli CI",
  options: {
    settingSources: ['project']  // Solo .claude/settings.json
  }
});
Ambienti di testing e CI:
// Assicura un comportamento coerente in CI escludendo le impostazioni locali
const result = query({
  prompt: "Esegui i test",
  options: {
    settingSources: ['project'],  // Solo le impostazioni condivise dal team
    permissionMode: 'bypassPermissions'
  }
});
Applicazioni solo SDK:
// Definisci tutto programmaticamente (comportamento predefinito)
// Nessuna dipendenza dal filesystem - settingSources è predefinito a []
const result = query({
  prompt: "Rivedi questo PR",
  options: {
    // settingSources: [] è il predefinito, non è necessario specificare
    agents: { /* ... */ },
    mcpServers: { /* ... */ },
    allowedTools: ['Read', 'Grep', 'Glob']
  }
});
Caricamento delle istruzioni di progetto CLAUDE.md:
// Carica le impostazioni di progetto per includere i file CLAUDE.md
const result = query({
  prompt: "Aggiungi una nuova funzionalità seguendo le convenzioni del progetto",
  options: {
    systemPrompt: {
      type: 'preset',
      preset: 'claude_code'  // Obbligatorio per utilizzare CLAUDE.md
    },
    settingSources: ['project'],  // Carica CLAUDE.md dalla directory del progetto
    allowedTools: ['Read', 'Write', 'Edit']
  }
});

Precedenza delle impostazioni

Quando più fonti vengono caricate, le impostazioni vengono unite con questa precedenza (da più alta a più bassa):
  1. Impostazioni locali (.claude/settings.local.json)
  2. Impostazioni di progetto (.claude/settings.json)
  3. Impostazioni utente (~/.claude/settings.json)
Le opzioni programmatiche (come agents, allowedTools) sovrascrivono sempre le impostazioni del filesystem.

PermissionMode

type PermissionMode =
  | 'default'           // Comportamento di autorizzazione standard
  | 'acceptEdits'       // Accetta automaticamente le modifiche ai file
  | 'bypassPermissions' // Ignora tutti i controlli di autorizzazione
  | 'plan'              // Modalità di pianificazione - nessuna esecuzione

CanUseTool

Tipo di funzione di autorizzazione personalizzata per controllare l’uso dello strumento.
type CanUseTool = (
  toolName: string,
  input: ToolInput,
  options: {
    signal: AbortSignal;
    suggestions?: PermissionUpdate[];
  }
) => Promise<PermissionResult>;

PermissionResult

Risultato di un controllo di autorizzazione.
type PermissionResult = 
  | {
      behavior: 'allow';
      updatedInput: ToolInput;
      updatedPermissions?: PermissionUpdate[];
    }
  | {
      behavior: 'deny';
      message: string;
      interrupt?: boolean;
    }

McpServerConfig

Configurazione per i server 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

Configurazione per il caricamento dei plugin nell’SDK.
type SdkPluginConfig = {
  type: 'local';
  path: string;
}
CampoTipoDescrizione
type'local'Deve essere 'local' (attualmente sono supportati solo i plugin locali)
pathstringPercorso assoluto o relativo alla directory del plugin
Esempio:
plugins: [
  { type: 'local', path: './my-plugin' },
  { type: 'local', path: '/absolute/path/to/plugin' }
]
Per informazioni complete sulla creazione e l’utilizzo dei plugin, vedi Plugin.

Tipi di messaggi

SDKMessage

Tipo di unione di tutti i possibili messaggi restituiti dalla query.
type SDKMessage = 
  | SDKAssistantMessage
  | SDKUserMessage
  | SDKUserMessageReplay
  | SDKResultMessage
  | SDKSystemMessage
  | SDKPartialAssistantMessage
  | SDKCompactBoundaryMessage;

SDKAssistantMessage

Messaggio di risposta dell’assistente.
type SDKAssistantMessage = {
  type: 'assistant';
  uuid: UUID;
  session_id: string;
  message: APIAssistantMessage; // Da Anthropic SDK
  parent_tool_use_id: string | null;
}

SDKUserMessage

Messaggio di input dell’utente.
type SDKUserMessage = {
  type: 'user';
  uuid?: UUID;
  session_id: string;
  message: APIUserMessage; // Da Anthropic SDK
  parent_tool_use_id: string | null;
}

SDKUserMessageReplay

Messaggio utente riprodotto con UUID obbligatorio.
type SDKUserMessageReplay = {
  type: 'user';
  uuid: UUID;
  session_id: string;
  message: APIUserMessage;
  parent_tool_use_id: string | null;
}

SDKResultMessage

Messaggio di risultato finale.
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

Messaggio di inizializzazione 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

Messaggio parziale di streaming (solo quando includePartialMessages è true).
type SDKPartialAssistantMessage = {
  type: 'stream_event';
  event: RawMessageStreamEvent; // Da Anthropic SDK
  parent_tool_use_id: string | null;
  uuid: UUID;
  session_id: string;
}

SDKCompactBoundaryMessage

Messaggio che indica un limite di compattazione della conversazione.
type SDKCompactBoundaryMessage = {
  type: 'system';
  subtype: 'compact_boundary';
  uuid: UUID;
  session_id: string;
  compact_metadata: {
    trigger: 'manual' | 'auto';
    pre_tokens: number;
  };
}

SDKPermissionDenial

Informazioni su un uso dello strumento negato.
type SDKPermissionDenial = {
  tool_name: string;
  tool_use_id: string;
  tool_input: ToolInput;
}

Tipi di hook

HookEvent

Eventi hook disponibili.
type HookEvent = 
  | 'PreToolUse'
  | 'PostToolUse'
  | 'Notification'
  | 'UserPromptSubmit'
  | 'SessionStart'
  | 'SessionEnd'
  | 'Stop'
  | 'SubagentStop'
  | 'PreCompact';

HookCallback

Tipo di funzione callback hook.
type HookCallback = (
  input: HookInput, // Unione di tutti i tipi di input hook
  toolUseID: string | undefined,
  options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;

HookCallbackMatcher

Configurazione hook con matcher opzionale.
interface HookCallbackMatcher {
  matcher?: string;
  hooks: HookCallback[];
}

HookInput

Tipo di unione di tutti i tipi di input hook.
type HookInput = 
  | PreToolUseHookInput
  | PostToolUseHookInput
  | NotificationHookInput
  | UserPromptSubmitHookInput
  | SessionStartHookInput
  | SessionEndHookInput
  | StopHookInput
  | SubagentStopHookInput
  | PreCompactHookInput;

BaseHookInput

Interfaccia base che tutti i tipi di input hook estendono.
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

Valore di ritorno dell’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;
      };
}

Tipi di input dello strumento

Documentazione degli schemi di input per tutti gli strumenti Claude Code incorporati. Questi tipi vengono esportati da @anthropic-ai/claude-agent-sdk e possono essere utilizzati per interazioni di strumenti type-safe.

ToolInput

Nota: Questo è un tipo solo per la documentazione per chiarezza. Rappresenta l’unione di tutti i tipi di input dello strumento.
type ToolInput = 
  | AgentInput
  | BashInput
  | BashOutputInput
  | FileEditInput
  | FileReadInput
  | FileWriteInput
  | GlobInput
  | GrepInput
  | KillShellInput
  | NotebookEditInput
  | WebFetchInput
  | WebSearchInput
  | TodoWriteInput
  | ExitPlanModeInput
  | ListMcpResourcesInput
  | ReadMcpResourceInput;

Task

Nome dello strumento: Task
interface AgentInput {
  /**
   * Una breve descrizione del compito (3-5 parole)
   */
  description: string;
  /**
   * Il compito che l'agent deve eseguire
   */
  prompt: string;
  /**
   * Il tipo di agent specializzato da utilizzare per questo compito
   */
  subagent_type: string;
}
Avvia un nuovo agent per gestire compiti complessi e multi-step in modo autonomo.

Bash

Nome dello strumento: Bash
interface BashInput {
  /**
   * Il comando da eseguire
   */
  command: string;
  /**
   * Timeout opzionale in millisecondi (massimo 600000)
   */
  timeout?: number;
  /**
   * Descrizione chiara e concisa di cosa fa questo comando in 5-10 parole
   */
  description?: string;
  /**
   * Impostare su true per eseguire questo comando in background
   */
  run_in_background?: boolean;
}
Esegue comandi bash in una sessione shell persistente con timeout opzionale ed esecuzione in background.

BashOutput

Nome dello strumento: BashOutput
interface BashOutputInput {
  /**
   * L'ID della shell background da cui recuperare l'output
   */
  bash_id: string;
  /**
   * Regex opzionale per filtrare le righe di output
   */
  filter?: string;
}
Recupera l’output da una shell bash in background in esecuzione o completata.

Edit

Nome dello strumento: Edit
interface FileEditInput {
  /**
   * Il percorso assoluto del file da modificare
   */
  file_path: string;
  /**
   * Il testo da sostituire
   */
  old_string: string;
  /**
   * Il testo con cui sostituirlo (deve essere diverso da old_string)
   */
  new_string: string;
  /**
   * Sostituisci tutte le occorrenze di old_string (predefinito false)
   */
  replace_all?: boolean;
}
Esegue sostituzioni di stringhe esatte nei file.

Read

Nome dello strumento: Read
interface FileReadInput {
  /**
   * Il percorso assoluto del file da leggere
   */
  file_path: string;
  /**
   * Il numero di riga da cui iniziare la lettura
   */
  offset?: number;
  /**
   * Il numero di righe da leggere
   */
  limit?: number;
}
Legge i file dal filesystem locale, inclusi testo, immagini, PDF e notebook Jupyter.

Write

Nome dello strumento: Write
interface FileWriteInput {
  /**
   * Il percorso assoluto del file da scrivere
   */
  file_path: string;
  /**
   * Il contenuto da scrivere nel file
   */
  content: string;
}
Scrive un file nel filesystem locale, sovrascrivendo se esiste.

Glob

Nome dello strumento: Glob
interface GlobInput {
  /**
   * Il pattern glob per abbinare i file
   */
  pattern: string;
  /**
   * La directory in cui cercare (predefinito cwd)
   */
  path?: string;
}
Corrispondenza di pattern di file veloce che funziona con qualsiasi dimensione di codebase.

Grep

Nome dello strumento: Grep
interface GrepInput {
  /**
   * Il pattern di espressione regolare da cercare
   */
  pattern: string;
  /**
   * File o directory in cui cercare (predefinito cwd)
   */
  path?: string;
  /**
   * Pattern glob per filtrare i file (ad es. "*.js")
   */
  glob?: string;
  /**
   * Tipo di file da cercare (ad es. "js", "py", "rust")
   */
  type?: string;
  /**
   * Modalità di output: "content", "files_with_matches", o "count"
   */
  output_mode?: 'content' | 'files_with_matches' | 'count';
  /**
   * Ricerca senza distinzione tra maiuscole e minuscole
   */
  '-i'?: boolean;
  /**
   * Mostra i numeri di riga (per la modalità content)
   */
  '-n'?: boolean;
  /**
   * Righe da mostrare prima di ogni corrispondenza
   */
  '-B'?: number;
  /**
   * Righe da mostrare dopo ogni corrispondenza
   */
  '-A'?: number;
  /**
   * Righe da mostrare prima e dopo ogni corrispondenza
   */
  '-C'?: number;
  /**
   * Limita l'output alle prime N righe/voci
   */
  head_limit?: number;
  /**
   * Abilita la modalità multilinea
   */
  multiline?: boolean;
}
Potente strumento di ricerca basato su ripgrep con supporto regex.

KillBash

Nome dello strumento: KillBash
interface KillShellInput {
  /**
   * L'ID della shell background da terminare
   */
  shell_id: string;
}
Termina una shell bash in background in esecuzione per ID.

NotebookEdit

Nome dello strumento: NotebookEdit
interface NotebookEditInput {
  /**
   * Il percorso assoluto del file del notebook Jupyter
   */
  notebook_path: string;
  /**
   * L'ID della cella da modificare
   */
  cell_id?: string;
  /**
   * La nuova sorgente per la cella
   */
  new_source: string;
  /**
   * Il tipo della cella (code o markdown)
   */
  cell_type?: 'code' | 'markdown';
  /**
   * Il tipo di modifica (replace, insert, delete)
   */
  edit_mode?: 'replace' | 'insert' | 'delete';
}
Modifica le celle nei file del notebook Jupyter.

WebFetch

Nome dello strumento: WebFetch
interface WebFetchInput {
  /**
   * L'URL da cui recuperare il contenuto
   */
  url: string;
  /**
   * Il prompt da eseguire sul contenuto recuperato
   */
  prompt: string;
}
Recupera il contenuto da un URL e lo elabora con un modello AI.

WebSearch

Nome dello strumento: WebSearch
interface WebSearchInput {
  /**
   * La query di ricerca da utilizzare
   */
  query: string;
  /**
   * Includi solo i risultati da questi domini
   */
  allowed_domains?: string[];
  /**
   * Non includere mai i risultati da questi domini
   */
  blocked_domains?: string[];
}
Cerca il web e restituisce i risultati formattati.

TodoWrite

Nome dello strumento: TodoWrite
interface TodoWriteInput {
  /**
   * L'elenco todo aggiornato
   */
  todos: Array<{
    /**
     * La descrizione del compito
     */
    content: string;
    /**
     * Lo stato del compito
     */
    status: 'pending' | 'in_progress' | 'completed';
    /**
     * Forma attiva della descrizione del compito
     */
    activeForm: string;
  }>;
}
Crea e gestisce un elenco di compiti strutturato per il tracciamento dei progressi.

ExitPlanMode

Nome dello strumento: ExitPlanMode
interface ExitPlanModeInput {
  /**
   * Il piano da eseguire dall'utente per l'approvazione
   */
  plan: string;
}
Esce dalla modalità di pianificazione e richiede all’utente di approvare il piano.

ListMcpResources

Nome dello strumento: ListMcpResources
interface ListMcpResourcesInput {
  /**
   * Nome del server opzionale per filtrare le risorse per
   */
  server?: string;
}
Elenca le risorse MCP disponibili dai server connessi.

ReadMcpResource

Nome dello strumento: ReadMcpResource
interface ReadMcpResourceInput {
  /**
   * Il nome del server MCP
   */
  server: string;
  /**
   * L'URI della risorsa da leggere
   */
  uri: string;
}
Legge una risorsa MCP specifica da un server.

Tipi di output dello strumento

Documentazione degli schemi di output per tutti gli strumenti Claude Code incorporati. Questi tipi rappresentano i dati di risposta effettivi restituiti da ogni strumento.

ToolOutput

Nota: Questo è un tipo solo per la documentazione per chiarezza. Rappresenta l’unione di tutti i tipi di output dello strumento.
type ToolOutput = 
  | TaskOutput
  | BashOutput
  | BashOutputToolOutput
  | EditOutput
  | ReadOutput
  | WriteOutput
  | GlobOutput
  | GrepOutput
  | KillBashOutput
  | NotebookEditOutput
  | WebFetchOutput
  | WebSearchOutput
  | TodoWriteOutput
  | ExitPlanModeOutput
  | ListMcpResourcesOutput
  | ReadMcpResourceOutput;

Task

Nome dello strumento: Task
interface TaskOutput {
  /**
   * Messaggio di risultato finale dal subagent
   */
  result: string;
  /**
   * Statistiche di utilizzo dei token
   */
  usage?: {
    input_tokens: number;
    output_tokens: number;
    cache_creation_input_tokens?: number;
    cache_read_input_tokens?: number;
  };
  /**
   * Costo totale in USD
   */
  total_cost_usd?: number;
  /**
   * Durata dell'esecuzione in millisecondi
   */
  duration_ms?: number;
}
Restituisce il risultato finale dal subagent dopo aver completato il compito delegato.

Bash

Nome dello strumento: Bash
interface BashOutput {
  /**
   * Output combinato di stdout e stderr
   */
  output: string;
  /**
   * Codice di uscita del comando
   */
  exitCode: number;
  /**
   * Se il comando è stato terminato a causa del timeout
   */
  killed?: boolean;
  /**
   * ID della shell per i processi in background
   */
  shellId?: string;
}
Restituisce l’output del comando con lo stato di uscita. I comandi in background restituiscono immediatamente con uno shellId.

BashOutput

Nome dello strumento: BashOutput
interface BashOutputToolOutput {
  /**
   * Nuovo output dall'ultimo controllo
   */
  output: string;
  /**
   * Stato della shell corrente
   */
  status: 'running' | 'completed' | 'failed';
  /**
   * Codice di uscita (quando completato)
   */
  exitCode?: number;
}
Restituisce l’output incrementale dalle shell in background.

Edit

Nome dello strumento: Edit
interface EditOutput {
  /**
   * Messaggio di conferma
   */
  message: string;
  /**
   * Numero di sostituzioni effettuate
   */
  replacements: number;
  /**
   * Percorso del file che è stato modificato
   */
  file_path: string;
}
Restituisce la conferma delle modifiche riuscite con il conteggio delle sostituzioni.

Read

Nome dello strumento: Read
type ReadOutput = 
  | TextFileOutput
  | ImageFileOutput
  | PDFFileOutput
  | NotebookFileOutput;

interface TextFileOutput {
  /**
   * Contenuto del file con numeri di riga
   */
  content: string;
  /**
   * Numero totale di righe nel file
   */
  total_lines: number;
  /**
   * Righe effettivamente restituite
   */
  lines_returned: number;
}

interface ImageFileOutput {
  /**
   * Dati dell'immagine codificati in base64
   */
  image: string;
  /**
   * Tipo MIME dell'immagine
   */
  mime_type: string;
  /**
   * Dimensione del file in byte
   */
  file_size: number;
}

interface PDFFileOutput {
  /**
   * Array dei contenuti delle pagine
   */
  pages: Array<{
    page_number: number;
    text?: string;
    images?: Array<{
      image: string;
      mime_type: string;
    }>;
  }>;
  /**
   * Numero totale di pagine
   */
  total_pages: number;
}

interface NotebookFileOutput {
  /**
   * Celle del notebook Jupyter
   */
  cells: Array<{
    cell_type: 'code' | 'markdown';
    source: string;
    outputs?: any[];
    execution_count?: number;
  }>;
  /**
   * Metadati del notebook
   */
  metadata?: Record<string, any>;
}
Restituisce il contenuto del file in un formato appropriato al tipo di file.

Write

Nome dello strumento: Write
interface WriteOutput {
  /**
   * Messaggio di successo
   */
  message: string;
  /**
   * Numero di byte scritti
   */
  bytes_written: number;
  /**
   * Percorso del file che è stato scritto
   */
  file_path: string;
}
Restituisce la conferma dopo aver scritto con successo il file.

Glob

Nome dello strumento: Glob
interface GlobOutput {
  /**
   * Array dei percorsi dei file corrispondenti
   */
  matches: string[];
  /**
   * Numero di corrispondenze trovate
   */
  count: number;
  /**
   * Directory di ricerca utilizzata
   */
  search_path: string;
}
Restituisce i percorsi dei file che corrispondono al pattern glob, ordinati per ora di modifica.

Grep

Nome dello strumento: Grep
type GrepOutput = 
  | GrepContentOutput
  | GrepFilesOutput
  | GrepCountOutput;

interface GrepContentOutput {
  /**
   * Righe corrispondenti con contesto
   */
  matches: Array<{
    file: string;
    line_number?: number;
    line: string;
    before_context?: string[];
    after_context?: string[];
  }>;
  /**
   * Numero totale di corrispondenze
   */
  total_matches: number;
}

interface GrepFilesOutput {
  /**
   * File contenenti corrispondenze
   */
  files: string[];
  /**
   * Numero di file con corrispondenze
   */
  count: number;
}

interface GrepCountOutput {
  /**
   * Conteggi delle corrispondenze per file
   */
  counts: Array<{
    file: string;
    count: number;
  }>;
  /**
   * Corrispondenze totali in tutti i file
   */
  total: number;
}
Restituisce i risultati della ricerca nel formato specificato da output_mode.

KillBash

Nome dello strumento: KillBash
interface KillBashOutput {
  /**
   * Messaggio di successo
   */
  message: string;
  /**
   * ID della shell terminata
   */
  shell_id: string;
}
Restituisce la conferma dopo aver terminato la shell in background.

NotebookEdit

Nome dello strumento: NotebookEdit
interface NotebookEditOutput {
  /**
   * Messaggio di successo
   */
  message: string;
  /**
   * Tipo di modifica eseguita
   */
  edit_type: 'replaced' | 'inserted' | 'deleted';
  /**
   * ID della cella interessata
   */
  cell_id?: string;
  /**
   * Celle totali nel notebook dopo la modifica
   */
  total_cells: number;
}
Restituisce la conferma dopo aver modificato il notebook Jupyter.

WebFetch

Nome dello strumento: WebFetch
interface WebFetchOutput {
  /**
   * Risposta del modello AI al prompt
   */
  response: string;
  /**
   * URL che è stato recuperato
   */
  url: string;
  /**
   * URL finale dopo i reindirizzamenti
   */
  final_url?: string;
  /**
   * Codice di stato HTTP
   */
  status_code?: number;
}
Restituisce l’analisi dell’IA del contenuto web recuperato.

WebSearch

Nome dello strumento: WebSearch
interface WebSearchOutput {
  /**
   * Risultati della ricerca
   */
  results: Array<{
    title: string;
    url: string;
    snippet: string;
    /**
     * Metadati aggiuntivi se disponibili
     */
    metadata?: Record<string, any>;
  }>;
  /**
   * Numero totale di risultati
   */
  total_results: number;
  /**
   * La query che è stata cercata
   */
  query: string;
}
Restituisce i risultati della ricerca formattati dal web.

TodoWrite

Nome dello strumento: TodoWrite
interface TodoWriteOutput {
  /**
   * Messaggio di successo
   */
  message: string;
  /**
   * Statistiche attuali dei compiti
   */
  stats: {
    total: number;
    pending: number;
    in_progress: number;
    completed: number;
  };
}
Restituisce la conferma con le statistiche attuali dei compiti.

ExitPlanMode

Nome dello strumento: ExitPlanMode
interface ExitPlanModeOutput {
  /**
   * Messaggio di conferma
   */
  message: string;
  /**
   * Se l'utente ha approvato il piano
   */
  approved?: boolean;
}
Restituisce la conferma dopo aver uscito dalla modalità di pianificazione.

ListMcpResources

Nome dello strumento: ListMcpResources
interface ListMcpResourcesOutput {
  /**
   * Risorse disponibili
   */
  resources: Array<{
    uri: string;
    name: string;
    description?: string;
    mimeType?: string;
    server: string;
  }>;
  /**
   * Numero totale di risorse
   */
  total: number;
}
Restituisce l’elenco delle risorse MCP disponibili.

ReadMcpResource

Nome dello strumento: ReadMcpResource
interface ReadMcpResourceOutput {
  /**
   * Contenuti della risorsa
   */
  contents: Array<{
    uri: string;
    mimeType?: string;
    text?: string;
    blob?: string;
  }>;
  /**
   * Server che ha fornito la risorsa
   */
  server: string;
}
Restituisce il contenuto della risorsa MCP richiesta.

Tipi di autorizzazione

PermissionUpdate

Operazioni per l’aggiornamento delle autorizzazioni.
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'     // Impostazioni utente globali
  | 'projectSettings'  // Impostazioni di progetto per directory
  | 'localSettings'    // Impostazioni locali gitignored
  | 'session'          // Solo sessione corrente

PermissionRuleValue

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

Altri tipi

ApiKeySource

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

ConfigScope

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

NonNullableUsage

Una versione di Usage con tutti i campi nullable resi non-nullable.
type NonNullableUsage = {
  [K in keyof Usage]: NonNullable<Usage[K]>;
}

Usage

Statistiche di utilizzo dei token (da @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 di risultato dello strumento MCP (da @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
  content: Array<{
    type: 'text' | 'image' | 'resource';
    // I campi aggiuntivi variano in base al tipo
  }>;
  isError?: boolean;
}

AbortError

Classe di errore personalizzata per le operazioni di abort.
class AbortError extends Error {}

Vedi anche