BTC DCA Engine
Server Details
Historical dollar-cost-averaging simulator for Bitcoin and other assets.
- Status
- Healthy
- Uptime
- 100.0% over 26 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: compare_plans compares multiple plans, data_status reports data freshness, list_assets enumerates supported assets, and run_dca executes a single simulation. There is no functional overlap or ambiguity between them.
Tool names mostly follow a verb_noun pattern (compare_plans, list_assets, run_dca) with one minor deviation (data_status). The naming is clear and consistent enough that an agent can predict what each tool does without description lookup.
Four tools is well-scoped for a DCA simulation engine. Each tool serves a necessary function (run, compare, list assets, check data) without redundancy or bloat, making the set feel intentionally curated.
The tool surface fully covers the domain of DCA simulation: listing available assets, running a single plan, comparing multiple plans, and verifying data freshness. Since plans are not persistent objects, CRUD operations are unnecessary, and no obvious gaps exist for the stated purpose.
Available Tools
4 toolscompare_plansCompare plansARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | ||
| plans | Yes | 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 | No | ||
| settings | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows it's a safe, read-only operation. The description adds useful behavioral details beyond annotations: the plan limit (2 without Pro, 5 with Pro) and that 'one share_url opens them all together.' It does not contradict the annotations and provides extra context about the result sharing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with the main action front-loaded. It includes the limit and the comparison use case, and the share_url behavior is added as a third point. There is no fluff, and every sentence earns its place. It is appropriately concise for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex with nested objects and many settings, but the description only gives a high-level overview: run multiple plans, rank them, and share via URL. It does not mention the output structure (e.g., what fields are returned in the summary) or the error handling for Pro-only settings, which the schema hints at. While the schema covers parameter details, the absence of an output schema means the description should clarify what the agent can expect in return; it only mentions ranking by final value and share_url. This is adequate but not complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no parameter-specific information; it does not mention as_of, include, settings, or any of the plan fields. Schema description coverage is only 50%, meaning half of the parameters lack descriptions in the schema, and the description does not compensate for this gap. For example, as_of has a pattern but no description, and the agent would need to infer its meaning from the pattern alone. The description should have helped clarify parameter roles but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Run'), a resource ('up to 5 plans'), and the outcome ('rank them by final value'). It distinguishes itself from the sibling run_dca by focusing on multiple plans, and it names common comparison dimensions ('assets, cadences or start dates'). This is a clear, specific statement of purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use this tool: when you want to compare multiple plans side by side. It also notes the Pro account limit (2 vs 5 plans), which helps set expectations. However, it does not explicitly mention the alternative for a single plan (run_dca), nor does it state when NOT to use it, so the guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_statusData statusARead-onlyIdempotentInspect
The vintage of the loaded price data and how often it refreshes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful context about data vintage and refresh cadence, but it does not elaborate on output format or potential staleness/error conditions. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no filler or repetition of the tool name. The key information—what data attribute is exposed—is front-loaded with 'vintage' followed by refresh cadence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read-only status tool, this is nearly sufficient: it states the output topic and refresh behavior, and annotations cover side-effect safety. It leaves slight ambiguity about how 'vintage' is expressed and does not mention no-data or error cases, but those are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and schema description coverage is 100%, so there are no parameter semantics to clarify. The baseline of 4 applies, and the description implies this is a zero-input status read.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that the tool reports the vintage of loaded price data and its refresh frequency, identifying a specific informational resource. It lacks an explicit verb like 'returns' or 'reads,' and 'vintage' is slightly jargon-like, but the meaning is clear and distinct from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance about when to call this tool or when to prefer siblings such as list_assets or run_dca. The use case is implied from the description—checking price-data freshness—but no exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_assetsList assetsARead-onlyIdempotentInspect
Assets this endpoint can simulate, with the date each series starts and ends. Call before composing a plan so start dates fall inside coverage.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds that the output includes start and end dates for each asset, which is behavioral context beyond the annotations. No contradiction is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, with the main point front-loaded and a usage hint in the second. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers what the tool returns (assets with date ranges) and when to call it. Since there is no output schema, this is the primary documentation of the return content, and it is sufficient for the tool's simplicity. It does not detail the exact structure, but for a parameterless list tool, it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and an empty schema, so there is nothing to explain. The description does not need to elaborate on parameters, and the baseline for no parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lists assets the endpoint can simulate, with start and end dates. This is a specific verb and resource, and it distinguishes from siblings like compare_plans and run_dca, which focus on other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs to call this before composing a plan so start dates fall inside coverage, providing a clear when-to-use scenario. It does not explicitly name alternative tools or conditions for not using it, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_dcaRun a DCA planARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | "dca" repeats on the schedule; "lump-sum" buys once at the start. Default "dca". | |
| as_of | No | Pin the answer to this data vintage so the share link keeps returning the same number. | |
| asset | Yes | Asset key from list_assets, e.g. "btc_daily", "Ethereum", "S&P 500". | |
| amount | Yes | USD per contribution, or the single amount for lump-sum. | |
| include | No | ||
| end_date | No | Window end. Defaults to the last loaded close, never a relative "today". | |
| settings | No | 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. | |
| frequency | No | 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 | Yes | First scheduled contribution. | |
| wait_periods | No | Save this many scheduled contributions as cash before the first purchase. | |
| last_buy_date | No | Stop buying here and hold to end_date. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds useful behavior beyond that: the simulation uses real historical closes and the returned share_url reopens the same run in the app, which is not visible in structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with the core purpose first and the return contract second. No filler or repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter tool with no output schema, the description gives enough high-level output shape (totals, checkpoints, share_url) and the schema covers parameter semantics. It falls short of a 5 only because it does not explicitly connect to alternatives or call out conditional Pro-only behavior in the description itself.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 91% schema description coverage, the schema itself documents most parameters (asset, amount, start_date, frequency, settings, etc.). The tool description adds no parameter-level detail, so it neither compensates for gaps nor detracts from what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific action–resource pair: simulate one dollar-cost-averaging plan against real historical closes. The word 'one' sets it apart from the sibling plan-comparison tool, and the output summary (totals, checkpoints, share_url) leaves no doubt about what it does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied: run a single DCA simulation when you want plan results. However, the description never names an alternative or states when to prefer compare_plans, data_status, or list_assets, so an agent is left to infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
compare_plans1 field changed- changed
Input schema / properties / settings / descriptionPrevious value: -"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; refused otherwise, and the refusal says what unlocks them."New value: +"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."
- Changed
run_dca1 field changed- changed
Input schema / properties / settings / descriptionPrevious value: -"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; refused otherwise, and the refusal says what unlocks them."New value: +"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."
4 tool updates
- First observed
compare_plans - First observed
data_status - First observed
list_assets - First observed
run_dca
Related MCP Connectors
Dollar-cost-averaging backtests on real historical data for crypto, stocks and commodities.
Historical crypto investment and retirement calculators with cited market data.
Crypto backtesting & Bitcoin cycle analytics. Point-in-time, DSR-corrected, look-ahead-aware.
Track net worth and investment performance (MWRR, P&L) for any asset with a value, in any currency.
Related MCP Servers
FlicenseNot gradedqualityDmaintenanceTax-aware retirement planning for Canada and the US. CPP/OAS and Social Security timing, RRSP/TFSA/401k/IRA projections, Monte Carlo simulation, withdrawal order optimization, and historical backtesting against 150 years of market data.2-- FlicenseNot gradedqualityCmaintenanceProvides quantitative portfolio analysis tools, including return, volatility, Sharpe ratio, VaR, correlation, and rebalance simulation, using bundled OHLCV data over stdio.-
- AlicenseNot gradedqualityDmaintenanceTracks multi-exchange cryptocurrency portfolio P\&L by storing holdings and providing live price data.MIT
- AlicenseNot gradedqualityAmaintenanceBitcoin mining data from a self-hosted Bitcoin Core node: live hashprice, difficulty, halving, mempool, ASIC profitability and breakeven calculators, calendar-month averages and history since 2009. 12 tools, no API key.409 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.