Loading...
    • Guida per sviluppatori
    • Riferimento API
    • MCP
    • Risorse
    • Note di rilascio
    Search...
    ⌘K
    Primi passi
    Introduzione a ClaudeAvvio rapido
    Modelli e prezzi
    Panoramica dei modelliScelta di un modelloNovità in Claude 4.5Migrazione a Claude 4.5Deprecazioni dei modelliPrezzi
    Costruisci con Claude
    Panoramica delle funzionalitàUtilizzo dell'API MessagesFinestre di contestoBest practice di prompt
    Capacità
    Prompt cachingModifica del contestoExtended thinkingSforzoStreaming di messaggiElaborazione batchCitazioniSupporto multilingueConteggio tokenEmbeddingsVisioneSupporto PDFAPI FilesRisultati di ricercaOutput strutturatiComponente aggiuntivo Google Sheets
    Strumenti
    PanoramicaCome implementare l'uso degli strumentiUso efficiente dei token con gli strumentiStreaming granulare degli strumentiStrumento BashStrumento di esecuzione del codiceChiamata programmatica degli strumentiStrumento Computer useStrumento editor di testoStrumento Web fetchStrumento Web searchStrumento MemoryStrumento Tool search
    Agent Skills
    PanoramicaAvvio rapidoBest practiceUtilizzo di Skills con l'API
    Agent SDK
    PanoramicaTypeScript SDKPython SDKGuida alla migrazione
    Guide
    Streaming InputGestione dei permessiGestione delle sessioniOutput strutturati nell'SDKHosting dell'Agent SDKModifica dei prompt di sistemaMCP nell'SDKStrumenti personalizzatiSubagent nell'SDKSlash Commands nell'SDKAgent Skills nell'SDKTracciamento dei costi e dell'utilizzoElenchi di attivitàPlugin nell'SDK
    MCP nell'API
    Connettore MCPServer MCP remoti
    Claude su piattaforme di terze parti
    Amazon BedrockMicrosoft FoundryVertex AI
    Prompt engineering
    PanoramicaGeneratore di promptUsa modelli di promptMiglioratore di promptSii chiaro e direttoUsa esempi (multishot prompting)Lascia che Claude pensi (CoT)Usa tag XMLDai a Claude un ruolo (prompt di sistema)Precompila la risposta di ClaudeConcatena prompt complessiSuggerimenti per contesto lungoSuggerimenti per extended thinking
    Test e valutazione
    Definisci criteri di successoSviluppa casi di testUtilizzo dello strumento di valutazioneRiduzione della latenza
    Rafforza i guardrail
    Riduci le allucinazioniAumenta la coerenza dell'outputMitiga i jailbreakStreaming dei rifiutiRiduci la perdita di promptMantieni Claude nel personaggio
    Amministrazione e monitoraggio
    Panoramica dell'API AdminAPI di utilizzo e costiAPI Claude Code Analytics
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    Agent SDK

    Riferimento SDK Agent - TypeScript

    Riferimento API completo per l'SDK Agent TypeScript, incluse tutte le funzioni, i tipi e le interfacce.

    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'utilizzo 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 non riesce
    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 di hook per gli eventi
    includePartialMessagesbooleanfalseIncludi gli eventi di messaggi parziali
    maxThinkingTokensnumberundefinedToken massimi per il processo di pensiero
    maxTurnsnumberundefinedTurni di conversazione massimi
    mcpServersRecord<string, [McpServerConfig](#mcpserverconfig)>{}Configurazioni del server MCP
    modelstringPredefinito dalla CLIModello Claude da utilizzare
    outputFormat{ type: 'json_schema', schema: JSONSchema }undefinedDefinisci il formato di output per i risultati dell'agente. Vedi Output strutturati per i dettagli
    pathToClaudeCodeExecutablestringUsa l'eseguibile integratoPercorso 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
    descriptionSìDescrizione in linguaggio naturale di quando utilizzare questo agente
    toolsNoArray dei nomi degli strumenti consentiti. Se omesso, eredita tutti gli strumenti
    promptSìIl prompt di sistema dell'agente
    modelNoOverride del modello per questo agente. Se omesso, utilizza il modello principale

    SettingSource

    Controlla quali fonti di configurazione basate sul 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 test e CI:

    // Assicura un comportamento coerente in CI escludendo le impostazioni locali
    const result = query({
      prompt: "Esegui i test",
      options: {
        settingSources: ['project'],  // Solo 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) sostituiscono 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'utilizzo 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 utilizzo di strumento negato.

    type SDKPermissionDenial = {
      tool_name: string;
      tool_use_id: string;
      tool_input: ToolInput;
    }

    Tipi di hook

    HookEvent

    Eventi di hook disponibili.

    type HookEvent = 
      | 'PreToolUse'
      | 'PostToolUse'
      | 'Notification'
      | 'UserPromptSubmit'
      | 'SessionStart'
      | 'SessionEnd'
      | 'Stop'
      | 'SubagentStop'
      | 'PreCompact';

    HookCallback

    Tipo di funzione di callback di hook.

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

    HookCallbackMatcher

    Configurazione di hook con matcher opzionale.

    interface HookCallbackMatcher {
      matcher?: string;
      hooks: HookCallback[];
    }

    HookInput

    Tipo di unione di tutti i tipi di input di hook.

    type HookInput = 
      | PreToolUseHookInput
      | PostToolUseHookInput
      | NotificationHookInput
      | UserPromptSubmitHookInput
      | SessionStartHookInput
      | SessionEndHookInput
      | StopHookInput
      | SubagentStopHookInput
      | PreCompactHookInput;

    BaseHookInput

    Interfaccia di base che tutti i tipi di input di 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 di 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 integrati. 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 di sola 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 (3-5 parole) dell'attività
       */
      description: string;
      /**
       * L'attività che l'agente deve eseguire
       */
      prompt: string;
      /**
       * Il tipo di agente specializzato da utilizzare per questa attività
       */
      subagent_type: string;
    }

    Avvia un nuovo agente per gestire attività complesse e multi-step in modo autonomo.

    Bash

    Nome dello strumento: Bash

    interface BashInput {
      /**
       * Il comando da eseguire
       */
      command: string;
      /**
       * Timeout opzionale in millisecondi (max 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 in 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 a leggere
       */
      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à multiriga
       */
      multiline?: boolean;
    }

    Potente strumento di ricerca basato su ripgrep con supporto regex.

    KillBash

    Nome dello strumento: KillBash

    interface KillShellInput {
      /**
       * L'ID della shell in 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 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 di 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 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 di attività aggiornato
       */
      todos: Array<{
        /**
         * La descrizione dell'attività
         */
        content: string;
        /**
         * Lo stato dell'attività
         */
        status: 'pending' | 'in_progress' | 'completed';
        /**
         * Forma attiva della descrizione dell'attività
         */
        activeForm: string;
      }>;
    }

    Crea e gestisce un elenco di attività strutturato per tracciare i 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 integrati. Questi tipi rappresentano i dati di risposta effettivi restituiti da ogni strumento.

    ToolOutput

    Nota: Questo è un tipo di sola 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 l'attività delegata.

    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 vengono restituiti 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 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 della pagina
       */
      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 delle attività
       */
      stats: {
        total: number;
        pending: number;
        in_progress: number;
        completed: number;
      };
    }

    Restituisce la conferma con le statistiche attuali delle attività.

    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 i contenuti della risorsa MCP richiesta.

    Tipi di Permesso

    PermissionUpdate

    Operazioni per l'aggiornamento dei permessi.

    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 globali dell'utente
      | 'projectSettings'  // Impostazioni del progetto per directory
      | 'localSettings'    // Impostazioni locali ignorate da Git
      | '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 interruzione.

    class AbortError extends Error {}

    Vedi anche

    • Panoramica SDK - Concetti generali dell'SDK
    • Riferimento Python SDK - Documentazione Python SDK
    • Riferimento CLI - Interfaccia della riga di comando
    • Flussi di lavoro comuni - Guide passo dopo passo
    • Installazione
    • Funzioni
    • query()
    • tool()
    • createSdkMcpServer()
    • Tipi
    • Options
    • Query
    • AgentDefinition
    • SettingSource
    • PermissionMode
    • CanUseTool
    • PermissionResult
    • McpServerConfig
    • SdkPluginConfig
    • Tipi di messaggi
    • SDKMessage
    • SDKAssistantMessage
    • SDKUserMessage
    • SDKUserMessageReplay
    • SDKResultMessage
    • SDKSystemMessage
    • SDKPartialAssistantMessage
    • SDKCompactBoundaryMessage
    • SDKPermissionDenial
    • Tipi di hook
    • HookEvent
    • HookCallback
    • HookCallbackMatcher
    • HookInput
    • BaseHookInput
    • HookJSONOutput
    • Tipi di input dello strumento
    • ToolInput
    • Task
    • Bash
    • BashOutput
    • Edit
    • Read
    • Write
    • Glob
    • Grep
    • KillBash
    • NotebookEdit
    • WebFetch
    • WebSearch
    • TodoWrite
    • ExitPlanMode
    • ListMcpResources
    • ReadMcpResource
    • Tipi di output dello strumento
    • ToolOutput
    • Task
    • Bash
    • BashOutput
    • Edit
    • Read
    • Write
    • Glob
    • Grep
    • KillBash
    • NotebookEdit
    • WebFetch
    • WebSearch
    • TodoWrite
    • ExitPlanMode
    • ListMcpResources
    • ReadMcpResource
    • Tipi di Permesso
    • PermissionUpdate
    • PermissionBehavior
    • PermissionUpdateDestination
    • PermissionRuleValue
    • Altri Tipi
    • ApiKeySource
    • ConfigScope
    • NonNullableUsage
    • Usage
    • CallToolResult
    • AbortError
    • Vedi anche