aipricepatterns
Server Details
Historical market memory for AI agents using semantic vector search across years of financial market data. Discover similar market regimes, price patterns, and market context for quantitative research and algorithmic trading.
- Status
- Healthy
- Uptime
- 100.0% over 63 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 13 tools
Most tools target a distinct facet (snapshot retrieval, analogue path mapping, single-level hypothesis testing, per-match explanation, track record, evidence board, and sketch search), and the descriptions carefully delimit each. However, the boundaries between get_candle_evidence_board and get_candle_track_record, and between explain_candle_match and inspect_candle_analogue, are subtle and could invite misselection. The meta/upsell tools (guide, manifest, RLXBT trial) are clearly distinct.
The dominant pattern is get_candle_* plus verb_noun actions (evaluate_candle_hypothesis, explain_candle_match, inspect_candle_analogue, search_by_sketch), which is largely readable. But verbs vary widely (get, evaluate, explain, inspect, search, what_is) and what_is_odd_in_candle_memory breaks any predictable verb_noun convention. The result is mixed rather than a single consistent scheme.
13 tools sits comfortably in the reasonable range for a rich candle-analytics domain, and each analytical tool earns its place. The inclusion of guide, compatibility manifest, and an external-backtester trial tool is slightly auxiliary and inflates the surface beyond pure analytics, but overall the scope is sensible.
The surface covers the full analyst workflow: onboarding guide, analogue retrieval, neighbour inspection, hypothesis testing, range track record, evidence board, sketch-based search, per-match explanation, and a decision tool. Coverage is strong with only minor redundancy; the absence of any configuration/discovery tool for arbitrary symbols beyond BTC/ETH/SOL is a small gap.
Available Tools
13 toolsevaluate_candle_hypothesisEvaluate a Price-Level HypothesisARead-onlyIdempotentInspect
Investigate a specific price-level hypothesis using the chart's historical analogues. Supply levelPrice; optionally supply both targetPrice and invalidationPrice. Compares identical reach and target-first/invalidation-first/ambiguous/unresolved events against a same-snapshot chronological history baseline. Returns ambiguity-aware target-order identification bounds and sampling envelopes, a fixed pre-pattern range-matched sensitivity check, non-overlapping episode counts, frequency differences and descriptive 95% intervals, calendar concentration, uncalibrated match distances, neighbour-count sensitivity and dated replay links. Uses complete historical OHLC paths, marks unknown intrabar order ambiguous, and returns descriptive evidence rather than fills, PnL or calibrated future probabilities.
| Name | Required | Description | Default |
|---|---|---|---|
| f | No | Forward horizon in bars. Only the chart presets 5, 10, 30, and 50 are supported | |
| q | No | Candles in the matched pattern. Only the chart presets 3, 5, 8, and 12 are supported | |
| symbol | No | Supported chart symbol: BTCUSDT, ETHUSDT, or SOLUSDT | BTCUSDT |
| anchorTs | No | Optional historical replay anchor in Unix milliseconds. Omit for the latest chart candle | |
| interval | No | Supported chart timeframe: 5m, 15m, 1h, 4h, or 1d | 5m |
| token_id | No | Optional token. No token or payment is needed during the free access experiment. | |
| levelPrice | Yes | Price to investigate. Historical paths are rebased to the query close; above it means an upward reach, below it a downward reach. | |
| chart_token | No | Optional account key; all tools work anonymously during the free access experiment. | |
| targetPrice | No | Optional user hypothesis target after reaching levelPrice. Supply together with invalidationPrice, on opposite sides of levelPrice. | |
| invalidationPrice | No | Optional price that invalidates the user hypothesis after reaching levelPrice. This is an observation threshold, not an executable stop. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next | Yes | |
| reach | Yes | |
| caveats | Yes | |
| summary | Yes | |
| baseline | Yes | |
| contract | Yes | |
| episodes | Yes | |
| selection | Yes | |
| afterTouch | Yes | |
| comparison | Yes | |
| hypothesis | Yes | |
| dataQuality | Yes | |
| targetOrder | Yes | |
| researchStatus | Yes | |
| volatilityCheck | Yes | |
| researchConclusion | Yes | |
| executionEligibility | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description adds real behavioral context: complete historical OHLC paths, ambiguous intrabar ordering, and that it returns 'descriptive evidence rather than fills, PnL or calibrated future probabilities.' That non-calibration disclaimer meaningfully frames how to interpret output, though it stops short of permission or rate-limit notes.
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 purpose is front-loaded, but the second sentence is a long run-on cataloguing return artifacts (bounds, envelopes, sensitivity checks, episode counts, intervals, replay links) that largely duplicates what the existing output schema already conveys. It is informative but not tightly earned given the output schema.
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 complex analysis tool with an output schema and rich annotations, the description covers the analytical approach, ambiguity handling, and the limits of the evidence, which is enough for correct invocation. The return-value enumeration is partly redundant given the output schema, keeping it from a 5.
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?
Schema description coverage is 100%, so the schema already documents levelPrice, targetPrice, invalidationPrice and the enum presets. The description only restates the levelPrice directionality and the optional pairing constraint, adding little beyond what the schema provides. Baseline 3 is appropriate.
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 and resource: 'Investigate a specific price-level hypothesis using the chart's historical analogues.' An agent can tell this is a hypothesis-evaluation tool rather than a lookup or snapshot tool. It does not explicitly name a sibling to contrast against, so it stops short of a 5.
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 gives input-usage guidance ('Supply levelPrice; optionally supply both targetPrice and invalidationPrice'), which implies the use case. However, there is no explicit when-to-use/when-not guidance and no routing to alternatives among the many candle siblings such as get_candle_analogue_map or inspect_candle_analogue.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_candle_matchExplain Candle MatchCRead-onlyIdempotentInspect
Why this twin ranked under the reported method: distance, anatomy-token observations, and outcome vs neighbour p10/p50/p90. Shape tokens alone cannot explain a context/volume score. Similarity is not P(direction).
| Name | Required | Description | Default |
|---|---|---|---|
| f | No | Forward horizon in bars. Only the chart presets 5, 10, 30, and 50 are supported | |
| q | No | Candles in the matched pattern. Only the chart presets 3, 5, 8, and 12 are supported | |
| rank | No | 1-based rank in the selected retrieval method's neighbour list (1 = closest). | |
| limit | No | Closest analogues to list (1-20). Bands and direction always use the chart's 20 neighbours | |
| symbol | No | Supported chart symbol: BTCUSDT, ETHUSDT, or SOLUSDT | BTCUSDT |
| anchorTs | No | Optional historical replay anchor in Unix milliseconds. Omit for the latest chart candle | |
| interval | No | Supported chart timeframe: 5m, 15m, 1h, 4h, or 1d | 5m |
| token_id | No | Optional token. No token or payment is needed during the free access experiment. | |
| chart_token | No | Optional account key; all tools work anonymously during the free access experiment. | |
| analogueAnchorTs | No | Twin episode to open, Unix ms. If omitted, use rank. | |
| includeAnalogueCandles | No | Include OHLC arrays for every analogue and its continuation. False keeps the response agent-sized |
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 safety profile is covered. The description adds useful epistemic context that annotations cannot: 'Similarity is not P(direction)', warning the agent not to over-interpret the ranking. It does not disclose response shape or size, but with annotations carrying safety this is adequate.
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 compact and front-loads the 'Why' framing before the supporting detail. Every clause carries content, though the middle clause is dense with unglossed jargon. No filler or 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?
For an 11-parameter tool with no output schema, the description only gestures at the return content (distance, anatomy-token observations, outcome vs p10/p50/p90) without explaining structure, and gives no guidance on how rank and analogueAnchorTs interact. It is minimally adequate but leaves clear gaps 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?
Schema description coverage is 100% and all 11 parameters (including enum presets for f, q, symbol, interval) are documented in the schema itself. The description mentions 'distance', 'anatomy-token observations', and 'p10/p50/p90' but these describe outputs, not the parameters, so it adds little beyond the schema. Baseline 3 applies.
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 does state a purpose: explaining why a matched 'twin' ranked as it did, listing the factors (distance, anatomy-token observations, outcome vs neighbour p10/p50/p90). However, it leans heavily on unexplained domain jargon ('twin', 'anatomy-token', 'context/volume score') and never distinguishes itself from close siblings like inspect_candle_analogue or get_candle_analogue_map. The core verb+resource is present but the scope boundaries are vague.
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 when-to-use or when-not-to-use guidance, and no named alternative among the many candle siblings. The caveat 'Shape tokens alone cannot explain a context/volume score' is an interpretive note rather than a routing instruction, leaving the agent to infer when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_api_guideAPI GuideARead-onlyIdempotentInspect
Start here. Returns the candle market-memory guide: what the evidence supports, the chart presets, the recommended call order, how to read bands and track records, and how access works. Free; explains current access for agents.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | 'candles' (default): the start-here guide for the listed tools. 'all' adds the legacy full-profile catalog; other topics cover legacy tool families | candles |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, destructive=false and openWorld=false, so the safety profile is fully covered. The description adds value beyond that by disclosing cost ('Free') and the access-explanation behavior, which an agent would otherwise have to discover empirically.
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?
Front-loads the key directive in two words ('Start here.'), then enumerates contents in a single readable sentence. The list is slightly dense but every item earns its place by telling the agent what the guide contains.
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 zero-required-param orientation tool with no output schema, the description adequately conveys what the agent receives and why to call it first. Minor gaps remain around the non-default topic topics, but nothing essential to invoking it correctly is missing.
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?
Schema description coverage is 100% and the lone 'topic' enum is fully documented in-schema (including the legacy-topic distinction for 'all'). The description adds no parameter-level detail, so the baseline 3 applies since the schema does all the work.
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?
States a specific verb+resource ('Returns the candle market-memory guide') and inventories its contents (evidence scope, chart presets, call order, band/track reading, access). It reads clearly as the orientation entry point and is implicitly distinct from the data-returning siblings, though it never names an alternative to sharpen the contrast.
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 imperative 'Start here' gives clear, actionable context for when to call it, and 'Free; explains current access for agents' signals the cost/access condition. There is no explicit when-not guidance or named alternative, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_candle_analogue_mapCandle Analogue MapARead-onlyIdempotentInspect
Explore historical paths rebased to the query close: terminal-close P10/P50/P90, observed path extremes, turn clusters and which quantile threshold was reached first. Terminal quantiles are not an 80% whole-path corridor. Use evaluate_candle_hypothesis for your own levels.
| Name | Required | Description | Default |
|---|---|---|---|
| f | No | Forward horizon in bars. Only the chart presets 5, 10, 30, and 50 are supported | |
| q | No | Candles in the matched pattern. Only the chart presets 3, 5, 8, and 12 are supported | |
| limit | No | Closest analogues to list (1-20). Bands and direction always use the chart's 20 neighbours | |
| symbol | No | Supported chart symbol: BTCUSDT, ETHUSDT, or SOLUSDT | BTCUSDT |
| anchorTs | No | Optional historical replay anchor in Unix milliseconds. Omit for the latest chart candle | |
| interval | No | Supported chart timeframe: 5m, 15m, 1h, 4h, or 1d | 5m |
| token_id | No | Optional token. No token or payment is needed during the free access experiment. | |
| chart_token | No | Optional account key; all tools work anonymously during the free access experiment. | |
| includeAnalogueCandles | No | Include OHLC arrays for every analogue and its continuation. False keeps the response agent-sized |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint, so the safety profile is covered. The description adds a valuable interpretive caveat that terminal quantiles are not an 80% whole-path corridor, preventing a common misunderstanding of the output.
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?
Three tightly written sentences: the first defines the output scope, the second clarifies a critical nuance, and the third routes to an alternative. Every sentence earns its place and the purpose is front-loaded.
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?
Given 9 parameters, 100% schema coverage, no output schema, and existing annotations, the description adequately explains the return content and a key caveat. It does not add parameter guidance, but the schema fully covers that, so the remaining gap is 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?
Schema description coverage is 100%, so all parameters are documented in the schema itself. The description adds no parameter-level meaning beyond what the schema already provides, making the baseline score of 3 appropriate.
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 (explore) and resource (historical paths rebased to the query close), then enumerates the concrete outputs: terminal-close P10/P50/P90, path extremes, turn clusters, and which quantile threshold was reached first. It also distinguishes from the sibling evaluate_candle_hypothesis by directing users there for their own levels.
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 gives a clear context for use ('Explore historical paths rebased to the query close') and an explicit alternative for one scenario ('Use evaluate_candle_hypothesis for your own levels'). However, it does not cover when not to use this tool versus other siblings like inspect_candle_analogue or get_candle_evidence_board.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_candle_evidence_boardCandle Evidence BoardARead-onlyIdempotentInspect
Free. Which symbol/timeframe configurations carry range information: for the /candles default preset (q=5, f=10) a walk-forward record of the analogue band and the volatility-scaled band against the all-history band, averaged over 5 anchor phases, with a verdict that needs 4 of 5 phases to agree. Recomputed daily. Not a direction signal.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, idempotent, and non-destructive. The description adds meaningful context beyond that: it is free, recomputed daily, based on a 4-of-5 phase verdict, and explicitly not a direction signal. This is substantial behavioral disclosure for a parameterless informational tool.
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 not overly long, and the core subject is near the front. However, it opens with a one-word sentence and then a fragment ('Which ... carry range information:') rather than a clear declarative statement, making the structure harder to parse. The dense technical detail is relevant but could be better organized.
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 tool with no output schema, the description covers what the tool reports: a walk-forward record of bands, averaging over five anchor phases, a consensus verdict, and daily recomputation. It does not specify the exact output shape, but the description is sufficient for an agent to understand the tool's purpose and call it without arguments.
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, so the description does not need to explain any. Schema description coverage is trivially 100%, and the 0-parameter baseline of 4 applies.
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 identifies the resource: symbol/timeframe configurations carrying range information for the /candles default preset. It does not use an explicit verb like 'returns' or 'lists', but the tool name and content make the purpose reasonably clear. The closing 'Not a direction signal' helps distinguish it from direction-oriented 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?
The phrase 'Which symbol/timeframe configurations carry range information' implies when to use it, and 'Not a direction signal' gives a useful when-not. However, no sibling alternative is named, and there is no explicit statement of when to prefer this over the other candle-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_candle_market_snapshotCandle Market SnapshotARead-onlyIdempotentInspect
Find dated historical situations comparable to the current BTC, ETH or SOL window and see what followed. Returns chart-parity OHLC, rankingMethod and fallback reason, historical terminal-close quantiles, range ledger and freshness. Use evaluate_candle_hypothesis to test a specific level and get_candle_track_record to check range quality. Similarity is not a directional probability. Analogues are dated look-alikes, not a tested rule; to backtest a rule built on the pattern (costs, walk-forward, Monte Carlo, an honest NO EDGE FOUND), use RLXBT MCP: https://rlxbt.com/docs/mcp?utm_source=aipricepatterns&utm_medium=referral&utm_campaign=ecosystem&utm_content=mcp_guide
| Name | Required | Description | Default |
|---|---|---|---|
| f | No | Forward horizon in bars. Only the chart presets 5, 10, 30, and 50 are supported | |
| q | No | Candles in the matched pattern. Only the chart presets 3, 5, 8, and 12 are supported | |
| limit | No | Closest analogues to list (1-20). Bands and direction always use the chart's 20 neighbours | |
| symbol | No | Supported chart symbol: BTCUSDT, ETHUSDT, or SOLUSDT | BTCUSDT |
| anchorTs | No | Optional historical replay anchor in Unix milliseconds. Omit for the latest chart candle | |
| interval | No | Supported chart timeframe: 5m, 15m, 1h, 4h, or 1d | 5m |
| token_id | No | Optional token. No token or payment is needed during the free access experiment. | |
| chart_token | No | Optional account key; all tools work anonymously during the free access experiment. | |
| includeAnalogueCandles | No | Include OHLC arrays for every analogue and its continuation. False keeps the response agent-sized |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds real value beyond them: it enumerates returned artifacts (chart-parity OHLC, rankingMethod, fallback reason, terminal-close quantiles, range ledger, freshness) and flags the key epistemic limit 'Similarity is not a directional probability' plus 'analogues are dated look-alikes, not a tested rule'. It does not discuss rate limits or failure modes for the fallback path.
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?
Front-loaded with the purpose sentence, then return contents, then sibling routing and caveats. Nearly every sentence carries information, though the final promotional link with full UTM parameters is extraneous marketing that dilutes an otherwise tight definition.
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?
With no output schema, the description must carry the return-value burden and largely does, naming the key response fields and the fallback indicator. Nine optional parameters are fully documented in the schema, and sibling routing plus epistemic caveats are present; only the meaning of items like 'range ledger' and 'freshness' is left unelaborated.
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?
Schema description coverage is 100% and every parameter (including the f/q presets, limit vs chart's 20 neighbours, anchorTs replay, and the optional tokens) is documented in the schema itself. The description adds no syntax, default, or format detail beyond what the schema already provides, so the baseline 3 applies.
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?
States a specific verb and resource: find dated historical analogues to the current BTC/ETH/SOL window and see what followed. It also names sibling tools (evaluate_candle_hypothesis, get_candle_track_record), so an agent can distinguish this analogue-search tool from the hypothesis-testing and track-record tools without opening any schema.
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?
Explicitly routes to alternatives with conditions: evaluate_candle_hypothesis 'to test a specific level' and get_candle_track_record 'to check range quality', plus a pointer to an external backtesting service for rule testing. Clear context for choosing between siblings, but there is no explicit statement of when this tool should NOT be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_candle_track_recordCandle Track RecordARead-onlyIdempotentInspect
Walk forward the exact chart candle configuration (symbol, interval, q, f) over independent resolved anchors. Compares analogue and volatility-scaled range bands against the unconditional baseline with coverage, confidence intervals, Winkler scores, regime diagnostics, and explicit non-directional signal integrity.
| Name | Required | Description | Default |
|---|---|---|---|
| f | No | Exact forward horizon to evaluate: 5, 10, 30, or 50 bars | |
| q | No | Exact chart pattern length to evaluate: 3, 5, 8, or 12 candles | |
| endTs | No | Optional Unix-millisecond cutoff that pins the evaluation dataset for reproducibility | |
| symbol | No | Supported chart symbol: BTCUSDT, ETHUSDT, or SOLUSDT | BTCUSDT |
| anchors | No | Independent resolved anchors to evaluate, spaced f bars apart (10-120). Default 120 matches /candles; fewer is faster but noisier | |
| interval | No | Supported chart timeframe: 5m, 15m, 1h, 4h, or 1d | 5m |
| token_id | No | Optional token. No token or payment is needed during the free access experiment. | |
| chart_token | No | Optional account key; all tools work anonymously during the free access experiment. | |
| analogueLimit | No | Nearest analogues used at every walk-forward anchor (5-200). Default 20 matches /candles | |
| includePoints | No | Include every resolved walk-forward anchor. False returns an agent-sized summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds real behavioral value by disclosing what the evaluation produces (coverage, confidence intervals, Winkler scores, regime diagnostics, non-directional signal integrity) and the walk-forward/independent-anchor method, which matters since there is no output schema.
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?
Two tightly packed sentences with the action front-loaded and no filler. The phrase 'explicit non-directional signal integrity' is somewhat opaque jargon, slightly hurting readability, but the definition is appropriately sized.
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 10-parameter evaluation tool with no required params and no output schema, the description explains the method and the metrics returned, compensating for the missing output schema. Its main shortfall is routing guidance relative to the many sibling candle tools, but the core operation and results are covered.
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?
Schema description coverage is 100%, so all ten parameters are already documented at the schema level, making 3 the baseline. The description echoes the four configuration parameters (symbol, interval, q, f) but adds no syntax or constraint detail beyond 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?
States a specific verb and resource: walk forward the exact candle configuration (symbol, interval, q, f) over resolved anchors, and names what it compares (analogue vs volatility-scaled bands against baseline). This is clearly a walk-forward track-record evaluation, distinguishable from siblings like the analogue map or evidence board. It does not explicitly name or contrast a sibling, keeping it at 4.
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?
Usage is implied by the framing (evaluate a configuration's historical track record across independent anchors), but there is no explicit when-to-use, when-not-to-use, or alternative tool named among the many candle siblings. Costs/performance tradeoffs are only hinted at in the anchors parameter description, not here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mcp_compatibility_manifestMCP Compatibility ManifestARead-onlyIdempotentInspect
Return the versioned MCP compatibility manifest, including canonical tools, aliases, and JSON argument schemas for remote clients. Defaults to the listed candle tools; profile='full' returns every callable tool.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | 'golden' (default): the listed candle tools only. 'full': every callable tool, ~200 KB | golden |
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 safety profile is covered. The description adds that the manifest is versioned and includes JSON argument schemas, which is useful context, but it does not disclose other behaviors such as response size or error conditions. 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?
The description is two sentences with no filler. The first sentence fronts the core purpose, and the second efficiently explains the profile behavior. Every sentence contributes to understanding the tool.
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 simple read-only tool with one optional parameter and no output schema, the description is reasonably complete: it names the returned content and the two profiles. It could go slightly further by noting the JSON shape of the response, but the phrase 'JSON argument schemas' implies the manifest is JSON, so this is a minor gap rather than a blocker.
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?
Schema coverage is 100% with a clear enum description, including the ~200 KB note for 'full'. The description paraphrases the default and full profiles but does not add meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.
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 the verb 'Return', the resource 'versioned MCP compatibility manifest', and its contents (canonical tools, aliases, JSON argument schemas). It also differentiates the two profiles, which distinguishes this meta-tool from the sibling data-lookup 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?
The description explains when to use the 'golden' vs 'full' profile, but it does not explicitly compare this tool to alternatives or state when to prefer it over siblings. The usage context is implied by the tool's unique manifest-listing purpose, so it is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rlxbt_backtester_trialRLXBT Backtester Free TrialARead-onlyIdempotentInspect
Free during the trial. Returns the official Docker image (ghcr.io/sergio12s/rlxbt-server), step-by-step install instructions, and a shared Pro trial license key for self-hosting the RLXBT backtesting engine. Use RLXBT to test hypotheses found with AIPP analogues: event-driven OHLC backtests with costs/slippage, walk-forward, Monte Carlo, sensitivity, and RL. Safe for agents: never connects to exchanges or places orders.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), but the description adds genuinely useful context beyond them: the trial is free, the license key is shared, and the tool never connects to exchanges or places orders. It also discloses the return payload, which matters since no output schema exists.
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?
Three sentences, front-loaded with the key fact (free during trial) and what is returned. The engine feature list ('walk-forward, Monte Carlo, sensitivity, and RL') is slightly promotional and longer than strictly needed, but it stays brief overall.
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?
With no parameters and no output schema, the description carries the burden of explaining the return payload — and it does, listing the image, instructions, and license key. The only gap is that it does not explain what to do with the returned artifacts beyond a general pointer to backtesting.
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 tool takes zero parameters, so there is nothing for the description to disambiguate. The baseline for a parameterless tool is 4; the description correctly avoids inventing parameter semantics.
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 names a specific verb ('Returns') and enumerates exactly what is returned: the official Docker image (with registry path), step-by-step install instructions, and a shared Pro trial license key for self-hosting the RLXBT engine. No sibling tool offers anything comparable, so an agent can distinguish it immediately.
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 supplies clear context for use — 'Use RLXBT to test hypotheses found with AIPP analogues' — which situates it in a workflow with the sibling analysis tools. It does not, however, state when NOT to call it or name a specific alternative, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trader_decision_v2Trader Decision v2BRead-onlyIdempotentInspect
Return a conservative chart-parity trader decision. V2 combines the candle snapshot contract with freshness and execution-component gates; it returns NO_TRADE while candle direction is unvalidated or canonical server-side order flow is unavailable.
| Name | Required | Description | Default |
|---|---|---|---|
| f | No | Forward horizon in bars. Only the chart presets 5, 10, 30, and 50 are supported | |
| q | No | Candles in the matched pattern. Only the chart presets 3, 5, 8, and 12 are supported | |
| limit | No | Closest analogues to list (1-20). Bands and direction always use the chart's 20 neighbours | |
| symbol | No | Supported chart symbol: BTCUSDT, ETHUSDT, or SOLUSDT | BTCUSDT |
| anchorTs | No | Optional historical replay anchor in Unix milliseconds. Omit for the latest chart candle | |
| interval | No | Supported chart timeframe: 5m, 15m, 1h, 4h, or 1d | 5m |
| token_id | No | Optional token. No token or payment is needed during the free access experiment. | |
| chart_token | No | Optional account key; all tools work anonymously during the free access experiment. | |
| includeAnalogueCandles | No | Include OHLC arrays for every analogue and its continuation. False keeps the response agent-sized |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuinely new behavior: the tool emits NO_TRADE while candle direction is unvalidated or canonical server-side order flow is unavailable — a substantive gating disclosure that prevents the agent from treating absence of a signal as an error.
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?
Two dense sentences with the core purpose front-loaded and the NO_TRADE gate second. Jargon like 'candle snapshot contract' and 'execution-component gates' is opaque, but nothing is wasted.
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?
No output schema and nine parameters, so the description should carry more of the return-shape burden than it does. It tells the agent one possible return value (NO_TRADE) but not the structure of a positive decision, which is the main gap for a decision-emitting tool.
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?
Schema description coverage is 100% across all nine parameters, with enums and defaults documented inline (horizon presets, pattern lengths, symbol, interval, anchor timestamp). The description adds no parameter-level syntax or format detail beyond that, so the baseline 3 applies.
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?
States a specific verb and resource — returns a 'conservative chart-parity trader decision' — and clarifies the V2 contract combines the candle snapshot with freshness and execution gates. It stops short of explicitly distinguishing itself from siblings like get_candle_market_snapshot or get_candle_evidence_board, so an agent must infer the boundary.
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?
No when-to-use or when-not-to-use guidance relative to the ten sibling tools. The only routing hint is a behavioral gate (returns NO_TRADE under certain conditions), which describes output rather than when the agent should choose this tool over get_candle_market_snapshot or search_by_sketch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_candle_analogueInspect Candle AnalogueARead-onlyIdempotentInspect
Open one neighbour from the reported rankingMethod as an episode: query OHLC, twin OHLC, rebased forward, distance, display similarity, dated permalinks. Not a directional call.
| Name | Required | Description | Default |
|---|---|---|---|
| f | No | Forward horizon in bars. Only the chart presets 5, 10, 30, and 50 are supported | |
| q | No | Candles in the matched pattern. Only the chart presets 3, 5, 8, and 12 are supported | |
| rank | No | 1-based rank in the selected retrieval method's neighbour list (1 = closest). | |
| limit | No | Closest analogues to list (1-20). Bands and direction always use the chart's 20 neighbours | |
| symbol | No | Supported chart symbol: BTCUSDT, ETHUSDT, or SOLUSDT | BTCUSDT |
| anchorTs | No | Optional historical replay anchor in Unix milliseconds. Omit for the latest chart candle | |
| interval | No | Supported chart timeframe: 5m, 15m, 1h, 4h, or 1d | 5m |
| token_id | No | Optional token. No token or payment is needed during the free access experiment. | |
| chart_token | No | Optional account key; all tools work anonymously during the free access experiment. | |
| analogueAnchorTs | No | Twin episode to open, Unix ms. If omitted, use rank. | |
| includeAnalogueCandles | No | Include OHLC arrays for every analogue and its continuation. False keeps the response agent-sized |
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 the non-directional scope caveat and a list of returned fields, but says nothing about auth (left to the schema's free-access notes) or any limits.
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?
Two compact sentences, front-loaded with the action and followed by the field inventory and a scope disclaimer. Dense but every clause carries information; not padded.
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 usefully enumerates return contents (OHLC pairs, rebased forward, distance, similarity, permalinks), which is exactly the gap an output schema would fill. It stops short of explaining parameter interplay, but the schema covers that.
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?
Schema description coverage is 100%, so every parameter is already documented (rank vs analogueAnchorTs selection, enum presets, includeAnalogueCandles response sizing). The description adds no parameter-level meaning, which is the correct baseline when the schema does the work.
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?
States a specific verb+resource: opens/inspects a single neighbour analogue ('episode') from the reported ranking and enumerates what it surfaces (query OHLC, twin OHLC, rebased forward, distance, similarity, permalinks). 'Not a directional call' distinguishes it from decision/verdict siblings, though the phrase 'as an episode' is jargon-heavy.
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?
Usage is only implied: 'from the reported rankingMethod' signals it is a follow-up to a retrieval/ranking tool, and 'not a directional call' is a when-not hint. No sibling is named as an alternative and no explicit precondition is given, so the agent must infer the ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_by_sketchSearch by SketchBRead-onlyIdempotentInspect
Search for historical patterns similar to a custom 'sketched' price trajectory (Sketch-to-Search). Useful when you want to find matches for a hypothetical or hand-drawn pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max matches to return | |
| symbol | No | Reference symbol for scale | BTCUSDT |
| interval | No | Reference interval | 1h |
| token_id | No | Optional token. No token or payment is needed during the free access experiment. | |
| chart_token | No | Optional account key; all tools work anonymously during the free access experiment. | |
| queryValues | Yes | Array of price points representing the sketched pattern (e.g. [10, 11, 10.5, 12]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the useful semantic note that the search is over 'historical patterns' and can serve hypothetical drawings, but says nothing about return shape, ranking, or how the sketch is normalized to the reference symbol/interval.
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?
Two short sentences with zero filler and the core action front-loaded. Efficient, though the second sentence is largely a restatement of the first rather than new 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 a six-parameter search tool with no output schema, the description is minimally adequate: it explains the input concept and use case but not what a returned match looks like, how results are ranked, or why a reference symbol/interval is required. The API-guide sibling may cover this, softening the gap.
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?
Schema coverage is 100%, so all six parameters are documented by the schema itself, setting the baseline at 3. The description reinforces that queryValues represents a custom or hypothetical sketch, which is mild added meaning over the schema's own wording, but nothing about how symbol/interval act as scale references.
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?
States a specific verb and resource ('Search for historical patterns similar to a custom sketched price trajectory') and even names the concept (Sketch-to-Search). An agent can grasp what it does, though it never explicitly distinguishes itself from sibling tools like get_candle_analogue_map or inspect_candle_analogue.
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?
Provides a use case ('when you want to find matches for a hypothetical or hand-drawn pattern'), which implies the scenario, but names no alternatives and gives no exclusions. With ten sibling candle tools, the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
what_is_odd_in_candle_memoryWhat Is Odd in Candle MemoryBRead-onlyIdempotentInspect
Explain what stands out in the retrieved evidence: terminal-outcome band versus all-history, observed coverage, closest episode versus median, era clustering and neighbour distances. Suggests a concrete level hypothesis to investigate next; execution eligibility is reported separately.
| Name | Required | Description | Default |
|---|---|---|---|
| f | No | Forward horizon in bars. Only the chart presets 5, 10, 30, and 50 are supported | |
| q | No | Candles in the matched pattern. Only the chart presets 3, 5, 8, and 12 are supported | |
| limit | No | Closest analogues to list (1-20). Bands and direction always use the chart's 20 neighbours | |
| symbol | No | Supported chart symbol: BTCUSDT, ETHUSDT, or SOLUSDT | BTCUSDT |
| anchorTs | No | Optional historical replay anchor in Unix milliseconds. Omit for the latest chart candle | |
| interval | No | Supported chart timeframe: 5m, 15m, 1h, 4h, or 1d | 5m |
| token_id | No | Optional token. No token or payment is needed during the free access experiment. | |
| chart_token | No | Optional account key; all tools work anonymously during the free access experiment. | |
| includeAnalogueCandles | No | Include OHLC arrays for every analogue and its continuation. False keeps the response agent-sized |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds one genuinely useful boundary: 'execution eligibility is reported separately,' clarifying what this tool does NOT return. Beyond that it says nothing about return format or limits, so with annotations carrying the safety burden a 3 is appropriate.
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?
Two sentences with no filler; the enumerated facets are front-loaded and the closing clause about execution eligibility is placed where it matters. It is dense with domain jargon but not padded.
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?
With 9 parameters and no output schema, the description should carry more of the return-shape burden. It does list the analytical facets, which helps, but undefined terms ('terminal-outcome band', 'era clustering') and the lack of any structural sense of the response leave the agent under-informed about what it will receive.
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?
Schema description coverage is 100%, so the schema already documents all nine parameters (horizons, pattern lengths, limits, symbol, anchor, interval, tokens, candle flag). The description references 'observed coverage' and 'closest episode' loosely but adds no syntax or format meaning beyond the schema. Baseline 3 is correct when the schema does the heavy lifting.
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 analytical verb+resource: it explains what standouts exist in retrieved evidence, enumerating concrete facets (terminal-outcome band vs all-history, coverage, closest episode vs median, era clustering, neighbour distances). It is clear what the tool does, but it never differentiates itself from close siblings like explain_candle_match, get_candle_evidence_board, or evaluate_candle_hypothesis.
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?
No explicit when-to-use or when-not-to-use guidance is given, and no sibling alternative is named. The phrase 'Suggests a concrete level hypothesis to investigate next' loosely implies a handoff to evaluate_candle_hypothesis, but the agent must infer this rather than being told.
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.
1 tool update
- Added
get_rlxbt_backtester_trial
1 tool update
- Changed
evaluate_candle_hypothesis7 fields changed- changed
Output schema / properties / contract / constPrevious value: -"candle-hypothesis/v2"New value: +"candle-hypothesis/v3" - changed
Output schema / properties / researchConclusion / properties / assessment / enumPrevious value: -[ - "INSUFFICIENT_DATA", - "NO_CLEAR_DIFFERENCE", - "DESCRIPTIVE_DIFFERENCE", - "BASELINE_UNAVAILABLE" -]New value: +[ + "INSUFFICIENT_DATA", + "NO_CLEAR_DIFFERENCE", + "DESCRIPTIVE_DIFFERENCE", + "BASELINE_UNAVAILABLE", + "AMBIGUITY_LIMITED" +] - added
Output schema / properties / researchConclusion / properties / definiteEventAssessmentAdded value: +{ + "enum": [ + "INSUFFICIENT_DATA", + "NO_CLEAR_DIFFERENCE", + "DESCRIPTIVE_DIFFERENCE", + "BASELINE_UNAVAILABLE", + "AMBIGUITY_LIMITED" + ], + "type": "string" +} - changed
Output schema / properties / researchConclusion / requiredPrevious value: -[ - "metric", - "assessment", - "differencePp", - "strategyEdgeValidated", - "statement" -]New value: +[ + "metric", + "assessment", + "definiteEventAssessment", + "differencePp", + "strategyEdgeValidated", + "statement" +] - added
Output schema / properties / targetOrderAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "analogues": { + "additionalProperties": false, + "properties": { + "definiteTargetFirst": { + "minimum": 0, + "type": "integer" + }, + "possibleSharePct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "samplingEnvelope95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "unknownOrder": { + "minimum": 0, + "type": "integer" + }, + "unresolved": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "definiteTargetFirst", + "unknownOrder", + "unresolved", + "possibleSharePct", + "samplingEnvelope95Pct" + ], + "type": "object" + }, + "assessment": { + "enum": [ + "INSUFFICIENT_DATA", + "NO_CLEAR_DIFFERENCE", + "DESCRIPTIVE_DIFFERENCE", + "BASELINE_UNAVAILABLE", + "AMBIGUITY_LIMITED" + ], + "type": "string" + }, + "baseline": { + "additionalProperties": false, + "properties": { + "definiteTargetFirst": { + "minimum": 0, + "type": "integer" + }, + "possibleSharePct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "samplingEnvelope95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "unknownOrder": { + "minimum": 0, + "type": "integer" + }, + "unresolved": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "definiteTargetFirst", + "unknownOrder", + "unresolved", + "possibleSharePct", + "samplingEnvelope95Pct" + ], + "type": "object" + }, + "note": { + "type": "string" + }, + "possibleDifferencePp": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": -100, + "type": "number" + }, + { + "maximum": 100, + "minimum": -100, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "samplingEnvelope95Pp": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": -100, + "type": "number" + }, + { + "maximum": 100, + "minimum": -100, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "analogues", + "baseline", + "possibleDifferencePp", + "samplingEnvelope95Pp", + "assessment", + "note" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / volatilityCheckAdded value: +{ + "additionalProperties": false, + "properties": { + "analogues": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "afterTouch": { + "additionalProperties": false, + "properties": { + "sequence": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "ambiguous": { + "minimum": 0, + "type": "integer" + }, + "denominator": { + "const": "touched_episodes", + "type": "string" + }, + "invalidation_first": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "target_first": { + "minimum": 0, + "type": "integer" + }, + "unresolved": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "denominator", + "samples", + "target_first", + "invalidation_first", + "ambiguous", + "unresolved" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "terminalChangeFromLevelPct": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "p10": { + "type": "number" + }, + "p50": { + "type": "number" + }, + "p90": { + "type": "number" + }, + "samples": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "p10", + "p50", + "p90" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "terminalChangeFromLevelPct", + "sequence" + ], + "type": "object" + }, + "anchors": { + "items": { + "exclusiveMinimum": 0, + "type": "number" + }, + "type": "array" + }, + "reach": { + "additionalProperties": false, + "properties": { + "firstTouchBar": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "p10": { + "type": "number" + }, + "p50": { + "type": "number" + }, + "p90": { + "type": "number" + }, + "samples": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "p10", + "p50", + "p90" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "frequency": { + "additionalProperties": false, + "properties": { + "confidenceInterval95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "count": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "sharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "count", + "samples", + "sharePct", + "confidenceInterval95Pct" + ], + "type": "object" + }, + "historicalTouchSharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "notTouched": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "touched": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "touched", + "notTouched", + "historicalTouchSharePct", + "firstTouchBar", + "frequency" + ], + "type": "object" + } + }, + "required": [ + "reach", + "afterTouch", + "anchors" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "baseline": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "afterTouch": { + "additionalProperties": false, + "properties": { + "sequence": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "ambiguous": { + "minimum": 0, + "type": "integer" + }, + "denominator": { + "const": "touched_episodes", + "type": "string" + }, + "invalidation_first": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "target_first": { + "minimum": 0, + "type": "integer" + }, + "unresolved": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "denominator", + "samples", + "target_first", + "invalidation_first", + "ambiguous", + "unresolved" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "terminalChangeFromLevelPct": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "p10": { + "type": "number" + }, + "p50": { + "type": "number" + }, + "p90": { + "type": "number" + }, + "samples": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "p10", + "p50", + "p90" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "terminalChangeFromLevelPct", + "sequence" + ], + "type": "object" + }, + "anchors": { + "items": { + "exclusiveMinimum": 0, + "type": "number" + }, + "type": "array" + }, + "reach": { + "additionalProperties": false, + "properties": { + "firstTouchBar": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "p10": { + "type": "number" + }, + "p50": { + "type": "number" + }, + "p90": { + "type": "number" + }, + "samples": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "p10", + "p50", + "p90" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "frequency": { + "additionalProperties": false, + "properties": { + "confidenceInterval95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "count": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "sharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "count", + "samples", + "sharePct", + "confidenceInterval95Pct" + ], + "type": "object" + }, + "historicalTouchSharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "notTouched": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "touched": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "touched", + "notTouched", + "historicalTouchSharePct", + "firstTouchBar", + "frequency" + ], + "type": "object" + } + }, + "required": [ + "reach", + "afterTouch", + "anchors" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "method": { + "const": "fixed_pre_pattern_mean_range_ratio", + "type": "string" + }, + "note": { + "type": "string" + }, + "queryMeanRangePct": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "ratioRange": { + "items": [ + { + "const": 0.5, + "type": "number" + }, + { + "const": 2, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + "reachComparison": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "analogues": { + "additionalProperties": false, + "properties": { + "confidenceInterval95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "count": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "sharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "count", + "samples", + "sharePct", + "confidenceInterval95Pct" + ], + "type": "object" + }, + "assessment": { + "enum": [ + "INSUFFICIENT_DATA", + "NO_CLEAR_DIFFERENCE", + "DESCRIPTIVE_DIFFERENCE" + ], + "type": "string" + }, + "baseline": { + "additionalProperties": false, + "properties": { + "confidenceInterval95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "count": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "sharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "count", + "samples", + "sharePct", + "confidenceInterval95Pct" + ], + "type": "object" + }, + "confidenceInterval95Pp": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": -100, + "type": "number" + }, + { + "maximum": 100, + "minimum": -100, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "differencePp": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "analogues", + "baseline", + "differencePp", + "confidenceInterval95Pp", + "assessment" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "selectionUsesForwardOutcomes": { + "const": false, + "type": "boolean" + }, + "status": { + "enum": [ + "BASELINE_UNAVAILABLE", + "VOLATILITY_UNAVAILABLE", + "INSUFFICIENT_DATA", + "AVAILABLE" + ], + "type": "string" + }, + "targetOrder": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "analogues": { + "additionalProperties": false, + "properties": { + "definiteTargetFirst": { + "minimum": 0, + "type": "integer" + }, + "possibleSharePct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "samplingEnvelope95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "unknownOrder": { + "minimum": 0, + "type": "integer" + }, + "unresolved": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "definiteTargetFirst", + "unknownOrder", + "unresolved", + "possibleSharePct", + "samplingEnvelope95Pct" + ], + "type": "object" + }, + "assessment": { + "enum": [ + "INSUFFICIENT_DATA", + "NO_CLEAR_DIFFERENCE", + "DESCRIPTIVE_DIFFERENCE", + "BASELINE_UNAVAILABLE", + "AMBIGUITY_LIMITED" + ], + "type": "string" + }, + "baseline": { + "additionalProperties": false, + "properties": { + "definiteTargetFirst": { + "minimum": 0, + "type": "integer" + }, + "possibleSharePct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "samplingEnvelope95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "unknownOrder": { + "minimum": 0, + "type": "integer" + }, + "unresolved": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "definiteTargetFirst", + "unknownOrder", + "unresolved", + "possibleSharePct", + "samplingEnvelope95Pct" + ], + "type": "object" + }, + "note": { + "type": "string" + }, + "possibleDifferencePp": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": -100, + "type": "number" + }, + { + "maximum": 100, + "minimum": -100, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "samplingEnvelope95Pp": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": -100, + "type": "number" + }, + { + "maximum": 100, + "minimum": -100, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "analogues", + "baseline", + "possibleDifferencePp", + "samplingEnvelope95Pp", + "assessment", + "note" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "status", + "method", + "queryMeanRangePct", + "ratioRange", + "selectionUsesForwardOutcomes", + "analogues", + "baseline", + "reachComparison", + "targetOrder", + "note" + ], + "type": "object" +} - changed
Output schema / requiredPrevious value: -[ - "contract", - "summary", - "researchStatus", - "selection", - "hypothesis", - "researchConclusion", - "reach", - "afterTouch", - "baseline", - "comparison", - "dataQuality", - "episodes", - "next", - "caveats", - "executionEligibility" -]New value: +[ + "contract", + "summary", + "researchStatus", + "selection", + "hypothesis", + "researchConclusion", + "reach", + "afterTouch", + "targetOrder", + "volatilityCheck", + "baseline", + "comparison", + "dataQuality", + "episodes", + "next", + "caveats", + "executionEligibility" +]
1 tool update
- Changed
evaluate_candle_hypothesis1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "afterTouch": { + "additionalProperties": false, + "properties": { + "sequence": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "ambiguous": { + "minimum": 0, + "type": "integer" + }, + "denominator": { + "const": "touched_episodes", + "type": "string" + }, + "invalidation_first": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "target_first": { + "minimum": 0, + "type": "integer" + }, + "unresolved": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "denominator", + "samples", + "target_first", + "invalidation_first", + "ambiguous", + "unresolved" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "terminalChangeFromLevelPct": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "p10": { + "type": "number" + }, + "p50": { + "type": "number" + }, + "p90": { + "type": "number" + }, + "samples": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "p10", + "p50", + "p90" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "terminalChangeFromLevelPct", + "sequence" + ], + "type": "object" + }, + "baseline": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "afterTouch": { + "additionalProperties": false, + "properties": { + "sequence": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "ambiguous": { + "minimum": 0, + "type": "integer" + }, + "denominator": { + "const": "touched_episodes", + "type": "string" + }, + "invalidation_first": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "target_first": { + "minimum": 0, + "type": "integer" + }, + "unresolved": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "denominator", + "samples", + "target_first", + "invalidation_first", + "ambiguous", + "unresolved" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "terminalChangeFromLevelPct": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "p10": { + "type": "number" + }, + "p50": { + "type": "number" + }, + "p90": { + "type": "number" + }, + "samples": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "p10", + "p50", + "p90" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "terminalChangeFromLevelPct", + "sequence" + ], + "type": "object" + }, + "eligibleCandidates": { + "minimum": 0, + "type": "integer" + }, + "examples": { + "items": { + "additionalProperties": false, + "properties": { + "analogueAnchorTs": { + "exclusiveMinimum": 0, + "type": "number" + }, + "firstTouchBar": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "permalink": { + "type": "string" + }, + "sequence": { + "anyOf": [ + { + "enum": [ + "target_first", + "invalidation_first", + "ambiguous", + "unresolved" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "terminalChangeFromLevelPct": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "terminalPrice": { + "exclusiveMinimum": 0, + "type": "number" + }, + "touched": { + "type": "boolean" + }, + "when": { + "type": "string" + } + }, + "required": [ + "analogueAnchorTs", + "when", + "permalink", + "touched", + "firstTouchBar", + "terminalPrice", + "terminalChangeFromLevelPct", + "sequence" + ], + "type": "object" + }, + "type": "array" + }, + "excluded": { + "items": { + "additionalProperties": false, + "properties": { + "analogueAnchorTs": { + "type": "number" + }, + "reason": { + "type": "string" + } + }, + "required": [ + "analogueAnchorTs", + "reason" + ], + "type": "object" + }, + "type": "array" + }, + "historyEndTs": { + "type": "number" + }, + "historyStartTs": { + "type": "number" + }, + "note": { + "type": "string" + }, + "reach": { + "additionalProperties": false, + "properties": { + "firstTouchBar": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "p10": { + "type": "number" + }, + "p50": { + "type": "number" + }, + "p90": { + "type": "number" + }, + "samples": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "p10", + "p50", + "p90" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "frequency": { + "additionalProperties": false, + "properties": { + "confidenceInterval95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "count": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "sharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "count", + "samples", + "sharePct", + "confidenceInterval95Pct" + ], + "type": "object" + }, + "historicalTouchSharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "notTouched": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "touched": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "touched", + "notTouched", + "historicalTouchSharePct", + "firstTouchBar", + "frequency" + ], + "type": "object" + }, + "sampleCap": { + "minimum": 0, + "type": "integer" + }, + "selectionMethod": { + "const": "chronological_disjoint_evenly_spaced", + "type": "string" + }, + "status": { + "enum": [ + "AVAILABLE", + "INSUFFICIENT_DATA" + ], + "type": "string" + }, + "temporalCoverage": { + "additionalProperties": false, + "properties": { + "concentrated": { + "type": "boolean" + }, + "distinctPeriods": { + "minimum": 0, + "type": "integer" + }, + "earliest": { + "type": [ + "string", + "null" + ] + }, + "largestPeriodSharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "latest": { + "type": [ + "string", + "null" + ] + }, + "periodUnit": { + "const": "calendar_quarter", + "type": "string" + }, + "periods": { + "additionalProperties": { + "minimum": 0, + "type": "integer" + }, + "type": "object" + } + }, + "required": [ + "periods", + "periodUnit", + "distinctPeriods", + "largestPeriodSharePct", + "concentrated", + "earliest", + "latest" + ], + "type": "object" + } + }, + "required": [ + "status", + "selectionMethod", + "eligibleCandidates", + "sampleCap", + "historyStartTs", + "historyEndTs", + "reach", + "afterTouch", + "excluded", + "temporalCoverage", + "examples", + "note" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "reason": { + "type": "string" + }, + "status": { + "enum": [ + "UNAVAILABLE", + "INCOMPATIBLE_SNAPSHOT" + ], + "type": "string" + } + }, + "required": [ + "status", + "reason" + ], + "type": "object" + } + ] + }, + "caveats": { + "items": { + "type": "string" + }, + "type": "array" + }, + "comparison": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "afterTouch": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "ambiguous": { + "additionalProperties": false, + "properties": { + "analogues": { + "additionalProperties": false, + "properties": { + "confidenceInterval95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "count": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "sharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "count", + "samples", + "sharePct", + "confidenceInterval95Pct" + ], + "type": "object" + }, + "assessment": { + "enum": [ + "INSUFFICIENT_DATA", + "NO_CLEAR_DIFFERENCE", + "DESCRIPTIVE_DIFFERENCE" + ], + "type": "string" + }, + "baseline": { + "additionalProperties": false, + "properties": { + "confidenceInterval95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "count": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "sharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "count", + "samples", + "sharePct", + "confidenceInterval95Pct" + ], + "type": "object" + }, + "confidenceInterval95Pp": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": -100, + "type": "number" + }, + { + "maximum": 100, + "minimum": -100, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "differencePp": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "analogues", + "baseline", + "differencePp", + "confidenceInterval95Pp", + "assessment" + ], + "type": "object" + }, + "invalidation_first": { + "additionalProperties": false, + "properties": { + "analogues": { + "additionalProperties": false, + "properties": { + "confidenceInterval95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "count": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "sharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "count", + "samples", + "sharePct", + "confidenceInterval95Pct" + ], + "type": "object" + }, + "assessment": { + "enum": [ + "INSUFFICIENT_DATA", + "NO_CLEAR_DIFFERENCE", + "DESCRIPTIVE_DIFFERENCE" + ], + "type": "string" + }, + "baseline": { + "additionalProperties": false, + "properties": { + "confidenceInterval95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "count": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "sharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "count", + "samples", + "sharePct", + "confidenceInterval95Pct" + ], + "type": "object" + }, + "confidenceInterval95Pp": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": -100, + "type": "number" + }, + { + "maximum": 100, + "minimum": -100, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "differencePp": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "analogues", + "baseline", + "differencePp", + "confidenceInterval95Pp", + "assessment" + ], + "type": "object" + }, + "target_first": { + "additionalProperties": false, + "properties": { + "analogues": { + "additionalProperties": false, + "properties": { + "confidenceInterval95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "count": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "sharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "count", + "samples", + "sharePct", + "confidenceInterval95Pct" + ], + "type": "object" + }, + "assessment": { + "enum": [ + "INSUFFICIENT_DATA", + "NO_CLEAR_DIFFERENCE", + "DESCRIPTIVE_DIFFERENCE" + ], + "type": "string" + }, + "baseline": { + "additionalProperties": false, + "properties": { + "confidenceInterval95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "count": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "sharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "count", + "samples", + "sharePct", + "confidenceInterval95Pct" + ], + "type": "object" + }, + "confidenceInterval95Pp": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": -100, + "type": "number" + }, + { + "maximum": 100, + "minimum": -100, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "differencePp": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "analogues", + "baseline", + "differencePp", + "confidenceInterval95Pp", + "assessment" + ], + "type": "object" + }, + "unresolved": { + "additionalProperties": false, + "properties": { + "analogues": { + "additionalProperties": false, + "properties": { + "confidenceInterval95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "count": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "sharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "count", + "samples", + "sharePct", + "confidenceInterval95Pct" + ], + "type": "object" + }, + "assessment": { + "enum": [ + "INSUFFICIENT_DATA", + "NO_CLEAR_DIFFERENCE", + "DESCRIPTIVE_DIFFERENCE" + ], + "type": "string" + }, + "baseline": { + "additionalProperties": false, + "properties": { + "confidenceInterval95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "count": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "sharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "count", + "samples", + "sharePct", + "confidenceInterval95Pct" + ], + "type": "object" + }, + "confidenceInterval95Pp": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": -100, + "type": "number" + }, + { + "maximum": 100, + "minimum": -100, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "differencePp": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "analogues", + "baseline", + "differencePp", + "confidenceInterval95Pp", + "assessment" + ], + "type": "object" + } + }, + "required": [ + "target_first", + "invalidation_first", + "ambiguous", + "unresolved" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "denominatorNote": { + "type": "string" + }, + "intervalMethod": { + "type": "string" + }, + "reach": { + "additionalProperties": false, + "properties": { + "analogues": { + "additionalProperties": false, + "properties": { + "confidenceInterval95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "count": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "sharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "count", + "samples", + "sharePct", + "confidenceInterval95Pct" + ], + "type": "object" + }, + "assessment": { + "enum": [ + "INSUFFICIENT_DATA", + "NO_CLEAR_DIFFERENCE", + "DESCRIPTIVE_DIFFERENCE" + ], + "type": "string" + }, + "baseline": { + "additionalProperties": false, + "properties": { + "confidenceInterval95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "count": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "sharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "count", + "samples", + "sharePct", + "confidenceInterval95Pct" + ], + "type": "object" + }, + "confidenceInterval95Pp": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": -100, + "type": "number" + }, + { + "maximum": 100, + "minimum": -100, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "differencePp": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "analogues", + "baseline", + "differencePp", + "confidenceInterval95Pp", + "assessment" + ], + "type": "object" + }, + "strategyEdgeValidated": { + "const": false, + "type": "boolean" + } + }, + "required": [ + "reach", + "afterTouch", + "denominatorNote", + "intervalMethod", + "strategyEdgeValidated" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "contract": { + "const": "candle-hypothesis/v2", + "type": "string" + }, + "dataQuality": { + "additionalProperties": false, + "properties": { + "contextBarsIncluded": { + "minimum": 0, + "type": "integer" + }, + "excluded": { + "items": { + "additionalProperties": false, + "properties": { + "analogueAnchorTs": { + "type": "number" + }, + "reason": { + "type": "string" + } + }, + "required": [ + "analogueAnchorTs", + "reason" + ], + "type": "object" + }, + "type": "array" + }, + "independenceNote": { + "type": "string" + }, + "matchDistance": { + "additionalProperties": false, + "properties": { + "calibration": { + "const": "UNVALIDATED", + "type": "string" + }, + "distribution": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "p10": { + "type": "number" + }, + "p50": { + "type": "number" + }, + "p90": { + "type": "number" + }, + "samples": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "p10", + "p50", + "p90" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "note": { + "type": "string" + } + }, + "required": [ + "distribution", + "calibration", + "note" + ], + "type": "object" + }, + "nonOverlappingEpisodes": { + "minimum": 0, + "type": "integer" + }, + "overlapExcluded": { + "minimum": 0, + "type": "integer" + }, + "reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "retrieved": { + "minimum": 0, + "type": "integer" + }, + "sensitivity": { + "additionalProperties": false, + "properties": { + "method": { + "type": "string" + }, + "note": { + "type": "string" + }, + "reachDifferencePp": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "status": { + "enum": [ + "AVAILABLE", + "INSUFFICIENT_EPISODES" + ], + "type": "string" + }, + "subsetSamples": { + "minimum": 0, + "type": "integer" + }, + "subsetTouched": { + "minimum": 0, + "type": "integer" + }, + "targetFirstDifferencePp": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "unstable": { + "type": "boolean" + } + }, + "required": [ + "status", + "method", + "subsetSamples", + "subsetTouched", + "reachDifferencePp", + "targetFirstDifferencePp", + "unstable", + "note" + ], + "type": "object" + }, + "separationBars": { + "minimum": 0, + "type": "integer" + }, + "smallSample": { + "type": "boolean" + }, + "temporalCoverage": { + "additionalProperties": false, + "properties": { + "concentrated": { + "type": "boolean" + }, + "distinctPeriods": { + "minimum": 0, + "type": "integer" + }, + "earliest": { + "type": [ + "string", + "null" + ] + }, + "largestPeriodSharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "latest": { + "type": [ + "string", + "null" + ] + }, + "periodUnit": { + "const": "calendar_quarter", + "type": "string" + }, + "periods": { + "additionalProperties": { + "minimum": 0, + "type": "integer" + }, + "type": "object" + } + }, + "required": [ + "periods", + "periodUnit", + "distinctPeriods", + "largestPeriodSharePct", + "concentrated", + "earliest", + "latest" + ], + "type": "object" + }, + "usable": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "retrieved", + "usable", + "excluded", + "smallSample", + "nonOverlappingEpisodes", + "separationBars", + "contextBarsIncluded", + "overlapExcluded", + "independenceNote", + "matchDistance", + "temporalCoverage", + "sensitivity", + "reasons" + ], + "type": "object" + }, + "episodes": { + "items": { + "additionalProperties": false, + "properties": { + "analogueAnchorTs": { + "exclusiveMinimum": 0, + "type": "number" + }, + "firstTouchBar": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "permalink": { + "type": "string" + }, + "sequence": { + "anyOf": [ + { + "enum": [ + "target_first", + "invalidation_first", + "ambiguous", + "unresolved" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "terminalChangeFromLevelPct": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "terminalPrice": { + "exclusiveMinimum": 0, + "type": "number" + }, + "touched": { + "type": "boolean" + }, + "when": { + "type": "string" + } + }, + "required": [ + "analogueAnchorTs", + "when", + "permalink", + "touched", + "firstTouchBar", + "terminalPrice", + "terminalChangeFromLevelPct", + "sequence" + ], + "type": "object" + }, + "type": "array" + }, + "executionEligibility": { + "additionalProperties": false, + "properties": { + "decision": { + "const": "NO_TRADE", + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "required": [ + "decision", + "reason" + ], + "type": "object" + }, + "hypothesis": { + "additionalProperties": false, + "properties": { + "entryPrice": { + "exclusiveMinimum": 0, + "type": "number" + }, + "invalidationPrice": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "levelOffsetPct": { + "type": "number" + }, + "levelPrice": { + "exclusiveMinimum": 0, + "type": "number" + }, + "reachDirection": { + "enum": [ + "up", + "down" + ], + "type": "string" + }, + "targetPrice": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "entryPrice", + "levelPrice", + "reachDirection", + "levelOffsetPct", + "targetPrice", + "invalidationPrice" + ], + "type": "object" + }, + "next": { + "items": { + "additionalProperties": false, + "properties": { + "arguments": { + "additionalProperties": {}, + "type": "object" + }, + "purpose": { + "type": "string" + }, + "tool": { + "type": "string" + } + }, + "required": [ + "tool", + "arguments", + "purpose" + ], + "type": "object" + }, + "type": "array" + }, + "reach": { + "additionalProperties": false, + "properties": { + "firstTouchBar": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "p10": { + "type": "number" + }, + "p50": { + "type": "number" + }, + "p90": { + "type": "number" + }, + "samples": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "p10", + "p50", + "p90" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "frequency": { + "additionalProperties": false, + "properties": { + "confidenceInterval95Pct": { + "anyOf": [ + { + "items": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "maximum": 100, + "minimum": 0, + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "count": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "sharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "count", + "samples", + "sharePct", + "confidenceInterval95Pct" + ], + "type": "object" + }, + "historicalTouchSharePct": { + "anyOf": [ + { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "notTouched": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + }, + "touched": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "samples", + "touched", + "notTouched", + "historicalTouchSharePct", + "firstTouchBar", + "frequency" + ], + "type": "object" + }, + "researchConclusion": { + "additionalProperties": false, + "properties": { + "assessment": { + "enum": [ + "INSUFFICIENT_DATA", + "NO_CLEAR_DIFFERENCE", + "DESCRIPTIVE_DIFFERENCE", + "BASELINE_UNAVAILABLE" + ], + "type": "string" + }, + "differencePp": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "metric": { + "enum": [ + "reach", + "target_first_after_reach" + ], + "type": "string" + }, + "statement": { + "type": "string" + }, + "strategyEdgeValidated": { + "const": false, + "type": "boolean" + } + }, + "required": [ + "metric", + "assessment", + "differencePp", + "strategyEdgeValidated", + "statement" + ], + "type": "object" + }, + "researchStatus": { + "enum": [ + "INSUFFICIENT_DATA", + "LEVEL_NOT_REACHED_IN_SAMPLE", + "HISTORICAL_EVIDENCE_AVAILABLE" + ], + "type": "string" + }, + "selection": { + "additionalProperties": false, + "properties": { + "anchorTs": { + "exclusiveMinimum": 0, + "type": "number" + }, + "f": { + "minimum": 0, + "type": "integer" + }, + "interval": { + "type": "string" + }, + "q": { + "minimum": 0, + "type": "integer" + }, + "rankingMethod": { + "type": "string" + }, + "symbol": { + "type": "string" + } + }, + "required": [ + "symbol", + "interval", + "q", + "f", + "anchorTs", + "rankingMethod" + ], + "type": "object" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "contract", + "summary", + "researchStatus", + "selection", + "hypothesis", + "researchConclusion", + "reach", + "afterTouch", + "baseline", + "comparison", + "dataQuality", + "episodes", + "next", + "caveats", + "executionEligibility" + ], + "type": "object" +}
1 tool update
- Added
evaluate_candle_hypothesis
8 tool updates
- Changed
explain_candle_match2 fields changed- changed
Input schema / properties / chart_token / descriptionPrevious value: -"Optional Chart access token. Prefer the X-Aipp-Chart header in the MCP client config so every tool call is covered."New value: +"Optional account key; all tools work anonymously during the free access experiment." - changed
Input schema / properties / token_id / descriptionPrevious value: -"Optional Chart access token (64-hex, same as X-Aipp-Chart / the token on /profile). After the daily free MCP quota, paid tools require the Chart $29/mo Stripe subscription. Legacy Manus token_id still works only when MCP_BILLING=manus."New value: +"Optional token. No token or payment is needed during the free access experiment."
- Changed
get_candle_analogue_map2 fields changed- changed
Input schema / properties / chart_token / descriptionPrevious value: -"Optional Chart access token. Prefer the X-Aipp-Chart header in the MCP client config so every tool call is covered."New value: +"Optional account key; all tools work anonymously during the free access experiment." - changed
Input schema / properties / token_id / descriptionPrevious value: -"Optional Chart access token (64-hex, same as X-Aipp-Chart / the token on /profile). After the daily free MCP quota, paid tools require the Chart $29/mo Stripe subscription. Legacy Manus token_id still works only when MCP_BILLING=manus."New value: +"Optional token. No token or payment is needed during the free access experiment."
- Changed
get_candle_market_snapshot2 fields changed- changed
Input schema / properties / chart_token / descriptionPrevious value: -"Optional Chart access token. Prefer the X-Aipp-Chart header in the MCP client config so every tool call is covered."New value: +"Optional account key; all tools work anonymously during the free access experiment." - changed
Input schema / properties / token_id / descriptionPrevious value: -"Optional Chart access token (64-hex, same as X-Aipp-Chart / the token on /profile). After the daily free MCP quota, paid tools require the Chart $29/mo Stripe subscription. Legacy Manus token_id still works only when MCP_BILLING=manus."New value: +"Optional token. No token or payment is needed during the free access experiment."
- Changed
get_candle_track_record2 fields changed- changed
Input schema / properties / chart_token / descriptionPrevious value: -"Optional Chart access token. Prefer the X-Aipp-Chart header in the MCP client config so every tool call is covered."New value: +"Optional account key; all tools work anonymously during the free access experiment." - changed
Input schema / properties / token_id / descriptionPrevious value: -"Optional Chart access token (64-hex, same as X-Aipp-Chart / the token on /profile). After the daily free MCP quota, paid tools require the Chart $29/mo Stripe subscription. Legacy Manus token_id still works only when MCP_BILLING=manus."New value: +"Optional token. No token or payment is needed during the free access experiment."
- Changed
get_trader_decision_v22 fields changed- changed
Input schema / properties / chart_token / descriptionPrevious value: -"Optional Chart access token. Prefer the X-Aipp-Chart header in the MCP client config so every tool call is covered."New value: +"Optional account key; all tools work anonymously during the free access experiment." - changed
Input schema / properties / token_id / descriptionPrevious value: -"Optional Chart access token (64-hex, same as X-Aipp-Chart / the token on /profile). After the daily free MCP quota, paid tools require the Chart $29/mo Stripe subscription. Legacy Manus token_id still works only when MCP_BILLING=manus."New value: +"Optional token. No token or payment is needed during the free access experiment."
- Changed
inspect_candle_analogue2 fields changed- changed
Input schema / properties / chart_token / descriptionPrevious value: -"Optional Chart access token. Prefer the X-Aipp-Chart header in the MCP client config so every tool call is covered."New value: +"Optional account key; all tools work anonymously during the free access experiment." - changed
Input schema / properties / token_id / descriptionPrevious value: -"Optional Chart access token (64-hex, same as X-Aipp-Chart / the token on /profile). After the daily free MCP quota, paid tools require the Chart $29/mo Stripe subscription. Legacy Manus token_id still works only when MCP_BILLING=manus."New value: +"Optional token. No token or payment is needed during the free access experiment."
- Changed
search_by_sketch2 fields changed- changed
Input schema / properties / chart_token / descriptionPrevious value: -"Optional Chart access token. Prefer the X-Aipp-Chart header in the MCP client config so every tool call is covered."New value: +"Optional account key; all tools work anonymously during the free access experiment." - changed
Input schema / properties / token_id / descriptionPrevious value: -"Optional Chart access token (64-hex, same as X-Aipp-Chart / the token on /profile). After the daily free MCP quota, paid tools require the Chart $29/mo Stripe subscription. Legacy Manus token_id still works only when MCP_BILLING=manus."New value: +"Optional token. No token or payment is needed during the free access experiment."
- Changed
what_is_odd_in_candle_memory2 fields changed- changed
Input schema / properties / chart_token / descriptionPrevious value: -"Optional Chart access token. Prefer the X-Aipp-Chart header in the MCP client config so every tool call is covered."New value: +"Optional account key; all tools work anonymously during the free access experiment." - changed
Input schema / properties / token_id / descriptionPrevious value: -"Optional Chart access token (64-hex, same as X-Aipp-Chart / the token on /profile). After the daily free MCP quota, paid tools require the Chart $29/mo Stripe subscription. Legacy Manus token_id still works only when MCP_BILLING=manus."New value: +"Optional token. No token or payment is needed during the free access experiment."
1 tool update
- Added
get_candle_evidence_board
9 tool updates
- Changed
explain_candle_match1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Number of closest candle analogues to return (1-20)"New value: +"Closest analogues to list (1-20). Bands and direction always use the chart's 20 neighbours"
- Changed
get_api_guide3 fields changed- changed
Input schema / properties / topic / defaultPrevious value: -"all"New value: +"candles" - changed
Input schema / properties / topic / descriptionPrevious value: -"Focus area: 'all' for full guide, or a specific topic"New value: +"'candles' (default): the start-here guide for the listed tools. 'all' adds the legacy full-profile catalog; other topics cover legacy tool families" - changed
Input schema / properties / topic / enumPrevious value: -[ - "all", - "polymarket", - "analogs", - "backtest", - "patterns", - "selector" -]New value: +[ + "candles", + "all", + "polymarket", + "analogs", + "backtest", + "patterns", + "selector" +]
- Changed
get_candle_analogue_map1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Number of closest candle analogues to return (1-20)"New value: +"Closest analogues to list (1-20). Bands and direction always use the chart's 20 neighbours"
- Changed
get_candle_market_snapshot1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Number of closest candle analogues to return (1-20)"New value: +"Closest analogues to list (1-20). Bands and direction always use the chart's 20 neighbours"
- Changed
get_candle_track_record4 fields changed- changed
Input schema / properties / analogueLimit / defaultPrevious value: -50New value: +20 - changed
Input schema / properties / analogueLimit / descriptionPrevious value: -"Nearest analogues used at every walk-forward anchor (5-200)"New value: +"Nearest analogues used at every walk-forward anchor (5-200). Default 20 matches /candles" - changed
Input schema / properties / anchors / defaultPrevious value: -40New value: +120 - changed
Input schema / properties / anchors / descriptionPrevious value: -"Independent resolved anchors to evaluate. Anchors are spaced f bars apart (10-120)"New value: +"Independent resolved anchors to evaluate, spaced f bars apart (10-120). Default 120 matches /candles; fewer is faster but noisier"
- Changed
get_mcp_compatibility_manifest1 field changed- added
Input schema / properties / profileAdded value: +{ + "default": "golden", + "description": "'golden' (default): the listed candle tools only. 'full': every callable tool, ~200 KB", + "enum": [ + "golden", + "full" + ], + "type": "string" +}
- Changed
get_trader_decision_v21 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Number of closest candle analogues to return (1-20)"New value: +"Closest analogues to list (1-20). Bands and direction always use the chart's 20 neighbours"
- Changed
inspect_candle_analogue1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Number of closest candle analogues to return (1-20)"New value: +"Closest analogues to list (1-20). Bands and direction always use the chart's 20 neighbours"
- Changed
what_is_odd_in_candle_memory1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Number of closest candle analogues to return (1-20)"New value: +"Closest analogues to list (1-20). Bands and direction always use the chart's 20 neighbours"
2 tool updates
- Changed
explain_candle_match1 field changed- changed
Input schema / properties / rank / descriptionPrevious value: -"1-based rank in the overlay-v1 neighbour list (1 = closest)."New value: +"1-based rank in the selected retrieval method's neighbour list (1 = closest)."
- Changed
inspect_candle_analogue1 field changed- changed
Input schema / properties / rank / descriptionPrevious value: -"1-based rank in the overlay-v1 neighbour list (1 = closest)."New value: +"1-based rank in the selected retrieval method's neighbour list (1 = closest)."
8 tool updates
- Changed
explain_candle_match2 fields changed- added
Input schema / properties / chart_tokenAdded value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "anyOf": [ + { + "not": {} + }, + { + "minLength": 1, + "type": "string" + } + ], + "description": "Optional Chart access token. Prefer the X-Aipp-Chart header in the MCP client config so every tool call is covered." +} - changed
Input schema / properties / token_id / descriptionPrevious value: -"Optional Manus access token. Paid tools use tokenized service access, not a monthly subscription: when token_id is omitted the server returns payment_required with a Solana Pay invoice, and after payment you retry with the same token while the server uses Manus token/resolve to recover pending access."New value: +"Optional Chart access token (64-hex, same as X-Aipp-Chart / the token on /profile). After the daily free MCP quota, paid tools require the Chart $29/mo Stripe subscription. Legacy Manus token_id still works only when MCP_BILLING=manus."
- Changed
get_candle_analogue_map2 fields changed- added
Input schema / properties / chart_tokenAdded value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "anyOf": [ + { + "not": {} + }, + { + "minLength": 1, + "type": "string" + } + ], + "description": "Optional Chart access token. Prefer the X-Aipp-Chart header in the MCP client config so every tool call is covered." +} - changed
Input schema / properties / token_id / descriptionPrevious value: -"Optional Manus access token. Paid tools use tokenized service access, not a monthly subscription: when token_id is omitted the server returns payment_required with a Solana Pay invoice, and after payment you retry with the same token while the server uses Manus token/resolve to recover pending access."New value: +"Optional Chart access token (64-hex, same as X-Aipp-Chart / the token on /profile). After the daily free MCP quota, paid tools require the Chart $29/mo Stripe subscription. Legacy Manus token_id still works only when MCP_BILLING=manus."
- Changed
get_candle_market_snapshot2 fields changed- added
Input schema / properties / chart_tokenAdded value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "anyOf": [ + { + "not": {} + }, + { + "minLength": 1, + "type": "string" + } + ], + "description": "Optional Chart access token. Prefer the X-Aipp-Chart header in the MCP client config so every tool call is covered." +} - changed
Input schema / properties / token_id / descriptionPrevious value: -"Optional Manus access token. Paid tools use tokenized service access, not a monthly subscription: when token_id is omitted the server returns payment_required with a Solana Pay invoice, and after payment you retry with the same token while the server uses Manus token/resolve to recover pending access."New value: +"Optional Chart access token (64-hex, same as X-Aipp-Chart / the token on /profile). After the daily free MCP quota, paid tools require the Chart $29/mo Stripe subscription. Legacy Manus token_id still works only when MCP_BILLING=manus."
- Changed
get_candle_track_record2 fields changed- added
Input schema / properties / chart_tokenAdded value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "anyOf": [ + { + "not": {} + }, + { + "minLength": 1, + "type": "string" + } + ], + "description": "Optional Chart access token. Prefer the X-Aipp-Chart header in the MCP client config so every tool call is covered." +} - changed
Input schema / properties / token_id / descriptionPrevious value: -"Optional Manus access token. Paid tools use tokenized service access, not a monthly subscription: when token_id is omitted the server returns payment_required with a Solana Pay invoice, and after payment you retry with the same token while the server uses Manus token/resolve to recover pending access."New value: +"Optional Chart access token (64-hex, same as X-Aipp-Chart / the token on /profile). After the daily free MCP quota, paid tools require the Chart $29/mo Stripe subscription. Legacy Manus token_id still works only when MCP_BILLING=manus."
- Changed
get_trader_decision_v22 fields changed- added
Input schema / properties / chart_tokenAdded value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "anyOf": [ + { + "not": {} + }, + { + "minLength": 1, + "type": "string" + } + ], + "description": "Optional Chart access token. Prefer the X-Aipp-Chart header in the MCP client config so every tool call is covered." +} - changed
Input schema / properties / token_id / descriptionPrevious value: -"Optional Manus access token. Paid tools use tokenized service access, not a monthly subscription: when token_id is omitted the server returns payment_required with a Solana Pay invoice, and after payment you retry with the same token while the server uses Manus token/resolve to recover pending access."New value: +"Optional Chart access token (64-hex, same as X-Aipp-Chart / the token on /profile). After the daily free MCP quota, paid tools require the Chart $29/mo Stripe subscription. Legacy Manus token_id still works only when MCP_BILLING=manus."
- Changed
inspect_candle_analogue2 fields changed- added
Input schema / properties / chart_tokenAdded value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "anyOf": [ + { + "not": {} + }, + { + "minLength": 1, + "type": "string" + } + ], + "description": "Optional Chart access token. Prefer the X-Aipp-Chart header in the MCP client config so every tool call is covered." +} - changed
Input schema / properties / token_id / descriptionPrevious value: -"Optional Manus access token. Paid tools use tokenized service access, not a monthly subscription: when token_id is omitted the server returns payment_required with a Solana Pay invoice, and after payment you retry with the same token while the server uses Manus token/resolve to recover pending access."New value: +"Optional Chart access token (64-hex, same as X-Aipp-Chart / the token on /profile). After the daily free MCP quota, paid tools require the Chart $29/mo Stripe subscription. Legacy Manus token_id still works only when MCP_BILLING=manus."
- Changed
search_by_sketch2 fields changed- added
Input schema / properties / chart_tokenAdded value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "anyOf": [ + { + "not": {} + }, + { + "minLength": 1, + "type": "string" + } + ], + "description": "Optional Chart access token. Prefer the X-Aipp-Chart header in the MCP client config so every tool call is covered." +} - changed
Input schema / properties / token_id / descriptionPrevious value: -"Optional Manus access token. Paid tools use tokenized service access, not a monthly subscription: when token_id is omitted the server returns payment_required with a Solana Pay invoice, and after payment you retry with the same token while the server uses Manus token/resolve to recover pending access."New value: +"Optional Chart access token (64-hex, same as X-Aipp-Chart / the token on /profile). After the daily free MCP quota, paid tools require the Chart $29/mo Stripe subscription. Legacy Manus token_id still works only when MCP_BILLING=manus."
- Changed
what_is_odd_in_candle_memory2 fields changed- added
Input schema / properties / chart_tokenAdded value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "anyOf": [ + { + "not": {} + }, + { + "minLength": 1, + "type": "string" + } + ], + "description": "Optional Chart access token. Prefer the X-Aipp-Chart header in the MCP client config so every tool call is covered." +} - changed
Input schema / properties / token_id / descriptionPrevious value: -"Optional Manus access token. Paid tools use tokenized service access, not a monthly subscription: when token_id is omitted the server returns payment_required with a Solana Pay invoice, and after payment you retry with the same token while the server uses Manus token/resolve to recover pending access."New value: +"Optional Chart access token (64-hex, same as X-Aipp-Chart / the token on /profile). After the daily free MCP quota, paid tools require the Chart $29/mo Stripe subscription. Legacy Manus token_id still works only when MCP_BILLING=manus."
13 tool updates
- Removed
backtest_strategy - Removed
detect_market_regime - Added
explain_candle_match - Removed
find_market_analogs - Removed
forecast_private_memory_from_data - Added
get_candle_analogue_map - Removed
get_live_polymarket_trade_decision - Removed
get_pattern_metrics - Removed
get_track_record - Removed
get_trading_decision - Added
inspect_candle_analogue - Removed
pattern_search - Added
what_is_odd_in_candle_memory
3 tool updates
- Added
get_candle_market_snapshot - Added
get_candle_track_record - Added
get_trader_decision_v2
12 tool updates
- First observed
backtest_strategy - First observed
detect_market_regime - First observed
find_market_analogs - First observed
forecast_private_memory_from_data - First observed
get_api_guide - First observed
get_live_polymarket_trade_decision - First observed
get_mcp_compatibility_manifest - First observed
get_pattern_metrics - First observed
get_track_record - First observed
get_trading_decision - First observed
pattern_search - First observed
search_by_sketch
Publisher details
- Operator
- Serhii Ovsiienko
- Operator website
- https://aipricepatterns.com · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://aipricepatterns.com/mcp · Publisher source
- Trust center
- Not available
- Restrictions
- Not applicable
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePerplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.2Apache 2.0
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs119 npmMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1611 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.