Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

T-Bank Invest (read-only)

PYPI · T-BANK-INVEST-MCP-READ-ONLY · SCANNED OCT 8

Read-only T-Bank (Tinkoff) Invest API: portfolio, operations, instruments, market data.

76 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 0 of 28 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to Sicness/t-bank-invest-mcp-read-only). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 5 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability70
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 6554 tokens (~168/item across 39 items; 39 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage67
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 0% of tool parameters carry a description.Fail
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "get_withdraw_limits" implies "withdraw" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
  • An AI judge read all 40 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

How do I install the T-Bank Invest (read-only) MCP server?

T-Bank Invest (read-only) runs locally as a PyPI package, launched with uvx t-bank-invest-mcp-read-only. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · t-bank-invest-mcp-read-only

# add to Claude Code
claude mcp add sicness-t-bank-invest-mcp-read-only -- uvx t-bank-invest-mcp-read-only
// .cursor/mcp.json
{
  "mcpServers": {
    "sicness-t-bank-invest-mcp-read-only": {
      "command": "uvx",
      "args": [
        "t-bank-invest-mcp-read-only"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "sicness-t-bank-invest-mcp-read-only": {
      "command": "uvx",
      "args": [
        "t-bank-invest-mcp-read-only"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add sicness-t-bank-invest-mcp-read-only -- uvx t-bank-invest-mcp-read-only
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sicness-t-bank-invest-mcp-read-only": {
      "type": "local",
      "command": [
        "uvx",
        "t-bank-invest-mcp-read-only"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add sicness-t-bank-invest-mcp-read-only --command uvx --arg t-bank-invest-mcp-read-only
# ~/.hermes/config.yaml
mcp_servers:
  sicness-t-bank-invest-mcp-read-only:
    command: "uvx"
    args: ["t-bank-invest-mcp-read-only"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "sicness-t-bank-invest-mcp-read-only": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "t-bank-invest-mcp-read-only"
      ]
    }
  }
}
# add to Vellum
assistant mcp add sicness-t-bank-invest-mcp-read-only -t stdio -c uvx -a t-bank-invest-mcp-read-only
// mcp.json
{
  "mcpServers": {
    "sicness-t-bank-invest-mcp-read-only": {
      "command": "uvx",
      "args": [
        "t-bank-invest-mcp-read-only"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 2 Oct 26 61

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 8 Oct 2026 · Analysed pypi/t-bank-invest-mcp-read-only@1.0.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo Sicness/t-bank-invest-mcp-read-only
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/Sicness/t-bank-invest-mcp-read-only/.github/workflows/release.yml@refs/tags/v1.0.0
Rekor log index 3049453312
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:4d2a0395da9d960015f230847f19712fa35d22448edd9e5fa2317119b9e31b72

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 28 packages
Packages resolved 28
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 39 exposed · ~6,381 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
find_instrument ~315

Search for instruments by text query (ticker, name, ISIN, FIGI). Returns {"instruments": [...], "total": N}. Each instrument has ticker, classCode, name, instrumentType, uid, figi, isin and lot; forQualInvestorFlag appears when it is true and apiTradeAvailableFlag when it is false. An instrument whose ticker, ISIN or FIGI equals the query comes first, then shares, funds, bonds and the rest. "total" counts every match; "note" says when the list was cut to limit or when nothing tradable matched and non-tradable listings are shown instead. A paper has many listings (one per board, most of them not tradable), and a company's name also matches all its bonds — narrow the search with instrument_kind. Args: query: Search string (e.g. "SBER", "Газпром", "Apple") instrument_kind: Only this kind — share, bond, etf, currency, futures, option, sp, clearing_certificate, index, commodity (empty = any) tradable_only: Only listings tradable through the API (default: true). False also returns delisted papers and technical boards. limit: Maximum number of instruments to return (1-200, default: 20)

NameTypeReqDescription
instrument_kindstring––
limitinteger––
querystringyes–
tradable_onlyboolean––

No output schema declared.

No examples provided.

get_accounts ~85

Get list of all user investment accounts with their types and statuses. Returns account IDs needed for other operations (portfolio, positions, operations). Account types: TINKOFF (broker), TINKOFF_IIS (individual investment account), INVEST_BOX, INVEST_FUND, DFA (digital financial assets). closedDate of 1970-01-01 means the account is open.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_accrued_interests ~101

Get accrued coupon interest (NKD) history for a bond. Args: instrument_id: Bond ticker, FIGI, ISIN or UID from_date: Start date (YYYY-MM-DD), default: 30 days ago to_date: End date (YYYY-MM-DD, inclusive), default: now

NameTypeReqDescription
from_datestring––
instrument_idstringyes–
to_datestring––

No output schema declared.

No examples provided.

get_asset_fundamentals ~155

Get fundamental financial data for assets: P/E, P/BV, EPS, ROE, revenue, market cap, etc. The API keys fundamentals by asset UID, which is not the instrument UID; whatever is passed here is converted. Each item of the result carries its assetUid, and the items come in the order of the request. A value of 0 means the API has no figure (P/E of a company at a loss, EBITDA of a bank), not zero. Bonds and funds have no fundamentals. Args: assets: Comma-separated list of tickers, FIGIs, ISINs, instrument UIDs or asset UIDs

NameTypeReqDescription
assetsstringyes–

No output schema declared.

No examples provided.

get_asset_reports ~98

Get upcoming and past earnings report dates for an instrument's issuer. Args: instrument_id: Instrument ticker, FIGI, ISIN or UID from_date: Start date (YYYY-MM-DD), default: now to_date: End date (YYYY-MM-DD, inclusive), default: 1 year ahead

NameTypeReqDescription
from_datestring––
instrument_idstringyes–
to_datestring––

No output schema declared.

No examples provided.

get_bond_by ~128

Get detailed bond info: maturity date, coupon rate, nominal, ACI, issue size, risk level. Args: id: Bond ticker, FIGI, ISIN or UID — which one it is gets recognised automatically id_type: Only needed with class_code: INSTRUMENT_ID_TYPE_TICKER. Otherwise leave the default. class_code: Board of a ticker (e.g. "TQBR"), to pick one listing out of several

NameTypeReqDescription
class_codestring––
idstringyes–
id_typestring––

No output schema declared.

No examples provided.

get_bond_coupons ~132

Get bond coupon payment schedule: dates, amounts, coupon periods. Args: figi: Deprecated, kept for existing callers — pass the FIGI as instrument_id instead instrument_id: Bond ticker, FIGI, ISIN or UID (required) from_date: Start date (YYYY-MM-DD), default: now to_date: End date (YYYY-MM-DD, inclusive), default: 1 year from now

NameTypeReqDescription
figistring––
from_datestring––
instrument_idstring––
to_datestring––

No output schema declared.

No examples provided.

get_bond_events ~276

Get bond events: coupon payments, offers (calls), maturity, conversions. Without dates the API returns only a window of a few years around today, so a bond's maturity or a distant offer needs an explicit from_date/to_date range to show up. A field of an event that is zero or empty is left out. A coupon event carries couponInterestRate, the coupon's rate in percent a year — the bond itself (get_bond_by) does not have it. Partial repayments (amortization) come as MTY events with operationType "OA" and `value` in percent of the nominal; the final repayment is the MTY event with operationType "OM". Args: instrument_id: Bond ticker, FIGI, ISIN or UID type: Event type filter (empty = all): CPN (coupon), CALL (offer), MTY (maturity and amortization), CONV (conversion) from_date: Start date (YYYY-MM-DD), default: chosen by the API to_date: End date (YYYY-MM-DD, inclusive), default: chosen by the API

NameTypeReqDescription
from_datestring––
instrument_idstringyes–
to_datestring––
typestring––

No output schema declared.

No examples provided.

get_candles ~436

Get historical candles (OHLCV) for an instrument. Returns {"columns": ["time", "open", "high", "low", "close", "volume", "volumeBuy", "volumeSell"], "candles": [...]}: one row per candle, oldest first, in the order of "columns". Volumes are in lots; the two columns splitting volume into buys and sells are there when the API has them. For day, week and month candles "time" is a date. "last_candle_complete": false appears when the last candle's period is still running — its close is the current price, not a close. A bond's prices are in percent of its nominal, not in money. Candles from before a split or a consolidation usually come recalculated to today's shares, while operations keep the prices and quantities of their day. The API limits the period one request may span: a day for minute candles, a week for 5-10 minute ones, 3 weeks for 15-30 minute ones, 3 months for hourly ones, 6 years for daily ones. A year of daily candles is about 22,000 characters; several years of them do not fit into a client's limit — ask for weekly or monthly candles instead. Args: instrument_id: Instrument ticker, FIGI, ISIN or UID from_date: Start date (YYYY-MM-DD), default: 30 days ago to_date: End date (YYYY-MM-DD, inclusive), default: now interval: Candle interval — CANDLE_INTERVAL_1_MIN, CANDLE_INTERVAL_5_MIN, CANDLE_INTERVAL_15_MIN, CANDLE_INTERVAL_HOUR, CANDLE_INTERVAL_DAY, CANDLE_INTERVAL_WEEK, CANDLE_INTERVAL_MONTH (also 5/10/30_SEC, 2/3/10/30_MIN, 2/4_HOUR)

NameTypeReqDescription
from_datestring––
instrument_idstringyes–
intervalstring––
to_datestring––

No output schema declared.

No examples provided.

get_close_prices ~100

Get previous trading session close prices for instruments. One record per requested identifier, in the order of the request. An identifier no instrument matches gives {"requested": ..., "error": ...} in its place. A bond's price is in percent of its nominal, not in money. Args: instrument_ids: Comma-separated list of tickers, FIGIs, ISINs or UIDs

NameTypeReqDescription
instrument_idsstringyes–

No output schema declared.

No examples provided.

get_consensus_forecasts ~215

Get the analyst consensus forecast for one instrument: target price, recommendation, number of analysts. GetConsensusForecasts has no server-side instrument filter — it only returns pages of forecasts for the whole instrument universe, keyed by asset UID. This resolves instrument_id to its asset UID, scans pages internally and returns just the matching item, or {"error": ...} if there is none. Args: instrument_id: Ticker, FIGI, ISIN, instrument UID or asset UID page_limit: Page size used while scanning (default: 100; a non-positive value means 100) max_pages: Safety cap on how many pages to scan before giving up (default: 50, at least 1) page_number: Deprecated and ignored, kept for existing callers: the tool reads the pages itself

NameTypeReqDescription
instrument_idstringyes–
max_pagesinteger––
page_limitinteger––
page_numberinteger––

No output schema declared.

No examples provided.

get_currency_by ~111

Get detailed currency instrument info. Args: id: Currency ticker, FIGI, ISIN or UID — which one it is gets recognised automatically id_type: Only needed with class_code: INSTRUMENT_ID_TYPE_TICKER. Otherwise leave the default. class_code: Board of a ticker (e.g. "TQBR"), to pick one listing out of several

NameTypeReqDescription
class_codestring––
idstringyes–
id_typestring––

No output schema declared.

No examples provided.

get_dividends ~116

Get dividend payment history and upcoming dividends for an instrument. Returns: record date, payment date, dividend per share, yield, currency. Args: instrument_id: Instrument ticker, FIGI, ISIN or UID from_date: Start date (YYYY-MM-DD), default: 2 years ago to_date: End date (YYYY-MM-DD, inclusive), default: 1 year ahead

NameTypeReqDescription
from_datestring––
instrument_idstringyes–
to_datestring––

No output schema declared.

No examples provided.

get_etf_by ~123

Get detailed ETF/fund info: management fee, tracking index, rebalance frequency. Args: id: ETF ticker, FIGI, ISIN or UID — which one it is gets recognised automatically id_type: Only needed with class_code: INSTRUMENT_ID_TYPE_TICKER. Otherwise leave the default. class_code: Board of a ticker (e.g. "TQBR"), to pick one listing out of several

NameTypeReqDescription
class_codestring––
idstringyes–
id_typestring––

No output schema declared.

No examples provided.

get_favorites ~16

Get list of user's favorite instruments.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_forecast_by ~62

Get investment house price forecasts for an instrument. Returns: analyst name, target price, recommendation (buy/hold/sell), date. Args: instrument_id: Instrument ticker, FIGI, ISIN or UID

NameTypeReqDescription
instrument_idstringyes–

No output schema declared.

No examples provided.

get_future_by ~119

Get detailed futures contract info: expiration, basic asset, margin requirements. Args: id: Future ticker, FIGI, ISIN or UID — which one it is gets recognised automatically id_type: Only needed with class_code: INSTRUMENT_ID_TYPE_TICKER. Otherwise leave the default. class_code: Board of a ticker (e.g. "TQBR"), to pick one listing out of several

NameTypeReqDescription
class_codestring––
idstringyes–
id_typestring––

No output schema declared.

No examples provided.

get_instrument_by ~139

Get detailed instrument info by its identifier. Returns: name, ticker, figi, uid, lot size, currency, country, sector, trading status, etc. Args: id: Instrument ticker, FIGI, ISIN or UID — which one it is gets recognised automatically id_type: Only needed with class_code: INSTRUMENT_ID_TYPE_TICKER. Otherwise leave the default. class_code: Board of a ticker (e.g. "TQBR"), to pick one listing out of several

NameTypeReqDescription
class_codestring––
idstringyes–
id_typestring––

No output schema declared.

No examples provided.

get_last_prices ~107

Get last trade prices for one or more instruments. One record per requested identifier, in the order of the request, each with its ticker and classCode. An identifier no instrument matches gives {"requested": ..., "error": ...} in its place. A bond's price is in percent of its nominal, not in money. Args: instrument_ids: Comma-separated list of tickers, FIGIs, ISINs or UIDs

NameTypeReqDescription
instrument_idsstringyes–

No output schema declared.

No examples provided.

get_margin_attributes ~52

Get margin trading attributes for an account: liquid portfolio value, starting/minimal margin, funds sufficiency. Args: account_id: Account ID (get from get_accounts)

NameTypeReqDescription
account_idstringyes–

No output schema declared.

No examples provided.

get_operations ~448

Get list of operations (transactions) for an account within a date range. Returns: buys, sells, dividends, coupons, taxes, commissions, deposits, withdrawals, etc. Each operation has: id, operationType (the code, e.g. OPERATION_TYPE_BUY), type (the same in Russian words), date, state, payment, price, quantity, quantityRest, figi, instrumentUid, positionUid, trades. A field that is zero or empty is left out; assetUid is left out too. Canceled orders are operations as well, and carry the quantity and the payment they asked for: pass state="EXECUTED" before adding up money or quantities. quantity is what the order asked for and quantityRest what was not executed, so the executed quantity is their difference. A bond repayment has no quantity. Prices and quantities are as they were at the time: unlike candles, they are not adjusted for later splits. Note: this method has no paging. An operation is about 450 characters, so about 100 of them fit into a client's limit, and a month of an active account can be twice that — keep the range to a week or two, or use get_operations_by_cursor, which pages. The API returns no more than 1000 operations, the latest ones; when that happens the result starts with a "note" saying so, and the earlier operations are not in it. Args: account_id: Account ID from_date: Start date (YYYY-MM-DD), default: 14 days ago — about as much as a client's limit takes for an active account to_date: End date (YYYY-MM-DD, inclusive), default: now state: Filter by state: EXECUTED, CANCELED, PROGRESS (empty = all) figi: Filter by instrument — FIGI, ticker, ISIN or UID (empty = all instruments)

NameTypeReqDescription
account_idstringyes–
figistring––
from_datestring––
statestring––
to_datestring––

No output schema declared.

No examples provided.

get_operations_by_cursor ~668

Get operations with cursor-based pagination. Better for large histories. Returns hasNext and nextCursor for pagination: pass nextCursor as cursor to get the next page. Each operation item includes detailed info: id, type (the code, e.g. OPERATION_TYPE_BUY), name and description, state, date, payment, price, commission, yield, accruedInt, quantity, quantityDone, quantityRest, ticker, classCode, figi, instrumentType, instrumentUid, positionUid, tradesInfo.trades (the trades of the order) and childOperations (its commissions and taxes). A field that is zero or empty is left out, and so are fields that repeat another one or the request (instrumentKind, assetUid, brokerAccountId, the per-item cursor). Canceled orders are operations as well, and carry the quantity and the payment they asked for — a canceled buy with a positive payment, where an executed one is negative: pass state="EXECUTED" before adding up money or quantities. quantity is what the order asked for, quantityDone what was executed (left out when nothing was) and quantityRest what was not — an order can be executed in part. A bond repayment has no quantity. Prices and quantities are as they were at the time: unlike candles, they are not adjusted for later splits. positionUid is the key of a position: one paper can come under several figi and instrumentUid. The API can send an operation twice under one id; within a page the two are merged, across pages add up by unique id. Common operation types: BUY, SELL, DIVIDEND, COUPON, TAX, BOND_TAX, INPUT, OUTPUT, BROKER_FEE, BOND_REPAYMENT_FULL, BOND_REPAYMENT; DIV_EXT is a dividend paid out to a card, which never reaches the account. Args: account_id: Account ID from_date: Start date (YYYY-MM-DD), default: 1 year ago to_date: End date (YYYY-MM-DD, inclusive), default: now cursor: Cursor from previous response for pagination limit: Number of operations per page (1-1000, default: 50; a page of 50 is about 28,000 characters, and a clien…

NameTypeReqDescription
account_idstringyes–
cursorstring––
from_datestring––
instrument_idstring––
limitinteger––
operation_typesstring––
statestring––
to_datestring––
without_commissionsboolean––
without_tradesboolean––

No output schema declared.

No examples provided.

get_order_book ~92

Get order book (market depth) for an instrument: bids, asks, last price, spread. A bond's prices are in percent of its nominal, not in money. Args: instrument_id: Instrument ticker, FIGI, ISIN or UID depth: Order book depth 1-50 (default: 20)

NameTypeReqDescription
depthinteger––
instrument_idstringyes–

No output schema declared.

No examples provided.

get_order_state ~58

Get detailed status of a specific order: execution status, filled quantity, average price. Args: account_id: Account ID order_id: Order ID

NameTypeReqDescription
account_idstringyes–
order_idstringyes–

No output schema declared.

No examples provided.

get_orders ~55

Get list of active (pending) orders for an account. Returns: order_id, direction, type, status, price, quantity, instrument info. Args: account_id: Account ID

NameTypeReqDescription
account_idstringyes–

No output schema declared.

No examples provided.

get_portfolio ~279

Get full portfolio for an account: total values by asset type, all positions with prices, yields, and quantities. Each position has ticker, classCode, figi, instrumentUid, positionUid, instrumentType, quantity, averagePositionPrice, currentPrice, expectedYield, dailyYield, currentNkd (bonds) and its `currency`. Amounts are plain numbers; a field that is zero or false is left out, and so are the two fields the API has deprecated. expectedYield and dailyYield of a position are amounts of money in the position's currency, not percentages; the portfolio's own expectedYield, at the top level, is a percentage. A bond's averagePositionPrice and currentPrice are money per bond, and currentNkd is the accrued interest per bond in the same currency — while get_last_prices, get_candles and get_order_book give a bond's price in percent of its nominal. positionUid is the key of a position: one paper can come under several figi and instrumentUid (its listings), all with the same positionUid. Args: account_id: Account ID (get from get_accounts) currency: Portfolio currency — RUB, USD, or EUR (default: RUB)

NameTypeReqDescription
account_idstringyes–
currencystring––

No output schema declared.

No examples provided.

get_positions ~135

Get all positions in an account: securities, futures, options, and cash balances. Unlike get_portfolio, this returns raw position balances without price calculations. A field that is zero or false (blocked, exchangeBlocked) is left out. balance is a string holding an integer — for a fund held in fractions of a unit it is cut down to whole units, and the exact quantity is in get_portfolio; positionUid is the key of the position, the same one the portfolio and the operations carry. Args: account_id: Account ID (get from get_accounts)

NameTypeReqDescription
account_idstringyes–

No output schema declared.

No examples provided.

get_share_by ~126

Get detailed share (stock) info: sector, dividend yield, IPO date, issue size, country. Args: id: Share ticker, FIGI, ISIN or UID — which one it is gets recognised automatically id_type: Only needed with class_code: INSTRUMENT_ID_TYPE_TICKER. Otherwise leave the default. class_code: Board of a ticker (e.g. "TQBR"), to pick one listing out of several

NameTypeReqDescription
class_codestring––
idstringyes–
id_typestring––

No output schema declared.

No examples provided.

get_stock_snapshot ~285

Get a one-call overview of a share: fundamentals, recent price change, and analyst consensus. Convenience wrapper around FindInstrument + GetInstrumentBy + GetAssetFundamentals + GetCandles + GetConsensusForecasts, so a caller doesn't need separate round trips (and the manual ticker → UID → asset UID resolution) to get a compact picture of one share. Returns ticker, class_code, uid, asset_uid and name of the share it resolved to — check them when the query is ambiguous — plus price, fundamentals and consensus. Returns {"error": ...} if no share matches. price holds last_close and last_close_date (the latest finished session), change_pct over change_sessions finished sessions, and — only while today's session is still open — current_price, which is not a close. Args: ticker: Ticker, name, ISIN, or FIGI of a share (searched with FindInstrument; an exact ticker/ISIN/FIGI match is preferred over the first search hit) candle_days: Number of daily candles (trading sessions) the price change spans (default: 5) class_code: Optional class code to disambiguate listings (e.g. "TQBR")

NameTypeReqDescription
candle_daysinteger––
class_codestring––
tickerstringyes–

No output schema declared.

No examples provided.

get_tech_analysis ~454

Get technical analysis indicators (SMA, EMA, RSI, MACD, BB) for an instrument. Returns technicalIndicators: one item per interval with a timestamp and the indicator's values — signal (SMA, EMA, RSI), macd and signal (MACD), or middleBand, upperBand and lowerBand (BB). Args: instrument_id: Instrument ticker, FIGI, ISIN or UID indicator_type: INDICATOR_TYPE_SMA, INDICATOR_TYPE_EMA, INDICATOR_TYPE_RSI, INDICATOR_TYPE_MACD, INDICATOR_TYPE_BB from_date: Start date (YYYY-MM-DD), default: 90 days ago to_date: End date (YYYY-MM-DD, inclusive), default: now interval: INDICATOR_INTERVAL_ONE_DAY (default), _ONE_HOUR, _WEEK, _MONTH and the minute and hour steps listed in the schema. The API names intervals differently here than in get_candles; the CANDLE_INTERVAL_* names of the same steps are taken too. type_of_price: TYPE_OF_PRICE_CLOSE, TYPE_OF_PRICE_OPEN, TYPE_OF_PRICE_HIGH, TYPE_OF_PRICE_LOW, TYPE_OF_PRICE_AVG length: Indicator period in intervals (default: 14); MACD ignores it deviation: BB only — number of standard deviations between the middle and outer bands (default: 2) fast_length: MACD only — period of the fast EMA (default: 12) slow_length: MACD only — period of the slow EMA (default: 26) signal_smoothing: MACD only — period of the signal line (default: 9)

NameTypeReqDescription
deviationnumber––
fast_lengthinteger––
from_datestring––
indicator_typestringyes–
instrument_idstringyes–
intervalstring––
lengthinteger––
signal_smoothinginteger––
slow_lengthinteger––
to_datestring––
type_of_pricestring––

No output schema declared.

No examples provided.

get_trading_schedules ~108

Get trading schedules for exchanges: trading hours, auction times, clearing times. Args: exchange: Exchange name (e.g. "MOEX", "SPB"). Empty = all exchanges. from_date: Start date (YYYY-MM-DD), default: today to_date: End date (YYYY-MM-DD, inclusive), default: 7 days ahead

NameTypeReqDescription
exchangestring––
from_datestring––
to_datestring––

No output schema declared.

No examples provided.

get_trading_status ~53

Get current trading status for an instrument: is it tradeable, auction phase, etc. Args: instrument_id: Instrument ticker, FIGI, ISIN or UID

NameTypeReqDescription
instrument_idstringyes–

No output schema declared.

No examples provided.

get_user_info ~25

Get user information: tariff, qualified investor status, premium status, risk level.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_withdraw_limits ~49

Get available withdrawal limits for an account: free cash, blocked amounts, futures guarantees. Args: account_id: Account ID (get from get_accounts)

NameTypeReqDescription
account_idstringyes–

No output schema declared.

No examples provided.

list_bonds ~157

Get the full reference list of bonds: every field of every bond. A dump for scripts, not something to read: about 1,600 bonds and 2.4 MB of JSON with INSTRUMENT_STATUS_BASE — far more than fits in a model's context; a client saves such a result to a file or refuses it. INSTRUMENT_STATUS_ALL is 38 MB, and the API drops the connection before sending it all. To find particular bonds use find_instrument with instrument_kind="bond", and get_bond_by for the details of one. Args: instrument_status: INSTRUMENT_STATUS_BASE (tradeable) or INSTRUMENT_STATUS_ALL

NameTypeReqDescription
instrument_statusstring––

No output schema declared.

No examples provided.

list_currencies ~77

Get list of all available currency instruments. Small enough to read: about 15 instruments and 13 KB with INSTRUMENT_STATUS_BASE, twice that with INSTRUMENT_STATUS_ALL. Args: instrument_status: INSTRUMENT_STATUS_BASE (tradeable) or INSTRUMENT_STATUS_ALL

NameTypeReqDescription
instrument_statusstring––

No output schema declared.

No examples provided.

list_etfs ~143

Get the full reference list of ETFs and funds: every field of every fund. A dump for scripts, not something to read: about 280 funds and 300 KB of JSON with INSTRUMENT_STATUS_BASE, 2.3 MB with INSTRUMENT_STATUS_ALL — more than fits in a model's context; a client saves such a result to a file or refuses it. To find particular funds use find_instrument with instrument_kind="etf", and get_etf_by for one. Args: instrument_status: INSTRUMENT_STATUS_BASE (tradeable) or INSTRUMENT_STATUS_ALL

NameTypeReqDescription
instrument_statusstring––

No output schema declared.

No examples provided.

list_futures ~143

Get the full reference list of futures contracts: every field of every contract. A dump for scripts, not something to read: about 530 contracts and 700 KB of JSON with INSTRUMENT_STATUS_BASE, 3.5 MB with INSTRUMENT_STATUS_ALL — far more than fits in a model's context; a client saves such a result to a file or refuses it. To find particular contracts use find_instrument with instrument_kind="futures", and get_future_by for one. Args: instrument_status: INSTRUMENT_STATUS_BASE (tradeable) or INSTRUMENT_STATUS_ALL

NameTypeReqDescription
instrument_statusstring––

No output schema declared.

No examples provided.

list_shares ~140

Get the full reference list of shares (stocks): every field of every share. A dump for scripts, not something to read: about 1,900 shares and 2 MB of JSON with INSTRUMENT_STATUS_BASE, 8 MB with INSTRUMENT_STATUS_ALL — far more than fits in a model's context; a client saves such a result to a file or refuses it. To find particular shares use find_instrument, and get_share_by for the details of one. Args: instrument_status: INSTRUMENT_STATUS_BASE (tradeable) or INSTRUMENT_STATUS_ALL

NameTypeReqDescription
instrument_statusstring––

No output schema declared.

No examples provided.

Common questions

What is the T-Bank Invest (read-only) MCP server?

T-Bank Invest (read-only) is an MCP server listed in the public MCP registry as io.github.Sicness/t-bank-invest-mcp-read-only. Read-only T-Bank (Tinkoff) Invest API: portfolio, operations, instruments, market data. This page covers its PyPI package (t-bank-invest-mcp-read-only).

Is the T-Bank Invest (read-only) MCP server safe to use?

T-Bank Invest (read-only) scores 76 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 8 October 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the T-Bank Invest (read-only) MCP server expose?

T-Bank Invest (read-only) exposes 39 tools: get_accounts, get_user_info, get_margin_attributes, get_portfolio, get_positions, and 34 more. Their descriptions and schemas cost roughly 6,381 tokens of context every time the server is loaded.

Is the T-Bank Invest (read-only) MCP server still maintained?

T-Bank Invest (read-only) is still listed as active in the MCP registry. We last reached this channel on 8 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the T-Bank Invest (read-only) MCP server under?

T-Bank Invest (read-only) declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.