dsh × Trading 212

August 28, 2026 · View on GitHub

English | 简体中文

npm version

A read-only Trading 212 portfolio workspace for dsh. Configure your API credentials once, then inspect your holdings, transaction history, portfolio risks, and stock-level trade markers—or ask questions about your portfolio in any dsh conversation.

For personal research and information only. This plugin does not provide investment advice and cannot place, modify, or cancel orders.

Real dsh Trading 212 dashboard settings screen with no account values, positions, identity, or credentials shown

Real product screenshot. No account value, position, personal identity, API key, or API secret is shown.

Features

  • Guided Demo or Live API setup with persistent dsh credential storage
  • Portfolio value, cash, returns, FX impact, concentration, and pending-order overview
  • Holdings, order history, cash transactions, and dividends
  • ECharts stock price history with actual Trading 212 buy and sell fills overlaid
  • English and Chinese UI that follows dsh by default, with a manual override in Settings
  • Read-only trading212_portfolio and trading212_history tools for normal dsh conversations
  • Sanitized errors for authentication, permission, rate-limit, timeout, and upstream failures

Quick start

Requirements

  1. A working dsh installation.
  2. A Trading 212 API key and API secret. Start with a Demo key if possible.

Install

dsh plugin --profile web add --save-exact dsh-trading212@latest

Fully quit and reopen dsh. A native T212 tab appears next to Chat / Trajectory in the session header — click it to open the dashboard inside the chat panel.

Alternatively, download the .tgz package from GitHub Releases and install it locally:

dsh plugin --profile web add --save-exact ./dsh-trading212-<version>.tgz

Connect Trading 212

  1. Open the T212 dashboard and select the Demo or Live environment.
  2. Paste your API key and API secret, then select Test and save.
  3. Open the dashboard or return to dsh and ask a portfolio question.

Grant read-only access to:

  • Account data / account summary
  • Portfolio / positions
  • Orders / history

Do not grant permission to place, modify, or cancel orders. Trading 212 displays an API secret only once; create a new key if the secret is lost.

Official English documentation: Trading 212 API documentation · How can I generate an API key? · dsh plugin development guide

Ask from dsh

Example prompts:

Summarize my three largest positions and concentration risk.
Which positions are dragging down my unrealized return?
What currency exposure do I have, and are any orders still pending?

dsh calls the read-only tools when needed and receives normalized portfolio data. The plugin does not register any trading action.

Data and privacy

SourcePurposeData sent
Official Trading 212 APIAccount, positions, orders, fills, cash transactions, and dividendsAPI key and secret are used only to authenticate with Trading 212
Unofficial Yahoo Finance endpointDaily historical prices for individual stocksPublic instrument identifiers only; no credentials, quantities, or account values

Historical market prices may be delayed, incomplete, or temporarily unavailable. Trading 212 holdings and execution history remain available when Yahoo Finance fails.

Development

pnpm install
pnpm typecheck
pnpm test
pnpm pack --pack-destination dist

This repository follows the Harness plugin contract: src/index.ts exports name, inject, a same-name Config schema, and apply(ctx, config); tools are registered with ctx.tools.register(defineTool(...)); cordis.patch.yml is the bundle patch used for publishing.

For a local Harness Web run directly from source:

pnpm harness:dev

The command generates the ignored cordis.local.patch.yml, points its name at the repository's absolute src/index.ts path, and starts pnpm dsh web --patch ./cordis.local.patch.yml, matching Harness's local-plugin patch convention. Git installs run prepare to build lib/; the published bundle patch and package metadata are declared through dsh.bundle in package.json.

Main directories:

  • src/index.ts: dsh host, HTTP API, and read-only tools
  • src/portfolio-service.ts: credential persistence, caching, and request coordination
  • src/trading212.ts: Trading 212 client and response validation
  • src/market-data.ts: Yahoo Finance historical market data
  • src/client/index.tsx: native T212 conversation-view tab hosting the dashboard
  • src/app/: setup, portfolio, history, and instrument UI

Contributing

Issues and pull requests are welcome. Never include an API key, API secret, real account value, or real portfolio position in issues, screenshots, fixtures, or commits.

License

Licensed under the MIT License.