# The eleven tools

> The eleven tools Claude can call in your Orbital project: how a session uses them, the permission each needs, and the refusals any tool can give.

Source: https://orbitalaip.com/docs/claude-and-chatgpt/tools

> [!IMPORTANT] Disclaimer
> Backtest results are hypothetical and do not predict future performance. Nothing here is investment advice: Orbital computes the rules you supplied and recommends nothing. Orbital is not a registered investment adviser or broker-dealer. Costs are as modelled by the chosen cost profile and may differ from live trading.

## How a session flows

Orbital builds and backtests trading strategies on your own rules. Through the Orbital AI connector, Claude reads the authoring guide with [get_authoring_guide](https://orbitalaip.com/docs/claude-and-chatgpt/tools/get_authoring_guide), saves a strategy with [create_strategy](https://orbitalaip.com/docs/claude-and-chatgpt/tools/create_strategy), estimates the backtest with [estimate_backtest](https://orbitalaip.com/docs/claude-and-chatgpt/tools/estimate_backtest), runs it with [run_backtest](https://orbitalaip.com/docs/claude-and-chatgpt/tools/run_backtest), and reads the result with [get_backtest](https://orbitalaip.com/docs/claude-and-chatgpt/tools/get_backtest). For a Program strategy it also builds the program with [build_program](https://orbitalaip.com/docs/claude-and-chatgpt/tools/build_program) between saving and estimating.

`run_backtest` returns a run id at once. Daily runs finish in seconds and intraday runs in minutes. Claude polls `get_backtest` every 10 to 15 seconds until the status is completed, failed or cancelled. Then it changes the strategy with [update_strategy](https://orbitalaip.com/docs/claude-and-chatgpt/tools/update_strategy) and runs again.

To find a strategy, Claude uses [list_strategies](https://orbitalaip.com/docs/claude-and-chatgpt/tools/list_strategies), and [get_strategy](https://orbitalaip.com/docs/claude-and-chatgpt/tools/get_strategy) reads one with its versions, recent runs and graph. [get_backtest_trades](https://orbitalaip.com/docs/claude-and-chatgpt/tools/get_backtest_trades) reads a run's trade log, and [cancel_backtest](https://orbitalaip.com/docs/claude-and-chatgpt/tools/cancel_backtest) cancels a queued or running backtest.

## The tools

| Tool | What you can do | Kind |
| --- | --- | --- |
| [get_authoring_guide](https://orbitalaip.com/docs/claude-and-chatgpt/tools/get_authoring_guide) | Returns the rule-card vocabulary or the Program manual that Claude reads before it writes a strategy. | read |
| [create_strategy](https://orbitalaip.com/docs/claude-and-chatgpt/tools/create_strategy) | Saves a new strategy from the minimal nodes-and-connections spec and enrols it for backtesting. | write |
| [build_program](https://orbitalaip.com/docs/claude-and-chatgpt/tools/build_program) | Compiles a Program node's Rust source and stamps the built module on the node as a new version. | write |
| [list_strategies](https://orbitalaip.com/docs/claude-and-chatgpt/tools/list_strategies) | Lists the project's strategies with the latest backtest verdict of each. | read |
| [get_strategy](https://orbitalaip.com/docs/claude-and-chatgpt/tools/get_strategy) | Reads one strategy: its versions, its recent runs, and the graph that update_strategy takes back. | read |
| [update_strategy](https://orbitalaip.com/docs/claude-and-chatgpt/tools/update_strategy) | Replaces a strategy's graph with the complete graph Claude sends, saved as a new version. Prior versions are kept. | write |
| [estimate_backtest](https://orbitalaip.com/docs/claude-and-chatgpt/tools/estimate_backtest) | Prices a run in credits, checks data coverage and returns the confirm handoff run_backtest takes. Spends nothing. | read |
| [run_backtest](https://orbitalaip.com/docs/claude-and-chatgpt/tools/run_backtest) | Launches a backtest under a run id Claude mints, spends credits, and returns the run id at once. | run |
| [get_backtest](https://orbitalaip.com/docs/claude-and-chatgpt/tools/get_backtest) | Returns a run's status and progress while it runs, and its compact verdict once it is done. | read |
| [get_backtest_trades](https://orbitalaip.com/docs/claude-and-chatgpt/tools/get_backtest_trades) | Returns a page of a finished run's trade log, newest first within the page, with the total. | read |
| [cancel_backtest](https://orbitalaip.com/docs/claude-and-chatgpt/tools/cancel_backtest) | Cancels a queued or running backtest. A finished run is refused, and a cancelled run cannot be resumed. | destructive |

## Permissions and refusals

The tools reach only the project you connected; to work in another project, [connect again](https://orbitalaip.com/docs/claude-and-chatgpt/connecting#one-workspace-one-project). Every refusal comes back in Orbital's own words, and Claude relays it and fixes the arguments rather than retrying unchanged.

Three of the permissions on the consent page govern the tools. Read is always granted.

| Permission | On the consent page | Tools |
| --- | --- | --- |
| read | Read your strategies and backtests | get_authoring_guide, list_strategies, get_strategy, estimate_backtest, get_backtest, get_backtest_trades |
| write | Create and edit strategies | create_strategy, update_strategy, build_program |
| run | Run backtests, which spends credits | run_backtest, cancel_backtest |

A call without its permission is refused. The message names the tool and the permission, and asks Claude to have you reconnect Orbital with it. For example: "run_backtest needs the 'run' scope, which this connection was not granted. Ask the user to reconnect Orbital with it." See [Connect Claude to Orbital](https://orbitalaip.com/docs/claude-and-chatgpt/connecting).

Write and run tools also need a project role that may write: anyone in the project except a viewer, or a workspace owner or admin. A viewer's write or run call is refused with "Your role in this project (viewer) cannot change strategies or spend credits." See [the role refusal](https://orbitalaip.com/docs/claude-and-chatgpt/troubleshooting#your-role-in-this-project-cannot-change-strategies-or-spend-credits).

After the scope check and before the role check, every call checks that the **Backtesting** app is active in the connected project. If it is not, the call is refused with "Backtesting is not active in this project — turn it on under Settings → Apps in Orbital, then try again"; [Switch an app on or off in a project](https://orbitalaip.com/docs/workspace-and-account/apps#switch-an-app-on-or-off-in-a-project) shows how.

Some refusals come from the run itself:

- A period must start before it ends, and starting capital must be at least $100.

- `cost_profile` defaults to `alpaca_us_equities`, a zero-commission US equities broker, and `zero` is a frictionless research setting; `ibkr_pro_tiered` and `custom` are refused. See [estimate_backtest](https://orbitalaip.com/docs/claude-and-chatgpt/tools/estimate_backtest) and [The four profiles](https://orbitalaip.com/docs/backtesting/cost-profiles#the-four-profiles).

- A deployed strategy may not change while that deployment runs; branch it in Orbital and change the branch instead. See [What a running deployment locks](https://orbitalaip.com/docs/backtesting/manage-and-delete-strategies#what-a-running-deployment-locks).

- A run over the backtest quota, or one the workspace cannot afford, is refused with a message that says why. See [The run quota is reached](https://orbitalaip.com/docs/backtesting/troubleshooting#the-run-quota-is-reached).

The results of `list_strategies`, `get_strategy`, `estimate_backtest`, `run_backtest`, `get_backtest` and `get_backtest_trades` carry the disclaimer at the top of this page, word for word.
