# snodo v0.2.0 - Table of Contents > Model Context Protocol servers and clients for Elixir ## Pages - [snodo](readme.md) - [Changelog](changelog.md) - Guides - [Getting started](getting-started.md) - [Tools, resources, and prompts](components.md) - [The client](client.md) - [Transports](transports.md) - [Recommended application stack](application-stack.md) - [Ordinary MRTR and elicitation](interactive-operations.md) - [Subscriptions](subscriptions.md) - [Authorization](authorization.md) - [Extensions](extensions.md) - [Instrumentation](instrumentation.md) - [Initialize-era HTTP compatibility](initialize-era-clients.md) - [Compatibility and migration evidence](compatibility.md) - [Protocol compliance architecture](protocol-compliance.md) ## Modules - [Snodo](Snodo.md): A router-first architecture spike for the Model Context Protocol. - [Snodo.Authorization](Snodo.Authorization.md): Optional application-owned authorization at the component boundary. - [Snodo.Authorization.Component](Snodo.Authorization.Component.md): The identity of one registered router component shown to an authorization policy. - [Snodo.Cancellation](Snodo.Cancellation.md): A lightweight cooperative cancellation token backed by `:atomics`. - [Snodo.Elicitation](Snodo.Elicitation.md): Builds and validates embedded `elicitation/create` requests for MRTR. - [Snodo.Extension](Snodo.Extension.md): Behaviour for explicitly installed, exact-versioned out-of-tree extensions. - [Snodo.Extension.Method](Snodo.Extension.Method.md): An exact-versioned extension method mapped to a static operation term. - [Snodo.Extension.Registry](Snodo.Extension.Registry.md): Immutable registry for explicitly installed extension modules. - [Snodo.Extension.Route](Snodo.Extension.Route.md): A resolved request route owned by one installed extension. - [Snodo.Instrumentation](Snodo.Instrumentation.md): Optional, dependency-free lifecycle instrumentation. - [Snodo.Instrumentation.Config](Snodo.Instrumentation.Config.md): A normalized instrumentation sink: the sink module and its options. - [Snodo.JSONValue](Snodo.JSONValue.md): The JSON value rule every result, content map, and metadata map must satisfy. - [Snodo.MRTR](Snodo.MRTR.md): Validation for the ordinary multi round-trip request boundary. - [Snodo.MRTR.State](Snodo.MRTR.State.md): Optional, integrity-protected state for multi-round-trip requests. - [Snodo.Pagination](Snodo.Pagination.md): Stateless, protocol-neutral pagination for MCP list operations. - [Snodo.Progress](Snodo.Progress.md): Acknowledged progress reporting for an active ordinary MCP request. - [Snodo.Progress.Sink](Snodo.Progress.Sink.md): A request-scoped handle whose lifecycle belongs to its transport. - [Snodo.Progress.State](Snodo.Progress.State.md): Transport-owned immutable progress counters; no worker or global registry is created. - [Snodo.Router](Snodo.Router.md): An immutable registry and synchronous protocol-neutral dispatcher. - [Snodo.Schema.Validator](Snodo.Schema.Validator.md): Pluggable JSON Schema validation boundary. - [Snodo.Schema.Validator.Basic](Snodo.Schema.Validator.Basic.md): Dependency-free validation for the common JSON Schema subset used by tools. - [Snodo.Schema.Validator.Basic.Error](Snodo.Schema.Validator.Basic.Error.md): A structured failure returned by `Snodo.Schema.Validator.Basic`. - [Snodo.Schema.Validator.Passthrough](Snodo.Schema.Validator.Passthrough.md): Default validator used when an application has not installed a backend. - [Snodo.Subscription](Snodo.Subscription.md): An opened, request-scoped MCP subscription. - [Snodo.Subscription.Event](Snodo.Subscription.Event.md): A protocol-neutral event emitted by an application subscription source. - [Snodo.Subscription.Hub](Snodo.Subscription.Hub.md): An opt-in, application-supervised `Snodo.Subscription.Source`. - [Snodo.Subscription.Source](Snodo.Subscription.Source.md): Application-owned event source boundary for `subscriptions/listen`. - [Snodo.Subscription.Source.Config](Snodo.Subscription.Source.Config.md): A normalized subscription source: the source module and its options. - [Snodo.Test](Snodo.Test.md): In-process request helpers for component and protocol tests. - Server - [Snodo.Completion](Snodo.Completion.md): A normalized, protocol-neutral completion request. - [Snodo.Context](Snodo.Context.md): Immutable request-scoped protocol, transport, auth, and tracing context. - [Snodo.Error](Snodo.Error.md): A protocol-neutral error with JSON-RPC-compatible defaults. - [Snodo.Prompt](Snodo.Prompt.md): Behaviour, compile-time DSL, and content builders for MCP prompts. - [Snodo.Prompt.Definition](Snodo.Prompt.Definition.md): Protocol-neutral definition of an MCP prompt template. - [Snodo.Prompt.Simple](Snodo.Prompt.Simple.md): `Snodo.Prompt` with declared arguments and plain return values from `render/2`. - [Snodo.Resource](Snodo.Resource.md): Behaviour and compile-time convenience DSL for MCP resources. - [Snodo.Resource.Definition](Snodo.Resource.Definition.md): Protocol-neutral definition of a direct resource or resource template. - [Snodo.Resource.Simple](Snodo.Resource.Simple.md): `Snodo.Resource` with plain return values from `read/2`. - [Snodo.Resource.Template](Snodo.Resource.Template.md): An exact matcher for the simple-expansion subset of URI templates. - [Snodo.Result](Snodo.Result.md): A protocol-neutral handler result shaped later by the selected dialect. - [Snodo.Server](Snodo.Server.md): Dialect-driven direct dispatch and a declarative server builder. - [Snodo.Server.Executor](Snodo.Server.Executor.md): Optional, transport-neutral execution policy around the synchronous server core. - [Snodo.Server.Runtime](Snodo.Server.Runtime.md): Immutable server configuration shared by direct and transport dispatch. - [Snodo.Server.Supervisor](Snodo.Server.Supervisor.md): Optional supervision boundary for configured transport children. - [Snodo.Tool](Snodo.Tool.md): Behaviour and compile-time convenience DSL for MCP tools. - [Snodo.Tool.Definition](Snodo.Tool.Definition.md): Protocol-neutral static definition of an application tool. - [Snodo.Tool.Simple](Snodo.Tool.Simple.md): Opt-in argument DSL for tools with straightforward object input schemas. - Client - [Snodo.Client](Snodo.Client.md): A client for MCP servers. - [Snodo.Client.Direct](Snodo.Client.Direct.md): In-process transport for `Snodo.Client.direct/2`. - [Snodo.Client.HTTP](Snodo.Client.HTTP.md): Streamable HTTP transport for `Snodo.Client.connect({:http, url}, opts)`. - [Snodo.Client.Page](Snodo.Client.Page.md): One page of a list operation returned by `Snodo.Client.list_page/3`. - [Snodo.Client.Stdio](Snodo.Client.Stdio.md): Stdio transport for `Snodo.Client.connect({:stdio, command, args}, opts)`. - [Snodo.Client.Transport](Snodo.Client.Transport.md): Behaviour for the connection underneath `Snodo.Client`. - Transports - [Snodo.Transport](Snodo.Transport.md): Behaviour for long-lived transport adapters. - [Snodo.Transport.Context](Snodo.Transport.Context.md): Opaque, request-scoped information supplied by a transport. - [Snodo.Transport.Policy](Snodo.Transport.Policy.md): Transport-neutral requirements declared by a protocol dialect. - [Snodo.Transport.Stdio](Snodo.Transport.Stdio.md): Concurrent newline-delimited JSON-RPC transport. - [Snodo.Transport.Stdio.Framing](Snodo.Transport.Stdio.Framing.md): Newline-delimited JSON framing for the MCP stdio binding. - [Snodo.Transport.StreamableHTTP](Snodo.Transport.StreamableHTTP.md): Protocol-driven adapter for stateless Streamable HTTP requests. - [Snodo.Transport.StreamableHTTP.Prepared](Snodo.Transport.StreamableHTTP.Prepared.md): An HTTP request that passed admission in `Snodo.Transport.StreamableHTTP.prepare/3`, ready for `Snodo.Transport.StreamableHTTP.execute/3`. - [Snodo.Transport.StreamableHTTP.Request](Snodo.Transport.StreamableHTTP.Request.md): A server-agnostic HTTP request at the Streamable HTTP boundary. - [Snodo.Transport.StreamableHTTP.Response](Snodo.Transport.StreamableHTTP.Response.md): A complete HTTP response returned by the core adapter. - [Snodo.Transport.StreamableHTTP.Server](Snodo.Transport.StreamableHTTP.Server.md): Small dependency-free HTTP/1.1 listener for `Snodo.Transport.StreamableHTTP`. - [Snodo.Transport.StreamableHTTP.StreamResponse](Snodo.Transport.StreamableHTTP.StreamResponse.md): A transport-server-agnostic long-lived SSE response descriptor. - Protocol - [Snodo.Envelope](Snodo.Envelope.md): A decoded JSON-RPC message before dialect-specific resolution. - [Snodo.Protocol](Snodo.Protocol.md): Behaviour for version-specific lifecycle, admission, routing, and wire shaping. - [Snodo.Protocol.Inspection](Snodo.Protocol.Inspection.md): The successful result of exact-profile MCP admission inspection. - [Snodo.Protocol.Inspector](Snodo.Protocol.Inspector.md): Pure exact-profile admission checks performed before semantic routing. - [Snodo.Protocol.Profile](Snodo.Protocol.Profile.md): Immutable, exact-revision protocol facts used by admission and support reports. - [Snodo.Protocol.Profile.Method](Snodo.Protocol.Profile.Method.md): A declarative method rule for one exact MCP protocol profile. - [Snodo.Protocol.Registry](Snodo.Protocol.Registry.md): An immutable, explicitly configured registry of protocol dialects. - [Snodo.Protocol.V2025_06_18](Snodo.Protocol.V2025_06_18.md): Opt-in MCP 2025-06-18 dialect for stateless HTTP; no server-initiated requests. - [Snodo.Protocol.V2025_11_25](Snodo.Protocol.V2025_11_25.md): Opt-in MCP 2025-11-25 dialect for stateless HTTP; Tasks are not implemented. - [Snodo.Protocol.V2026_07_28](Snodo.Protocol.V2026_07_28.md): Minimal server dialect for MCP 2026-07-28.