Save and manage your custom Python indicators
indicatorsSave, version, read, list and delete your own custom Python indicators (LumiBot Indicator classes). Before writing custom chart source, load the custom-chart-indicators reference. Use from lumibot.indicators import Indicator, InputSpec, OutputSpec (and Level when needed), the sandbox-supported API. If asked to change a chart before creating or adding an indicator, confirm the chart change before saving the indicator; then add the saved indicator to that same chart. action="create" saves version 1; action="update" with full source saves a new version and keeps old ones, so a bot pinned to a version keeps it; action="get" returns the code (newest, or a pinned version or revisionId); action="revisions" lists versions; action="delete" previews unless confirm is true. Indicators are private: only the owner can read or change the code. Only the signed-in person can use this tool.
Set "action" to choose the operation. Only send the fields listed for that action.
action="create": Save a new custom indicator
Required fields: name, source. Saves a new custom Python indicator (a LumiBot Indicator class) to the signed-in person's account as version 1. It starts private. Indicators are private: only the owner can read or change the code. Nobody else can read or edit it, including anyone it is shared with or sold to later. Use indicators(action="update") to save changes as a new version.
action="update": Save a new version of a custom indicator
Required fields: indicatorId. Saves changed source as a new version of one of the signed-in person's indicators. Old versions are kept unchanged, so a bot pinned to an older version keeps running it. Send the full source plus changeNotes. To only rename or change the description, leave source out (no new version is made). Indicators are private: only the owner can read or change the code. Nobody else can read or edit it, including anyone it is shared with or sold to later.
action="get": Read a custom indicator and its code
Required fields: indicatorId. Returns one of the signed-in person's indicators with its Python source: the newest version, or a pinned version by number or revision id. Source is returned to only the owner; any other id answers not found.
action="list": List your custom indicators
No other fields required. Lists the signed-in person's own custom indicators (name, id, newest version, visibility). Never shows code.
action="revisions": List the versions of a custom indicator
Required fields: indicatorId. Lists every saved version of one of the signed-in person's indicators, newest first, with what changed. Never shows code; read a version with indicators(action="get").
action="delete": Delete a custom indicator
Required fields: indicatorId. Deletes one of the signed-in person's indicators. Without confirm: true it only previews what will be deleted. Deletion is a soft delete: saved versions are kept and staff can restore them.
action="publish": List your indicator on the marketplace
Required fields: indicatorId. Lists one of your saved indicators on the BotSpot marketplace, or updates its listing. Visitors see what it draws on a live preview chart; buyers (anyone, when free) can add it to their charts. sourceVisibility "private" (default) keeps the code yours: buyers run it but never read it. "open" shows the code to everyone. pricingModel "free" (default) or "monthly" with priceAmountCents (100 to 1,000,000).
action="unpublish": Take your indicator off the marketplace
Required fields: listingId. Takes one of your indicator listings off the marketplace. The indicator itself stays saved.
action="marketplace": Browse indicators on the marketplace
No other fields required. Lists indicators on the BotSpot marketplace with their creator, price and link. creator filters to one creator by handle (as in botspot.trade/community/) or account id. Never returns code.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"action": "<action>"
},
"name": "indicators"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | A short name the person will recognize. Used with action="create", action="update". Required for action="create". | |
| query | No | Used with action="marketplace". | |
| title | No | The listing title. Defaults to the indicator name. Used with action="publish". | |
| action | Yes | Which operation to run: "create", "update", "get", "list", "revisions", "delete", "publish", "unpublish", "marketplace". See the tool description for each one. | |
| source | No | The full Python source of the indicator: a LumiBot Indicator class. Send the whole file, not a diff. Used with action="create", action="update". Required for action="create". | |
| confirm | No | Set true to delete after showing the preview. Used with action="delete". | |
| creator | No | Used with action="marketplace". | |
| version | No | A version number to read. Used with action="get". | |
| metadata | No | Optional. What the indicator declares: settings (name, type, default, description), outputs, placement ("overlay" draws on the price chart, "pane" in its own pane) and dataNeeds. Used with action="create", action="update". | |
| listingId | No | The listing id from indicators(action="publish") or the marketplace. Used with action="unpublish". Required for action="unpublish". | |
| revisionId | No | A revision id to read. Used with action="get". | |
| changeNotes | No | What changed in this version, in plain words. Used with action="create", action="update". | |
| description | No | action="create": What the indicator shows. | action="publish": What it shows and how to use it. Used with action="create", action="update", action="publish". | |
| indicatorId | No | The indicator id from indicators(action="list"). Used with action="update", action="get", action="revisions", action="delete", action="publish". Required for action="update", action="get", action="revisions", action="delete", action="publish". | |
| pricingModel | No | Used with action="publish". | |
| priceAmountCents | No | Used with action="publish". | |
| sourceVisibility | No | Used with action="publish". |