om chat and any MCP client that connects to om share one set of
Indicator tools: the agent scaffolds a workspace, writes the source, builds
and installs the draft, draws it on your chart, reads a value, and
publishes only after you say yes. This page is that loop, what each step
needs from you, and how an assistant with no tools gets the same knowledge
through the docs bundle. kScript (legacy) has no authoring tools in om;
asked for a kScript, the agent ports it to an Indicator instead.
The loop in om chat
Describe the indicator in plain words: a 20-bar average with a band shaded
around it, the buy share of each bar's volume profile, a conviction score
over a Polymarket market. The agent reads the authoring skill first
(skill_read wrun: the declaration grammar, the sheet dialect, the pins,
the refusals), then runs the loop:
| Step | Tool | What happens |
|---|---|---|
| 1. Write | wrun_author | Scaffolds a workspace from a template on the first call and writes src/indicator.ts (and a hand-written sheet when the workspace is metadata-first). Validation warnings come back to fix; nothing runs yet, so no approval is needed. |
| 2. Build | wrun_build | Compiles the workspace and installs the draft on your machine in the same step; the result carries the receipt and the one-command undo (om indicator remove @scope/name). A compile error comes back as the compiler's diagnostics, and the agent rewrites and builds again. |
| 3. Look | chart_indicator_preview, metric_get | Draws one output on your active chart pane as an ephemeral preview line (no publish, no server compute), and reads a value with its params, so you see a number before you trust a shape. |
| 4. Publish | package_publish | dry_run: true first (the files, size and sha256; nothing uploads), then the real publish behind an approval card you answer: the release lands on the OpenMarket platform as a script, with the source entry beside the module, and script_id lands it on a script you already own. |
The registry verbs stay consent-gated: the agent proposes, you approve on
the card, package_install for someone else's package and
package_publish for yours. An odds input is pinned with wrun_source_set
(a Polymarket market by search or condition id), and wrun_list names what
is installed.
om chatOver MCP: Claude Desktop, Cursor and others
The same tools serve any MCP client. om setup claude-desktop and
om setup cursor-mcp register om mcp serve --stdio in the client's
config with the standalone om binary (never a development interpreter),
and over MCP yes: true completes an install or a publish only after your
explicit intent, the way the card does in chat.
om setup claude-desktop
om setup cursor-mcp
om mcp serve --stdioAn assistant with no tools
Every page of this documentation is bundled into one file, llms-full.txt,
served beside the docs. Attach it to any assistant and it knows the exact
declaration grammar, the four functions and the TA classes, so generated
Indicators compile instead of guessing at an API. Paste the result into the
editor or a workspace and run it: the compiler and the sheet validator
refuse anything that does not fit, and
Common errors maps every message to its fix.
What the agent will not do
- Say a
wrun/metric is installed from memory: it re-readswrun_listormetric_list, or callsmetric_get, because packages come and go mid-conversation. - Mount an unpublished draft on a hosted chart:
chart_indicator_addtakes registry packages only, and a package with a bindable odds input is refused there; the preview is the draft lane. - Publish under
@local: the registry rejects the scope, so the agent re-authors the same source under your own account scope before publishing.