Skip to main content
A call to the REST API or MCP server uses only prices you or your agent supply in the request. Allocait doesn’t look one up.
Allocait’s agent surface returns nothing computed from Allocait’s own market quote: no price, no day change, and no value, total or exposure. Every value it returns comes from prices your agent supplied, or from the mark you recorded on an option. If your agent needs a price or a dollar figure, it supplies it. The one reading from the stored quote is standing, returned only to a connection you sign in to yourself (OAuth). See Standing.
This is deliberate. The quote in the app is there for you to read. Allocait doesn’t supply a price to an agent or script, so a price used in a call is one that you or your agent supplied. On the MCP server, Allocait’s instructions to a connected agent say to use a price from you or a source you trust, never a remembered or estimated one. The app works differently. See App prices.

The two-call pattern

1

Read the snapshot with no prices

Use GET /portfolio/snapshot, or get_portfolio_snapshot. It returns your holdings in shares, your rules and symbols_to_price. On the MCP server it also returns holdings_to_price, the held symbols a status needs; symbols_to_price adds symbols only monitors use.
2

Send the prices back

Fetch those prices from your own source, then send them as prices, a {SYMBOL: price} map: POST /portfolio/snapshot, or get_portfolio_snapshot with prices.

A partial map

The snapshot accepts a partial map. A holding you priced keeps its value, and one you didn’t comes back with no value. Anything computed across the whole portfolio stays empty until every non-cash holding is priced, because one missing price affects every downstream number. That includes a class’s share of the total, a compliance status, total_value and exposure. exposure needs a number in your prices for every non-cash holding, even when Allocait holds a quote of its own for the one you left out. An option with a mark is the exception. See Options.

Stricter calls

These calls refuse a map that misses a held non-cash symbol, or, for check_trades, a traded one:
  • POST /compliance/check
  • POST /rebalance/preview
  • POST /trades/check
  • the MCP tool check_trades
The refusal is PRICES_INCOMPLETE, with the symbols still needed. See Error codes.

Next steps

App prices

How the app keeps its quotes current.

Standing

The one reading from a stored quote.

Check a change

Send prices with a check.

Options

An option owns its price.