# 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.