AI assistant
Ask about your wallet, prices and Circles in plain words. It reads through the API and only proposes; you confirm every change.
The assistant lives in the pill at the bottom of every screen. It answers in English or Indonesian, shows results as the same cards the app uses, and turns a request into a proposal you can accept or ignore.
- 1. Ask
- 2. It reads
- 3. It answers
- 4. It proposes
- 5. You confirm
What is NVDAB worth right now?
get_pricesHow a message flows
- 01
Ask
Type a question or a request (up to 500 characters). It goes to
POST /api/me/assistantwith the conversation so far. - 02
It reads
The model calls read-only tools on the server for your overview, wallet, prices, assets, Circles, activity and value history. Every number it states comes from one of these calls, not from its memory.
- 03
It answers
Words first, then cards: live token cards for prices (each opens the token's page) and Circle cards for search results.
- 04
It proposes
To change something it calls a propose tool. A target is checked against your live wallet first, then offered as a button; so is joining a Circle or opening a page.
- 05
You confirm
Nothing happens until you press the button. Apply to my target opens the target editor with the weights, and you still review and save. Joining an invite-only Circle needs the invite code, which you type yourself.
- 06
It is saved
The conversation is saved for your wallet. Reopen it from History, delete it, or delete all of them.
What it can read and propose
| Tool | What it does | Changes anything |
|---|---|---|
get_overview | Home view: value, positions, target, drift, Circles, rounds waiting on you, recent activity | No |
get_portfolio | Wallet positions with amount, value and share, including BNB and tokens Sama does not trade | No |
get_prices | Live prices by ticker (NVDAB or NVDA) or company name; shown as token cards | No |
search_assets | Tradable assets with class, tier, leverage flag and price | No |
search_circles, get_circle | Circles you can see, and one Circle's rules, members and rounds | No |
get_activity, portfolio_history | Recent activity, and wallet value over a window (start, end, change, low, high) | No |
preview_target | The trades a set of weights would cause, or why they are invalid | No |
propose_target | Validated weights, offered as an Apply button | No, shows a button |
propose_join_circle | A Join button for a Circle | No, shows a button |
propose_open | A button that opens a page in the app | No, shows a button |
Limits
- It gives no investment advice or predictions. It explains, compares and sets up what you ask for.
- It only helps with Sama. Other questions get a short no.
- Each message runs at most six rounds of tool calls, and the last twelve turns of the chat are kept as context.
For developers
// POST /api/me/assistant (signed in). chatId null starts a new saved chat.
const r = await fetch(`${API}/api/me/assistant`, {
method: "POST",
credentials: "include",
headers: { "content-type": "application/json" },
body: JSON.stringify({ chatId: null, message: "What is NVDAB worth right now?" }),
}).then((res) => res.json());
// r = { chatId, title, reply: { text, blocks, actions } }
// blocks: { type: "prices", items, missing } | { type: "circles", circles }
// actions: { type: "apply_target", weights } | { type: "join_circle", circleId, name, needsInvite } | { type: "open", path, label }Actions are data. The server never runs them; the app does, when the user presses the button. Saved chats are at /api/me/chats.