# `MCPKit.Prompt`
[🔗](https://github.com/mcostasilva/mcp_kit/blob/v0.2.4/lib/mcp_kit/prompt.ex#L1)

Behaviour and schema DSL for MCP prompt modules.

Prompt modules declare their argument contract with `schema/1`, render MCP
prompt messages via `render/2`, and may optionally implement `complete/3`
for argument suggestions.

# `arguments`

```elixir
@callback arguments() :: [map()]
```

Returns the prompt argument descriptors sent by `prompts/list`.

# `complete`

```elixir
@callback complete(String.t(), map(), map()) :: {:ok, [String.t()]} | :unsupported
```

Returns prompt argument completion suggestions.

Return `:unsupported` when the prompt does not expose completions for the
given argument.

# `description`

```elixir
@callback description() :: String.t() | nil
```

Returns the description shown in `prompts/list`.

# `render`

```elixir
@callback render(map(), map()) :: {:reply, [map()], map()}
```

Renders MCP prompt messages from validated arguments.

The context map currently includes at least `:session`.

# `validate_arguments`

```elixir
@callback validate_arguments(map()) :: {:ok, map()} | {:error, String.t()}
```

Validates and normalizes incoming prompt arguments.

This callback is generated by `schema/1` unless overridden.

# `schema`
*macro* 

Declares the argument schema for a prompt.

This macro generates `arguments/0` and `validate_arguments/1` for the prompt
module.

---

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