MCP-Server

BTC DCA Engine

com.btcdcaengine/btc-dca-engine
Krypto & Web3 Finanzen & Investieren Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

Simulates historical dollar-cost-averaging plans for Bitcoin and other supported assets.

compare_plans
Compare plans
Run up to 5 plans over the same data and rank them by final value (2 without a signed-in Pro account or a Pro API key). Use to compare assets, cadences or start dates side by side. One share_url opens them all together.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['plans'], 'properties': {'as_of': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'plans': {'type': 'array', 'items': {'type': 'object', 'required': ['asset', 'amount', 'start_date'], 'properties': {'type': {'enum': ['dca', 'lump-sum'], 'type': 'string', 'description': '"dca" repeats on the schedule; "lump-sum" buys once at the start. Default "dca".'}, 'asset': {'type': 'string', 'description': 'Asset key from list_assets, e.g. "btc_daily", "Ethereum", "S&P 500".'}, 'amount': {'type': 'number', 'description': 'USD per contribution, or the single amount for lump-sum.', 'exclusiveMinimum': 0}, 'end_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Window end. Defaults to the last loaded close, never a relative "today".'}, 'frequency': {'enum': ['daily', 'weekly', 'monthly', 'quarterly'], 'type': 'string', 'description': 'Contribution cadence. Default "monthly". Quarterly is the coarsest offered: wider gaps behave like a few lump sums (see the knowledge base, "The gap between buys").'}, 'start_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'First scheduled contribution.'}, 'wait_periods': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Save this many scheduled contributions as cash before the first purchase.'}, 'last_buy_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Stop buying here and hold to end_date.'}}, 'additionalProperties': False}, 'maxItems': 5, 'minItems': 1, 'description': 'The plans to compare: up to 2 anonymously or on a Free-account key, up to 5 with a signed-in Pro account or a Pro API key.'}, 'include': {'type': 'object', 'properties': {'ledger': {'enum': ['none', 'head', 'all'], 'type': 'string', 'description': 'Per-purchase rows: "none" (default), "head" (first 20), "all" (capped at 200).'}, 'checkpoints': {'enum': ['yearly', 'none'], 'type': 'string', 'description': 'End-of-year value points. Default "yearly".'}}, 'additionalProperties': False}, 'settings': {'type': 'object', 'properties': {'cpi': {'type': 'boolean', 'description': 'Pro only. Inflation arm: what the contributed cash is worth after CPI-U. Adds cash_after_cpi to the summary and the overlay to share_url.'}, 'fng': {'type': 'boolean', 'description': 'Draw the Fear & Greed overlay on the shared chart.'}, 'log': {'type': 'boolean', 'description': 'Log scale on the shared chart.'}, 'lump': {'type': 'boolean', 'description': 'Pro only. Lump-sum benchmark: the same total bought at once on day one. Adds lump_sum_equivalent_final_value to the summary and the overlay to share_url.'}, 'risk': {'type': 'boolean', 'description': 'Pro only. Adds annualized sharpe and sortino to the summary.'}, 'mayer': {'type': 'boolean', 'description': 'Pro only. Mayer Multiple overlay on the shared chart.'}, 'smart': {'anyOf': [{'type': 'boolean'}, {'type': 'object', 'properties': {'low': {'type': 'number', 'description': "Lower threshold, from the signal's own list â\x80\x94 mayer 0.5/0.6/0.7/0.8/0.9/1/1.2/1.5/2/2.4/3; fng 10/20/25/30/40/45/55/60/70/75/80/90; dd 10/20/30/40/50/60/70/80. Defaults mayer 0.8, fng 25, dd 20."}, 'bank': {'type': 'boolean', 'description': 'Hold and deploy: the cash a band below 1Ã\x97 withholds is kept and spent on the next purchase the rule does not scale down, and counts as invested from the day it was scheduled. With no band above 1Ã\x97 the rule then invests the same total as flat purchases, so final value is comparable too. Any pile still standing at the end is reported as cash_held. Default false.'}, 'high': {'type': 'number', 'description': 'Upper threshold, from the same list and above low. Defaults mayer 2.4, fng 75, dd 50.'}, 'above': {'type': 'number', 'description': 'Multiplier when the reading is over high, same list. Defaults: mayer 0 and fng 0 (skip the euphoric top), dd 2 (double in a deep drawdown).'}, 'below': {'type': 'number', 'description': 'Multiplier on the scheduled amount when the reading is under low: one of 0, 0.25, 0.5, 1, 2, 3, 4, 6. 0 skips the purchase (that money is not invested).'}, 'signal': {'enum': ['mayer', 'fng', 'dd'], 'type': 'string', 'description': 'Which reading decides each purchase. mayer (default): price vs its 200-day average, Bitcoin, Ethereum, Solana and XRP. fng: the alternative.me Fear & Greed index (0-100), the same four assets. dd: percent below the running high close, any market asset (not bonds or index levels).'}, 'between': {'type': 'number', 'description': 'Multiplier when the reading is between the thresholds, same list. Default 1.'}}, 'additionalProperties': False}], 'description': 'Pro only. Buy rule: a signal read on each purchase date, two thresholds, and a multiplier for each of the three bands they make. `true` is the Mayer default (0.8/2.4 â\x80\x94 buy as usual, skip above 2.4); an object sets its own. Adds `rule` and `rule_finding` (cost per unit against flat purchases from fixed starts) to the summary and the rule to share_url.'}}, 'description': 'Chart overlays carried into share_url, and the figures they add to each summary. Flags marked "Pro only" need a signed-in Pro account or a Pro API key; without one, the call returns an error naming the setting.', 'additionalProperties': False}}, 'additionalProperties': False}
data_status
Data status
The vintage of the loaded price data and how often it refreshes.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
list_assets
List assets
Assets this endpoint can simulate, with the date each series starts and ends. Call before composing a plan so start dates fall inside coverage.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
run_dca
Run a DCA plan
Simulate one dollar-cost-averaging plan against real historical closes. Returns totals, end-of-year checkpoints and a share_url that opens the same run in the app.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['asset', 'amount', 'start_date'], 'properties': {'type': {'enum': ['dca', 'lump-sum'], 'type': 'string', 'description': '"dca" repeats on the schedule; "lump-sum" buys once at the start. Default "dca".'}, 'as_of': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Pin the answer to this data vintage so the share link keeps returning the same number.'}, 'asset': {'type': 'string', 'description': 'Asset key from list_assets, e.g. "btc_daily", "Ethereum", "S&P 500".'}, 'amount': {'type': 'number', 'description': 'USD per contribution, or the single amount for lump-sum.', 'exclusiveMinimum': 0}, 'include': {'type': 'object', 'properties': {'ledger': {'enum': ['none', 'head', 'all'], 'type': 'string', 'description': 'Per-purchase rows: "none" (default), "head" (first 20), "all" (capped at 200).'}, 'checkpoints': {'enum': ['yearly', 'none'], 'type': 'string', 'description': 'End-of-year value points. Default "yearly".'}}, 'additionalProperties': False}, 'end_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Window end. Defaults to the last loaded close, never a relative "today".'}, 'settings': {'type': 'object', 'properties': {'cpi': {'type': 'boolean', 'description': 'Pro only. Inflation arm: what the contributed cash is worth after CPI-U. Adds cash_after_cpi to the summary and the overlay to share_url.'}, 'fng': {'type': 'boolean', 'description': 'Draw the Fear & Greed overlay on the shared chart.'}, 'log': {'type': 'boolean', 'description': 'Log scale on the shared chart.'}, 'lump': {'type': 'boolean', 'description': 'Pro only. Lump-sum benchmark: the same total bought at once on day one. Adds lump_sum_equivalent_final_value to the summary and the overlay to share_url.'}, 'risk': {'type': 'boolean', 'description': 'Pro only. Adds annualized sharpe and sortino to the summary.'}, 'mayer': {'type': 'boolean', 'description': 'Pro only. Mayer Multiple overlay on the shared chart.'}, 'smart': {'anyOf': [{'type': 'boolean'}, {'type': 'object', 'properties': {'low': {'type': 'number', 'description': "Lower threshold, from the signal's own list â\x80\x94 mayer 0.5/0.6/0.7/0.8/0.9/1/1.2/1.5/2/2.4/3; fng 10/20/25/30/40/45/55/60/70/75/80/90; dd 10/20/30/40/50/60/70/80. Defaults mayer 0.8, fng 25, dd 20."}, 'bank': {'type': 'boolean', 'description': 'Hold and deploy: the cash a band below 1Ã\x97 withholds is kept and spent on the next purchase the rule does not scale down, and counts as invested from the day it was scheduled. With no band above 1Ã\x97 the rule then invests the same total as flat purchases, so final value is comparable too. Any pile still standing at the end is reported as cash_held. Default false.'}, 'high': {'type': 'number', 'description': 'Upper threshold, from the same list and above low. Defaults mayer 2.4, fng 75, dd 50.'}, 'above': {'type': 'number', 'description': 'Multiplier when the reading is over high, same list. Defaults: mayer 0 and fng 0 (skip the euphoric top), dd 2 (double in a deep drawdown).'}, 'below': {'type': 'number', 'description': 'Multiplier on the scheduled amount when the reading is under low: one of 0, 0.25, 0.5, 1, 2, 3, 4, 6. 0 skips the purchase (that money is not invested).'}, 'signal': {'enum': ['mayer', 'fng', 'dd'], 'type': 'string', 'description': 'Which reading decides each purchase. mayer (default): price vs its 200-day average, Bitcoin, Ethereum, Solana and XRP. fng: the alternative.me Fear & Greed index (0-100), the same four assets. dd: percent below the running high close, any market asset (not bonds or index levels).'}, 'between': {'type': 'number', 'description': 'Multiplier when the reading is between the thresholds, same list. Default 1.'}}, 'additionalProperties': False}], 'description': 'Pro only. Buy rule: a signal read on each purchase date, two thresholds, and a multiplier for each of the three bands they make. `true` is the Mayer default (0.8/2.4 â\x80\x94 buy as usual, skip above 2.4); an object sets its own. Adds `rule` and `rule_finding` (cost per unit against flat purchases from fixed starts) to the summary and the rule to share_url.'}}, 'description': 'Chart overlays carried into share_url, and the figures they add to each summary. Flags marked "Pro only" need a signed-in Pro account or a Pro API key; without one, the call returns an error naming the setting.', 'additionalProperties': False}, 'frequency': {'enum': ['daily', 'weekly', 'monthly', 'quarterly'], 'type': 'string', 'description': 'Contribution cadence. Default "monthly". Quarterly is the coarsest offered: wider gaps behave like a few lump sums (see the knowledge base, "The gap between buys").'}, 'start_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'First scheduled contribution.'}, 'wait_periods': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Save this many scheduled contributions as cash before the first purchase.'}, 'last_buy_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Stop buying here and hold to end_date.'}}, 'additionalProperties': False}
Geändert
compare_plans
20. September 2026 02:40
Geändert
run_dca
20. September 2026 02:40
Geändert
data_status
20. September 2026 02:40
Geändert
list_assets
20. September 2026 02:40
Hinzugefügt
compare_plans
18. September 2026 02:40
Hinzugefügt
run_dca
18. September 2026 02:40
Hinzugefügt
data_status
18. September 2026 02:40
Hinzugefügt
list_assets
18. September 2026 02:40