Installation

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

Funktionen

query()

Die primäre Funktion für die Interaktion mit Claude Code. Erstellt einen asynchronen Generator, der Nachrichten streamt, wenn sie ankommen.
function query({
  prompt,
  options
}: {
  prompt: string | AsyncIterable<SDKUserMessage>;
  options?: Options;
}): Query

Parameter

ParameterTypBeschreibung
promptstring | AsyncIterable<SDKUserMessage>Die Eingabeaufforderung als String oder asynchrones Iterable für den Streaming-Modus
optionsOptionsOptionales Konfigurationsobjekt (siehe Options-Typ unten)

Rückgabewert

Gibt ein Query-Objekt zurück, das AsyncGenerator<SDKMessage, void> mit zusätzlichen Methoden erweitert.

tool()

Erstellt eine typsichere MCP-Tool-Definition zur Verwendung mit SDK MCP-Servern.
function tool<Schema extends ZodRawShape>(
  name: string,
  description: string,
  inputSchema: Schema,
  handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
): SdkMcpToolDefinition<Schema>

Parameter

ParameterTypBeschreibung
namestringDer Name des Tools
descriptionstringEine Beschreibung, was das Tool tut
inputSchemaSchema extends ZodRawShapeZod-Schema, das die Eingabeparameter des Tools definiert
handler(args, extra) => Promise<CallToolResult>Asynchrone Funktion, die die Tool-Logik ausführt

createSdkMcpServer()

Erstellt eine MCP-Server-Instanz, die im gleichen Prozess wie Ihre Anwendung ausgeführt wird.
function createSdkMcpServer(options: {
  name: string;
  version?: string;
  tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance

Parameter

ParameterTypBeschreibung
options.namestringDer Name des MCP-Servers
options.versionstringOptionale Versionszeichenfolge
options.toolsArray<SdkMcpToolDefinition>Array von Tool-Definitionen, die mit tool() erstellt wurden

Typen

Options

Konfigurationsobjekt für die query()-Funktion.
EigenschaftTypStandardBeschreibung
abortControllerAbortControllernew AbortController()Controller zum Abbrechen von Operationen
additionalDirectoriesstring[][]Zusätzliche Verzeichnisse, auf die Claude zugreifen kann
agentsRecord<string, [AgentDefinition](#agentdefinition)>undefinedProgrammatische Definition von Subagenten
allowedToolsstring[]Alle ToolsListe der zulässigen Tool-Namen
canUseToolCanUseToolundefinedBenutzerdefinierte Berechtigungsfunktion für die Tool-Nutzung
continuebooleanfalseSetzen Sie die neueste Konversation fort
cwdstringprocess.cwd()Aktuelles Arbeitsverzeichnis
disallowedToolsstring[][]Liste der nicht zulässigen Tool-Namen
envDict<string>process.envUmgebungsvariablen
executable'bun' | 'deno' | 'node'Automatisch erkanntZu verwendende JavaScript-Laufzeit
executableArgsstring[][]Argumente, die an die ausführbare Datei übergeben werden
extraArgsRecord<string, string | null>{}Zusätzliche Argumente
fallbackModelstringundefinedModell, das verwendet wird, wenn das primäre fehlschlägt
forkSessionbooleanfalseBeim Fortsetzen mit resume zu einer neuen Sitzungs-ID verzweigen, anstatt die ursprüngliche Sitzung fortzusetzen
hooksPartial<Record<HookEvent, HookCallbackMatcher[]>>{}Hook-Callbacks für Ereignisse
includePartialMessagesbooleanfalseTeilweise Nachrichtenereignisse einschließen
maxThinkingTokensnumberundefinedMaximale Token für den Denkprozess
maxTurnsnumberundefinedMaximale Konversationsrunden
mcpServersRecord<string, [McpServerConfig](#mcpserverconfig)>{}MCP-Server-Konfigurationen
modelstringStandard aus CLIZu verwendendes Claude-Modell
pathToClaudeCodeExecutablestringAutomatisch erkanntPfad zur Claude Code-Ausführungsdatei
permissionModePermissionMode'default'Berechtigungsmodus für die Sitzung
permissionPromptToolNamestringundefinedMCP-Tool-Name für Berechtigungsaufforderungen
pluginsSdkPluginConfig[][]Laden Sie benutzerdefinierte Plugins aus lokalen Pfaden. Siehe Plugins für Details
resumestringundefinedSitzungs-ID zum Fortsetzen
settingSourcesSettingSource[][] (keine Einstellungen)Steuern Sie, welche Dateisystem-Einstellungen geladen werden. Wenn weggelassen, werden keine Einstellungen geladen. Hinweis: Muss 'project' enthalten, um CLAUDE.md-Dateien zu laden
stderr(data: string) => voidundefinedCallback für stderr-Ausgabe
strictMcpConfigbooleanfalseErzwingen Sie strikte MCP-Validierung
systemPromptstring | { type: 'preset'; preset: 'claude_code'; append?: string }undefined (leere Aufforderung)Systemanforderungskonfiguration. Übergeben Sie einen String für eine benutzerdefinierte Aufforderung oder { type: 'preset', preset: 'claude_code' }, um die Systemanforderung von Claude Code zu verwenden. Wenn Sie die Preset-Objektform verwenden, fügen Sie append hinzu, um die Systemanforderung mit zusätzlichen Anweisungen zu erweitern

Query

Schnittstelle, die von der query()-Funktion zurückgegeben wird.
interface Query extends AsyncGenerator<SDKMessage, void> {
  interrupt(): Promise<void>;
  setPermissionMode(mode: PermissionMode): Promise<void>;
}

Methoden

MethodeBeschreibung
interrupt()Unterbricht die Abfrage (nur im Streaming-Eingabemodus verfügbar)
setPermissionMode()Ändert den Berechtigungsmodus (nur im Streaming-Eingabemodus verfügbar)

AgentDefinition

Konfiguration für einen programmatisch definierten Subagenten.
type AgentDefinition = {
  description: string;
  tools?: string[];
  prompt: string;
  model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}
FeldErforderlichBeschreibung
descriptionJaNatürlichsprachige Beschreibung, wann dieser Agent verwendet werden soll
toolsNeinArray von zulässigen Tool-Namen. Wenn weggelassen, erbt alle Tools
promptJaDie Systemaufforderung des Agenten
modelNeinModellüberschreibung für diesen Agenten. Wenn weggelassen, wird das Hauptmodell verwendet

SettingSource

Steuert, welche dateisystembasierte Konfigurationsquellen das SDK Einstellungen aus lädt.
type SettingSource = 'user' | 'project' | 'local';
WertBeschreibungOrt
'user'Globale Benutzereinstellungen~/.claude/settings.json
'project'Gemeinsame Projekteinstellungen (versionskontrolliert).claude/settings.json
'local'Lokale Projekteinstellungen (gitignoriert).claude/settings.local.json

Standardverhalten

Wenn settingSources weggelassen oder undefined ist, lädt das SDK keine Dateisystem-Einstellungen. Dies bietet Isolation für SDK-Anwendungen.

Warum settingSources verwenden?

Alle Dateisystem-Einstellungen laden (Legacy-Verhalten):
// Laden Sie alle Einstellungen wie SDK v0.0.x
const result = query({
  prompt: "Analyze this code",
  options: {
    settingSources: ['user', 'project', 'local']  // Alle Einstellungen laden
  }
});
Nur bestimmte Einstellungsquellen laden:
// Laden Sie nur Projekteinstellungen, ignorieren Sie Benutzer und lokal
const result = query({
  prompt: "Run CI checks",
  options: {
    settingSources: ['project']  // Nur .claude/settings.json
  }
});
Test- und CI-Umgebungen:
// Stellen Sie konsistentes Verhalten in CI sicher, indem Sie lokale Einstellungen ausschließen
const result = query({
  prompt: "Run tests",
  options: {
    settingSources: ['project'],  // Nur teamweit gemeinsame Einstellungen
    permissionMode: 'bypassPermissions'
  }
});
Nur SDK-Anwendungen:
// Definieren Sie alles programmatisch (Standardverhalten)
// Keine Dateisystem-Abhängigkeiten - settingSources ist standardmäßig []
const result = query({
  prompt: "Review this PR",
  options: {
    // settingSources: [] ist der Standard, keine Angabe erforderlich
    agents: { /* ... */ },
    mcpServers: { /* ... */ },
    allowedTools: ['Read', 'Grep', 'Glob']
  }
});
CLAUDE.md-Projektanweisungen laden:
// Laden Sie Projekteinstellungen, um CLAUDE.md-Dateien einzuschließen
const result = query({
  prompt: "Add a new feature following project conventions",
  options: {
    systemPrompt: {
      type: 'preset',
      preset: 'claude_code'  // Erforderlich, um CLAUDE.md zu verwenden
    },
    settingSources: ['project'],  // Lädt CLAUDE.md aus dem Projektverzeichnis
    allowedTools: ['Read', 'Write', 'Edit']
  }
});

Einstellungspriorität

Wenn mehrere Quellen geladen werden, werden Einstellungen mit dieser Priorität zusammengeführt (höchste bis niedrigste):
  1. Lokale Einstellungen (.claude/settings.local.json)
  2. Projekteinstellungen (.claude/settings.json)
  3. Benutzereinstellungen (~/.claude/settings.json)
Programmatische Optionen (wie agents, allowedTools) überschreiben immer Dateisystem-Einstellungen.

PermissionMode

type PermissionMode =
  | 'default'           // Standardberechtigungsverhalten
  | 'acceptEdits'       // Dateibearbeitungen automatisch akzeptieren
  | 'bypassPermissions' // Alle Berechtigungsprüfungen umgehen
  | 'plan'              // Planungsmodus - keine Ausführung

CanUseTool

Benutzerdefinierte Berechtigungsfunktionstyp zur Steuerung der Tool-Nutzung.
type CanUseTool = (
  toolName: string,
  input: ToolInput,
  options: {
    signal: AbortSignal;
    suggestions?: PermissionUpdate[];
  }
) => Promise<PermissionResult>;

PermissionResult

Ergebnis einer Berechtigungsprüfung.
type PermissionResult = 
  | {
      behavior: 'allow';
      updatedInput: ToolInput;
      updatedPermissions?: PermissionUpdate[];
    }
  | {
      behavior: 'deny';
      message: string;
      interrupt?: boolean;
    }

McpServerConfig

Konfiguration für MCP-Server.
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

Konfiguration zum Laden von Plugins im SDK.
type SdkPluginConfig = {
  type: 'local';
  path: string;
}
FeldTypBeschreibung
type'local'Muss 'local' sein (derzeit werden nur lokale Plugins unterstützt)
pathstringAbsoluter oder relativer Pfad zum Plugin-Verzeichnis
Beispiel:
plugins: [
  { type: 'local', path: './my-plugin' },
  { type: 'local', path: '/absolute/path/to/plugin' }
]
Vollständige Informationen zum Erstellen und Verwenden von Plugins finden Sie unter Plugins.

Nachrichtentypen

SDKMessage

Union-Typ aller möglichen Nachrichten, die von der Abfrage zurückgegeben werden.
type SDKMessage = 
  | SDKAssistantMessage
  | SDKUserMessage
  | SDKUserMessageReplay
  | SDKResultMessage
  | SDKSystemMessage
  | SDKPartialAssistantMessage
  | SDKCompactBoundaryMessage;

SDKAssistantMessage

Antwortnachricht des Assistenten.
type SDKAssistantMessage = {
  type: 'assistant';
  uuid: UUID;
  session_id: string;
  message: APIAssistantMessage; // Aus Anthropic SDK
  parent_tool_use_id: string | null;
}

SDKUserMessage

Benutzereingabenachricht.
type SDKUserMessage = {
  type: 'user';
  uuid?: UUID;
  session_id: string;
  message: APIUserMessage; // Aus Anthropic SDK
  parent_tool_use_id: string | null;
}

SDKUserMessageReplay

Wiedergegebene Benutzernachricht mit erforderlicher UUID.
type SDKUserMessageReplay = {
  type: 'user';
  uuid: UUID;
  session_id: string;
  message: APIUserMessage;
  parent_tool_use_id: string | null;
}

SDKResultMessage

Endgültige Ergebnisnachricht.
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

Systeminitalisierungsnachricht.
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

Streaming-Teilnachricht (nur wenn includePartialMessages true ist).
type SDKPartialAssistantMessage = {
  type: 'stream_event';
  event: RawMessageStreamEvent; // Aus Anthropic SDK
  parent_tool_use_id: string | null;
  uuid: UUID;
  session_id: string;
}

SDKCompactBoundaryMessage

Nachricht, die eine Konversationskomprimierungsgrenze anzeigt.
type SDKCompactBoundaryMessage = {
  type: 'system';
  subtype: 'compact_boundary';
  uuid: UUID;
  session_id: string;
  compact_metadata: {
    trigger: 'manual' | 'auto';
    pre_tokens: number;
  };
}

SDKPermissionDenial

Informationen über eine verweigerte Tool-Nutzung.
type SDKPermissionDenial = {
  tool_name: string;
  tool_use_id: string;
  tool_input: ToolInput;
}

Hook-Typen

HookEvent

Verfügbare Hook-Ereignisse.
type HookEvent = 
  | 'PreToolUse'
  | 'PostToolUse'
  | 'Notification'
  | 'UserPromptSubmit'
  | 'SessionStart'
  | 'SessionEnd'
  | 'Stop'
  | 'SubagentStop'
  | 'PreCompact';

HookCallback

Hook-Callback-Funktionstyp.
type HookCallback = (
  input: HookInput, // Union aller Hook-Eingabetypen
  toolUseID: string | undefined,
  options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;

HookCallbackMatcher

Hook-Konfiguration mit optionalem Matcher.
interface HookCallbackMatcher {
  matcher?: string;
  hooks: HookCallback[];
}

HookInput

Union-Typ aller Hook-Eingabetypen.
type HookInput = 
  | PreToolUseHookInput
  | PostToolUseHookInput
  | NotificationHookInput
  | UserPromptSubmitHookInput
  | SessionStartHookInput
  | SessionEndHookInput
  | StopHookInput
  | SubagentStopHookInput
  | PreCompactHookInput;

BaseHookInput

Basis-Schnittstelle, die alle Hook-Eingabetypen erweitern.
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

Hook-Rückgabewert.
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;
      };
}

Tool-Eingabetypen

Dokumentation von Eingabeschemas für alle integrierten Claude Code-Tools. Diese Typen werden aus @anthropic-ai/claude-agent-sdk exportiert und können für typsichere Tool-Interaktionen verwendet werden.

ToolInput

Hinweis: Dies ist ein reiner Dokumentationstyp zur Verdeutlichung. Er stellt die Union aller Tool-Eingabetypen dar.
type ToolInput = 
  | AgentInput
  | BashInput
  | BashOutputInput
  | FileEditInput
  | FileReadInput
  | FileWriteInput
  | GlobInput
  | GrepInput
  | KillShellInput
  | NotebookEditInput
  | WebFetchInput
  | WebSearchInput
  | TodoWriteInput
  | ExitPlanModeInput
  | ListMcpResourcesInput
  | ReadMcpResourceInput;

Task

Tool-Name: Task
interface AgentInput {
  /**
   * Eine kurze (3-5 Wörter) Beschreibung der Aufgabe
   */
  description: string;
  /**
   * Die Aufgabe, die der Agent ausführen soll
   */
  prompt: string;
  /**
   * Der Typ des spezialisierten Agenten, der für diese Aufgabe verwendet werden soll
   */
  subagent_type: string;
}
Startet einen neuen Agenten, um komplexe, mehrstufige Aufgaben autonom zu bearbeiten.

Bash

Tool-Name: Bash
interface BashInput {
  /**
   * Der auszuführende Befehl
   */
  command: string;
  /**
   * Optionales Timeout in Millisekunden (max 600000)
   */
  timeout?: number;
  /**
   * Klare, prägnante Beschreibung, was dieser Befehl in 5-10 Wörtern tut
   */
  description?: string;
  /**
   * Setzen Sie auf true, um diesen Befehl im Hintergrund auszuführen
   */
  run_in_background?: boolean;
}
Führt Bash-Befehle in einer persistenten Shell-Sitzung mit optionalem Timeout und Hintergrundausführung aus.

BashOutput

Tool-Name: BashOutput
interface BashOutputInput {
  /**
   * Die ID der Hintergrund-Shell, von der die Ausgabe abgerufen werden soll
   */
  bash_id: string;
  /**
   * Optionaler Regex zum Filtern von Ausgabezeilen
   */
  filter?: string;
}
Ruft die Ausgabe von einer laufenden oder abgeschlossenen Hintergrund-Bash-Shell ab.

Edit

Tool-Name: Edit
interface FileEditInput {
  /**
   * Der absolute Pfad zur zu ändernden Datei
   */
  file_path: string;
  /**
   * Der zu ersetzende Text
   */
  old_string: string;
  /**
   * Der Text, durch den er ersetzt werden soll (muss sich von old_string unterscheiden)
   */
  new_string: string;
  /**
   * Alle Vorkommen von old_string ersetzen (Standard false)
   */
  replace_all?: boolean;
}
Führt exakte String-Ersetzungen in Dateien durch.

Read

Tool-Name: Read
interface FileReadInput {
  /**
   * Der absolute Pfad zur zu lesenden Datei
   */
  file_path: string;
  /**
   * Die Zeilennummer, ab der gelesen werden soll
   */
  offset?: number;
  /**
   * Die Anzahl der zu lesenden Zeilen
   */
  limit?: number;
}
Liest Dateien aus dem lokalen Dateisystem, einschließlich Text, Bilder, PDFs und Jupyter-Notebooks.

Write

Tool-Name: Write
interface FileWriteInput {
  /**
   * Der absolute Pfad zur zu schreibenden Datei
   */
  file_path: string;
  /**
   * Der in die Datei zu schreibende Inhalt
   */
  content: string;
}
Schreibt eine Datei in das lokale Dateisystem und überschreibt sie, falls vorhanden.

Glob

Tool-Name: Glob
interface GlobInput {
  /**
   * Das Glob-Muster, das mit Dateien abgeglichen werden soll
   */
  pattern: string;
  /**
   * Das Verzeichnis, in dem gesucht werden soll (Standard cwd)
   */
  path?: string;
}
Schnelle Dateimuster-Abgleichung, die mit jeder Codebasis-Größe funktioniert.

Grep

Tool-Name: Grep
interface GrepInput {
  /**
   * Das reguläre Ausdrucksmuster, nach dem gesucht werden soll
   */
  pattern: string;
  /**
   * Datei oder Verzeichnis, in dem gesucht werden soll (Standard cwd)
   */
  path?: string;
  /**
   * Glob-Muster zum Filtern von Dateien (z. B. "*.js")
   */
  glob?: string;
  /**
   * Dateityp, in dem gesucht werden soll (z. B. "js", "py", "rust")
   */
  type?: string;
  /**
   * Ausgabemodus: "content", "files_with_matches" oder "count"
   */
  output_mode?: 'content' | 'files_with_matches' | 'count';
  /**
   * Suche ohne Berücksichtigung der Groß-/Kleinschreibung
   */
  '-i'?: boolean;
  /**
   * Zeilennummern anzeigen (für Content-Modus)
   */
  '-n'?: boolean;
  /**
   * Zeilen vor jedem Treffer anzeigen
   */
  '-B'?: number;
  /**
   * Zeilen nach jedem Treffer anzeigen
   */
  '-A'?: number;
  /**
   * Zeilen vor und nach jedem Treffer anzeigen
   */
  '-C'?: number;
  /**
   * Ausgabe auf die ersten N Zeilen/Einträge begrenzen
   */
  head_limit?: number;
  /**
   * Mehrzeilenmodus aktivieren
   */
  multiline?: boolean;
}
Leistungsstarkes Suchtool basierend auf ripgrep mit Regex-Unterstützung.

KillBash

Tool-Name: KillBash
interface KillShellInput {
  /**
   * Die ID der zu beendenden Hintergrund-Shell
   */
  shell_id: string;
}
Beendet eine laufende Hintergrund-Bash-Shell nach ihrer ID.

NotebookEdit

Tool-Name: NotebookEdit
interface NotebookEditInput {
  /**
   * Der absolute Pfad zur Jupyter-Notebook-Datei
   */
  notebook_path: string;
  /**
   * Die ID der zu bearbeitenden Zelle
   */
  cell_id?: string;
  /**
   * Die neue Quelle für die Zelle
   */
  new_source: string;
  /**
   * Der Typ der Zelle (Code oder Markdown)
   */
  cell_type?: 'code' | 'markdown';
  /**
   * Der Typ der Bearbeitung (Ersetzen, Einfügen, Löschen)
   */
  edit_mode?: 'replace' | 'insert' | 'delete';
}
Bearbeitet Zellen in Jupyter-Notebook-Dateien.

WebFetch

Tool-Name: WebFetch
interface WebFetchInput {
  /**
   * Die URL, von der Inhalte abgerufen werden sollen
   */
  url: string;
  /**
   * Die Aufforderung, die auf den abgerufenen Inhalt angewendet werden soll
   */
  prompt: string;
}
Ruft Inhalte von einer URL ab und verarbeitet sie mit einem KI-Modell.

WebSearch

Tool-Name: WebSearch
interface WebSearchInput {
  /**
   * Die zu verwendende Suchabfrage
   */
  query: string;
  /**
   * Nur Ergebnisse von diesen Domänen einschließen
   */
  allowed_domains?: string[];
  /**
   * Ergebnisse von diesen Domänen niemals einschließen
   */
  blocked_domains?: string[];
}
Durchsucht das Web und gibt formatierte Ergebnisse zurück.

TodoWrite

Tool-Name: TodoWrite
interface TodoWriteInput {
  /**
   * Die aktualisierte Todo-Liste
   */
  todos: Array<{
    /**
     * Die Aufgabenbeschreibung
     */
    content: string;
    /**
     * Der Aufgabenstatus
     */
    status: 'pending' | 'in_progress' | 'completed';
    /**
     * Aktive Form der Aufgabenbeschreibung
     */
    activeForm: string;
  }>;
}
Erstellt und verwaltet eine strukturierte Aufgabenliste zur Verfolgung des Fortschritts.

ExitPlanMode

Tool-Name: ExitPlanMode
interface ExitPlanModeInput {
  /**
   * Der Plan, den der Benutzer zur Genehmigung ausführen soll
   */
  plan: string;
}
Beendet den Planungsmodus und fordert den Benutzer auf, den Plan zu genehmigen.

ListMcpResources

Tool-Name: ListMcpResources
interface ListMcpResourcesInput {
  /**
   * Optionaler Servername zum Filtern von Ressourcen
   */
  server?: string;
}
Listet verfügbare MCP-Ressourcen von verbundenen Servern auf.

ReadMcpResource

Tool-Name: ReadMcpResource
interface ReadMcpResourceInput {
  /**
   * Der MCP-Servername
   */
  server: string;
  /**
   * Die zu lesende Ressourcen-URI
   */
  uri: string;
}
Liest eine bestimmte MCP-Ressource von einem Server.

Tool-Ausgabetypen

Dokumentation von Ausgabeschemas für alle integrierten Claude Code-Tools. Diese Typen stellen die tatsächlichen Antwortdaten dar, die von jedem Tool zurückgegeben werden.

ToolOutput

Hinweis: Dies ist ein reiner Dokumentationstyp zur Verdeutlichung. Er stellt die Union aller Tool-Ausgabetypen dar.
type ToolOutput = 
  | TaskOutput
  | BashOutput
  | BashOutputToolOutput
  | EditOutput
  | ReadOutput
  | WriteOutput
  | GlobOutput
  | GrepOutput
  | KillBashOutput
  | NotebookEditOutput
  | WebFetchOutput
  | WebSearchOutput
  | TodoWriteOutput
  | ExitPlanModeOutput
  | ListMcpResourcesOutput
  | ReadMcpResourceOutput;

Task

Tool-Name: Task
interface TaskOutput {
  /**
   * Endgültige Ergebnisnachricht vom Subagenten
   */
  result: string;
  /**
   * Token-Nutzungsstatistiken
   */
  usage?: {
    input_tokens: number;
    output_tokens: number;
    cache_creation_input_tokens?: number;
    cache_read_input_tokens?: number;
  };
  /**
   * Gesamtkosten in USD
   */
  total_cost_usd?: number;
  /**
   * Ausführungsdauer in Millisekunden
   */
  duration_ms?: number;
}
Gibt das endgültige Ergebnis vom Subagenten nach Abschluss der delegierten Aufgabe zurück.

Bash

Tool-Name: Bash
interface BashOutput {
  /**
   * Kombinierte stdout- und stderr-Ausgabe
   */
  output: string;
  /**
   * Exit-Code des Befehls
   */
  exitCode: number;
  /**
   * Ob der Befehl aufgrund eines Timeouts beendet wurde
   */
  killed?: boolean;
  /**
   * Shell-ID für Hintergrundprozesse
   */
  shellId?: string;
}
Gibt Befehlsausgabe mit Exit-Status zurück. Hintergrund-Befehle geben sofort mit einer shellId zurück.

BashOutput

Tool-Name: BashOutput
interface BashOutputToolOutput {
  /**
   * Neue Ausgabe seit der letzten Überprüfung
   */
  output: string;
  /**
   * Aktueller Shell-Status
   */
  status: 'running' | 'completed' | 'failed';
  /**
   * Exit-Code (wenn abgeschlossen)
   */
  exitCode?: number;
}
Gibt inkrementelle Ausgabe von Hintergrund-Shells zurück.

Edit

Tool-Name: Edit
interface EditOutput {
  /**
   * Bestätigungsnachricht
   */
  message: string;
  /**
   * Anzahl der durchgeführten Ersetzungen
   */
  replacements: number;
  /**
   * Dateipfad, der bearbeitet wurde
   */
  file_path: string;
}
Gibt Bestätigung erfolgreicher Bearbeitungen mit Ersetzungsanzahl zurück.

Read

Tool-Name: Read
type ReadOutput = 
  | TextFileOutput
  | ImageFileOutput
  | PDFFileOutput
  | NotebookFileOutput;

interface TextFileOutput {
  /**
   * Dateiinhalt mit Zeilennummern
   */
  content: string;
  /**
   * Gesamtzahl der Zeilen in der Datei
   */
  total_lines: number;
  /**
   * Tatsächlich zurückgegebene Zeilen
   */
  lines_returned: number;
}

interface ImageFileOutput {
  /**
   * Base64-codierte Bilddaten
   */
  image: string;
  /**
   * Bild-MIME-Typ
   */
  mime_type: string;
  /**
   * Dateigröße in Bytes
   */
  file_size: number;
}

interface PDFFileOutput {
  /**
   * Array von Seiteninhalten
   */
  pages: Array<{
    page_number: number;
    text?: string;
    images?: Array<{
      image: string;
      mime_type: string;
    }>;
  }>;
  /**
   * Gesamtzahl der Seiten
   */
  total_pages: number;
}

interface NotebookFileOutput {
  /**
   * Jupyter-Notebook-Zellen
   */
  cells: Array<{
    cell_type: 'code' | 'markdown';
    source: string;
    outputs?: any[];
    execution_count?: number;
  }>;
  /**
   * Notebook-Metadaten
   */
  metadata?: Record<string, any>;
}
Gibt Dateiinhalte in einem Format zurück, das für den Dateityp geeignet ist.

Write

Tool-Name: Write
interface WriteOutput {
  /**
   * Erfolgsmeldung
   */
  message: string;
  /**
   * Anzahl der geschriebenen Bytes
   */
  bytes_written: number;
  /**
   * Dateipfad, der geschrieben wurde
   */
  file_path: string;
}
Gibt Bestätigung nach erfolgreichem Schreiben der Datei zurück.

Glob

Tool-Name: Glob
interface GlobOutput {
  /**
   * Array von übereinstimmenden Dateipfaden
   */
  matches: string[];
  /**
   * Anzahl der gefundenen Übereinstimmungen
   */
  count: number;
  /**
   * Verwendetes Suchverzeichnis
   */
  search_path: string;
}
Gibt Dateipfade zurück, die dem Glob-Muster entsprechen, sortiert nach Änderungszeit.

Grep

Tool-Name: Grep
type GrepOutput = 
  | GrepContentOutput
  | GrepFilesOutput
  | GrepCountOutput;

interface GrepContentOutput {
  /**
   * Übereinstimmende Zeilen mit Kontext
   */
  matches: Array<{
    file: string;
    line_number?: number;
    line: string;
    before_context?: string[];
    after_context?: string[];
  }>;
  /**
   * Gesamtzahl der Übereinstimmungen
   */
  total_matches: number;
}

interface GrepFilesOutput {
  /**
   * Dateien mit Übereinstimmungen
   */
  files: string[];
  /**
   * Anzahl der Dateien mit Übereinstimmungen
   */
  count: number;
}

interface GrepCountOutput {
  /**
   * Übereinstimmungszahlen pro Datei
   */
  counts: Array<{
    file: string;
    count: number;
  }>;
  /**
   * Gesamtübereinstimmungen in allen Dateien
   */
  total: number;
}
Gibt Suchergebnisse in dem von output_mode angegebenen Format zurück.

KillBash

Tool-Name: KillBash
interface KillBashOutput {
  /**
   * Erfolgsmeldung
   */
  message: string;
  /**
   * ID der beendeten Shell
   */
  shell_id: string;
}
Gibt Bestätigung nach Beendigung der Hintergrund-Shell zurück.

NotebookEdit

Tool-Name: NotebookEdit
interface NotebookEditOutput {
  /**
   * Erfolgsmeldung
   */
  message: string;
  /**
   * Typ der durchgeführten Bearbeitung
   */
  edit_type: 'replaced' | 'inserted' | 'deleted';
  /**
   * Zellen-ID, die betroffen war
   */
  cell_id?: string;
  /**
   * Gesamtzellen im Notebook nach Bearbeitung
   */
  total_cells: number;
}
Gibt Bestätigung nach Änderung des Jupyter-Notebooks zurück.

WebFetch

Tool-Name: WebFetch
interface WebFetchOutput {
  /**
   * Antwort des KI-Modells auf die Aufforderung
   */
  response: string;
  /**
   * URL, die abgerufen wurde
   */
  url: string;
  /**
   * Endgültige URL nach Umleitungen
   */
  final_url?: string;
  /**
   * HTTP-Statuscode
   */
  status_code?: number;
}
Gibt die Analyse des abgerufenen Web-Inhalts durch die KI zurück.

WebSearch

Tool-Name: WebSearch
interface WebSearchOutput {
  /**
   * Suchergebnisse
   */
  results: Array<{
    title: string;
    url: string;
    snippet: string;
    /**
     * Zusätzliche Metadaten, falls verfügbar
     */
    metadata?: Record<string, any>;
  }>;
  /**
   * Gesamtzahl der Ergebnisse
   */
  total_results: number;
  /**
   * Die gesuchte Abfrage
   */
  query: string;
}
Gibt formatierte Suchergebnisse aus dem Web zurück.

TodoWrite

Tool-Name: TodoWrite
interface TodoWriteOutput {
  /**
   * Erfolgsmeldung
   */
  message: string;
  /**
   * Aktuelle Todo-Statistiken
   */
  stats: {
    total: number;
    pending: number;
    in_progress: number;
    completed: number;
  };
}
Gibt Bestätigung mit aktuellen Aufgabenstatistiken zurück.

ExitPlanMode

Tool-Name: ExitPlanMode
interface ExitPlanModeOutput {
  /**
   * Bestätigungsnachricht
   */
  message: string;
  /**
   * Ob der Benutzer den Plan genehmigt hat
   */
  approved?: boolean;
}
Gibt Bestätigung nach Beendigung des Planungsmodus zurück.

ListMcpResources

Tool-Name: ListMcpResources
interface ListMcpResourcesOutput {
  /**
   * Verfügbare Ressourcen
   */
  resources: Array<{
    uri: string;
    name: string;
    description?: string;
    mimeType?: string;
    server: string;
  }>;
  /**
   * Gesamtzahl der Ressourcen
   */
  total: number;
}
Gibt eine Liste verfügbarer MCP-Ressourcen zurück.

ReadMcpResource

Tool-Name: ReadMcpResource
interface ReadMcpResourceOutput {
  /**
   * Ressourceninhalt
   */
  contents: Array<{
    uri: string;
    mimeType?: string;
    text?: string;
    blob?: string;
  }>;
  /**
   * Server, der die Ressource bereitgestellt hat
   */
  server: string;
}
Gibt den Inhalt der angeforderten MCP-Ressource zurück.

Berechtigungstypen

PermissionUpdate

Operationen zum Aktualisieren von Berechtigungen.
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'     // Globale Benutzereinstellungen
  | 'projectSettings'  // Pro-Verzeichnis-Projekteinstellungen
  | 'localSettings'    // Gitignorierte lokale Einstellungen
  | 'session'          // Nur aktuelle Sitzung

PermissionRuleValue

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

Andere Typen

ApiKeySource

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

ConfigScope

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

NonNullableUsage

Eine Version von Usage mit allen nullable Feldern, die nicht nullable gemacht wurden.
type NonNullableUsage = {
  [K in keyof Usage]: NonNullable<Usage[K]>;
}

Usage

Token-Nutzungsstatistiken (aus @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

MCP-Tool-Ergebnistyp (aus @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
  content: Array<{
    type: 'text' | 'image' | 'resource';
    // Zusätzliche Felder variieren je nach Typ
  }>;
  isError?: boolean;
}

AbortError

Benutzerdefinierte Fehlerklasse für Abbruchoperationen.
class AbortError extends Error {}

Siehe auch