# snodo v0.1.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.Compliance](Snodo.Compliance.md): Honest, machine-readable evidence inventory for the implemented MCP slice.
  - [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.

## Mix Tasks

- [mix examples](Mix.Tasks.Examples.md): Runs every public-API example in deterministic check mode.
- [mix snodo.contract](Mix.Tasks.Snodo.Contract.md): Runs the literal-wire compliance tests, then prints an evidence report.
- [mix snodo.example](Mix.Tasks.Snodo.Example.md): Runs one repository example in deterministic check mode in a fresh VM.

