Source: https://watch.fincobra.com/docs/binance-th.html # Binance TH Connect Binance TH separately from Binance Global. You can keep both accounts in the same Watchlist. ## Connect your account 1. In Binance TH, open API Management and create an API key. 2. Enable read access. Watchlist does not need trading or withdrawal permission. 3. If the key uses an IP whitelist, add the IP shown in Watchlist Settings → Exchanges. 4. In Watchlist, choose Add account or asset → Exchange → Binance TH. Enter the TH key and secret. The connection checks your account using the read-only account API. A Binance Global key does not work for Binance TH. ## Balances and prices Watchlist includes available and locked spot balances. THB is converted to USD using the fiat exchange rate. Crypto prices come from Binance TH markets. If an account or price request fails, Watchlist preserves the last known balance and marks it as outdated. A successful empty account response clears the old balance. ## Transactions and PnL Transaction sync reads spot trades, crypto deposits and withdrawals, and completed THB deposits and withdrawals. It checks every market in the TH symbol catalog, including markets for assets you no longer hold. The first sync can take several minutes. THB transaction values use the historical USD exchange rate for the transaction date. Missing historical rates leave the sync incomplete rather than using today's exchange rate. PnL follows the Watchlist crypto PnL method; it is not a tax cost-basis report. The integration does not request Binance Global Earn, Funding, futures, or stock APIs. Only Binance TH spot balances and the history listed above are included. See the [official Binance TH API documentation](https://www.binance.th/api-docs/en/) for API permissions and limits. --- Source: https://watch.fincobra.com/docs/binance.html # Binance Portfolio Tracking Track your Binance token balances and PnL alongside connected wallets. ## How to Connect Create a **read-only** API key in your Binance account settings. FinCobra needs: - API Key - API Secret - Permissions: **read-only** (no trading or withdrawal permissions required) ## What's Tracked - **Spot balances** — all tokens in your spot wallet - **Funding balances** — assets in your funding wallet - **Flexible earn** — tokens in Binance Simple Earn (flexible products) - **Locked earn** — tokens in Binance Simple Earn (locked products) - **Stocks and ETFs** — equity holdings returned by Binance, including fractional shares such as VOO Stocks and ETFs appear with their trading ticker and share quantity. Their estimated USD value uses the midpoint of Binance's current bid and ask quote. They are included under **Stocks & ETFs** in the net-worth breakdown and Assets view. Each stock holding shows its average acquisition cost and unrealized PnL when its execution history matches the current share quantity. If a price is unavailable, the holding's quantity remains visible with **Price unavailable**. Other holdings continue to update. The account total includes priced holdings and is marked **Incomplete total** until all required prices are available. Net worth is unavailable while a required price is missing. If a balance refresh fails, the account keeps its last valid value and shows the error and last update time. Spot and earn balances for the same token are **merged** into a single balance for PnL calculation. ## How PnL Works Trades establish acquisition costs when their required values are known. Matched deposits and withdrawals between connected owned sources carry basis. External receipts without a matched source use their historical market value at entry to the tracked portfolio. This measures performance from that entry. Account and token figures use available source accounting. An asterisk (\*) marks incomplete accounting. Priced balances without a calculated PnL still contribute to total portfolio value. Incomplete combined PnL shows the available amount without a percentage. See [How PnL Works](./how-pnl-works.md) for formulas and transfers. ### Stocks and ETFs — Average Acquisition Cost FinCobra reads Binance's stock executions and order fees when a stock position first appears. It stores the remaining cost basis with the share quantity in the database. Purchases add their execution value and purchase fees. Sales reduce the cost basis in proportion to the shares sold. A fully closed position has zero remaining cost. **Unrealized PnL = current share value − remaining cost basis.** This is shown separately for each stock in Accounts and Assets. It excludes realized gains and dividends. Account and header totals combine available stock and crypto PnL. When coverage is complete, their percentage uses the displayed balance minus the combined PnL. While the account is refreshed, a change in share quantity triggers a history check. FinCobra also checks for new executions every five minutes, so a sale and purchase that leave the same share quantity still update the cost basis. A daily full check refreshes order fees and older executions. Routine balance refreshes use the saved basis. **Calculating PnL…** means a stock history check is in progress. **PnL unavailable** means history or fees are incomplete, the API failed, or the calculated share quantity does not match the balance. Transfers and corporate actions can cause this mismatch. Stock purchase costs come from executions. --- Source: https://watch.fincobra.com/docs/bitcoin-xpub.html # Bitcoin xPub Wallet Tracking Bitcoin xPub tracking combines balances and transaction history across the addresses derived from your extended public key. ## How to Connect Export your extended public key from your hardware wallet (Ledger, Trezor, etc.) or software wallet. FinCobra supports: | Key Type | Format | Address Type | | -------- | ------ | ----------------------- | | xpub | BIP-44 | Legacy (1...) | | ypub | BIP-49 | Nested SegWit (3...) | | zpub | BIP-84 | Native SegWit (bc1q...) | The connection is **read-only** — an extended public key can only derive addresses and view balances. It cannot sign transactions or move funds. ## How PnL Works Matched transfers carry cost basis between connected sources. External receipts without a matched source use their historical market value at entry to the tracked portfolio. Blockchain history records movements, but it does not establish every original purchase cost. Historical daily entry prices measure performance within the tracked portfolio. An asterisk (\*) marks incomplete accounting; unknown costs do not count as free purchases. See [How PnL Works](./how-pnl-works.md) for coverage and formulas. ## Address Derivation FinCobra uses Electrum to derive addresses from your extended public key following BIP-44/49/84 derivation paths. The system scans both the receiving and change address chains to find all transactions associated with your wallet. Ledger Live may label a native SegWit account as `xpub` while including `native_segwit` metadata in the account export. Paste the full Ledger account export when available so FinCobra can normalize the key to the native SegWit format before restoring it in Electrum. --- Source: https://watch.fincobra.com/docs/bybit.html # Bybit Exchange Tracking Track your Bybit token balances and PnL alongside connected wallets. ## How to Connect Create a **read-only** API key in your Bybit account: - API Key - API Secret - Permissions: **read-only** (no trading or withdrawal permissions required) ## What's Tracked Supported account balances are combined by token. The UI reports unavailable account sections so partial reads cannot be treated as complete holdings. ## How PnL Works Trades establish acquisition costs when their required values are known. Matched deposits and withdrawals between connected owned sources carry basis. External receipts without a matched source use their historical market value at entry to the tracked portfolio. This measures performance from that entry. Account and token figures use available source accounting. An asterisk (\*) marks incomplete accounting. Balances without a calculated result still contribute to total portfolio value. See [How PnL Works](./how-pnl-works.md) for formulas and transfers. --- Source: https://watch.fincobra.com/docs/evm-wallets.html # EVM Wallet Tracking Track your Ethereum, Arbitrum, and BSC wallets by pasting your address. FinCobra monitors token balances and calculates unrealized PnL from known acquisition costs and matched transfers. ## Supported Chains | Chain | Tokens Tracked | | --------------- | ------------------- | | Ethereum | ETH + ERC-20 tokens | | Arbitrum | ETH + ERC-20 tokens | | BSC (BNB Chain) | BNB + BEP-20 tokens | ## How to Connect Paste your `0x` wallet address — that's it. The connection is completely **read-only**. A wallet address can only be used to view balances and transactions on-chain. ## How PnL Works Supported tokens use weighted-average acquisition cost. A matched transfer between connected accounts carries that cost to its destination. Current holdings with known cost contribute to unrealized PnL. External receipts without a matched source use historical market value at entry to the tracked portfolio. Token identity must match a supported contract; a matching symbol alone is insufficient. See [How PnL Works](./how-pnl-works.md) for the calculation and data requirements. ## Coverage Indexing limits can leave history incomplete. Failed or partial balance reads do not count as sales. PnL is unavailable when current quantities cannot be reconciled with the accounting history. --- Source: https://watch.fincobra.com/docs/how-pnl-works.html # How PnL Is Calculated Watchlist tracks the cost of your current holdings across connected sources. It uses weighted-average cost basis: ``` PnL = current holding value − remaining cost basis PnL % = PnL ÷ remaining cost basis × 100 ``` This is the unrealized result for current holdings. It does not include realized sales or reward income in the displayed amount. The percentage is omitted when the cost basis is zero. Account and portfolio percentages are also omitted when accounting coverage is incomplete. ## Transfers Between Your Accounts A matched transfer between connected accounts carries the original cost basis to its destination. It does not create a purchase or sale. A partial transfer carries a proportional share of the source's basis. For example, you buy 10 SOL for $1,000. At $150 per SOL, your PnL is $500. Transfer 4 SOL to another connected wallet: the first wallet retains $600 of basis and the second receives $400. Their combined PnL remains $500, before fees. Transfer matching requires transaction evidence. Amount and time alone do not establish ownership. An external receipt without a matched source uses its historical market value when it enters the tracked portfolio. This measures performance from that entry; it does not recover an earlier purchase price outside Watchlist. Historical prices use daily values, not exact intraday execution prices. ## Native SOL Staking Available SOL and native stake-account SOL form one SOL position. Watchlist identifies stake-account ownership through withdrawal authority. Delegating, activating, deactivating, or withdrawing stake preserves the principal's basis. Owned stake-account balances remain included during unstaking. Staking rewards are separate income events. Their historical USD receipt value becomes their cost basis. Later price changes affect the displayed PnL. Liquid-staking tokens are separate assets. Their balance is not an additional native SOL stake balance. ## Available Source Accounting Accounts and tokens show compact PnL amounts and percentages. An asterisk (\*) marks incomplete accounting. Available source calculations remain visible when another source has no calculated result. Unknown acquisition costs do not count as free purchases or profit. Current quantities must agree with the accounting quantities before a source result is valued. This prevents a transfer or delayed refresh from combining a new balance with an old basis. Incomplete or failed balance reads cannot create sales or reset costs. Watchlist keeps the last complete balance and matching accounting while it refreshes. If a refresh fails, the source shows the error and the time of its last successful balance read. It saves this accounting for reopening and retries automatically after a temporary connection failure. A confirmed change to holdings or acquisition cost updates the result. ## Portfolio and Account Totals Account and portfolio amounts sum the available source results. When all required prices and accounting are available, their percentage uses the full displayed balance: ``` account PnL % = account PnL ÷ (account balance − account PnL) × 100 portfolio PnL % = portfolio PnL ÷ (tracked balance − portfolio PnL) × 100 ``` Cash remains in this denominator. If an investment holding has no calculated result, the combined available PnL is marked incomplete and its percentage is hidden. Cash-only and empty sources do not make coverage incomplete. An asset's combined result uses the cost and value from sources with available accounting. Token percentages compare that result with its corresponding acquisition cost. ## Supported History Bitcoin, supported EVM tokens, Solana, Binance, and Bybit use available transaction history. Asset identity must match a supported native asset, approved token contract, or supported exchange symbol. A symbol alone does not identify an arbitrary token contract. Source APIs can limit history. Some transfers, prices, trades, or reward periods can remain unresolved. Hyperliquid and Aster balances can contribute to portfolio value without complete acquisition accounting. An asterisk marks incomplete available accounting. ## Stocks and ETFs Binance stock positions use executed purchase values and purchase fees. Sales remove a proportional share of basis. Stocks show average cost per share as well as PnL. Balance and history quantities must agree. Account and portfolio PnL combine stock and crypto results. When coverage is complete, their percentage uses the full displayed balance minus the combined PnL. An unavailable stock basis or exchange price suppresses the combined result. See [Binance tracking](./binance.md#stocks-and-etfs-average-acquisition-cost) for stock history checks. --- Source: https://watch.fincobra.com/docs/hyperliquid.html # Hyperliquid Exchange Tracking Track your Hyperliquid portfolio by providing your wallet address. FinCobra monitors current balances and values. ## How to Connect Enter your wallet address that's connected to Hyperliquid. Since Hyperliquid is an on-chain exchange, your portfolio is linked to your wallet address — no API keys needed. The connection is **read-only**. ## PnL Coverage HYPE PnL uses the USDC cost of spot purchases, including trading fees. It follows the current position from its last zero balance. Spot HYPE, delegated HYPE, undelegated HYPE, and pending staking withdrawals remain one position. Moving HYPE into or out of staking does not reset its cost. Staking rewards increase the HYPE quantity without adding purchase expenditure. Their current value therefore contributes to the position's investment return. This is an investment-cost calculation, not a tax-basis report. History sync stores trades and rewards once and requests an overlapping incremental trade window on later syncs. Balance and price refreshes reuse the cached portfolio ledger. External HYPE receipts without a known acquisition cost and incomplete history can limit PnL coverage. Hyperliquid exposes only the most recent 10,000 fills; a history limit is marked as incomplete. Perpetual HYPE trades are separate from spot HYPE. See [How PnL Works](./how-pnl-works.md) for the coverage rules. --- Source: https://watch.fincobra.com/docs/ # Crypto Portfolio Tracker FinCobra's watchlist tracks your crypto portfolio across wallets and exchanges in a single dashboard. All connections are **read-only** — we never have access to your funds. ## Supported Sources | Source | Connection | PnL Model | | ------------------------------ | -------------------------------- | ------------------------------------------ | | [Bitcoin xPub](./bitcoin-xpub.md) | Export xpub from hardware wallet | Token PnL | | [Binance](./binance.md) | Read-only API key | Token PnL | | [EVM Wallets](./evm-wallets.md) | Paste 0x address | Token PnL | | [Solana](./solana.md) | Paste Solana address | Available and native staked SOL accounting | | [Bybit](./bybit.md) | Read-only API key | Token PnL | | [Hyperliquid](./hyperliquid.md) | Wallet address | Balances; PnL subject to history coverage | ## How Tracking Works Watchlist reads balances and available transaction history. It tracks weighted-average cost basis across connected sources. Matched internal transfers carry basis. External receipts without a matched source use historical market value at entry to the tracked portfolio. Account, asset, and portfolio figures show compact PnL amounts from available source accounting. An asterisk (\*) beside an account or token result marks incomplete accounting. Quantities remain visible while history or prices are missing. Incomplete account and portfolio PnL shows the available amount without a percentage. A failed balance refresh keeps the last valid value and shows an error with its last update time. A missing price marks the source total as incomplete. Net worth is unavailable until all required balances and prices are known. Unknown, unpriced, and failed sources remain visible when small balances are hidden. See [How PnL Works](./how-pnl-works.md) for the formulas, native SOL staking, transfer example, and coverage limits. ## Display Currency Select **AED — UAE Dirham** in **Settings → View → Display currency** to show portfolio values in dirhams. You can also select AED when you add or edit a bank account, cash balance, property, or car. Values use the available exchange rates. If a required rate is missing, the converted amount is unavailable. ## Bank balances and loans Add a bank card to track its account balance and loans. A bank can have a zero balance. Select **Add loan** in the bank card or while you create the bank. Enter a loan name, the amount you still owe, and its currency. Each loan can use a different supported currency, including AED. The card shows **Account balance**, **Loans**, and **Net value**. Net value is the account balance minus outstanding loans. It can be negative. Use the edit button beside a loan to update its amount. Enter zero when the loan is paid off, or remove it from the watchlist. A loan update does not change the account balance. Update both amounts after a payment from that account. Net worth is total assets minus debts. Property mortgages and bank loans each count once. Do not add a mortgage to a bank if it is already included in a property. The allocation chart shows assets before debts. Manual bank and loan changes do not change investment PnL. Loan amounts stay in their original currencies. Changing a bank's currency does not change its loans. When an FX rate required for net worth is unavailable, the total shows **Unavailable**. Accounts with unpaid loans stay visible when small balances are hidden. Deleting a bank also removes its saved loans. Removing a loan from FinCobra does not repay it. ## Stocks and ETFs Binance stock positions show average acquisition cost and unrealized PnL when execution history, fees, and current quantities agree. Stock and crypto results contribute to investment PnL. Bank balances, bank loans, and property mortgages affect net worth, not investment PnL. ## MCP access [FinCobra MCP 0.4.0](./mcp.md) lets an AI client read your Watchlist sources and net worth, and add a car as a manual asset. Follow the linked guide to connect the hosted server and approve access in your browser. Property cards show the seven-day currency effect on current net equity in the selected fiat display currency. The calculation applies today’s and last week’s exchange rates to the same current property value minus its mortgage. It excludes changes in the property estimate or mortgage balance. ## Documentation for agents Use the [Markdown index](./llms.txt) or [complete Markdown reference](./llms-full.txt) to read this documentation. Public pages support `Accept: text/markdown`. See [MCP](./mcp.md) for authenticated account tools and OAuth permissions. --- Source: https://watch.fincobra.com/docs/mcp.html # FinCobra MCP FinCobra MCP **0.4.0** connects an AI client to your Checkout and Watchlist account. Use this Streamable HTTP server URL: ```text https://watch.fincobra.com/api/mcp ``` ## Connect Add the URL as a remote MCP server in your client. Select **Connect** or **Sign in**, complete FinCobra sign-in in your browser, and approve the permissions shown. Return to your AI client when the browser finishes. For Codex: ```sh codex mcp add fincobra --url https://watch.fincobra.com/api/mcp codex mcp login fincobra --scopes watchlist:read,checkout:read ``` Codex can start browser authorization during `mcp add` and request all supported permissions. For a read-only connection, close that initial prompt and use the explicit `mcp login --scopes` command above. For Claude Code: ```sh claude mcp add --transport http fincobra https://watch.fincobra.com/api/mcp ``` Then use `/mcp` in Claude Code to sign in. In clients with an MCP settings screen, use the same URL and their connection control. The client must support Streamable HTTP and MCP OAuth. The client stores OAuth credentials and renews access automatically. Access tokens last one hour. A connection lasts up to 90 days. After expiry or revocation, the client opens browser authorization again. Revoke a connection in FinCobra **Settings → Security → Connected MCP clients**. ## Verify the connection Ask your agent: “Check my FinCobra connection.” It should call `get_connection_status` and return the account ID, approved scopes, access expiry, and server version. To read your portfolio, ask it to call `get_net_worth`. A saved server entry alone does not prove that the client loaded its tools. If tools are absent, check the MCP server status in the client, sign in if required, and use its reload control. Clients that load tool definitions only when a conversation starts require a new conversation after setup. ## Tools and permissions When a client omits scopes, FinCobra uses `watchlist:read` and `checkout:read`. Some clients request all advertised scopes. Check the permissions on the consent page. Only tools covered by the approved scopes are listed. To enable writes, request the additional scope in your MCP client's OAuth settings and approve it in the browser. In Codex, use: ```sh codex mcp login fincobra --scopes watchlist:read,checkout:read,watchlist:write,checkout:write ``` | Tool | Required scope | Result | | --- | --- | --- | | `get_connection_status` | Any valid connection | Account, scopes, access expiry, and version | | `get_net_worth` | `watchlist:read` | Portfolio totals and all sources | | `list_sources` | `watchlist:read` | Wallets, exchanges, bank/cash entries, property, and cars | | `get_source` | `watchlist:read` | One source selected by its ID | | `get_invoice` | `checkout:read` | One Checkout invoice selected by its ID | | `add_car` | `watchlist:write` | Add a manual car valuation | | `create_invoice` | `checkout:write` | Create an invoice and return its payment URL | ## Portfolio values `get_net_worth`, `list_sources`, and `get_source` accept an optional `currency`. USD is the default. Original amounts and USD values remain in the response when another reporting currency is selected. `sourceBalances` keeps available, staked, Spot, Funding, and Earn amounts separate where the source provides them. `lockedBalance` is separate from these available source amounts. Supported reporting currencies are USD, VND, EUR, GBP, JPY, SGD, AUD, CAD, CHF, CNY, RUB, GEL, THB, BTC, and XAU. XAU means one troy ounce of gold. Responses include tracked wallets, exchanges (including Hyperliquid), and manual assets. Property values use net equity after the recorded mortgage. Manual entries are estimates that you maintain in Watchlist. Unsupported tokens hidden by Watchlist have `includedInTotal: false`, `exclusionReason: "unsupported_token"`, and no invented price. They do not block portfolio totals. If a supported asset or source cannot be valued, the response marks its status and leaves affected totals unavailable. Check `valuationStatus` and `notes` before using an incomplete total. ## OAuth protocol FinCobra Identity provides authorization-code OAuth with S256 PKCE, resource binding, dynamic client registration, public client metadata documents, rotating refresh tokens, and revocation. Browser consent uses your FinCobra account and applies only to the listed permissions. - Protected resource metadata: `https://watch.fincobra.com/.well-known/oauth-protected-resource/api/mcp` - Authorization server metadata: `https://watch.fincobra.com/.well-known/oauth-authorization-server` - MCP resource: `https://watch.fincobra.com/api/mcp` An unauthenticated MCP request returns HTTP 401 with the protected resource metadata URL in `WWW-Authenticate`. OAuth clients discover the endpoints from these documents. Authorization codes and tokens are bound to their client and resource. Refresh token reuse revokes the connection. Account security changes also invalidate access. --- Source: https://watch.fincobra.com/docs/solana.html # Solana Wallet Tracking Track your Solana wallet by pasting your address. FinCobra monitors available and staked SOL alongside SPL token balances and calculates unrealized PnL where acquisition costs are known. ## What's Tracked - **SOL** — native Solana balance - **Native staking** — delegated SOL held in stake accounts controlled by the wallet - **SPL tokens** — all fungible SPL tokens in your wallet ## How to Connect Paste your Solana wallet address. The connection is completely **read-only** — an address can only be used to view on-chain balances and transactions. ## How PnL Works Available and native staked SOL share one position. Transfers between connected owned accounts carry their original cost basis. Native staking preserves principal basis through activation, deactivation, and withdrawal. Rewards have their own historical receipt values. Watchlist includes stake accounts owned through your withdrawal authority, including accounts in the unstaking process. Staking authority alone does not establish ownership. See [How PnL Works](./how-pnl-works.md) for formulas and reward pricing. ## Coverage History, reward records, and prices must be available to calculate PnL. Partial stake-account reads do not create a new basis. The UI shows available source results with an asterisk (\*) when accounting is incomplete. SPL and liquid-staking tokens need their own supported asset identity and acquisition history.