Modules
A router-first architecture spike for the Model Context Protocol.
Optional application-owned authorization at the component boundary.
The identity of one registered router component shown to an authorization policy.
A lightweight cooperative cancellation token backed by :atomics.
A client for MCP servers.
In-process transport for Snodo.Client.direct/2.
Streamable HTTP transport for Snodo.Client.connect({:http, url}, opts).
One page of a list operation returned by Snodo.Client.list_page/3.
Stdio transport for Snodo.Client.connect({:stdio, command, args}, opts).
Behaviour for the connection underneath Snodo.Client.
A normalized, protocol-neutral completion request.
Honest, machine-readable evidence inventory for the implemented MCP slice.
Immutable request-scoped protocol, transport, auth, and tracing context.
Builds and validates embedded elicitation/create requests for MRTR.
A decoded JSON-RPC message before dialect-specific resolution.
A protocol-neutral error with JSON-RPC-compatible defaults.
Behaviour for explicitly installed, exact-versioned out-of-tree extensions.
An exact-versioned extension method mapped to a static operation term.
Immutable registry for explicitly installed extension modules.
A resolved request route owned by one installed extension.
Optional, dependency-free lifecycle instrumentation.
A normalized instrumentation sink: the sink module and its options.
The JSON value rule every result, content map, and metadata map must satisfy.
Validation for the ordinary multi round-trip request boundary.
Optional, integrity-protected state for multi-round-trip requests.
Stateless, protocol-neutral pagination for MCP list operations.
Acknowledged progress reporting for an active ordinary MCP request.
A request-scoped handle whose lifecycle belongs to its transport.
Transport-owned immutable progress counters; no worker or global registry is created.
Behaviour, compile-time DSL, and content builders for MCP prompts.
Protocol-neutral definition of an MCP prompt template.
Snodo.Prompt with declared arguments and plain return values from render/2.
Behaviour for version-specific lifecycle, admission, routing, and wire shaping.
The successful result of exact-profile MCP admission inspection.
Pure exact-profile admission checks performed before semantic routing.
Immutable, exact-revision protocol facts used by admission and support reports.
A declarative method rule for one exact MCP protocol profile.
An immutable, explicitly configured registry of protocol dialects.
Opt-in MCP 2025-06-18 dialect for stateless HTTP; no server-initiated requests.
Opt-in MCP 2025-11-25 dialect for stateless HTTP; Tasks are not implemented.
Minimal server dialect for MCP 2026-07-28.
Behaviour and compile-time convenience DSL for MCP resources.
Protocol-neutral definition of a direct resource or resource template.
Snodo.Resource with plain return values from read/2.
An exact matcher for the simple-expansion subset of URI templates.
A protocol-neutral handler result shaped later by the selected dialect.
An immutable registry and synchronous protocol-neutral dispatcher.
Pluggable JSON Schema validation boundary.
Dependency-free validation for the common JSON Schema subset used by tools.
A structured failure returned by Snodo.Schema.Validator.Basic.
Default validator used when an application has not installed a backend.
Dialect-driven direct dispatch and a declarative server builder.
Optional, transport-neutral execution policy around the synchronous server core.
Immutable server configuration shared by direct and transport dispatch.
Optional supervision boundary for configured transport children.
An opened, request-scoped MCP subscription.
A protocol-neutral event emitted by an application subscription source.
An opt-in, application-supervised Snodo.Subscription.Source.
Application-owned event source boundary for subscriptions/listen.
A normalized subscription source: the source module and its options.
In-process request helpers for component and protocol tests.
Behaviour and compile-time convenience DSL for MCP tools.
Protocol-neutral static definition of an application tool.
Opt-in argument DSL for tools with straightforward object input schemas.
Behaviour for long-lived transport adapters.
Opaque, request-scoped information supplied by a transport.
Transport-neutral requirements declared by a protocol dialect.
Concurrent newline-delimited JSON-RPC transport.
Newline-delimited JSON framing for the MCP stdio binding.
Protocol-driven adapter for stateless Streamable HTTP requests.
An HTTP request that passed admission in Snodo.Transport.StreamableHTTP.prepare/3,
ready for Snodo.Transport.StreamableHTTP.execute/3.
A server-agnostic HTTP request at the Streamable HTTP boundary.
A complete HTTP response returned by the core adapter.
Small dependency-free HTTP/1.1 listener for Snodo.Transport.StreamableHTTP.
A transport-server-agnostic long-lived SSE response descriptor.
Mix Tasks
Runs every public-API example in deterministic check mode.
Runs the literal-wire compliance tests, then prints an evidence report.
Runs one repository example in deterministic check mode in a fresh VM.