Tool reference
Constance serves the tools below over MCP and uses the same ones behind the terminal chat and Telegram. Every tool is read-only except the three marked write under Alerts.Scope
Two ids drive almost everything:
In the tables, scope says which of the two a tool takes:
- account:
exchange_account_idonly - portfolio:
portfolio_idonly - either: pass one of the two; the account slug for one account, the portfolio id for the whole book
- none: no user scope, market data or your plan
2026-08-01) unless a parameter says epoch milliseconds. page counts from 0. Trailing windows default to 12 months. Series are downsampled to at most 60 points.
Accounts and NAV
PnL and history
Risk
Positions
DeFi
The per-account DeFi ledger and the on-chain transaction index can both come back empty for a wallet whose DeFi value still shows in
get_defi_attribution. An empty result from get_defi_summary or a zero from get_defi_transactions is not proof of no DeFi activity. For portfolio-wide DeFi value and PnL, get_defi_attribution is the source to trust.Perps and funding
Your own payments and PnL:
Market rates, no user scope:
Attribution and strategies
Activity
Market data
No user scope.Custom queries
Allowed stages:
$match, $group, $sort, $project, $limit, $skip, $unwind, $addFields, $count, $bucket, $facet, $sample. The ledgers collection holds one document per account with nav_raw, gross_nav, total_pnl_realized, total_pnl_unrealized, total_fees and exchange_account_id.
Internet
Neither tool is for your own balances, NAV, PnL or positions. Only the portfolio tools answer those correctly, and your figures should not go into a search query.
Alerts
Alerts run server-side, 24/7, on your own data. They notify in the chat that created them: a web alert reaches the bell in the terminal, a Telegram alert goes back to that chat. Alerts created over MCP use thein_app channel by default and show up in the terminal’s bell.
Threshold
Fires when a metric on an account or portfolio goesABOVE or BELOW a number, once per crossing. It re-arms when the condition clears, and cooldown_minutes suppresses a quick re-crossing.
Parameters: kind: "threshold", metric, operator, threshold, asset (for asset_balance).
Transfer
Fires when a deposit or withdrawal lands on an exchange account, optionally for one asset. Parameters:kind: "transfer", scope: "exchange_account", direction (deposit default, withdrawal), asset.
Digest
Sends the current values of chosen fields on a clock, rather than when something crosses a value. Parameters:kind: "digest", fields (default ["nav"]; also pnl_total, unrealized_pnl, drawdown, volatility), currency (a second column converted from USD: EUR, CHF, JPY, BTC, ETH), style (date ymd, dmy or mdy; clock 24h or 12h; money code or symbol).
Timing, pick one:
at is local wall-clock time in tz, an IANA zone like Europe/Vienna. It survives daylight-saving changes. Default UTC.
Over MCP, digests report the standard
fields. The saved-layout and watch recipes that the terminal and Telegram chats support need a chat with a connected identity and are not available from an MCP client.
