> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/agentclientprotocol/typescript-sdk/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Learn about the Agent Client Protocol TypeScript SDK and how it enables standardized communication between code editors and AI agents.

## What is ACP?

The **Agent Client Protocol (ACP)** is a standardized protocol that enables seamless communication between **code editors** (interactive programs for viewing and editing source code) and **coding agents** (programs that use generative AI to autonomously modify code).

ACP defines a structured way for these two entities to interact:

* **Clients** (code editors like IDEs) provide the environment and control access to resources
* **Agents** (AI-powered coding assistants) perform autonomous code modifications using language models

By establishing a common protocol, ACP allows any compatible client to work with any compatible agent, creating an open ecosystem for AI-assisted development.

## TypeScript SDK Overview

The **ACP TypeScript SDK** (`@agentclientprotocol/sdk`) is the official TypeScript implementation of the Agent Client Protocol. It provides:

* **Type-safe interfaces** for both Agents and Clients
* **JSON-RPC 2.0** message handling with automatic validation using Zod
* **Bidirectional streaming** over stdio or other transports
* **Complete protocol coverage** including sessions, prompts, tool calls, permissions, and terminals
* **Production-ready** implementations used by tools like the Gemini CLI Agent

## Key Capabilities

<CardGroup cols={2}>
  <Card title="Session Management" icon="comments">
    Create, load, and manage conversation sessions with independent contexts and history
  </Card>

  <Card title="Prompt Processing" icon="message">
    Send user prompts with rich context (files, images) and receive structured responses
  </Card>

  <Card title="Tool Calls" icon="wrench">
    Execute operations like reading/writing files with built-in permission handling
  </Card>

  <Card title="Real-time Updates" icon="bolt">
    Stream agent messages, tool calls, and execution plans as they happen
  </Card>

  <Card title="Terminal Support" icon="terminal">
    Create and manage terminals for executing commands with output streaming
  </Card>

  <Card title="File System Access" icon="folder">
    Read and write text files in the client's environment with proper permissions
  </Card>
</CardGroup>

## Why Use ACP?

<Info>
  ACP is designed to be **transport-agnostic**, working over stdio, WebSockets, or any bidirectional stream. This flexibility makes it ideal for CLI tools, IDE extensions, and web applications.
</Info>

**Benefits:**

* **Standardized Communication**: No need to build custom protocols for agent-client interaction
* **Type Safety**: Full TypeScript types ensure correctness at compile time
* **Protocol Validation**: Automatic request/response validation using Zod schemas
* **Extensible**: Support for custom methods and capabilities beyond the core protocol
* **Well-Documented**: Comprehensive protocol documentation and examples

## Protocol Documentation

For a deeper understanding of the protocol specification, lifecycle, and message formats, visit the official protocol documentation:

<Card title="ACP Protocol Documentation" icon="book" href="https://agentclientprotocol.com">
  Read the complete protocol specification, architecture guides, and best practices
</Card>

## Next Steps

Get started building with the ACP TypeScript SDK:

<CardGroup cols={2}>
  <Card title="Installation" icon="download" href="/installation">
    Install the SDK and set up your development environment
  </Card>

  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Build your first ACP agent or client in minutes
  </Card>

  <Card title="Building Agents" icon="robot" href="/agents/overview">
    Learn how to implement an ACP-compliant agent
  </Card>

  <Card title="Building Clients" icon="laptop" href="/clients/overview">
    Learn how to implement an ACP-compliant client
  </Card>
</CardGroup>
