paper-trader-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| APCA_API_KEY_ID | No | Alpaca API key ID for historical data access. | |
| PAPER_TRADER_DB | No | Path to the SQLite database file. | ~/.local/share/paper-trader/paper-trader.sqlite3 |
| APCA_API_SECRET_KEY | No | Alpaca API secret key for historical data access. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| paper_trade_recordA | Durably record a simulation-only whole-share US-equity DAY entry intent; never sends a live or broker-paper order. Without submitted_at, the server timestamps receipt. Historical submitted_at requires backtest=true. Regular hours only: pre-open DAY orders wait for the open; after-close or non-session DAY orders later expire. |
| paper_trade_getA | Read one durable simulated trade with native structured intents, fills, itemized fees, raw selected quotes, and immutable evaluation snapshots. No market-data or broker call is made. |
| paper_trade_listA | List durable simulated trades, optionally filtered by state. No market-data or broker call is made. |
| paper_trade_evaluateA | Evaluate a pending simulated entry/exit or mark an open position using delayed historical consolidated SIP top-of-book quotes; no order is sent. Buys use ask, sells use bid, latency and displayed size are enforced, and fees are itemized. A fill's execution time is its submitted_at plus latency (or session open); quote_as_of identifies the latest qualifying quote used at or before that instant. For entries, a separate position mark uses as_of. If as_of is omitted, it means now minus 16 minutes—not latest/live data. Read outcome_reason, state_after, next_action, and warnings; never infer a fill from an indeterminate outcome. |
| paper_trade_closeA | Durably record a simulation-only market DAY exit intent for an open trade; never sends a live or broker-paper order and does not close immediately. Evaluate later, after the 16-minute SIP safety window, to estimate fill. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool targets a distinct lifecycle action: recording entry, recording exit, evaluating, reading one, and listing. The purposes are clearly separated by the verb (record, close, evaluate, get, list) and by the descriptive text, so an agent should not confuse them.
All tool names follow the same pattern: the resource prefix 'paper_trade' followed by a clear verb (_record, _get, _list, _evaluate, _close). This is a perfectly consistent verb_noun (or resource_verb) convention.
Five tools is well-scoped for a paper trading simulator. It covers the core operations without redundancy or bloat, fitting comfortably in the ideal 3-15 range.
The tool set covers a complete lifecycle: record entry intent, evaluate fills/marks, close exits, and query individual or all trades. No obvious gaps exist for simulation-only day trading; even potential missing operations like cancel are handled by day-order expiration.