CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-anthropic-ai--claude-agent-sdk

SDK for building AI agents with Claude Code's capabilities to programmatically interact with Claude and build autonomous agents that can understand codebases, edit files, and execute workflows.

Overview
Eval results
Files

quick-reference.mddocs/

Quick Reference

Functions

// Main query API
query(_params: {prompt: string | AsyncIterable<SDKUserMessage>; options?: Options}): Query

// V2 Session API (unstable)
unstable_v2_createSession(_options: SDKSessionOptions): SDKSession
unstable_v2_resumeSession(_sessionId: string, _options: SDKSessionOptions): SDKSession
unstable_v2_prompt(_message: string, _options: SDKSessionOptions): Promise<SDKResultMessage>

// MCP
createSdkMcpServer(_options: {name: string; version?: string; tools?: Array<SdkMcpToolDefinition<any>>}): McpSdkServerConfigWithInstance
tool<Schema extends ZodRawShape>(_name: string, _description: string, _inputSchema: Schema, _handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>): SdkMcpToolDefinition<Schema>

Query Interface Methods

interface Query extends AsyncGenerator<SDKMessage, void> {
  interrupt(): Promise<void>
  setPermissionMode(mode: PermissionMode): Promise<void>
  setModel(model?: string): Promise<void>
  setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>
  supportedCommands(): Promise<SlashCommand[]>
  supportedModels(): Promise<ModelInfo[]>
  mcpServerStatus(): Promise<McpServerStatus[]>
  accountInfo(): Promise<AccountInfo>
  streamInput(stream: AsyncIterable<SDKUserMessage>): Promise<void>
}

Options (Top 20)

interface Options {
  // Model & execution
  model?: string
  cwd?: string
  maxTurns?: number
  maxBudgetUsd?: number
  maxThinkingTokens?: number
  abortController?: AbortController

  // Tools
  tools?: string[] | {type: 'preset'; preset: 'claude_code'}
  allowedTools?: string[]
  disallowedTools?: string[]

  // Permissions
  permissionMode?: 'default' | 'acceptEdits' | 'bypassPermissions' | 'plan' | 'dontAsk'
  canUseTool?: CanUseTool
  allowDangerouslySkipPermissions?: boolean

  // Environment
  additionalDirectories?: string[]
  env?: {[key: string]: string | undefined}
  sandbox?: SandboxSettings

  // Extensions
  agents?: Record<string, AgentDefinition>
  hooks?: Partial<Record<HookEvent, HookCallbackMatcher[]>>
  mcpServers?: Record<string, McpServerConfig>

  // Session
  continue?: boolean
  resume?: string
}

Message Types

type SDKMessage =
  | SDKAssistantMessage      // Assistant response
  | SDKUserMessage           // User input
  | SDKResultMessage         // Final result
  | SDKSystemMessage         // System info (init, status, hooks)
  | SDKToolProgressMessage   // Tool execution progress
  | SDKAuthStatusMessage     // Auth status
  | SDKPartialAssistantMessage  // Streaming events
  | SDKUserMessageReplay     // Message replay
  | SDKCompactBoundaryMessage   // History compaction marker
  | SDKStatusMessage         // Status updates
  | SDKHookResponseMessage   // Hook execution result

Permission Handler

type CanUseTool = (
  toolName: string,
  input: Record<string, unknown>,
  options: {
    signal: AbortSignal;
    suggestions?: PermissionUpdate[];
    blockedPath?: string;
    decisionReason?: string;
    toolUseID: string;
    agentID?: string;
  }
) => Promise<PermissionResult>

type PermissionResult =
  | {behavior: 'allow'; updatedInput: Record<string, unknown>; updatedPermissions?: PermissionUpdate[]; toolUseID?: string}
  | {behavior: 'deny'; message: string; interrupt?: boolean; toolUseID?: string}

Hook System

type HookEvent = 'PreToolUse' | 'PostToolUse' | 'PostToolUseFailure' | 'PermissionRequest'
  | 'UserPromptSubmit' | 'SessionStart' | 'SessionEnd' | 'Stop'
  | 'SubagentStart' | 'SubagentStop' | 'PreCompact' | 'Notification'

type HookCallback = (
  input: HookInput,
  toolUseID: string | undefined,
  options: {signal: AbortSignal}
) => Promise<HookJSONOutput>

Built-in Tools

// File tools
FileReadInput: {file_path: string; offset?: number; limit?: number}
FileEditInput: {file_path: string; old_string: string; new_string: string; replace_all?: boolean}
FileWriteInput: {file_path: string; content: string}

// Search tools
GlobInput: {pattern: string; path?: string}
GrepInput: {pattern: string; path?: string; glob?: string; output_mode?: string; /* ... */}

// Shell tools
BashInput: {command: string; timeout?: number; run_in_background?: boolean; /* ... */}
BashOutputInput: {bash_id: string; filter?: string}
KillShellInput: {shell_id: string}

// Web tools
WebFetchInput: {url: string; prompt: string}
WebSearchInput: {query: string; allowed_domains?: string[]; blocked_domains?: string[]}

// Agent tools
AgentInput: {description: string; prompt: string; subagent_type: string; model?: string; resume?: string}

// Other tools
TodoWriteInput: {todos: Array<{content: string; status: string; activeForm: string}>}
NotebookEditInput: {notebook_path: string; new_source: string; /* ... */}
AskUserQuestionInput: {questions: Array<{/* ... */}>}

Agent Definition

interface AgentDefinition {
  description: string
  tools?: string[]
  disallowedTools?: string[]
  prompt: string
  model?: 'sonnet' | 'opus' | 'haiku' | 'inherit'
  criticalSystemReminder_EXPERIMENTAL?: string
}

MCP Server Config

type McpServerConfig =
  | {type?: 'stdio'; command: string; args?: string[]; env?: Record<string, string>}
  | {type: 'sse'; url: string; headers?: Record<string, string>}
  | {type: 'http'; url: string; headers?: Record<string, string>}
  | {type: 'sdk'; name: string; instance: McpServer}

Sandbox Settings

interface SandboxSettings {
  enabled?: boolean
  autoAllowBashIfSandboxed?: boolean
  allowUnsandboxedCommands?: boolean
  network?: {
    allowUnixSockets?: string[]
    allowAllUnixSockets?: boolean
    allowLocalBinding?: boolean
    httpProxyPort?: number
    socksProxyPort?: number
  }
  ignoreViolations?: Record<string, string[]>
  enableWeakerNestedSandbox?: boolean
  excludedCommands?: string[]
  ripgrep?: {command: string; args?: string[]}
}

Install with Tessl CLI

npx tessl i tessl/npm-anthropic-ai--claude-agent-sdk

docs

index.md

patterns.md

quick-reference.md

types.md

tile.json