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.
Available components
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.
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
claude mcp add sicness-t-bank-invest-mcp-read-only -- uvx t-bank-invest-mcp-read-only
{
"mcpServers": {
"sicness-t-bank-invest-mcp-read-only": {
"command": "uvx",
"args": [
"t-bank-invest-mcp-read-only"
]
}
}
} {
"servers": {
"sicness-t-bank-invest-mcp-read-only": {
"command": "uvx",
"args": [
"t-bank-invest-mcp-read-only"
]
}
}
} codex mcp add sicness-t-bank-invest-mcp-read-only -- uvx t-bank-invest-mcp-read-only
{
"$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
}
}
} openclaw mcp add sicness-t-bank-invest-mcp-read-only --command uvx --arg t-bank-invest-mcp-read-only
mcp_servers:
sicness-t-bank-invest-mcp-read-only:
command: "uvx"
args: ["t-bank-invest-mcp-read-only"] {
"McpServers": {
"sicness-t-bank-invest-mcp-read-only": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"t-bank-invest-mcp-read-only"
]
}
}
} assistant mcp add sicness-t-bank-invest-mcp-read-only -t stdio -c uvx -a t-bank-invest-mcp-read-only
{
"mcpServers": {
"sicness-t-bank-invest-mcp-read-only": {
"command": "uvx",
"args": [
"t-bank-invest-mcp-read-only"
]
}
}
} 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.
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 →
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 →
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)
| Name | Type | Req | Description |
|---|---|---|---|
| instrument_kind | string | – | – |
| limit | integer | – | – |
| query | string | yes | – |
| tradable_only | boolean | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| from_date | string | – | – |
| instrument_id | string | yes | – |
| to_date | string | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| assets | string | yes | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| from_date | string | – | – |
| instrument_id | string | yes | – |
| to_date | string | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| class_code | string | – | – |
| id | string | yes | – |
| id_type | string | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| figi | string | – | – |
| from_date | string | – | – |
| instrument_id | string | – | – |
| to_date | string | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| from_date | string | – | – |
| instrument_id | string | yes | – |
| to_date | string | – | – |
| type | string | – | – |
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)
| Name | Type | Req | Description |
|---|---|---|---|
| from_date | string | – | – |
| instrument_id | string | yes | – |
| interval | string | – | – |
| to_date | string | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| instrument_ids | string | yes | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| instrument_id | string | yes | – |
| max_pages | integer | – | – |
| page_limit | integer | – | – |
| page_number | integer | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| class_code | string | – | – |
| id | string | yes | – |
| id_type | string | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| from_date | string | – | – |
| instrument_id | string | yes | – |
| to_date | string | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| class_code | string | – | – |
| id | string | yes | – |
| id_type | string | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| instrument_id | string | yes | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| class_code | string | – | – |
| id | string | yes | – |
| id_type | string | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| class_code | string | – | – |
| id | string | yes | – |
| id_type | string | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| instrument_ids | string | yes | – |
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)
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | – |
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)
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | – |
| figi | string | – | – |
| from_date | string | – | – |
| state | string | – | – |
| to_date | string | – | – |
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…
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | – |
| cursor | string | – | – |
| from_date | string | – | – |
| instrument_id | string | – | – |
| limit | integer | – | – |
| operation_types | string | – | – |
| state | string | – | – |
| to_date | string | – | – |
| without_commissions | boolean | – | – |
| without_trades | boolean | – | – |
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)
| Name | Type | Req | Description |
|---|---|---|---|
| depth | integer | – | – |
| instrument_id | string | yes | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | – |
| order_id | string | yes | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | – |
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)
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | – |
| currency | string | – | – |
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)
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| class_code | string | – | – |
| id | string | yes | – |
| id_type | string | – | – |
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")
| Name | Type | Req | Description |
|---|---|---|---|
| candle_days | integer | – | – |
| class_code | string | – | – |
| ticker | string | yes | – |
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)
| Name | Type | Req | Description |
|---|---|---|---|
| deviation | number | – | – |
| fast_length | integer | – | – |
| from_date | string | – | – |
| indicator_type | string | yes | – |
| instrument_id | string | yes | – |
| interval | string | – | – |
| length | integer | – | – |
| signal_smoothing | integer | – | – |
| slow_length | integer | – | – |
| to_date | string | – | – |
| type_of_price | string | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| exchange | string | – | – |
| from_date | string | – | – |
| to_date | string | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| instrument_id | string | yes | – |
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)
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| instrument_status | string | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| instrument_status | string | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| instrument_status | string | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| instrument_status | string | – | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| instrument_status | string | – | – |
No output schema declared.
No examples provided.
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.