# `ExUtcp.Tools`
[🔗](https://github.com/universal-tool-calling-protocol/elixir-utcp/blob/main/lib/ex_utcp/tools.ex#L1)

Tool definitions and management for UTCP.

This module handles tool schemas, registration, and discovery.

# `extract_provider_name`

```elixir
@spec extract_provider_name(String.t()) :: String.t()
```

Extracts the provider name from a full tool name.

# `extract_tool_name`

```elixir
@spec extract_tool_name(String.t()) :: String.t()
```

Extracts the tool name without provider prefix.

# `matches_query?`

```elixir
@spec matches_query?(ExUtcp.Types.tool(), String.t()) :: boolean()
```

Checks if a tool matches a search query.

# `new_schema`

```elixir
@spec new_schema(keyword()) :: ExUtcp.Types.tool_input_output_schema()
```

Creates a new tool input/output schema.

# `new_tool`

```elixir
@spec new_tool(keyword()) :: ExUtcp.Types.tool()
```

Creates a new tool definition.

# `normalize_name`

```elixir
@spec normalize_name(String.t(), String.t()) :: String.t()
```

Normalizes tool name by ensuring it has a provider prefix.

# `validate_tool`

```elixir
@spec validate_tool(ExUtcp.Types.tool()) :: :ok | {:error, String.t()}
```

Validates a tool definition.

---

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