Skip to main content
Glama
meteoroh

tossinvest-mcp

by meteoroh

Get portfolio holdings

tossinvest_get_holdings
Read-onlyIdempotent

Retrieve stock holdings with per-symbol average cost, market value, and profit/loss, including daily change and net returns after fees. Supports filtering by symbol or account.

Instructions

Get the account's stock holdings with per-symbol detail and aggregate valuation.

This is the portfolio tool: what is owned, at what average cost, worth how much, up or down how much.

Args:

  • account_seq (number, optional): which account. Resolved automatically when the credentials have one account.

  • symbol (string, optional): restrict to one symbol. The summary totals are recomputed for just that symbol.

  • response_format ('markdown' | 'json'): default 'markdown'.

Returns { accountSeq, count, totalPurchaseAmount, marketValue, profitLoss, dailyProfitLoss, items }.

  • Summary objects carry per-currency amounts as { krw, usd } — KRW and USD are reported separately, never summed. Convert with tossinvest_get_exchange_rate if a single figure is wanted.

  • profitLoss has both 'amount'/'rate' (gross) and 'amountAfterCost'/'rateAfterCost' (net of commission and tax). Use the AfterCost variants for realistic returns.

  • Each item: { symbol, name, marketCountry, currency, quantity, lastPrice, averagePurchasePrice, marketValue: { purchaseAmount, amount, amountAfterCost }, profitLoss, dailyProfitLoss, cost: { commission, tax } }, priced in the symbol's own currency.

Covers KR and US stocks only — overseas derivatives and bonds are excluded. No holdings gives zeroed totals and an empty item list.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
symbolNoRestrict to one symbol; totals are recomputed for it. Omit for the whole portfolio.
account_seqNoaccountSeq of the account to act on (the `X-Tossinvest-Account` header). Optional: falls back to TOSSINVEST_ACCOUNT_SEQ, then to the sole account on the credentials. Get valid values from tossinvest_list_accounts.
response_formatNoOutput format: 'markdown' for a compact human-readable summary, 'json' for the complete raw payload.markdown

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
countYes
itemsYes
truncatedNo
accountSeqYes
profitLossNo
marketValueNo
dailyProfitLossNo
truncation_messageNo
totalPurchaseAmountNoCost basis, summed per currency ({ krw, usd })

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint: false; the description adds valuable behavior beyond that: KRW and USD are reported separately and never summed, profitLoss includes AfterCost net variants, and no holdings returns zeroed totals with an empty item list. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main purpose and organized into clear sections for args and returns. The return-object explanation is genuinely useful, but the Args list duplicates the fully documented input schema, making the description slightly longer than strictly necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It covers account selection behavior, symbol filtering, response format, return shape, per-currency handling, net-vs-gross profit/loss, coverage exclusions, and empty-result behavior. For a complex read-only portfolio query, nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description's Args section largely restates what the schema already says: account auto-resolution, symbol restriction with recomputed totals, and response_format default. It adds no materially new parameter semantics, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Get the account's stock holdings with per-symbol detail and aggregate valuation.' It also explicitly labels itself 'the portfolio tool,' which distinguishes it from the many market-data, order, and account siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for when this tool is relevant ('what is owned, at what average cost, worth how much') and states exclusions ('Covers KR and US stocks only — overseas derivatives and bonds are excluded'). It also points to tossinvest_get_exchange_rate when a single currency figure is wanted. It does not enumerate alternatives for every sibling, but the routing context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.