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

Search filters for UTCP tools and providers.

Provides filtering capabilities based on various criteria.

# `apply_filters`

```elixir
@spec apply_filters([ExUtcp.Types.tool()], map()) :: [ExUtcp.Types.tool()]
```

Applies filters to a list of tools.

# `apply_provider_filters`

```elixir
@spec apply_provider_filters([map()], map()) :: [map()]
```

Applies filters to a list of providers.

# `capability_filter`

```elixir
@spec capability_filter([String.t()]) :: (ExUtcp.Types.tool() -&gt; boolean())
```

Creates a filter for tools with specific capabilities.

# `filter_by_providers`

```elixir
@spec filter_by_providers([ExUtcp.Types.tool()], [String.t()]) :: [
  ExUtcp.Types.tool()
]
```

Filters tools by provider names.

# `filter_by_tags`

```elixir
@spec filter_by_tags([ExUtcp.Types.tool()], [String.t()]) :: [ExUtcp.Types.tool()]
```

Filters tools by tags.

# `filter_by_transports`

```elixir
@spec filter_by_transports([ExUtcp.Types.tool()], [atom()]) :: [ExUtcp.Types.tool()]
```

Filters tools by transport types.

# `filter_providers_by_names`

```elixir
@spec filter_providers_by_names([map()], [String.t()]) :: [map()]
```

Filters providers by names.

# `filter_providers_by_transports`

```elixir
@spec filter_providers_by_transports([map()], [atom()]) :: [map()]
```

Filters providers by transport types.

# `parameter_type_filter`

```elixir
@spec parameter_type_filter([String.t()]) :: (ExUtcp.Types.tool() -&gt; boolean())
```

Creates a filter for tools with specific parameter types.

# `response_type_filter`

```elixir
@spec response_type_filter([String.t()]) :: (ExUtcp.Types.tool() -&gt; boolean())
```

Creates a filter for tools with specific response types.

---

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