Prop firm challenge rules, pass odds from your own trades, fees and rule changes. No affiliates.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
For a trader running two to five strategies on the same account. Merges their trades by date and reports how often they trade and lose on the same day, the worst day together against alone, whether they tend to win and lose together, and the odds together against each strategy alone on up to three accounts. Every trade needs a close date. Each strategy's profits are scaled from its own starting balance.
Up to three challenge ids. Leave out to use the three accounts where the combination does best.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http prop-firm-tools https://proppasscheck.com/mcp
For a trader running two to five strategies on the same account. Merges their trades by date and reports how often they trade and lose on the same day, the worst day together against alone, whether they tend to win and lose together, and the odds together against each strategy alone on up to three accounts. Every trade needs a close date. Each strategy's profits are scaled from its own starting balance.
| Argument | Type | Description |
|---|---|---|
| strategies* | array | |
| challenge_ids | array | Up to three challenge ids. Leave out to use the three accounts where the combination does best. |
{
"type": "object",
"required": [
"strategies"
],
"properties": {
"strategies": {
"type": "array",
"items": {
"type": "object",
"required": [
"trades",
"starting_balance"
],
"properties": {
"name": {
"type": "string",
"description": "A short name for the strategy."
},
"trades": {
"type": "array",
"items": {
"type": "object",
"required": [
"profit"
],
"properties": {
"date": {
"type": "string",
"description": "Close date, YYYY-MM-DD. Give it for every trade or for none."
},
"profit": {
"type": "number",
"description": "Profit (positive) or loss (negative) in account currency, after costs."
}
},
"additionalProperties": false
},
"maxItems": 5000,
"minItems": 1,
"description": "Closed trades in the order they closed."
},
"starting_balance": {
"type": "number",
"description": "The balance this strategy's test started from.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"maxItems": 5,
"minItems": 2
},
"challenge_ids": {
"type": "array",
"items": {
"type": "integer"
},
"maxItems": 3,
"description": "Up to three challenge ids. Leave out to use the three accounts where the combination does best."
}
},
"additionalProperties": false
}Puts two to six accounts side by side, rule by rule, and marks the rules that differ.
| Argument | Type | Description |
|---|---|---|
| ids* | array | Two to six challenge ids. |
{
"type": "object",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "integer"
},
"maxItems": 6,
"minItems": 2,
"description": "Two to six challenge ids."
}
},
"additionalProperties": false
}Runs the same trades (or headline numbers) at eight trade sizes, from a quarter to three times, against up to three accounts, and shows the pass and first-payout chance at each with the best size marked. Answers "should I risk less or more per trade on this challenge?". Give trades with starting_balance, or the four headline numbers.
| Argument | Type | Description |
|---|---|---|
| trades | array | Closed trades in the order they closed. |
| win_rate | number | Percentage of trades that win, for example 45. |
| challenge_ids* | array | One to three challenge ids. |
| reward_to_risk | number | Average win divided by average loss, for example 2 for a 1:2 strategy. |
| risk_per_trade | number | Percentage of the account lost on a losing trade, for example 1. |
| trades_per_day | number | Average trades per trading day, for example 1.5. |
| starting_balance | number | Needed with trades. |
{
"type": "object",
"required": [
"challenge_ids"
],
"properties": {
"trades": {
"type": "array",
"items": {
"type": "object",
"required": [
"profit"
],
"properties": {
"date": {
"type": "string",
"description": "Close date, YYYY-MM-DD. Give it for every trade or for none."
},
"profit": {
"type": "number",
"description": "Profit (positive) or loss (negative) in account currency, after costs."
}
},
"additionalProperties": false
},
"maxItems": 5000,
"minItems": 1,
"description": "Closed trades in the order they closed."
},
"win_rate": {
"type": "number",
"maximum": 99,
"minimum": 1,
"description": "Percentage of trades that win, for example 45."
},
"challenge_ids": {
"type": "array",
"items": {
"type": "integer"
},
"maxItems": 3,
"minItems": 1,
"description": "One to three challenge ids."
},
"reward_to_risk": {
"type": "number",
"maximum": 20,
"minimum": 0.1,
"description": "Average win divided by average loss, for example 2 for a 1:2 strategy."
},
"risk_per_trade": {
"type": "number",
"maximum": 10,
"minimum": 0.05,
"description": "Percentage of the account lost on a losing trade, for example 1."
},
"trades_per_day": {
"type": "number",
"maximum": 30,
"minimum": 0.1,
"description": "Average trades per trading day, for example 1.5."
},
"starting_balance": {
"type": "number",
"description": "Needed with trades.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Retests a trader's own closed trades on up to three accounts with a daily stop at several levels and with a cap of one to three trades a day (guards the PropPassCheck strategy builder can add to an EA, or a trader can follow by hand), and reports the one that lifts the chance of passing (or of a first payout on instant accounts) the most, with how much and a link to build it. Needs real trades with starting_balance; give dates when known so each day's trades stay together.
| Argument | Type | Description |
|---|---|---|
| scale | number | Trade size multiplier, default 1. |
| trades* | array | Closed trades in the order they closed. |
| challenge_ids* | array | One to three challenge ids. |
| trades_per_day | number | Only used when the trades have no dates. Default 2. |
| starting_balance* | number | The balance the trades started from. |
{
"type": "object",
"required": [
"trades",
"starting_balance",
"challenge_ids"
],
"properties": {
"scale": {
"type": "number",
"maximum": 10,
"minimum": 0.05,
"description": "Trade size multiplier, default 1."
},
"trades": {
"type": "array",
"items": {
"type": "object",
"required": [
"profit"
],
"properties": {
"date": {
"type": "string",
"description": "Close date, YYYY-MM-DD. Give it for every trade or for none."
},
"profit": {
"type": "number",
"description": "Profit (positive) or loss (negative) in account currency, after costs."
}
},
"additionalProperties": false
},
"maxItems": 5000,
"minItems": 1,
"description": "Closed trades in the order they closed."
},
"challenge_ids": {
"type": "array",
"items": {
"type": "integer"
},
"maxItems": 3,
"minItems": 1,
"description": "One to three challenge ids."
},
"trades_per_day": {
"type": "number",
"maximum": 30,
"minimum": 0.1,
"description": "Only used when the trades have no dates. Default 2."
},
"starting_balance": {
"type": "number",
"description": "The balance the trades started from.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}For up to five accounts: the chance of getting funded, then what the funded account does over its first six months (126 trading days): payouts on average, money to the trader after the split, how soon the first payout comes, how many funded accounts are lost, and what one attempt is worth counting those payouts. Each payout follows the account's rules; after a payout the profit comes out and the account carries on from its starting balance. Give trades with starting_balance, or the four headline numbers.
| Argument | Type | Description |
|---|---|---|
| trades | array | Closed trades in the order they closed. |
| win_rate | number | Percentage of trades that win, for example 45. |
| challenge_ids* | array | One to five challenge ids. |
| reward_to_risk | number | Average win divided by average loss, for example 2 for a 1:2 strategy. |
| risk_per_trade | number | Percentage of the account lost on a losing trade, for example 1. |
| trades_per_day | number | Average trades per trading day, for example 1.5. |
| starting_balance | number | Needed with trades: the balance the trades started from. |
Full rules for one account: profit targets, daily and maximum loss, drawdown type, minimum days, time limit, consistency rule, payout terms, trading restrictions on record (news, weekends, open losses, short trades), price, the firm's source page, the date checked, recent rule changes and any proof-checked payout reports for the firm. Takes a PropPassCheck account id.
| Argument | Type | Description |
|---|---|---|
| id* | integer | A PropPassCheck account id. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"description": "A PropPassCheck account id."
}
},
"additionalProperties": false
}Lists the prop firm accounts PropPassCheck tracks (evaluation challenges and instant funding), each with its id, targets, loss limits, price and the date the rules were last checked. Filter by firm, account type, market, drawdown type, price and the rules a trading style needs (no daily loss limit, no consistency rule, weekend holding, news trading).
| Argument | Type | Description |
|---|---|---|
| firm | string | Part of a firm name, for example "FTMO". Leave out for all firms. |
| type | string | Account type. |
| market | string | Forex and CFD firms, or futures firms. |
| drawdown | string | static: the maximum loss never moves. trailing: it follows the account up (including ones that lock at the start). |
| max_price | number | Only accounts with a recorded fee at or below this, in dollars. |
| news_trading | boolean | Leave out accounts recorded as restricting trading around news. |
| no_daily_limit | boolean | Only accounts with no daily loss limit. |
| weekend_holding | boolean |
List prices with the date tracking began, the lowest list price in the last 30 days and every price change the firm made. Name challenge ids or a firm, or leave both out for every account whose list price changed in the last 90 days. List prices only: PropPassCheck does not track discount codes or use affiliate links.
| Argument | Type | Description |
|---|---|---|
| firm | string | Or: part of a firm name, to test that firm's accounts. Leave both out to rank every account. |
| challenge_ids | array | Up to 10 PropPassCheck account ids. |
{
"type": "object",
"properties": {
"firm": {
"type": "string",
"description": "Or: part of a firm name, to test that firm's accounts. Leave both out to rank every account."
},
"challenge_ids": {
"type": "array",
"items": {
"type": "integer"
},
"maxItems": 10,
"description": "Up to 10 PropPassCheck account ids."
}
},
"additionalProperties": false
}Changes PropPassCheck has recorded to prop firms' rules, newest first: targets, loss limits, drawdown type, consistency rules, payouts, splits and prices, with the old and new value and whether the change is better or worse for traders. Filter by firm.
| Argument | Type | Description |
|---|---|---|
| firm | string | Part of a firm name. Leave out for all firms. |
| limit | integer | How many to return, default 20. |
{
"type": "object",
"properties": {
"firm": {
"type": "string",
"description": "Part of a firm name. Leave out for all firms."
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "How many to return, default 20."
}
},
"additionalProperties": false
}Eleven sample traders (breakout, trend following, mean reversion, scalping, swing trading, opening range breakout, day trading, high win rate, low win rate, position trading, and a grid sample with no edge) replayed 1,000 times against each account's rules: pass and first-payout chance, best risk per trade, typical days and the usual reason for failing. Give id for every style on one account, or style for the accounts where that style does best. They show how rules treat a style, not anyone's own odds.
| Argument | Type | Description |
|---|---|---|
| id | integer | A PropPassCheck account id. |
| style | string | A sample style, to rank accounts for it. |
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "A PropPassCheck account id."
},
"style": {
"enum": [
"breakout",
"trend-following",
"mean-reversion",
"scalping",
"swing-trading",
"opening-range-breakout",
"day-trading",
"high-win-rate",
"low-win-rate",
"position-trading",
"grid-martingale"
],
"type": "string",
"description": "A sample style, to rank accounts for it."
}
},
"additionalProperties": false
}For a trader with no trade list: estimates the chance of passing, the chance of a first payout and the likely fees per payout from a win rate, reward-to-risk, risk per trade and trades per day. It treats every win and every loss as the same size and every day as alike, so it is rougher than a test of real trades and usually a little optimistic.
| Argument | Type | Description |
|---|---|---|
| firm | string | Or: part of a firm name, to test that firm's accounts. Leave both out to rank every account. |
| win_rate* | number | Percentage of trades that win, for example 45. |
| challenge_ids | array | Up to 10 PropPassCheck account ids. |
| reward_to_risk* | number | Average win divided by average loss, for example 2 for a 1:2 strategy. |
| risk_per_trade* | number | Percentage of the account lost on a losing trade, for example 1. |
| trades_per_day* | number | Average trades per trading day, for example 1.5. |
{
"type": "object",
"required": [
"win_rate",
"reward_to_risk",
"risk_per_trade",
"trades_per_day"
],
"properties": {
"firm": {
"type": "string",
"description": "Or: part of a firm name, to test that firm's accounts. Leave both out to rank every account."
},
"win_rate": {
"type": "number",
"maximum": 99,
"minimum": 1,
"description": "Percentage of trades that win, for example 45."
},
"challenge_ids": {
"type": "array",
"items": {
"type": "integer"
},
"maxItems": 10,
"description": "Up to 10 PropPassCheck account ids."
},
"reward_to_risk": {
"type": "number",
"maximum": 20,
"minimum": 0.1,
"description": "Average win divided by average loss, for example 2 for a 1:2 strategy."
},
"risk_per_trade": {
"type": "number",
"maximum": 10,
"minimum": 0.05,
"description": "Percentage of the account lost on a losing trade, for example 1."
},
"trades_per_day": {
"type": "number",
"maximum": 30,
"minimum": 0.1,
"description": "Average trades per trading day, for example 1.5."
}
},
"additionalProperties": false
}Replays a list of closed trades 1,000 times against prop firm challenge rules and returns, per account: the chance of passing, the chance of reaching a first payout, the usual number of trading days, why failed attempts failed, the average number of attempts, and the likely fees per first payout with the funded profit needed to win them back. Give every closed trade's profit or loss in money and the starting balance of the test. Include each trade's close date when known, so busy and quiet days are kept as they happened. Name up to 10 challenge ids, or a firm, or leave both out to rank every account. Needs real closed trades, not figures made up from a win rate.
| Argument | Type | Description |
|---|---|---|
| firm | string | Or: part of a firm name, to test that firm's accounts. Leave both out to rank every account. |
| scale | number | Trade size multiplier to test, default 1 (as traded). |
| trades* | array | Closed trades in the order they closed. |
| challenge_ids | array | Up to 10 PropPassCheck account ids. |
| trades_per_day | number | Only used when the trades have no dates. Default 2. |
| starting_balance* | number | Account balance the trades started from, in the same currency as the profits. |
For a trader on a live account: from the trade history since the account started, how far the balance is above the maximum-loss floor (static or trailing), what is left of today's daily loss limit and the balance to stop at, progress to the profit target or a payout, the consistency rule and the day counts, with a status. Every trade needs a YYYY-MM-DD close date. Closed trades only: open trades also count at most firms, and the firm's own dashboard is what counts.
| Argument | Type | Description |
|---|---|---|
| stage | string | Which stage the account is in. Default phase1. |
| today | string | The trader's own date, YYYY-MM-DD, so "today" matches their day. Default: today in UTC. |
| trades* | array | Closed trades in the order they closed. |
| start_date | string | YYYY-MM-DD the account (or this stage) started. Default: the first trade's date. |
| challenge_id* | integer | The PropPassCheck id of the account being traded. |
| starting_balance* | number | The account's starting balance, for example 100000. |
{
"type": "object",
"required": [
"trades",
"starting_balance",
"challenge_id"
],
"properties": {
"stage": {
"enum": [
"phase1",
"phase2",
"phase3",
"funded"
],
"type": "string",
"description": "Which stage the account is in. Default phase1."
},
"today": {
"type": "string",
"description": "The trader's own date, YYYY-MM-DD, so \"today\" matches their day. Default: today in UTC."
},
"trades": {
"type": "array",
"items": {
"type": "object",
"required": [
"profit"
],
"properties": {
"date": {
"type": "string",
"description": "Close date, YYYY-MM-DD. Give it for every trade or for none."
},
"profit": {
"type": "number",
"description": "Profit (positive) or loss (negative) in account currency, after costs."
}
},
"additionalProperties": false
},
"maxItems": 5000,
"minItems": 1,
"description": "Closed trades in the order they closed."
},
"start_date": {
"type": "string",
"description": "YYYY-MM-DD the account (or this stage) started. Default: the first trade's date."
},
"challenge_id": {
"type": "integer",
"description": "The PropPassCheck id of the account being traded."
},
"starting_balance": {
"type": "number",
"description": "The account's starting balance, for example 100000.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 14, 2026.
{
"type": "object",
"required": [
"challenge_ids"
],
"properties": {
"trades": {
"type": "array",
"items": {
"type": "object",
"required": [
"profit"
],
"properties": {
"date": {
"type": "string",
"description": "Close date, YYYY-MM-DD. Give it for every trade or for none."
},
"profit": {
"type": "number",
"description": "Profit (positive) or loss (negative) in account currency, after costs."
}
},
"additionalProperties": false
},
"maxItems": 5000,
"minItems": 1,
"description": "Closed trades in the order they closed."
},
"win_rate": {
"type": "number",
"maximum": 99,
"minimum": 1,
"description": "Percentage of trades that win, for example 45."
},
"challenge_ids": {
"type": "array",
"items": {
"type": "integer"
},
"maxItems": 5,
"minItems": 1,
"description": "One to five challenge ids."
},
"reward_to_risk": {
"type": "number",
"maximum": 20,
"minimum": 0.1,
"description": "Average win divided by average loss, for example 2 for a 1:2 strategy."
},
"risk_per_trade": {
"type": "number",
"maximum": 10,
"minimum": 0.05,
"description": "Percentage of the account lost on a losing trade, for example 1."
},
"trades_per_day": {
"type": "number",
"maximum": 30,
"minimum": 0.1,
"description": "Average trades per trading day, for example 1.5."
},
"starting_balance": {
"type": "number",
"description": "Needed with trades: the balance the trades started from.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}| Leave out accounts recorded as not allowing trades held over the weekend. |
| no_consistency_rule | boolean | Only accounts with no best-day consistency rule. |
{
"type": "object",
"properties": {
"firm": {
"type": "string",
"description": "Part of a firm name, for example \"FTMO\". Leave out for all firms."
},
"type": {
"enum": [
"instant",
"1-step",
"2-step",
"3-step"
],
"type": "string",
"description": "Account type."
},
"market": {
"enum": [
"forex",
"futures"
],
"type": "string",
"description": "Forex and CFD firms, or futures firms."
},
"drawdown": {
"enum": [
"static",
"trailing"
],
"type": "string",
"description": "static: the maximum loss never moves. trailing: it follows the account up (including ones that lock at the start)."
},
"max_price": {
"type": "number",
"description": "Only accounts with a recorded fee at or below this, in dollars."
},
"news_trading": {
"type": "boolean",
"description": "Leave out accounts recorded as restricting trading around news."
},
"no_daily_limit": {
"type": "boolean",
"description": "Only accounts with no daily loss limit."
},
"weekend_holding": {
"type": "boolean",
"description": "Leave out accounts recorded as not allowing trades held over the weekend."
},
"no_consistency_rule": {
"type": "boolean",
"description": "Only accounts with no best-day consistency rule."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"trades",
"starting_balance"
],
"properties": {
"firm": {
"type": "string",
"description": "Or: part of a firm name, to test that firm's accounts. Leave both out to rank every account."
},
"scale": {
"type": "number",
"maximum": 10,
"minimum": 0.05,
"description": "Trade size multiplier to test, default 1 (as traded)."
},
"trades": {
"type": "array",
"items": {
"type": "object",
"required": [
"profit"
],
"properties": {
"date": {
"type": "string",
"description": "Close date, YYYY-MM-DD. Give it for every trade or for none."
},
"profit": {
"type": "number",
"description": "Profit (positive) or loss (negative) in account currency, after costs."
}
},
"additionalProperties": false
},
"maxItems": 5000,
"minItems": 1,
"description": "Closed trades in the order they closed."
},
"challenge_ids": {
"type": "array",
"items": {
"type": "integer"
},
"maxItems": 10,
"description": "Up to 10 PropPassCheck account ids."
},
"trades_per_day": {
"type": "number",
"maximum": 30,
"minimum": 0.1,
"description": "Only used when the trades have no dates. Default 2."
},
"starting_balance": {
"type": "number",
"description": "Account balance the trades started from, in the same currency as the profits.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}