# `ExMCP.Types.V20250326`
[🔗](https://github.com/azmaveth/ex_mcp/blob/v1.0.0/lib/ex_mcp/types/v20250326.ex#L1)

Type definitions for MCP protocol version 2025-03-26.

This module contains type definitions specific to the 2025-03-26
version of the Model Context Protocol specification.

# `audio_content`

```elixir
@type audio_content() :: ExMCP.Types.audio_content()
```

# `client_capabilities`

```elixir
@type client_capabilities() :: %{
  optional(:experimental) =&gt; %{required(String.t()) =&gt; any()},
  optional(:sampling) =&gt; %{required(String.t()) =&gt; any()},
  optional(:roots) =&gt; %{optional(:listChanged) =&gt; boolean()}
}
```

# `content`

```elixir
@type content() :: ExMCP.Types.content()
```

# `content_type`

```elixir
@type content_type() :: ExMCP.Types.content_type()
```

# `create_message_params`

```elixir
@type create_message_params() :: %{
  :messages =&gt; [message()],
  optional(:modelPreferences) =&gt; model_preferences(),
  optional(:systemPrompt) =&gt; String.t(),
  optional(:maxTokens) =&gt; pos_integer()
}
```

# `cursor`

```elixir
@type cursor() :: ExMCP.Types.cursor()
```

# `error_code`

```elixir
@type error_code() :: ExMCP.Types.error_code()
```

# `image_content`

```elixir
@type image_content() :: ExMCP.Types.image_content()
```

# `json_schema`

```elixir
@type json_schema() :: map()
```

# `json_value`

```elixir
@type json_value() :: any()
```

# `log_level`

```elixir
@type log_level() ::
  :debug | :info | :notice | :warning | :error | :critical | :alert | :emergency
```

# `message`

```elixir
@type message() :: %{role: :user | :assistant, content: content() | [content()]}
```

# `model_hint`

```elixir
@type model_hint() :: %{optional(:name) =&gt; String.t()}
```

# `model_preferences`

```elixir
@type model_preferences() :: %{
  optional(:hints) =&gt; [model_hint()],
  optional(:costPriority) =&gt; float(),
  optional(:speedPriority) =&gt; float(),
  optional(:intelligencePriority) =&gt; float()
}
```

# `request_id`

```elixir
@type request_id() :: ExMCP.Types.request_id()
```

# `resource`

```elixir
@type resource() :: %{
  :uri =&gt; String.t(),
  optional(:name) =&gt; String.t(),
  optional(:description) =&gt; String.t(),
  optional(:mimeType) =&gt; String.t()
}
```

# `resource_content`

```elixir
@type resource_content() :: %{:uri =&gt; String.t(), optional(atom()) =&gt; any()}
```

# `resource_updated_notification`

```elixir
@type resource_updated_notification() :: %{
  method: String.t(),
  params: %{uri: String.t()}
}
```

# `server_capabilities`

```elixir
@type server_capabilities() :: %{
  optional(:experimental) =&gt; %{required(String.t()) =&gt; any()},
  optional(:prompts) =&gt; %{optional(:listChanged) =&gt; boolean()},
  optional(:resources) =&gt; %{
    optional(:subscribe) =&gt; boolean(),
    optional(:listChanged) =&gt; boolean()
  },
  optional(:tools) =&gt; %{optional(:listChanged) =&gt; boolean()},
  optional(:logging) =&gt; %{optional(:setLevel) =&gt; boolean()}
}
```

# `set_level_request`

```elixir
@type set_level_request() :: %{method: String.t(), params: %{level: log_level()}}
```

# `text_content`

```elixir
@type text_content() :: ExMCP.Types.text_content()
```

# `tool`

```elixir
@type tool() :: %{
  :name =&gt; String.t(),
  optional(:description) =&gt; String.t(),
  inputSchema: json_schema()
}
```

# `protocol_version`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
