Skip to content

feat(portfolio): add getPositionLots endpoint for per-position tax lots - #9

Open
samyk wants to merge 1 commit into
kerryjiang:mainfrom
samyk:feat/get-position-lots-endpoint
Open

feat(portfolio): add getPositionLots endpoint for per-position tax lots#9
samyk wants to merge 1 commit into
kerryjiang:mainfrom
samyk:feat/get-position-lots-endpoint

Conversation

@samyk

@samyk samyk commented Jun 23, 2026

Copy link
Copy Markdown

The View Portfolio response never embeds data, even with lotsRequired=true — E*TRADE only populates each position's lotsDetails link and serves the actual lots from a separate per-position endpoint. That endpoint (GET /accounts/{accountIdKey}/portfolio/{positionId}) was missing from the OpenAPI spec, so no MCP tool was generated for it and tax-lot data (cost basis, acquisition date, term, remaining qty) was unreachable through the server.
Add the operation to etrade-api.yaml as operationId getPositionLots, returning the existing PortfolioResponse schema (which already carries the PositionLot array). This exposes a getPositionLots MCP tool, enabling lot-level cost-basis and tax analysis (e.g. lowest-tax-lot selection). Spec-only change; reuses existing PositionLot/PortfolioResponse schemas. Verified against a live account: positions return multiple lots with correct price, termCode, remainingQty, and acquiredDate.

The View Portfolio response never embeds <PositionLot> data, even with
lotsRequired=true — E*TRADE only populates each position's lotsDetails
link and serves the actual lots from a separate per-position endpoint.
That endpoint (GET /accounts/{accountIdKey}/portfolio/{positionId}) was
missing from the OpenAPI spec, so no MCP tool was generated for it and
tax-lot data (cost basis, acquisition date, term, remaining qty) was
unreachable through the server.
Add the operation to etrade-api.yaml as operationId `getPositionLots`,
returning the existing PortfolioResponse schema (which already carries
the PositionLot array). This exposes a getPositionLots MCP tool, enabling
lot-level cost-basis and tax analysis (e.g. lowest-tax-lot selection).
Spec-only change; reuses existing PositionLot/PortfolioResponse schemas.
Verified against a live account: positions return multiple lots with
correct price, termCode, remainingQty, and acquiredDate.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant