TypeScript SDK Reference

Comprehensive reference for the TypeScript Agent SDK with functions, types, and interfaces for programmatic Claude Code interactions

allowed_tools: Read, Write, Edit, Task

$ Instalar

git clone https://github.com/CaptainCrouton89/.claude /tmp/.claude && cp -r /tmp/.claude/.claude/skills/typescript-sdk-reference ~/.claude/skills/-claude

// tip: Run this command in your terminal to install the skill


name: TypeScript SDK Reference description: Comprehensive reference for the TypeScript Agent SDK with functions, types, and interfaces for programmatic Claude Code interactions allowed-tools:

  • Read
  • Write
  • Edit
  • Task

TypeScript SDK Reference

A comprehensive reference for building applications with the Anthropic Agent SDK (TypeScript), enabling programmatic interactions with Claude Code and custom tool integrations.

Installation

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

Quick Start

Core Functions

FunctionPurposeKey Use Case
query()Primary interface for Claude Code interactionsSend prompts, stream responses, manage multi-turn conversations
tool()Define MCP tools with type-safe schemasCreate custom tools for agents using Zod validation
createSdkMcpServer()Create in-process MCP serversHost tools natively in your application

Example: Basic Query

import { query } from '@anthropic-ai/claude-agent-sdk';

const result = query({
  prompt: "Analyze this code and suggest improvements",
  options: {
    allowedTools: ['Read', 'Grep'],
    model: 'claude-opus'
  }
});

for await (const message of result) {
  if (message.type === 'assistant') {
    console.log(message.message.content);
  }
}

Main Functions Reference

query()

Streams Claude Code responses with full message type support. Returns an async generator of SDKMessage objects.

Parameters:

  • prompt: string or async iterable of messages (streaming mode)
  • options: Configuration object (see Options below)

Returns: Query object (extends AsyncGenerator<SDKMessage, void>)

Key Methods:

  • .interrupt() – Interrupt streaming (streaming mode only)
  • .setPermissionMode(mode) – Change permissions dynamically (streaming mode only)

tool()

Creates type-safe MCP tool definitions using Zod schemas. Handlers receive validated inputs and must return CallToolResult.

Parameters:

  • name: Tool identifier
  • description: Natural language description
  • inputSchema: Zod schema defining inputs
  • handler: Async function (args: z.infer<Schema>, extra?: unknown) => Promise<CallToolResult>

Returns: SdkMcpToolDefinition<Schema>

createSdkMcpServer()

Creates an in-process MCP server for hosting custom tools. Runs in the same Node.js process—no subprocess overhead.

Parameters:

  • name: Server identifier
  • version: Optional semantic version
  • tools: Array of tool definitions from tool()

Returns: McpSdkServerConfigWithInstance (ready for mcpServers option)


Key Configuration Options

Essential Options

OptionTypeDefaultPurpose
allowedToolsstring[]All availableRestrict which tools Claude can use
disallowedToolsstring[][]Explicitly block tools
modelstringCLI defaultOverride Claude model (e.g., 'claude-opus')
cwdstringprocess.cwd()Working directory for operations
abortControllerAbortControllerNew instanceControl task cancellation

Advanced Options

OptionTypeDefaultPurpose
systemPromptstring or preset objectNoneCustom system instructions or Claude Code preset
agentsRecord<string, AgentDefinition>undefinedProgrammatically define subagents with custom prompts
mcpServersRecord<string, McpServerConfig>{}Connect stdio, SSE, HTTP, or SDK MCP servers
settingSources('user' | 'project' | 'local')[][]Load filesystem settings (CLAUDE.md, settings.json)
permissionModePermissionMode'default''default', 'acceptEdits', 'bypassPermissions', or 'plan'
maxThinkingTokensnumberundefinedToken limit for extended thinking
maxTurnsnumberundefinedMaximum conversation turns before stopping
resumestringundefinedResume a previous session by ID
forkSessionbooleanfalseFork to new session on resume instead of continuing

Message Types Overview

The query() generator yields SDKMessage objects. Common types:

Message TypeWhen EmittedKey Fields
'system'Session initializationtools, model, permissionMode, slash_commands
'user'User input sentmessage (APIUserMessage), uuid
'assistant'Claude respondsmessage (APIAssistantMessage with content/tool_use)
'result'Query completessubtype ('success' or error), usage, total_cost_usd
'stream_event'Partial streaming dataevent (only if includePartialMessages: true)

See Message Types Reference for complete definitions.


Types Reference Overview

Core Configuration Types

  • Options – Query configuration with 20+ properties (Tools, MCP, permissions, execution)
  • PermissionMode – Control execution permissions: 'default', 'acceptEdits', 'bypassPermissions', 'plan'
  • SettingSource – Filesystem config scope: 'user', 'project', 'local'

Agent & Tool Types

  • AgentDefinition – Subagent config: description, prompt, tools, model override
  • SdkMcpToolDefinition – Output of tool() function with Zod schema binding
  • McpServerConfig – Union of stdio, SSE, HTTP, or SDK server configs

MCP Server Configuration

Config TypeTransportUse Case
McpStdioServerConfigstdio (subprocess)External tools, sandboxing
McpSSEServerConfigServer-Sent EventsRemote tools, pub/sub patterns
McpHttpServerConfigHTTPREST-based tools, cloud integrations
McpSdkServerConfigWithInstanceIn-processCustom tools, no subprocess overhead

Hook Types

  • HookEvent – Event names: PreToolUse, PostToolUse, Notification, UserPromptSubmit, SessionStart, SessionEnd, etc.
  • HookCallback – Async function receiving hook input and returning decisions
  • HookInput – Union of all hook input types; each extends BaseHookInput

See Types Reference for detailed type definitions.


Tool Input/Output Reference

Built-in Tool Inputs

All tool names map to input schemas:

ToolPurposeKey Input
TaskDelegate to subagentdescription, prompt, subagent_type
BashRun shell commandscommand, optional timeout, run_in_background
ReadRead files/images/PDFsfile_path, optional offset/limit
Write / EditModify filesfile_path, content or old/new strings
GlobPattern matchingpattern, optional path
GrepRegex searchpattern, optional filters (glob, type, -B/-A/-C)
WebFetchFetch & analyze URLsurl, prompt for AI analysis
WebSearchWeb searchquery, optional domain filters
NotebookEditJupyter notebooksnotebook_path, new_source, edit_mode
TodoWriteTask trackingtodos array with status, content, activeForm

See Tool Reference for complete input/output schemas and examples.


Common Patterns

Streaming with Progress

const result = query({
  prompt: "Your task here",
  options: {
    includePartialMessages: true,
    permissionMode: 'bypassPermissions'
  }
});

for await (const msg of result) {
  if (msg.type === 'stream_event') {
    // Handle streaming events
    console.log('Streaming:', msg.event);
  } else if (msg.type === 'result') {
    console.log('Cost:', msg.total_cost_usd, 'Usage:', msg.usage);
  }
}

Custom MCP Tools

import { tool, createSdkMcpServer, query } from '@anthropic-ai/claude-agent-sdk';
import { z } from 'zod';

const myTool = tool(
  'my-calculator',
  'Add two numbers',
  { a: z.number(), b: z.number() },
  async ({ a, b }) => ({
    content: [{ type: 'text', text: `Result: ${a + b}` }]
  })
);

const server = createSdkMcpServer({
  name: 'my-tools',
  tools: [myTool]
});

const result = query({
  prompt: "Use my-calculator to add 5 + 3",
  options: {
    mcpServers: { 'my-tools': server }
  }
});

Loading Project Settings

const result = query({
  prompt: "Add a feature following project conventions",
  options: {
    systemPrompt: {
      type: 'preset',
      preset: 'claude_code'  // Enables Claude Code system prompt
    },
    settingSources: ['project'],  // Load .claude/settings.json & CLAUDE.md
    allowedTools: ['Read', 'Write', 'Edit', 'Bash']
  }
});

Related Resources