pp-terminalSAFE
The Analytic Companion for Portfolio Performance
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://dev-investor.de/chat)
A powerful command-line interface (CLI) that allows programmatic access to Portfolio Performance data to offer a whole new level of insights into your assets.
pp-terminal is a lightweight tool for all the nice-to-have features that won't make it into the official Portfolio Performance app. This can be because of country-specific tax rules, complex Java implementation, highly individual requirements, too many edge-cases, etc.
Use Cases
You can run the single commands individually or pp-terminal can act as an MCP server to give AI models like Claude Opus, Gemini or Qwen access to your (anonymized) portfolio to help you answer questions like:
- "Give me an overview of my portfolio"
- "What do you think about my portfolio allocation? Am I overweight anywhere?"
- "Do I have enough cash to cover the upcoming Vorabpauschale taxes?"
- "I need 1k EUR after tax. Which securities should I sell to minimize taxes?"
Thís application supports specific tax concepts like FIFO, Sparer-Pauschbetrag, Grundfreibetrag), Günstigerprüfung and Teilfreistellungen).
[!IMPORTANT] I am not a tax consultant. All results of this application are just a non-binding indication and without guarantee. They may deviate from the actual values.
For example, pp-terminal includes a CLI command to calculate the Vorabpauschale (preliminary taxes) for Germany: ![Vorabpausch
f134342113ebOBSERVED · 2026-10-10Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add pp-terminal -- uvx pp-terminal
{
"mcpServers": {
"pp-terminal": {
"command": "uvx",
"args": [
"pp-terminal"
]
}
}
}Exposed tools (9)
8 read · 1 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
query_accounts | read | List all accounts with balances and validation warnings. |
query_cash_flows | read | Calculate cumulative deposits, withdrawals, and net contributions. |
query_fifo_lots | read | List all FIFO purchase lots with projected tax on hypothetical sale. |
query_securities | read | List all securities with current holdings and key metrics. |
simulate_sell_all | read | Simulate selling all shares and return a per-security summary with totals. |
simulate_sell_shares | write | Simulate selling shares of a specific security using FIFO order. |
simulate_sell_target_gross | read | Find the shares to sell to realize a target gross proceeds amount, drawing the least-taxed lots first. |
simulate_sell_target_net | read | Find the shares to sell to achieve a target net proceeds amount with minimal taxes. |
simulate_vap | read | Calculate German preliminary lump-sum tax (Vorabpauschale/VAP) per security for a given year (section 18 InvStG). |
Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (5)
.gitmodules
root = convert('<client><portfolio><transactions><entry><parent reference="../../.."/></entry></transactions></portfolio></client>')'../../../..', # beyond the root element
tests/fixtures/kommer.ids.xml
tests/fixtures/kommer.xml
Gates applied: no_behavioural_pass.
f134342113ebfull audit observations/trust-audit/mcp-server/ma4nn__pp-terminal.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-10 | f134342113eb | SAFE | B | 89 | first audit |
Questions
What is the pp-terminal MCP server?
The Analytic Companion for Portfolio Performance
What tools does pp-terminal expose?
9 in total: 8 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is pp-terminal safe to connect to an agent?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.
What credentials does pp-terminal need?
No credential environment variables were found in its source, so it appears to need none.
How does pp-terminal run?
It speaks stdio, so it runs as a local process your client starts. It is published on PyPI as pp-terminal.
How current is this page?
The grade is for one exact copy of the source (f134342113eb), read on 2026-10-10. The repository is watched and re-audited when it changes.