prop-firm-rules: prop firm drawdown rules dataset + calculator (JS & Python)
MCP serverDev toolsSourced prop-firm daily-loss and max-drawdown rules and a drawdown-room checker. Read-only, no auth.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use prop-firm-rules: prop firm drawdown rules dataset + calculator (JS & Python) to list firms
Install prop-firm-rules: prop firm drawdown rules dataset + calculator (JS & Python)
The server’s own address, for the clients that take one directly. Or connect ahel once and every client you use reads it from one address, with the account kept on ahel rather than in each client’s config.
Claude Code
claude mcp add --transport http --scope user prop-firm-rules-prop-firm-drawdo 'https://floorguard-kappa.vercel.app/api/mcp'Run it once in your project, then open /mcp to approve any sign-in the server asks for.
Claude Desktop
https://floorguard-kappa.vercel.app/api/mcpAdd a custom connector in Settings, paste this address, and approve the sign-in.
Cursor
cursor://anysphere.cursor-deeplink/mcp/install?name=prop-firm-rules-prop-firm-drawdo&config=eyJ1cmwiOiJodHRwczovL2Zsb29yZ3VhcmQta2FwcGEudmVyY2VsLmFwcC9hcGkvbWNwIn0=Open the link and Cursor adds the server at that address.
ChatGPT
https://floorguard-kappa.vercel.app/api/mcpIn Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.
Codex
codex mcp add prop-firm-rules-prop-firm-drawdo --url 'https://floorguard-kappa.vercel.app/api/mcp'Run it once, then sign in with codex mcp login prop-firm-rules-prop-firm-drawdo if the server asks for an account.
From the project's README
As published by kburrus64-max/prop-firm-rules in README.md.
▶ Live calculator (free, no sign-up, runs in your browser): floorguard-kappa.vercel.app/tools/drawdown-calculator.html
An open, sourced dataset of prop-firm risk rules (daily loss limit, max drawdown, static vs trailing, lock level, daily reset time) for FTMO, FundedNext, The5ers, E8 Markets, FundingPips, Alpha Capital, Blue Guardian, Topstep and Apex Trader Funding, plus a tiny zero-dependency drawdown calculator library in JavaScript and Python.
Every rule links to the firm's own help or rules page and carries a lastVerified date. Values that could not be
confirmed on an official page are flagged verified: false or listed in unverifiedFields.
Try it without code: the free prop firm drawdown calculator on FloorGuard uses this same dataset and math in your browser.
Disclaimer: rules change. Prop firms update their rules often, and many let you pick different percentages at checkout. This data was checked on the date shown for each program. Always verify with your firm's current rules and your account dashboard before relying on any number here. Not affiliated with any prop firm; firm names are trademarks of their owners. Not financial advice.
Rules table (last verified 2026-10-04)
| Firm | Program | Daily loss limit | Max drawdown | Daily reset | Source | Verified |
|---|---|---|---|---|---|---|
| FTMO | FTMO Challenge 2-Step | 5% of initial balance, from day-start balance | 10%, Static | 00:00 CE(S)T (Prague) | 1 2 3 | 2026-10-04 |
| FTMO | FTMO Challenge 1-Step | 3% of initial balance, from day-start balance | 10%, Trailing (end-of-day) | 00:00 CE(S)T (Prague) | 1 | 2026-10-04 |
| FundedNext | Stellar 2-Step (CFD) | 5% of initial balance, from day-start balance | 10%, Static | 00:00 server time (GMT+2, GMT+3 in DST) | 1 2 3 | 2026-10-04 |
| The5ers | High Stakes (2-Step) | 5% of higher of day-start balance/equity | 10%, Static | 00:00 MT5 server time (GMT+2 winter, GMT+3 summer) | 1 2 | 2026-10-04 |
| E8 Markets | E8 One (default 4% daily / 6% dynamic) | 4% of initial balance, from day-start balance | 6%, Trailing (closed balance), locks at initial | 00:00 server time (time zone not stated on the page) | 1 2 | 2026-10-04 (unverified: reset time zone) |
| FundingPips | 2 Step Standard (5% daily) | 5% of higher of day-start balance/equity | 10%, Static | 00:00 platform time (UTC+3) | 1 | 2026-10-04 |
| FundingPips | 2 Step Standard (3% daily add-on) | 3% of higher of day-start balance/equity | 10%, Static | 00:00 platform time (UTC+3) | 1 | 2026-10-04 |
| Alpha Capital | Alpha Pro 10% | 5% of day-start balance | 10%, Static | 00:00 GMT+3 (broker time) | 1 2 3 | 2026-10-04 |
| Alpha Capital | Alpha Pro 8% | 4% of day-start balance | 8%, Static | 00:00 GMT+3 (broker time) | 1 2 | 2026-10-04 |
| Blue Guardian | 2 Step Standard | 4% of initial balance, from higher of day-start balance/equity | 8%, Static | 5:00 pm EST (New York) | 1 | 2026-10-04 |
| Topstep | Trading Combine (futures) | None (see notes) | $2,000 on 50K, $3,000 on 100K, $4,500 on 150K, Trailing (end-of-day), locks at initial | End of trading day; Topstep's session is commonly cited as ending 3:10 pm CT / new day 5:00 pm CT (not confirmed on an official page) | 1 2 | 2026-10-04 (unverified: reset time) |
| Apex Trader Funding | EOD Evaluation (futures) | $500 on 25K, $1,000 on 50K, $1,500 on 100K, $2,000 on 150K (pauses trading, not a breach) | $1,000 on 25K, $2,000 on 50K, $3,000 on 100K, $4,000 on 150K, Trailing (end-of-day) | Trading day resets 6:00 pm ET | 1 | 2026-10-04 |
| Apex Trader Funding | Intraday Trailing Evaluation (futures) | None (see notes) | $1,000 on 25K, $2,000 on 50K, $3,000 on 100K, $4,000 on 150K, Trailing (intraday, incl. open P/L) | Threshold does not reset daily | 1 | 2026-10-04 |
"Day-start" means the value at the firm's daily reset. "Higher of day-start balance/equity" means open profit at the
reset raises the reference. Every limit is checked against equity (open P/L counts) unless the notes say otherwise.
Per-program notes (for example Topstep's optional daily loss limit, Apex lock behaviour, Blue Guardian's Guardian
Shield) are in data/firms.json.
The dataset also includes each firm's published copy-trading, multi-account and automation (EA/bot) policy
(policy on each firm), with quotes and sources. unknown means the firm's pages did not answer the question.
What's in the repo
| Path | What |
|---|---|
data/firms.json | The dataset (9 firms, 13 programs). Same content as data/firms.yaml |
js/calc.mjs | Pure calculator, works in browsers and Node (no DOM, no deps) |
js/index.mjs | Node entry: calculator + bundled dataset + getProgram, getFirm, check helpers |
python/prop_firm_rules/ | Python port with the same semantics (stdlib only) |
js/test/, python/tests/ | Tests built mostly from the firms' own published worked examples |
scripts/rules-table.mjs | Regenerates the table above |
Usage
JavaScript (Node 18+)
git clone https://github.com/kburrus64-max/prop-firm-rules && cd prop-firm-rules
node --test js/test/
import { check, getFirm } from './js/index.mjs';
// FTMO 2-Step, $100k: balance closed yesterday at $102,000, equity now $101,200
const r = check('ftmo_2step', {
size: 100000, currentBalance: 102000, currentEquity: 101200, todayPnl: -800,
stopDistance: 20, valuePerUnit: 10, bufferPct: 10, // 20-pip stop, $10/pip/lot, keep 10% buffer
});
console.log(r.daily.floor, r.daily.room); // 97000 4200
console.log(r.drawdown.floor); // 90000 (static)
console.log(r.maxLots, r.bindingLimit, r.status); // 18.5 'daily' 'green'
console.log(getFirm('topstep').policy.remoteServerTrading); // 'banned'
In the browser, import js/calc.mjs and fetch data/firms.json:
import { evaluate } from './calc.mjs';
const data = await (await fetch('/data/firms.json')).json();
const program = data.firms.find(f => f.id === 'topstep').programs[0];
evaluate({ program, size: 50000, currentBalance: 50000, currentEquity: 50000, highWaterMark: 50500 }).drawdown.floor; // 48500
Python 3.9+
import sys; sys.path.insert(0, "python")
import prop_firm_rules as pfr
r = pfr.check("apex_intraday_eval", size=50000, current_balance=50000, current_equity=50900, today_pnl=900)
print(r["drawdown"]["floor"]) # 48900.0: the threshold trailed the open-profit peak
python -m unittest discover -s python/tests
evaluate() inputs and outputs
| Input | Meaning |
|---|---|
program / program id | A program object from the dataset (or an id for check) |
size, initial | Account size and starting balance (initial defaults to size) |
currentBalance, currentEquity | Now. The lower of the two is compared with each floor (conservative) |
todayPnl | Change in equity since the firm's daily reset (closed + open) |
dayStartBalance, dayStartEquity | Values at the reset (optional; derived from todayPnl if omitted) |
highWaterMark | The high a trailing drawdown trails from (EOD balance, closed balance, or intraday peak) |
customDailyAmount | Your own daily limit for programs without a mandatory one (e.g. Topstep's optional add-on) |
stopDistance, valuePerUnit, lotStep, bufferPct | Position-size check: largest size whose stop-out keeps you above the tighter floor |
Output: daily and drawdown (floor, room, amount, status), maxLots, bindingLimit and an overall
status of green (more than 50% of each allowance left), amber (50% or less) or red (20% or less, or breached).
Python uses the same names in snake_case (current_balance, high_water_mark, ...).
Use from AI agents
The same dataset is served live, free and read-only (no key, CORS open, ~60 requests/minute per IP) by FloorGuard:
- MCP server (Streamable HTTP, no auth):
https://floorguard-kappa.vercel.app/api/mcp- Tools:
list_firms,get_rules(program),check_drawdown(program, accountSize, currentEquity, ...) - Listed in the official MCP Registry as
io.github.kburrus64-max/prop-firm-rules(seeserver.json). - Client config example:
{"mcpServers": {"prop-firm-rules": {"type": "http", "url": "https://floorguard-kappa.vercel.app/api/mcp"}}}
- Tools:
- REST API:
/api/v1/firms,/api/v1/rules?program=ftmo_2step,/api/v1/check; OpenAPI 3.1 at/api/v1/openapi.json. - A2A agent card:
/.well-known/agent-card.json - llms.txt:
/llms.txt
Informational only, not financial advice; verify every value with the firm.
Static vs trailing drawdown in 30 seconds
- Static: the floor is fixed at initial balance minus the allowance (FTMO 2-Step: $90,000 on $100k).
- Trailing end-of-day: the floor follows your highest end-of-day balance (Topstep MLL, FTMO 1-Step, Apex EOD).
- Trailing closed balance: follows your highest closed balance (E8 dynamic drawdown).
- Trailing intraday: follows your peak including open profit, in real time (Apex intraday).
- Lock: some trailing floors stop rising at a level such as the starting balance (Topstep, E8).
Longer explanations with sources: trailing vs static drawdown, FTMO daily loss rule, same 5% daily loss, different math.
Corrections welcome
Found a rule that changed? Open an issue with the firm's official URL and the quoted text (see CONTRIBUTING.md). Please don't submit values without an official source.
Limitations
- Commissions, swaps, slippage and server-side rounding are not modelled; firms' platforms can differ by a few dollars.
- Account-size lists marked
sizesVerified: falsewere not confirmed on an official page. - Programs with features this model does not cover (e.g. Blue Guardian funded-account Guardian Shield, consistency rules,
news restrictions, payout rules) are noted in
notesbut not calculated.
License
MIT. The dataset is a compilation of facts from the firms' public pages, with links back to them. Built by the team behind FloorGuard, a prop-account risk guard in development.
Tools it offers (3)
What this server listed when ahel dialed its public endpoint in Oct 2026, with no key and no account of yours. The names are the server’s own.
list_firmsget_rulescheck_drawdown
Advanced
- Delivery
- prop-firm-rules MCP server → your ahel connector (mcp.ahel.ai) → your AI.
- Item type
- mcp-server
- Key
io-github-kburrus64-max-prop-firm-rules- Source
- github.com/kburrus64-max/prop-firm-rules
- Hosted endpoint
https://floorguard-kappa.vercel.app/api/mcp
github.com/kburrus64-max/prop-firm-rules
More in Dev tools
MCP server · adarsh4052
More in Dev tools0nMCP
MCP server · 0nork
More in Dev toolsairtreks-mcp
MCP server · airtreks
More in Dev toolssportwizzard
MCP server · adamruehle
More in Dev toolsdraw.io
MCP server · jgraph
More in Dev toolsbilig-workpaper
MCP server · proompteng
More in Dev tools