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, forcheck_trades, a traded one:
POST /compliance/checkPOST /rebalance/previewPOST /trades/check- the MCP tool
check_trades
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.