list_indicators
The host-bound indicators a Rhai strategy can actually call — a compact roster by default, detail pulled per name or per family.
Lists the indicators a Rhai strategy can call. Offline: no server, no key. The answer is tiered, because the bound set is most of the catalog and a full dump would spend an agent's context on indicators it will never use.
Input
| Field | Type | Default | Answers |
|---|---|---|---|
| (neither) | — | — | the compact roster: name + category per indicator, plus a count and a note |
name | string | omit | one indicator in full — its parameters with defaults, the value it returns, and how to spell it |
category | string | omit | one family in full, matched case-insensitively |
Both are trimmed and a blank string counts as omitted. tool_list_indicators checks name first
and returns, so a call passing both answers the name.
{"jsonrpc":"2.0","id":7,"method":"tools/call","params":{"name":"list_indicators","arguments":{"name":"rsi"}}}What comes back
The compact roster is { "indicators": [ { "name": …, "category": … } … ], "count": N, "note": … }.
Categories are the vike_indicators::Category variants the built-in catalog carries — Overlap,
Momentum, Volatility, Volume, Statistics, Pattern, Price, Structure — and the rows
come back in registry order, which is curated so related indicators stay together, not
alphabetized. The enum's one other variant, User, names a user-written indicator and never
reaches this roster.
A detail row (name, or every row under a category) adds the fields a roster cannot carry:
| Field | Meaning |
|---|---|
pretty | the display label |
params | one entry per parameter: name, default, min, max |
outputs | the output lines, in order |
accessors | the per-line spellings, as line and the call that reads it |
bare_call | whether the bare name resolves at all |
Those last two are the pair to read together. bare_call: false with a non-empty accessors is
the band-indicator shape — reachable, but only line by line. Without the flag there is no way to
tell bollinger(20) from macd(12, 26, 9) by looking at outputs.
The parameters are why detail exists: the host registers one call form per argument count, from zero up to the parameter count, and the omitted ones take the defaults printed here.
It is the bound set, never the registry
The filter is vike_script::is_callable — reachable under its bare name, or through at least
one per-line accessor. That is not the same question as membership in the host's bound-name list:
bollinger is absent from that list, because its bare name is refused when line 0 is the upper
band, while bollinger_mid(20) is perfectly callable. A surface asking the older question reports
a band indicator as unreachable and offers no way in.
The same helpers render the human vike-cli indicators
listing, so the two surfaces cannot disagree about what a script may call — which is the only
property that matters here, because the cost of being wrong is silent.
A name this tool does not list compiles, then fails on every bar
Rhai resolves a registered function when the line runs. A script naming an unbound indicator
compiles, raises ErrorFunctionNotFound on every bar, is swallowed fail-safe, and disables itself
after 10 consecutive errors — mounted, and silently never trading. Check names here rather than
from memory, and see validate_strategy for why a compile
cannot catch it.
A miss is an error, and it explains itself
A name or category nobody can serve is an isError result, not an empty list — an empty
answer reads as "that family is empty in this build" and sends the reader hunting through a
config. An unknown category names the ones this build has. An unknown name splits the two ways a
name can miss: not in the registry at all is a typo, while a real indicator the host holds
back answers with the host's own reason rather than a paraphrase. Those reasons are the exclusion
rules themselves — a Rhai reserved word or symbol, so the call fails at parse time (var, for
Variance; stddev is the way in); a collision with a host read or verb, which binding would shadow
for every script; batch_only, meaning it reads future bars so the streamed value is retroactively
revised and disagrees with the chart; more parameters than the bridge can express; or a
multi-output whose line 0 is not the namesake, where the message names the accessor that works.
Two things this tool does not answer
name matches the registry name exactly, so an accessor spelling such as bollinger_mid is not a
name it resolves — ask for bollinger and read its accessors. And it lists the built-in
catalog only: an indicator you wrote into user_data/indicators is callable from the same script
by the same spelling, but the human vike-cli indicators command is what prints it, under its own
heading.
The prompt
Which indicators can a Vike Trader Rhai strategy call, and what parameters does
rsitake?
The tools/list description deliberately names none of the roster and is size-capped, because it
ships in every session whether the tool is called or not — so an agent must call the tool to get
the set. The indicator catalog is the per-category reference and
writing an indicator the route to your own.