# `AshAi.Info`
[🔗](https://github.com/ash-project/ash_ai/blob/v0.6.1/lib/ash_ai/info.ex#L5)

Introspection functions for the `AshAi` extension.

# `mcp_action_resources`

```elixir
@spec mcp_action_resources(module() | map()) :: [AshAi.McpResource.t()]
```

Returns only `%AshAi.McpResource{}` entities (action-based) from the `:mcp_resources` section.

# `mcp_resources`

```elixir
@spec mcp_resources(dsl_or_extended :: module() | map()) :: [struct()]
```

mcp_resources DSL entities

# `mcp_ui_resources`

```elixir
@spec mcp_ui_resources(module() | map()) :: [AshAi.McpUiResource.t()]
```

Returns only `%AshAi.McpUiResource{}` entities from the `:mcp_resources` section.

Spark's auto-generated `mcp_resources/1` returns all entities in the section
(both `mcp_resource` and `mcp_ui_resource`). This function filters to UI resources only.

# `tools`

```elixir
@spec tools(dsl_or_extended :: module() | map()) :: [struct()]
```

tools DSL entities

# `vectorize`

```elixir
@spec vectorize(dsl_or_extended :: module() | map()) :: [struct()]
```

vectorize DSL entities

# `vectorize_ash_oban_trigger_name`

```elixir
@spec vectorize_ash_oban_trigger_name(dsl_or_extended :: module() | map()) ::
  {:ok, atom()} | :error
```

The name of the AshOban-trigger that will be run in order to update the record's embeddings. Defaults to `:ash_ai_update_embeddings`.

# `vectorize_ash_oban_trigger_name!`

```elixir
@spec vectorize_ash_oban_trigger_name!(dsl_or_extended :: module() | map()) ::
  atom() | no_return()
```

The name of the AshOban-trigger that will be run in order to update the record's embeddings. Defaults to `:ash_ai_update_embeddings`.

# `vectorize_attributes`

```elixir
@spec vectorize_attributes(dsl_or_extended :: module() | map()) ::
  {:ok, keyword()} | :error
```

A keyword list of attributes to vectorize, and the name of the attribute to store the vector in

# `vectorize_attributes!`

```elixir
@spec vectorize_attributes!(dsl_or_extended :: module() | map()) ::
  keyword() | no_return()
```

A keyword list of attributes to vectorize, and the name of the attribute to store the vector in

# `vectorize_define_update_action_for_manual_strategy?`

```elixir
@spec vectorize_define_update_action_for_manual_strategy?(
  dsl_or_extended :: module() | map()
) ::
  boolean()
```

If true, an `ash_ai_update_embeddings` update action will be defined, which will automatically update the embeddings when run.

# `vectorize_options`

```elixir
@spec vectorize_options(dsl_or_extended :: module() | map()) :: %{
  required(atom()) =&gt; any()
}
```

vectorize DSL options

Returns a map containing the and any configured or default values.

# `vectorize_strategy`

```elixir
@spec vectorize_strategy(dsl_or_extended :: module() | map()) ::
  {:ok, :ash_oban_manual | :ash_oban | :manual | :after_action} | :error
```

How to compute the vector. Currently supported strategies are `:after_action`, `:manual`, and `:ash_oban`.

# `vectorize_strategy!`

```elixir
@spec vectorize_strategy!(dsl_or_extended :: module() | map()) ::
  (:ash_oban_manual | :ash_oban | :manual | :after_action) | no_return()
```

How to compute the vector. Currently supported strategies are `:after_action`, `:manual`, and `:ash_oban`.

---

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