# `ExMCP.Content.ValidatorRegistry`
[🔗](https://github.com/azmaveth/ex_mcp/blob/v1.0.0/lib/ex_mcp/content/validator_registry.ex#L1)

GenServer-based validator registry that replaces Process dictionary usage.

This module provides a thread-safe registry for content validators
that eliminates the concurrency issues with Process.put/2.

# `validator_function`

```elixir
@type validator_function() :: (any() -&gt; :ok | {:error, String.t()})
```

# `validator_name`

```elixir
@type validator_name() :: atom()
```

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `get_validator`

```elixir
@spec get_validator(GenServer.server(), validator_name()) ::
  {:ok, validator_function()} | {:error, :not_found}
```

Gets a registered validator function.

# `list_validators`

```elixir
@spec list_validators(GenServer.server()) :: [validator_name()]
```

Lists all registered validators.

# `register_validator`

```elixir
@spec register_validator(GenServer.server(), validator_name(), validator_function()) ::
  :ok
```

Registers a validator function.

# `start_link`

```elixir
@spec start_link(keyword()) :: GenServer.on_start()
```

Starts the validator registry.

# `unregister_validator`

```elixir
@spec unregister_validator(GenServer.server(), validator_name()) :: :ok
```

Unregisters a validator.

# `validator_registered?`

```elixir
@spec validator_registered?(GenServer.server(), validator_name()) :: boolean()
```

Checks if a validator is registered.

---

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