# Urchin v0.2.0 - Table of Contents

> A Model Context Protocol (MCP) server library for Elixir, implementing the 2025-11-25 specification over the Streamable HTTP transport.

## Pages

- [Urchin](readme.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)

## Modules

- [Urchin](Urchin.md): A Model Context Protocol (MCP) server library implementing the `2025-11-25`
specification over the Streamable HTTP transport.
- [Urchin.Auth](Urchin.Auth.md): OAuth 2.1 Resource Server configuration and logic for the MCP authorization spec
(revision 2025-11-25).
- [Urchin.Auth.Claims](Urchin.Auth.Claims.md): Normalized claims for a validated OAuth 2.1 access token.
- [Urchin.Auth.Metadata](Urchin.Auth.Metadata.md): A `Plug` that serves the RFC 9728 Protected Resource Metadata document.
- [Urchin.Auth.Plug](Urchin.Auth.Plug.md): A `Plug` that enforces a valid OAuth 2.1 bearer token on every request.
- [Urchin.Auth.TokenValidator](Urchin.Auth.TokenValidator.md): Behaviour for validating inbound OAuth 2.1 access tokens.
- [Urchin.Capabilities](Urchin.Capabilities.md): Builds the `ServerCapabilities` object returned in the `initialize` result and
parses the `ClientCapabilities` received from the client.
- [Urchin.Content](Urchin.Content.md): Builders for MCP content blocks and resource contents.
- [Urchin.Context](Urchin.Context.md): The request context handed to every server handler.
- [Urchin.Dispatcher](Urchin.Dispatcher.md): Routes decoded JSON-RPC requests to `Urchin.Server` callbacks and shapes their return
values into JSON-RPC result maps.
- [Urchin.Endpoint](Urchin.Endpoint.md): A standalone HTTP endpoint that serves an MCP server with Bandit.
- [Urchin.JSONRPC](Urchin.JSONRPC.md): Encoding, decoding and classification of JSON-RPC 2.0 messages.
- [Urchin.Prompt](Urchin.Prompt.md): A prompt definition advertised via `prompts/list`, plus helpers for building the
`PromptMessage` list returned by `prompts/get`.
- [Urchin.Prompt.Argument](Urchin.Prompt.Argument.md): An argument accepted by a prompt template.
- [Urchin.Protocol](Urchin.Protocol.md): Protocol-level constants and version negotiation for the Model Context Protocol.
- [Urchin.Resource](Urchin.Resource.md): A resource definition advertised via `resources/list`.
- [Urchin.ResourceTemplate](Urchin.ResourceTemplate.md): A resource template advertised via `resources/templates/list`.
- [Urchin.Result.CallTool](Urchin.Result.CallTool.md): An explicit `tools/call` result.
- [Urchin.SSE](Urchin.SSE.md): Server-Sent Events framing helpers for the Streamable HTTP transport.
- [Urchin.Server](Urchin.Server.md): Behaviour and DSL for authoring MCP servers.
- [Urchin.Session](Urchin.Session.md): Per-session state for the Streamable HTTP transport.
- [Urchin.Tool](Urchin.Tool.md): A tool definition advertised via `tools/list`.
- [Urchin.Transport.StreamableHTTP](Urchin.Transport.StreamableHTTP.md): A `Plug` implementing the MCP Streamable HTTP transport (revision 2025-11-25).
- [Urchin.URITemplate](Urchin.URITemplate.md): Minimal RFC 6570 URI template matching used to route `resources/read` requests to
a declared `resource_template`.

- Exceptions
  - [Urchin.Error](Urchin.Error.md): JSON-RPC / MCP error representation.

