# car-proto

JSON-RPC 2.0 protocol types for [Common Agent Runtime](https://github.com/Parslee-ai/car) client-server communication.

## What it does

Shared serde-defined types used by both `car-server-core` (server) and any Rust client. Single source of truth for request / response / notification shapes so the server and clients can't drift.

The protocol is bidirectional over WebSocket:
- **Client → Server** — `session.init`, `tools.register`, `proposal.submit`, `verify`, etc.
- **Server → Client (callback)** — `tools.execute` (awaits a response)
- **Server → Client (notification)** — `host.event`, `voice.event` (no response expected)

## Where it fits

If you're building a Rust WebSocket client to talk to `car-server`, depend on this crate to get type-safe request/response handling. For other languages, the wire format is documented in [`docs/websocket-protocol.md`](../../../docs/websocket-protocol.md) — reach for raw JSON.
