typescript-sdk-reference

2
1
Source

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

Install

mkdir -p .claude/skills/typescript-sdk-reference && curl -L -o skill.zip "https://mcp.directory/api/skills/download/6992" && unzip -o skill.zip -d .claude/skills/typescript-sdk-reference && rm skill.zip

Installs to .claude/skills/typescript-sdk-reference

About this skill

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

reviewing-code

CaptainCrouton89

Systematically evaluate code changes for security, correctness, performance, and spec alignment. Use when reviewing PRs, assessing code quality, or verifying implementation against requirements.

10017

railway-cli-management

CaptainCrouton89

Deploy, manage services, view logs, and configure Railway infrastructure. Use when deploying to Railway, managing environment variables, viewing deployment logs, scaling services, or managing volumes.

1388

writing-like-user

CaptainCrouton89

Emulate the user's personal writing voice and style patterns. Use when the user asks to write content in their voice, draft documents, compose messages, or requests "write this like me" or "in my style."

815

gathering-requirements

CaptainCrouton89

Systematically clarify user needs, preferences, and constraints before planning or implementation. Classifies work type, investigates existing systems, discovers edge cases and integration points, resolves assumptions, and creates detailed specifications. Use when building features, enhancements, or integrations where requirements need clarification.

13

fixing-bugs-systematically

CaptainCrouton89

Diagnose and fix bugs through systematic investigation, root cause analysis, and targeted validation. Use when something is broken, errors occur, performance degrades, or unexpected behavior manifests.

21

investigating-code-patterns

CaptainCrouton89

Systematically trace code flows, locate implementations, diagnose performance issues, and map system architecture. Use when understanding how existing systems work, researching concepts, exploring code structure, or answering "how/where/why is X implemented?" questions.

61

You might also like

flutter-development

aj-geddes

Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.

1,6851,428

ui-ux-pro-max

nextlevelbuilder

"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."

1,2641,325

drawio-diagrams-enhanced

jgtolentino

Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.

1,5331,147

godot

bfollington

This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.

1,355809

nano-banana-pro

garg-aayush

Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.

1,264727

pdf-to-markdown

aliceisjustplaying

Convert entire PDF documents to clean, structured Markdown for full context loading. Use this skill when the user wants to extract ALL text from a PDF into context (not grep/search), when discussing or analyzing PDF content in full, when the user mentions "load the whole PDF", "bring the PDF into context", "read the entire PDF", or when partial extraction/grepping would miss important context. This is the preferred method for PDF text extraction over page-by-page or grep approaches.

1,483684