MCPサーバー

FirmFax prop firm data

com.firmfax/prop-firm-data
金融・投資 公開・接続可能 MCP 2026-07-28

このMCPでできること

Provides evidence-backed rules, fees, comparisons and change histories for proprietary trading firms.

compare_firms
Two firms side by side. Reports each figure with its evidence state and whether the pair is comparable at all: a field neither firm records is not a tie, and a field only one records is not a win. No per-field winner is declared, because the direction of "better" for several of these is a judgement the published scoring model already makes; each firm's grade is returned alongside so the verdict comes from that model rather than from this tool.
入力スキーマ
{'type': 'object', 'required': ['a', 'b'], 'properties': {'a': {'type': 'string', 'description': 'First firm slug.'}, 'b': {'type': 'string', 'description': 'Second firm slug.'}}}
find_firms
Firms matching every criterion given. A firm whose record does not carry a criterion is never counted as a match and never silently dropped: it is returned separately under unknown, with the field that could not be tested. Absence is common here, so read counts before treating the matched list as the answer.
入力スキーマ
{'type': 'object', 'properties': {'assetClass': {'enum': ['forex', 'futures', 'crypto'], 'type': 'string', 'description': 'Firms recorded as offering this. 21 of 71 records name no asset class and are returned as unknown.'}, 'maxResetFee': {'type': 'number', 'description': 'Reset fee at or below this. 56 of 71 record no fee.'}, 'maxActivationFee': {'type': 'number', 'description': 'Activation fee at or below this. 42 of 71 record no fee.'}, 'maxConsistencyPct': {'type': 'number', 'description': 'Consistency rule at or below this. 28 of 71 record none.'}, 'maxDailyLossLimit': {'type': 'number', 'description': 'Daily loss limit at or below this, in the unit dailyLossLimitUnit names. 31 of 71 record none.'}, 'maxMinTradingDays': {'type': 'number', 'description': 'Minimum trading days at or below this, counted as minTradingDaysUnit names. 16 of 71 record none.'}, 'dailyLossLimitUnit': {'enum': ['percent', 'usd'], 'type': 'string', 'description': 'The unit maxDailyLossLimit is in. Daily loss limits are recorded in percent at some firms and in dollars at others, and the two are never compared: a firm recorded in the other unit is returned under unknown with its unit named.'}, 'maxMinDaysToPayout': {'type': 'number', 'description': 'Minimum days to first payout at or below this, counted as minDaysToPayoutUnit names. 26 of 71 record none.'}, 'minTradingDaysUnit': {'enum': ['calendar_days', 'trading_days', 'winning_days'], 'type': 'string', 'description': 'What maxMinTradingDays counts: calendar_days, trading_days or winning_days. A minimum is compared only with minimums counted the same way; a firm counting another way, or stating no unit, is returned under unknown with what it counts named.'}, 'minDaysToPayoutUnit': {'enum': ['calendar_days', 'trading_days', 'winning_days'], 'type': 'string', 'description': 'What maxMinDaysToPayout counts: calendar_days, trading_days or winning_days. A wait is compared only with waits counted the same way; a firm counting another way, or stating no unit, is returned under unknown with what it counts named.'}, 'minTradingDaysMinProfit': {'type': 'number', 'description': 'With winning_days only: the profit a day must reach to count. A firm whose winning days carry a different profit bar is returned under unknown.'}, 'minDaysToPayoutMinProfit': {'type': 'number', 'description': 'With winning_days only: the profit a day must reach to count. A firm whose winning days carry a different profit bar is returned under unknown.'}}}
get_evidence
The stored reading behind a figure: the verbatim quote, the page it came from, and the date we read it. Answers "we hold none" explicitly rather than returning an empty list. `outcome` is load-bearing: a `contradicted`, `contradiction` or `absent` row records what we read, not a figure we publish. Use get_firm for the published figure.
入力スキーマ
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'The firm slug, e.g. "topstep".'}, 'field': {'type': 'string', 'description': 'One field path, e.g. "rules.dailyLossLimit". Omit for every field we hold for this firm.'}}}
get_firm
One prop trading firm. Every figure states whether we hold evidence for it, and a firm whose score range spans more than one band carries no letter grade at all.
入力スキーマ
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'The firm slug, e.g. "topstep".'}}}
get_rule_changes
The dated record of what changed, newest first. Every entry states its KIND, and most of this tape is FirmFax correcting its own data rather than a firm changing its rules. Read counts before describing industry activity: a total taken across kinds overstates it.
入力スキーマ
{'type': 'object', 'properties': {'kind': {'enum': ['firm', 'record', 'withdrawn'], 'type': 'string', 'description': 'firm = the firm changed a rule. record = FirmFax corrected its own data. withdrawn = we published an entry and then retracted it.'}, 'slug': {'type': 'string', 'description': 'Limit to one firm. Omit for every firm.'}, 'limit': {'type': 'number', 'description': 'How many entries to return, newest first. Default 50.'}, 'since': {'type': 'string', 'description': 'ISO date, e.g. "2026-08-01". Entries dated on or after it.'}}}
list_firms
Every firm slug and name. Carries no figures, so nothing here needs evidence.
入力スキーマ
{'type': 'object', 'properties': {}}
変更
find_firms
2026年10月1日2:53
変更
find_firms
2026年9月27日2:52
追加
list_firms
2026年9月17日12:34
追加
compare_firms
2026年9月17日12:34
追加
find_firms
2026年9月17日12:34
追加
get_evidence
2026年9月17日12:34
追加
get_rule_changes
2026年9月17日12:34
追加
get_firm
2026年9月17日12:34