# snodo_otp v0.4.3 - API Reference

## Modules

- [Snodo.OTP.Contract](Snodo.OTP.Contract.md): One module describes a GenServer's remote-callable operations for both
sides. The server side (`Snodo.OTP.Server.expose/2`) turns it into
`Snodo.Tool.GenServer` declarations: JSON in, Elixir message, reply term,
JSON out. The client side (`Snodo.OTP.Proxy`) uses the inverse pair:
Elixir message in, JSON out over the wire, JSON reply back to a term.
- [Snodo.OTP.Proxy](Snodo.OTP.Proxy.md): A local GenServer that stands in for a GenServer behind an MCP endpoint.
Application code keeps `GenServer.call/3` and `GenServer.cast/2`; each
becomes a `tools/call` chosen by the contract.
- [Snodo.OTP.Server](Snodo.OTP.Server.md): `expose Contract, target: Module` inside a `Snodo.Server` emits one
`genserver_call`/`genserver_cast` declaration per contract operation, so
the existing `Snodo.Tool.GenServer` adapter does the serving: schema
validation, bounded call, tool errors for missing targets and timeouts.

