> ## Documentation Index
> Fetch the complete documentation index at: https://docs.moda.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Ask the Moda Expert

> A free, grounded how-to lane your agent can call mid-task — ask_expert on the connector, moda ask on the CLI.

Agents guess. When an agent is unsure how Moda does something — which tool to reach for, why a fill was rejected, how to get selectable text into a PDF — the cheap failure is that it invents an approach and you get a bad artifact. Moda ships an answer to that: a built-in expert your agent can just ask, mid-task, for free.

| Where     | How to call it                                   |
| --------- | ------------------------------------------------ |
| Connector | `ask_expert(question: "…")`                      |
| CLI       | `moda ask "how do I put a shader fill on text?"` |

## It routes, it does not lecture

Answers are grounded in Moda's own guides and cite them. Every in-domain answer names the **skill you should read** (`required_reading`) and the exact verbs or tools involved, rather than reproducing a whole workflow inline. The answer points; [`load_skill`](/agents/skills) teaches. That split is deliberate — a short routing answer plus the real guide beats a long paraphrase that can drift out of date.

## Ask early and often

This is not a last resort. It is fast and it costs nothing, so the guidance built into Moda's skills is to ask:

* before starting a kind of task the agent has not done here before,
* when choosing between two tools, two formats, or two models,
* when a styling or format question comes up mid-authoring,
* and **immediately after any failed call** — passing the error text as context.

```
ask_expert(
  question: "canvas_apply_markup rejected my gradient fill — what is the right attribute?",
  context: "<the exact error envelope>"
)
```

```sh theme={null}
moda ask "why did my markup get rejected?" --context "$(moda last-error)"
```

## Options

| Option          | What it does                                                                                                                                                                                                                        |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `context`       | Extra material for the question — the failing command and its error output is the highest-value thing to pass.                                                                                                                      |
| `brand_kit_ref` | Ground the answer in a brand kit (`bk_…` from `brand_list`, or `--brand` on the CLI): palette, fonts, tone, and logo imagery become context, so styling advice is brand-specific. Opt-in only — never inferred.                     |
| `session_id`    | Continue a previous exchange. Every answer returns one; pass it back for a follow-up and the prior turns are in scope. Sessions expire after 24 hours idle. On the CLI this is remembered for you; `moda ask --fresh` starts clean. |

## Scope and limits

* **Free.** Asking never spends credits. It is rate-limited — a per-caller burst ceiling plus a per-organization daily cap — so it is a tool for the agent's real questions, not a polling loop.
* **In scope:** how to do something in Moda — tools, verbs, markup, formats, design workflow, error recovery.
* **Not in scope:** your canvas data (that is `canvas_read` / `moda canvas read`), and billing or account questions (those go to [support@moda.app](mailto:support@moda.app)).
