Everything else the server exposes is public market data. This family is yours: the stock and option lots **you** have recorded in your Equibles account, so your assistant can answer "how is my portfolio doing", "which of my holdings report earnings this week", or "what is my exposure to semiconductors" against your actual positions, and then keep them up to date as you trade.

These are the only tools that write. A tool call can only ever reach the account whose API key made the request. There is no parameter for naming an account, so nothing your assistant is told can make it read or change someone else's holdings. Every call counts against your [daily limit](/docs/rate-limits) like any other.

Portfolio tracking is available on **every plan, including free**.

## How a lot is recorded

A **lot** is one purchase or sale: what you bought, how much, at what price, and when. Holding the same stock across three purchases is three lots, and each keeps its own cost, which is what makes a partial sale come out right later.

- **Quantity is signed.** Positive is long: shares bought, contracts bought. Negative is short: a short sale, or an option you wrote (sold to open).
- **Cost is per share, and always positive:** what you paid for a long, what you received for a short. The direction lives in the sign of the quantity, so a short is `-100` shares at `$50.00`, never `-100` at `-$50.00`. For an option that price is the premium **per share**: a contract quoted at $3.20 is `3.20`, not `320`.
- **Options carry their own contract size**, read from the live options data rather than assumed to be 100, because an adjusted contract does not deliver 100 shares.
- **Nothing is restated for a stock split.** We do not know which side of a split your broker's figures came from, so your quantities and costs stay exactly as you entered them.
- **Currency is USD.**

## How a portfolio is priced

- **Stocks** are marked at the last settled daily close, replaced by a live quote only when that quote belongs to a **newer** trading day than the close.
- **Options** are marked at the contract's own daily close, attributed to the session the data provider dated it with. It is never presented as a live premium.
- **Every mark names its session.** A close from Friday is labelled as Friday's, not as today's.
- **A position that cannot be priced shows no value and says why**, never a zero, which would read as a total loss. Totals are computed over the priced positions only, and the answer says how many were left out.
- **An expired option contract is never marked.** It was exercised or it expired worthless, and only you know which; close the lot with the outcome.
- **A watched instrument is priced the same way but is never a position.** It appears in its own "Watching (not held)" section with a mark and nothing else, and no total includes it. A portfolio watches at most 200 instruments.

## GetMyPortfolio

Your positions, priced, with cost basis, unrealized profit and the realized profit from lots you have closed. Call it with no portfolio name to see which portfolios exist; if you have exactly one, that one is returned in full.

Open lots are listed individually with a short **lot id**, and that id is what the update, close and remove tools take.

**Parameters:** `portfolio` (optional; the portfolio's name, omitted to list them).

**Ask:** *"How is my portfolio doing?"*

**Returns:**

```
# Portfolio "Main"

Valued 2026-08-18 14:32 UTC.

- Cost basis (open lots): $2,460.00
- Market value: $8,199.00
- Unrealized: +$5,739.00 (+233.29%)
- Realized (closed lots): +$812.50

## Open positions

| Instrument | Quantity | Avg cost | Mark | Priced from | Market value | Unrealized | Unrealized % |
|---|---:|---:|---:|---|---:|---:|---:|
| NVDA (NVIDIA Corporation) | 60 | $105.00 | $182.40 | 2026-08-17 close | $10,944.00 | +$4,644.00 | +73.71% |
| NVDA 2026-09-18 $210 Call (O:NVDA260918C00210000) | -3 | $12.80 | $9.15 | option daily close, 2026-08-17 | -$2,745.00 | +$1,095.00 | +28.52% |

## Open lots

The lot id addresses one lot in UpdatePortfolioLot, ClosePortfolioLot and RemovePortfolioLot.

| Lot | Instrument | Quantity | Cost per unit | Acquired | Market value | Unrealized | Note |
|---|---|---:|---:|---|---:|---:|---|
| 3f7a91c2 | NVDA (NVIDIA Corporation) | 40 | $96.00 | 2025-11-12 | $7,296.00 | +$3,456.00 |  |
| 8c14be05 | NVDA (NVIDIA Corporation) | 20 | $123.00 | 2026-03-04 | $3,648.00 | +$1,188.00 | added after the Q4 print |
| b502dd77 | NVDA 2026-09-18 $210 Call (O:NVDA260918C00210000) | -3 | $12.80 | 2026-08-04 | -$2,745.00 | +$1,095.00 | covered calls against the shares |

## Watching (not held)

These instruments are on this portfolio's watchlist and are NOT positions: the account holds none of them, so they carry no quantity, cost or value and are not part of any total above. UnwatchInstrument removes one; WatchInstrument adds one.

| Instrument | Mark | Priced from |
|---|---:|---|
| AMD (Advanced Micro Devices Inc) | $172.94 | 2026-08-17 close |
| AMD 2027-01-15 $200 Call (O:AMD270115C00200000) | $14.85 | option daily close, 2026-08-17 |

## Closed lots

| Lot | Instrument | Quantity | Cost per unit | Closed at | Close price | Realized |
|---|---|---:|---:|---|---:|---:|
| d9a3f410 | AMD | 25 | $118.50 | 2026-05-21 | $151.00 | +$812.50 |

Quantities and costs are exactly as recorded by the owner and are never restated for a stock split. A negative quantity is a short position or a written option. Marks name the trading session they belong to; a daily close is not a live price.
```

## CreateMyPortfolio

Creates a new, empty portfolio. Names are unique within your account.

**Parameters:** `name` (required, e.g. `Main`).

**Ask:** *"Create a portfolio called Retirement."*

## AddPortfolioLot

Records one purchase or sale.

For a stock, pass its ticker. For an option, pass **both** the underlying ticker and the OCC symbol. The expiration, strike, type and contract size are read from the live options data, so an unknown or expired symbol is rejected rather than stored. [`GetOptionExpirations` and `GetOptionChain`](/docs/mcp/tools/options) find the symbol.

Retrying the identical call is safe: within a few minutes it returns the lot already recorded rather than adding a second copy, so an assistant whose call timed out cannot double your position.

**Parameters:** `portfolio` (required); `ticker` (required; for an option, the underlying); `quantity` (required, signed); `costPerUnit` (required, per share); `acquiredDate` (required, `YYYY-MM-DD`); `optionContract` (OCC symbol, e.g. `O:NVDA260918C00210000`); `note`.

**Ask:** *"I bought 40 NVDA at $96 on 12 November 2025, add it to my Main portfolio."*

**Returns:**

```
Recorded lot 3f7a91c2 in "Main": 40 shares of NVDA at $96.00 per share, acquired 2025-11-12.
```

## UpdatePortfolioLot

Corrects a lot you already recorded: a mistyped quantity, price, date or note. Only the fields you pass change.

The instrument itself cannot be edited: a lot on the wrong stock or the wrong contract is a different holding, so remove it and add the right one. To record a **sale**, use `ClosePortfolioLot` rather than editing the quantity down, which would throw away the realized profit.

**Parameters:** `portfolio` (required); `lotId` (required); `quantity`; `costPerUnit`; `acquiredDate`; `note`.

**Ask:** *"That NVDA lot was $96.50, not $96. Fix it."*

## ClosePortfolioLot

Records that you sold, covered, or let a lot expire, at a price and on a date. The lot leaves your open positions and its realized profit is kept.

Closing **part** of a lot splits it: the closed part keeps the original cost basis and the rest stays open on that same basis, so a later sale is still priced against what you actually paid. An option that expired worthless closes at a price of `0`; one that was exercised or assigned closes here too, and the resulting shares are a separate `AddPortfolioLot`.

**Parameters:** `portfolio` (required); `lotId` (required); `closePrice` (required); `closeDate` (required, `YYYY-MM-DD`); `quantity` (optional, omitted to close the whole lot).

**Ask:** *"I sold 25 AMD at $151 on 21 May."*

**Returns:**

```
Closed 25 shares of AMD in "Main" at $151.00 on 2026-05-21: realized +$812.50, against a cost of $118.50 per share from 2025-09-02.
```

## RemovePortfolioLot

Permanently deletes a lot, as if it had never been recorded. This is for a lot entered by mistake. It is **not** how a sale is recorded: deleting a lot you sold destroys its realized profit. It cannot be undone.

**Parameters:** `portfolio` (required); `lotId` (required).

## WatchInstrument

Puts a stock or an option contract on a portfolio's watchlist, without recording any position. The instrument then shows in `GetMyPortfolio`'s "Watching (not held)" section with a current mark and nothing else, and buying it later shows one row rather than two.

For a stock, pass its ticker. For an option, pass **both** the underlying ticker and the OCC symbol, exactly as `AddPortfolioLot` takes them; the contract is verified against the live options data before anything is stored. Watching something the portfolio already holds is allowed, and selling out later keeps the instrument on the list.

**Parameters:** `portfolio` (required); `ticker` (required; for an option, the underlying); `optionContract` (OCC symbol, omitted for the stock itself).

**Ask:** *"Keep an eye on AMD in my Main portfolio."*

**Returns:**

```
Watching AMD in "Main". It appears in GetMyPortfolio's 'Watching (not held)' section with a current mark and no position.
```

## UnwatchInstrument

Removes an instrument from a portfolio's watchlist. Only the watch entry goes: a holding on the same instrument stays exactly as recorded, so unwatching something you own simply stops pinning it to the page once the lots close.

Address the instrument the way the Watching section shows it: the ticker for a stock, or the OCC symbol in `optionContract` for an option.

**Parameters:** `portfolio` (required); `ticker` (the watched stock's ticker); `optionContract` (the watched option's OCC symbol).

**Ask:** *"Stop watching AMD in Main."*

## DeleteMyPortfolio

Permanently deletes a portfolio and every lot in it, open and closed, including the realized-profit history. It cannot be undone.

**Parameters:** `name` (required).

## Privacy

Your portfolio is stored against your Equibles account and is never included in any public, aggregate, or market-data surface. It is visible to your own API key and to you in the portal, and to nobody else.