Docs

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. 1. Ask
  2. 2. It reads
  3. 3. It answers
  4. 4. It proposes
  5. 5. You confirm

What is NVDAB worth right now?

get_prices
The app's own chat components replaying a short conversation. The token card is live; the questions and the proposed target are examples, and nothing is saved.

How a message flows

  1. 01

    Ask

    Type a question or a request (up to 500 characters). It goes to POST /api/me/assistant with the conversation so far.

  2. 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.

  3. 03

    It answers

    Words first, then cards: live token cards for prices (each opens the token's page) and Circle cards for search results.

  4. 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.

  5. 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.

  6. 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

ToolWhat it doesChanges anything
get_overviewHome view: value, positions, target, drift, Circles, rounds waiting on you, recent activityNo
get_portfolioWallet positions with amount, value and share, including BNB and tokens Sama does not tradeNo
get_pricesLive prices by ticker (NVDAB or NVDA) or company name; shown as token cardsNo
search_assetsTradable assets with class, tier, leverage flag and priceNo
search_circles, get_circleCircles you can see, and one Circle's rules, members and roundsNo
get_activity, portfolio_historyRecent activity, and wallet value over a window (start, end, change, low, high)No
preview_targetThe trades a set of weights would cause, or why they are invalidNo
propose_targetValidated weights, offered as an Apply buttonNo, shows a button
propose_join_circleA Join button for a CircleNo, shows a button
propose_openA button that opens a page in the appNo, 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

assistant
// 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.