> ## Documentation Index
> Fetch the complete documentation index at: https://docs.allocait.app/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP tools

> Every MCP tool at a glance, with a link to the page for its area.

The connector has 40 tools: 12 reads and 28 writes. Every feature has a tool that reads it, a `save_` tool that creates or changes it, and a `delete_` tool that removes it. It also has 2 prompts, `draft_rules` and `check_a_change`.

* A **read** tool returns data and never changes anything.
* A **write** tool changes data in your account. It needs a connection with **Read and change** access. See [Access levels](https://docs.allocait.app/concepts/access-levels.md).
* A **destructive** write can overwrite or remove data: a record, a holding, a rule or a list member. It changes only what the call names. Every write is destructive except `record_cash_movement` and `send_feedback`, which only add. Allocait marks these tools as destructive. What your app does with that mark is up to the app.
* A connection from an account whose agent access is read-only can't change data, even if you chose **Read and change**. A write returns "This account's agent access is read-only." See [Access and limit errors](https://docs.allocait.app/claude/errors/access-and-limits.md#read-only-access).

The REST API has the same features, plus webhooks and display preferences, which stay in the app and REST. See the [API overview](https://docs.allocait.app/api/introduction.md).

## Tools by area

> [card] [Portfolios](https://docs.allocait.app/claude/tools/portfolios.md)
>
> List, read, save and delete portfolios.

> [card] [Holdings and cash](https://docs.allocait.app/claude/tools/holdings.md)
>
> Record holdings and cash that already moved.

> [card] [Checks](https://docs.allocait.app/claude/tools/checks.md)
>
> Check a change and size a holding.

> [card] [Rules](https://docs.allocait.app/claude/tools/rules.md)
>
> Scenarios, asset classes and rules text.

> [card] [Setup file](https://docs.allocait.app/claude/tools/setup-file.md)
>
> Preview, apply and undo an ALLOCAIT.md.

> [card] [Watchlists](https://docs.allocait.app/claude/tools/watchlists.md)
>
> List, save and delete watchlists.

> [card] [Inputs](https://docs.allocait.app/claude/tools/inputs.md)
>
> Define Inputs and record values.

> [card] [Playbooks, charts](https://docs.allocait.app/claude/tools/playbooks-charts.md)
>
> Save and read playbooks, and save charts.

> [card] [Monitors](https://docs.allocait.app/claude/tools/monitors.md)
>
> Save and delete monitors.

> [card] [Actions, feedback](https://docs.allocait.app/claude/tools/actions-feedback.md)
>
> Read the action log and send feedback.

> [card] [Resources, prompts](https://docs.allocait.app/claude/tools/resources-prompts.md)
>
> The resources and prompts the server offers beside its tools.

## All tools at a glance

| Tool | Type | Purpose |
| - | - | - |
| [`list_portfolios`](https://docs.allocait.app/claude/tools/portfolios) | read | List portfolios with holdings, scenarios, playbooks, monitors and charts. Start here. |
| [`get_portfolio_snapshot`](https://docs.allocait.app/claude/tools/portfolios) | read | One portfolio's holdings, rules, monitors and, with prices, its status. |
| [`save_portfolio`](https://docs.allocait.app/claude/tools/portfolios) | write | Create or change a portfolio. |
| [`delete_portfolio`](https://docs.allocait.app/claude/tools/portfolios) | write | Delete a portfolio and everything in it. |
| [`save_position`](https://docs.allocait.app/claude/tools/holdings) | write | Record one holding as it stands now. |
| [`replace_positions`](https://docs.allocait.app/claude/tools/holdings) | write | Sync every holding at once. |
| [`record_cash_movement`](https://docs.allocait.app/claude/tools/holdings) | write | Record a deposit or withdrawal made elsewhere. |
| [`check_trades`](https://docs.allocait.app/claude/tools/checks) | read | State which rules a proposed change would put outside range. |
| [`check_allocations`](https://docs.allocait.app/claude/tools/checks) | read | Check a mix given as percentages. |
| [`calculate_position_size`](https://docs.allocait.app/claude/tools/checks) | read | Find the share count inside a size range. |
| [`get_rules`](https://docs.allocait.app/claude/tools/rules) | read | Read a scenario's rules, as data and as rules text. |
| [`preview_rules`](https://docs.allocait.app/claude/tools/rules) | read | Show what a rules text would change. |
| [`apply_rules`](https://docs.allocait.app/claude/tools/rules) | write | Replace a scenario's rules with a rules text. |
| [`restore_rules`](https://docs.allocait.app/claude/tools/rules) | write | Put rules back as they were at a restore point. |
| [`save_class_rule`](https://docs.allocait.app/claude/tools/rules) | write | Set one class's band or size ranges. |
| [`save_scenario`](https://docs.allocait.app/claude/tools/rules) | write | Create or rename a scenario. |
| [`delete_scenario`](https://docs.allocait.app/claude/tools/rules) | write | Delete a scenario and its restore points. |
| [`save_asset_class`](https://docs.allocait.app/claude/tools/rules) | write | Create or rename a custom asset class. |
| [`delete_asset_class`](https://docs.allocait.app/claude/tools/rules) | write | Delete a custom class that nothing uses. |
| [`preview_setup`](https://docs.allocait.app/claude/tools/setup-file) | read | Show what a setup file would add. |
| [`apply_setup`](https://docs.allocait.app/claude/tools/setup-file) | write | Apply a setup file as previewed. |
| [`undo_setup`](https://docs.allocait.app/claude/tools/setup-file) | write | Undo a file's newest import. |
| [`list_watchlists`](https://docs.allocait.app/claude/tools/watchlists) | read | List watchlists and their symbols. |
| [`save_watchlist`](https://docs.allocait.app/claude/tools/watchlists) | write | Create or change a watchlist. |
| [`delete_watchlist`](https://docs.allocait.app/claude/tools/watchlists) | write | Delete a watchlist. |
| [`list_inputs`](https://docs.allocait.app/claude/tools/inputs) | read | List inputs and, for one, its recorded values. |
| [`save_input`](https://docs.allocait.app/claude/tools/inputs) | write | Create or change an input. |
| [`delete_input`](https://docs.allocait.app/claude/tools/inputs) | write | Delete an input and its values. |
| [`record_input_values`](https://docs.allocait.app/claude/tools/inputs) | write | Record dated values for inputs. |
| [`get_playbook`](https://docs.allocait.app/claude/tools/playbooks-charts) | read | A playbook's sheet for a date. |
| [`save_playbook`](https://docs.allocait.app/claude/tools/playbooks-charts) | write | Create or change a playbook. |
| [`delete_playbook`](https://docs.allocait.app/claude/tools/playbooks-charts) | write | Delete a playbook. |
| [`save_chart`](https://docs.allocait.app/claude/tools/playbooks-charts) | write | Create or change a saved chart. |
| [`delete_chart`](https://docs.allocait.app/claude/tools/playbooks-charts) | write | Delete a saved chart. |
| [`save_monitor`](https://docs.allocait.app/claude/tools/monitors) | write | Create or change a monitor. |
| [`delete_monitor`](https://docs.allocait.app/claude/tools/monitors) | write | Delete a monitor. |
| [`list_actions`](https://docs.allocait.app/claude/tools/actions-feedback) | read | The action log, newest first. |
| [`save_action_comment`](https://docs.allocait.app/claude/tools/actions-feedback) | write | Set or clear an action's comment. |
| [`delete_actions`](https://docs.allocait.app/claude/tools/actions-feedback) | write | Delete entries from the action log. |
| [`send_feedback`](https://docs.allocait.app/claude/tools/actions-feedback) | write | File a report with Allocait. |

## How saves work

Every `save_` tool follows the same rules:

* **Create or change.** Leave out the id to create. Pass the id to change that record.
* **Fields.** A field you send replaces the stored value. A field you leave out keeps its value. `null` clears a field that can be cleared and counts as left out on any other.
* **Lists.** A list you send is the whole list, in that order. If it would drop members that are stored now, the call is refused with `CONFIRMATION_REQUIRED` and names them. To keep them, add them to the list you send. To drop them, ask the user, then send the call again with those members in `remove`. On `save_playbook`, `save_monitor` and `save_chart`, `remove` alone, with no list, drops those members, and the result's `removed` says what went.
* **Names.** Creating a record with a name that's already taken returns `ALREADY_EXISTS` with the existing id instead of a second record with that name.
* **Reads match saves.** A read returns each record with the same field names its save tool takes, so an agent can read, edit and save without renaming anything.
* **Unknown fields.** A save refuses a field the tool doesn't take, in the call or in one of its rows, and saves nothing. The error names the field and the likely match, such as `Unknown field(s): descripton (did you mean description?)`, so a misspelled field name is refused instead of silently dropped.
* **Misspelled fields on a read.** A read tool ignores a field it has no use for, since an app may add its own. It refuses one that looks like a misspelling of a field it takes, such as `price` for `prices` or `from` for `since`, and names the likely match, so a field that looks like a misspelling of one the tool takes is refused instead of silently ignored.
* **Results.** A save returns the keys its output schema lists, such as the ids it created or changed and which positions were created, updated, unchanged or closed.

Deletes take the id. Deleting something that's already gone returns `NOT_FOUND`.

## Next steps

> [card] [Read prompts](https://docs.allocait.app/claude/example-prompts.md)
>
> See these tools used in realistic conversations.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.