vike
Tools

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

FieldTypeDefaultAnswers
(neither)——the compact roster: name + category per indicator, plus a count and a note
namestringomitone indicator in full — its parameters with defaults, the value it returns, and how to spell it
categorystringomitone 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:

FieldMeaning
prettythe display label
paramsone entry per parameter: name, default, min, max
outputsthe output lines, in order
accessorsthe per-line spellings, as line and the call that reads it
bare_callwhether 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 rsi take?

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.

On this page