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 84 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 20 tools
Several tools overlap heavily: get_candle_live_pulse explicitly says it 'replaces get_candle_market_snapshot + what_is_odd_in_candle_memory + get_candle_analogue_map', yet all three deprecated tools remain callable, creating direct misselection risk. The four hypothesis tools (check_candle_order, evaluate_candle_hypothesis, investigate_candle_event_hypothesis, replay_candle_hypothesis) also share level/target/invalidation semantics and differ only by subtle methodology, making boundaries hard to reason about.
Most tools follow a predictable verb_candle_noun snake_case pattern (get_candle_live_pulse, evaluate_candle_hypothesis, investigate_candle_event_hypothesis). A few outliers break the pattern: what_is_odd_in_candle_memory is question-style, search_by_sketch drops the candle prefix, and get_rlxbt_backtester_trial shifts domain, but overall it is readable and consistent.
20 tools is on the heavy side for what is fundamentally a historical analogue research surface, and several of those tools are explicitly redundant/deprecated rather than earning their place. The count is not extreme, but the set would be substantially stronger with the superseded snapshot/odd/analogue-map tools removed.
The surface covers the research lifecycle well: discovery (radar, pulse, snapshot), evidence (analogue map, evidence board, track record), hypothesis testing (evaluate, check, replay, event), explanation (explain, inspect), and onboarding/feedback (api guide, compatibility manifest, agent feedback). Gaps are minor and largely intentional, since backtesting execution is delegated to the external RLXBT MCP.
Available Tools
20 toolscheck_candle_orderCheck a Candle OrderBRead-onlyIdempotentInspect
Before the next order. Required: the trader's levelPrice, invalidationPrice and targetPrice (aliases level, stop, target). Do not invent a missing price from P10, P90 or any band. One search, then which of those prices printed first on similar candles: the closest touched day, counts for target first, invalidation first, both in one bar and neither, and a chart permalink. The median of priced round trips appears only at 10 or more touches, after a 0.1 percent fee per side. Under 10 touches the sample is too small. NO_TRADE. Not a win rate. Not a side. Direction after similar windows is a coin flip.
| Name | Required | Description | Default |
|---|---|---|---|
| f | No | Forward horizon in bars from the anchor: 5, 10, 30 or 50. Default 10 | |
| q | No | Pattern length: 3, 5, 8 or 12. Default 5 | |
| symbol | No | BTCUSDT, ETHUSDT or SOLUSDT. Default BTCUSDT | BTCUSDT |
| anchorTs | No | Optional historical snapshot time in Unix milliseconds | |
| interval | No | Chart timeframe. Default 1h. Alias: timeframe | 1h |
| levelPrice | Yes | The trader's entry level. Required. Alias: level. Do not take this from a band. | |
| targetPrice | Yes | The trader's target. Required. Aliases: target, targetLevel. Do not take this from a band. | |
| invalidationPrice | Yes | The trader's invalidation. Required. Aliases: stop, stopPrice, invalidation. Do not take this from a band. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), yet the description adds substantive behavioral caveats: the median round-trip figure only appears at 10+ touches, fees of 0.1% per side are deducted, and the output is explicitly 'not a win rate' and 'not a side'. Those interpretation constraints are exactly what an agent needs and cannot get from the 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?
The text is short but structurally broken: sentence fragments ('Before the next order.', 'NO_TRADE.', 'Not a win rate. Not a side.') with missing subjects and no clear ordering. The most important information — what the tool actually computes — is buried in the middle rather than front-loaded, forcing re-reading.
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 8-parameter analytical tool with no output schema, the description does sketch the return payload (counts per outcome, closest touched day, permalink) and the sample-size gate. It leaves ambiguous whether the sub-10-touch case errors or returns a NO_TRADE verdict, and it never explains how pattern length or forward horizon affect results.
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 the baseline is 3. The description restates the required trio and their aliases, but the schema already documents 'Alias: level' and 'Do not take this from a band' on each property, so the description adds almost no meaning beyond structured fields. Nothing is said about how f, q, anchorTs or interval change the analysis.
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 core is discernible: given an entry level, invalidation and target, it searches similar historical candles and reports which price printed first. But the opening fragment 'Before the next order.' does not state a verb or resource, and the agent must reconstruct the purpose from the middle clause. No sibling is named, so nothing prevents confusion with evaluate_candle_hypothesis or get_trader_decision_v2.
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?
'Before the next order' is an implied timing cue, and 'Do not invent a missing price from P10, P90 or any band' is a useful input precondition. However there is no explicit when-not guidance, no routing to the many sibling analysis tools, and no statement of what to do when a required price is genuinely unavailable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_candle_hypothesisEvaluate a Price-Level HypothesisARead-onlyIdempotentInspect
Investigate a caller-named price level using the chart's historical analogues. levelPrice is required. Do not omit it. The tool does not fill a neighbour P90, P10, or any other level. Defaults for the rest are BTCUSDT, 1h, q=5, f=10. Optionally add targetPrice and/or invalidationPrice: one alone reports how often reached episodes then hit it; both (on opposite sides of the level) also compare event order. Aliases timeframe, level, target and stop are accepted and echoed in inputAdjustments. 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: 5, 10, 30 or 50. Defaults to 10 | |
| q | No | Candles in the matched pattern: 3, 5, 8 or 12. Defaults to 5 | |
| 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. Defaults to 1h. Alias: timeframe | 1h |
| token_id | No | Optional token. No token or payment is needed during the free access experiment. | |
| levelPrice | Yes | Price the caller is investigating. Required. The tool does not fill a neighbour P90, P10, or any other level. Above the query close is an upward reach, below it a downward reach. Alias: level | |
| chart_token | No | Optional account key; all tools work anonymously during the free access experiment. | |
| targetPrice | No | Optional hypothesis target after reaching levelPrice. Alone it reports how often touched episodes then reached it; with invalidationPrice (opposite side of levelPrice) it also compares event order. Alias: target | |
| invalidationPrice | No | Optional price that invalidates the hypothesis after reaching levelPrice. An observation threshold, not an executable stop. Usable alone or with targetPrice. Aliases: stop, stopPrice, invalidation |
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 a safe, idempotent, closed-world read, and the description usefully adds that unknown intrabar order is marked ambiguous and that output is descriptive evidence rather than fills, PnL or calibrated future probabilities. The rest of the text enumerates return payload components, which largely duplicates the existing output schema rather than disclosing new behavioral constraints such as cost or performance 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?
The key constraint (levelPrice required) is front-loaded, which is good, but the body is a dense single block of long clauses, and the lengthy enumeration of return components is redundant with the output schema. Several ideas could be pruned without loss.
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 analytical tool with an output schema, the description covers the required input, defaults, optional-parameter interactions, ambiguity handling, and the interpretive caveat about non-calibrated evidence. It is close to complete, with sibling routing being the main missing element.
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 the baseline is 3; the description still adds real meaning, notably that levelPrice above the query close is an upward reach and below it a downward reach, how targetPrice alone vs. with invalidationPrice changes the analysis, and that aliases are echoed in inputAdjustments. Marginal added value beyond a fully documented schema.
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: 'Investigate a caller-named price level using the chart's historical analogues,' and reinforces the required levelPrice. However, it never distinguishes itself from close siblings like investigate_candle_event_hypothesis or replay_candle_hypothesis, 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?
Gives clear operating context: levelPrice is mandatory and must not be omitted, the tool does not fill neighbour levels, defaults are listed, and the optional targetPrice/invalidationPrice combinations are spelled out with what each reports. It stops short of explicitly naming an alternative sibling to use instead in any scenario.
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. 'watch': how any client repeats that loop and when to message the user. '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, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds information annotations cannot express: the call is free and it explains current access for agents, which is behaviorally useful for planning. It does not describe response format or length, keeping it short of a 5.
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 imperative "Start here." followed by one dense sentence listing contents; nothing is padded. Minor redundancy between "how access works" and "explains current access for agents" costs it a point.
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?
One optional parameter, no output schema, so the description carries most of the burden of saying what comes back — and it does, by enumerating the guide's sections. Since the return is free-form prose, the lack of format detail 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 description coverage is 100% and the single `topic` enum is documented in detail inside the schema, including what 'all' adds and what the legacy topics cover. The description never mentions `topic` at all, so it adds nothing 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?
"Returns the candle market-memory guide" names a concrete verb and resource, and "Start here" plus the enumerated contents (presets, recommended call order, band reading, access) make clear this is the orientation doc rather than any of the analysis siblings. An agent can tell immediately this is not evaluate_candle_hypothesis or get_candle_evidence_board.
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?
"Start here" is an explicit directive for when to call it, and "recommended call order" signals it should precede the sibling tools. It gives no when-not guidance or explicit alternative, but for an entry-point guide the positive case is unambiguous.
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. forwardSummary counts how often the low printed before the high, with the spread of those bar numbers and the close distribution at each bar. Quote forwardSummary.lines. That is a summary of similar windows, not a forecast of the next path and not a side. 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?
The annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine interpretive context beyond them: it warns that forwardSummary is a summary of similar windows, not a forecast and not a side, and that terminal quantiles are not an 80% whole-path corridor — exactly the kind of misuse-prevention detail annotations cannot convey.
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?
Six tight sentences: the output inventory leads, then forwardSummary semantics, then three short guardrails. No filler and no repetition of schema content.
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 it does so by enumerating the key result fields and explaining forwardSummary's fields and the instruction to quote forwardSummary.lines. It stops short of describing the overall response envelope or how analogues are ranked, but an agent has enough to call and interpret it.
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 including enums, defaults and the limit/20-neighbour distinction is already documented in the schema. The description mentions no parameter semantics at all, so it earns only the baseline.
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 and resource ('Explore historical paths rebased to the query close') and enumerates the outputs (terminal-close P10/P50/P90, extremes, turn clusters, first-reached quantile). It distinguishes itself from evaluate_candle_hypothesis, but gives no signal separating it from closely-related siblings such as inspect_candle_analogue or search_by_sketch.
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 ('Explore historical paths') and one alternative is named for a distinct task ('Use evaluate_candle_hypothesis for your own levels'). However, there is no explicit statement of when this tool is the wrong choice versus the other twenty sibling tools, and no stated prerequisites.
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_live_pulseCandle Live PulseARead-onlyIdempotentInspect
One call for the whole candle-memory picture of a BTC, ETH or SOL window. Quote brief before answering about that market. brief is the measured close, path lines, low and high spread, closest day, whether the similar-window range held tighter than the volatility-scaled band, and the chart link. Not a side. Also returns closest dated twins, neighbour vs all-history band, what stands out, analogue map (path extremes, first-hit), range ledger, freshness and pre-filled suggestedNextCalls. Those next calls are the closest twin, the track record and the radar. They do not invent a level, target or invalidation from P90 or P10. Call check_candle_order only when the trader already named those three prices. Replaces get_candle_market_snapshot + what_is_odd_in_candle_memory + get_candle_analogue_map. Symbols like BTC/eth and non-preset q/f are normalized. 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 |
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 free. The description still adds real behavioral context: symbol and non-preset q/f values are normalized, a freshness field is returned, suggestedNextCalls come pre-filled, and analogues are framed as "dated look-alikes, not a tested rule" that do not invent levels from P90/P10. It omits error modes and any latency/cost behavior, keeping it short of a 5.
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?
It is front-loaded with the purpose and the replacement list, which is good, but it is a single dense run-on paragraph mixing return-field inventory, sibling routing and a promotional URL with UTM tracking parameters. The marketing link at the end does not help an agent invoke the tool and dilutes an otherwise information-dense block.
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?
There is no output schema, and the tool returns a large composite payload; the description compensates by enumerating the major returned sections (brief contents, closest twins, neighbour vs all-history band, analogue map, range ledger, freshness, suggestedNextCalls). For a six-parameter aggregate tool that is close to complete, with only minor ambiguity about the exact shape of each section.
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 enums and defaults documented for all six parameters, so the schema carries the load and baseline 3 applies. The description adds only the normalization note for non-preset q/f, which arguably sits in mild tension with the enum that lists only presets, and says nothing extra about anchorTs or limit.
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 opens with a specific verb-and-resource framing ("One call for the whole candle-memory picture of a BTC, ETH or SOL window") and then explicitly names the three siblings it supersedes: get_candle_market_snapshot, what_is_odd_in_candle_memory, and get_candle_analogue_map. An agent can place this tool in the sibling set 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?
It gives an explicit call trigger ("Quote brief before answering about that market") and a hard exclusion for a sibling: "Call check_candle_order only when the trader already named those three prices." It also routes the backtesting use case away to an external MCP, so the when-not conditions are covered as well as the when.
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.
investigate_candle_event_hypothesisInvestigate Event & Session Candle HypothesisARead-onlyIdempotentInspect
Test whether a candle window behaves differently under UTC sessions (Asia, London, US overlap / CPI / NY open, New York), a UTC event hour (for example 14:00 UTC FOMC), weekday versus weekend, or a pre-pattern volatility regime. A price order is replayed only when levelPrice, targetPrice and invalidationPrice are all supplied. Omitting the level returns the session profile and does not invent a price from P90 or P10. A level alone reports reach. Always returns NO_TRADE.
| Name | Required | Description | Default |
|---|---|---|---|
| f | No | Forward horizon preset: 5, 10, 30 or 50. Default 10. | |
| q | No | Pattern length preset: 3, 5, 8 or 12. Default 5. | |
| symbol | No | BTCUSDT, ETHUSDT or SOLUSDT. Default BTCUSDT. | BTCUSDT |
| dayType | No | Filter analogues by 'weekday' (Mon-Fri), 'weekend' (Sat-Sun), or 'all'. | all |
| session | No | UTC session filter for historical analogues: 'auto' matches the query window's own UTC session; 'asia' (00-08 UTC), 'london' (08-13 UTC), 'usOverlap' (13-16 UTC, CPI/NY open), 'newYork' (16-22 UTC), 'lateUtc' (22-24 UTC), or 'all'. | auto |
| utcHour | No | Optional specific UTC event hour (0..23) to condition on, e.g. 14 for FOMC or 12/13 for CPI releases. | |
| anchorTs | No | Optional historical snapshot timestamp in Unix ms. | |
| interval | No | Supported chart timeframe: 5m, 15m, 1h, 4h, or 1d. Default 1h. | 1h |
| levelPrice | No | Price level the caller named. If omitted, the tool returns the session profile and does not invent a level from P90 or P10. Alias: level. | |
| targetPrice | No | Target the caller named. Used only when supplied. Alias: target. | |
| utcHourTolerance | No | Tolerance in hours around utcHour when utcHour is supplied. Default 1.5 hours. | |
| volatilityRegime | No | Pre-pattern candle range filter relative to the query window's mean bar range (uses only the q pattern bars, never forward outcomes): 'compressed' (<0.75x), 'similar_range' (0.5x..2.0x), 'expanded' (>1.25x), or 'all'. | all |
| invalidationPrice | No | Invalidation the caller named, on the opposite side of levelPrice. Used only when supplied. Aliases: stop, stopPrice, invalidation. |
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 needs no restating. The description does add real behavioral value by disclosing that it always returns NO_TRADE and refuses to invent a price from P90/P10 — an anti-hallucination guarantee the schema cannot express. Beyond that, nothing is said about sample sizes, rate limits, or what the analysis actually returns, so it earns a solid but not rich score.
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 analytical question, then the gating rule, then the fallbacks — no filler sentences. The telegraphic fragments ('A level alone reports reach.', 'Always returns NO_TRADE.') are efficient but slightly clipped, and the crucial NO_TRADE disclosure sits at the very end where it is easiest to miss.
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 13 parameters, no output schema, and a genuinely complex research tool, the description covers inputs and gating behavior well but says almost nothing about the result shape beyond the NO_TRADE verdict and 'session profile'/'reach'. Since there is no output schema, a sentence describing what evidence is returned (analogue counts, hit rates, sample size) would close the remaining 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 description coverage is 100%, so the baseline is 3; the description goes beyond it by explaining how three price parameters interact as a set (replay requires all three, level alone gives reach, level omitted gives session profile) rather than describing them individually. That interaction semantics is not derivable from the per-field schema text and directly changes how a caller composes arguments.
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 object ('Test whether a candle window behaves differently') and enumerates the exact conditioning dimensions: UTC sessions, UTC event hour, weekday/weekend, volatility regime. An agent knows precisely what analytical question this answers, though no sibling tool is named (e.g. evaluate_candle_hypothesis or replay_candle_hypothesis), so differentiation is only implicit.
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?
Gives clear conditional logic: a price order is replayed only when levelPrice, targetPrice and invalidationPrice are all supplied; omitting level yields the session profile; a level alone reports reach. This is genuine when-to-use guidance for parameter combinations, but it never names an alternative tool or an exclusion condition against siblings, so it stops 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.
replay_candle_hypothesisReplay a Price-Level HypothesisARead-onlyIdempotentInspect
Replay one already stated price hypothesis as round trips. Entry is the level, and only after a candle opens on the near side and trades through it. A candle that opens through the level is an unfilled gap. Exit is the target, the invalidation, or the final close if the horizon ends. Both prices in one candle stay unknown and are left out of the sum. feePctPerSide defaults to 0.1 percent and is charged on entry and exit. The clock still starts at the anchor. Under 10 touches the verdict is INSUFFICIENT_DATA. Returns NO_TRADE. This is not a win rate, a search over stops, or a replacement for RLXBT.
| Name | Required | Description | Default |
|---|---|---|---|
| f | No | Horizon in bars, counted from the anchor. Default 10 | |
| q | No | Pattern length preset. Default 5 | |
| symbol | No | BTCUSDT, ETHUSDT or SOLUSDT. Default BTCUSDT | |
| anchorTs | No | Optional historical snapshot time in Unix milliseconds | |
| interval | No | Chart timeframe. Default 1h | |
| levelPrice | Yes | Entry level the caller named. Required. Do not invent it from a band. | |
| targetPrice | Yes | Price beyond the level that closes the round trip as a target | |
| feePctPerSide | No | Percent of notional charged on entry and again on exit. Default 0.1 | |
| invalidationPrice | Yes | Price on the other side of the level that closes the round trip as an invalidation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and idempotent, and the description goes well beyond them: fees charged on both sides, gap candles that open through the level counting as unfilled, ambiguous two-price candles excluded from the sum, and the ten-touch INSUFFICIENT_DATA / NO_TRADE verdict thresholds. What it does not disclose is the shape of the round-trip output, 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?
The core mechanic is front-loaded in the first two sentences and every sentence carries rules rather than filler. The telegraphic fragments ("Both prices in one candle stay unknown and are left out of the sum") are terse to the point of being slightly cryptic, but nothing is redundant.
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 nine-parameter simulation with no output schema, the description covers the mechanics an agent needs to call it sensibly: fill conditions, exit rules, cost model, and minimum-sample verdict. It leaves unanswered what a successful result contains (per-trip list vs. aggregate) and what the q pattern-length preset changes, which are the remaining gaps.
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 nine parameters are already documented, and the description mostly restates them (fee default, entry level, target and invalidation as exit conditions). The one genuine addition is "the clock still starts at the anchor," which clarifies that anchorTs governs horizon counting even on replay. That is marginal value over the schema, so baseline 3 fits.
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?
"Replay one already stated price hypothesis as round trips" names a specific verb and resource, and the following sentences pin down entry, exit, and fill rules. It does not explicitly differentiate itself from the near-identically named siblings evaluate_candle_hypothesis or investigate_candle_event_hypothesis, 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?
It states the key precondition (the hypothesis must already be stated, levelPrice must not be invented from a band) and three negative exclusions: not a win rate, not a stop search, not a replacement for RLXBT. It stops short of naming which sibling to use for those adjacent jobs, leaving the routing partly implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_candle_research_watchRun Candle Research Watch CycleARead-onlyIdempotentInspect
Autonomous researcher and standing-watch loop in one call. Scans BTC, ETH and SOL, inspects the tightest neighbour bands, and checks walk-forward range lift. It replays a price order only when the caller supplies levelPrice, invalidationPrice and targetPrice. It does not invent those prices from P90 or P10. Without a complete order it reports the band finding only. UTC session context and watchId cooldown stay. Always returns NO_TRADE.
| 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 | |
| topN | No | How many top radar rows (tightest neighbour bands) to inspect. Default 3. A named order is replayed on each row. Prices are not invented. | |
| symbols | No | Optional subset of BTCUSDT, ETHUSDT, SOLUSDT. Default: all three. | |
| watchId | No | Optional persistent identifier for this agent's watch session (e.g. 'claude-btc-watch'). When supplied, the server remembers what was already reported and suppresses duplicate alerts for quietWindowMinutes unless a new finding type appears or the replay gap shifts by >= 0.5 pp. | |
| intervals | No | Optional timeframes from 5m, 15m, 1h, 4h, 1d. Default: 15m, 1h, 4h. | |
| levelPrice | No | Entry the caller named. Replay runs only when levelPrice, invalidationPrice and targetPrice are all set. Do not invent this from a band. Alias: level. | |
| targetPrice | No | Target the caller named, on the opposite side of levelPrice from the invalidation. Do not invent this from a band. Aliases: target, targetLevel. | |
| feePctPerSide | No | Fee percent per side for costed barrier replay of a named order. Default 0.1. | |
| invalidationPrice | No | Invalidation the caller named, on the opposite side of levelPrice. Do not invent this from P10 or P90. Aliases: stop, stopPrice, invalidation. | |
| quietWindowMinutes | No | Cooldown window in minutes per symbol/interval when watchId is supplied. Default 360 (6 hours). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe, read-only, idempotent profile, and the description adds real behavioral context on top: it never fabricates prices from P90/P10, it degrades gracefully to a band-only report, watchId cooldown suppression applies, and UTC session context is retained. The closing 'Always returns NO_TRADE' is a notable disclosure but is stated without explanation, leaving some uncertainty about what a caller actually receives.
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?
Six short sentences, front-loaded with the core capability before the conditional rules. Most sentences earn their place, though 'UTC session context and watchId cooldown stay' is elliptical to the point of being unclear and could be tightened or dropped.
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, zero-required orchestration tool with no output schema, the description carries the full burden of explaining return values and it does so only partially. 'Always returns NO_TRADE' plus 'reports the band finding only' hints at the output shape but does not describe what a band finding contains, and the relationship between the research scan and the watch loop's persisted state is left implicit.
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 every parameter including the 'do not invent this from a band' caveats, meaning the description largely restates schema content. It adds marginal meaning by framing the three price parameters as a joint precondition for replay and by tying quietWindowMinutes behavior to watchId, but supplies no format, units, or ordering details beyond the schema.
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 first sentence names the composite behavior precisely (research pass plus standing-watch loop in a single call), and the following sentences enumerate the concrete steps: scanning BTC/ETH/SOL, inspecting tightest neighbour bands, and checking walk-forward range lift. It is clearly distinguishable from narrower siblings like scan_candle_memory_radar or check_candle_order, though it never names those siblings explicitly. Domain jargon ('neighbour bands', 'range lift') adds ambiguity for a first-time caller.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives conditional behavior ('replays a price order only when the caller supplies levelPrice, invalidationPrice and targetPrice') and the fallback ('without a complete order it reports the band finding only'), which tells an agent what happens but not when to choose this tool over check_candle_order or replay_candle_hypothesis. No explicit when-to-use or when-not-to-use routing against the 19 siblings is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_candle_memory_radarCandle Memory RadarARead-onlyIdempotentInspect
Start here if you do not know which market to look at. No arguments needed: scans BTC, ETH and SOL across 15m/1h/4h (configurable) and ranks where historical twins agree most on move magnitude right now (neighbour band width vs all-history). Each row links to get_candle_live_pulse. A research lead, not a direction or trade signal.
| 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 | |
| symbols | No | Optional subset of BTCUSDT, ETHUSDT, SOLUSDT (aliases like BTC, eth accepted). Default: all three. | |
| intervals | No | Optional timeframes from 5m, 15m, 1h, 4h, 1d. Default: 15m, 1h, 4h. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this as a read-only, idempotent, non-destructive tool. The description adds useful context beyond that: the scan universe and timeframes, the ranking basis (neighbour band width vs all-history), the row-to-tool linkage, and an important framing caveat ('A research lead, not a direction or trade signal'). It stops short of describing output shape or latency/cost, but the added context is meaningful.
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?
Four short sentences, front-loaded with the entry-point guidance and the scan scope. The caveat is placed at the end where it belongs, and no sentence is redundant.
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?
There is no output schema, so the description carries return-value burden. It partially addresses this by saying each row links to get_candle_live_pulse and explaining what is ranked. What an agent gets back (fields, row count, ordering details) remains slightly underspecified for a scanner tool, but overall it is complete enough to invoke correctly.
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 four parameters with enums, defaults, and allowed values. The description restates the defaults (BTC, ETH, SOL across 15m/1h/4h) and notes configurability, which is mildly helpful but largely duplicative. 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: it scans BTC/ETH/SOL across timeframes and ranks where historical twins agree most on move magnitude. It also positions the tool as the entry point ('Start here if you do not know which market to look at'), which cleanly separates it from detail-oriented siblings like inspect_candle_analogue and get_candle_live_pulse.
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 an explicit when-to-use condition ('Start here if you do not know which market to look at') and notes no arguments are required, plus points to get_candle_live_pulse as the follow-up. It does not explicitly say when to skip this tool in favor of other siblings, so it falls just short of full routing guidance.
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.
submit_agent_feedbackSubmit Agent Wishlist & FeedbackARead-onlyIdempotentInspect
Autonomous agent feedback channel: submit feature requests, needed symbols (e.g. ETH, SOL, altcoins), smaller timeframes (e.g. 1m, 1s, tick), orderbook depth, or execution parameters directly to the engineering team. Our roadmap prioritizes autonomous agent requests.
| Name | Required | Description | Default |
|---|---|---|---|
| contact | No | Optional: Telegram handle, Email, X handle, or team/fund name for priority roadmap notification and custom tier setup | |
| urgency | No | Urgency: 'nice_to_have', 'blocking_strategy' (strategy cannot run without it), or 'willing_to_pay' (ready for commercial tier) | |
| useCase | No | How your agent or trading algorithm would use this feature or data | |
| category | Yes | Feedback category: 'new_symbol_or_pair' (e.g. ETH, SOL, altcoins), 'new_timeframe' (e.g. 1m, 1s, tick), 'orderbook_and_depth' (liquidity, orderbook imbalance), 'backtest_features', 'rate_limits_or_pricing', 'bug_or_discrepancy', 'other' | |
| featureRequest | Yes | Specific dataset, symbol, timeframe, or analytical capability requested by your agent or strategy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses where the submission goes (directly to the engineering team) and what happens next (roadmap prioritization, and that including contact yields priority notification and custom tier setup). That is real behavioral detail not present in the structured fields. The readOnlyHint=true is slightly at odds with a 'submit' action that presumably creates a record, but since it does not mutate strategy or account state it is not a hard contradiction.
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, front-loaded with the channel's identity before the examples, with no structural waste. The closing line about roadmap prioritization is mildly promotional but does convey an incentive an agent may pass along to its operator.
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 five-parameter, fully documented, single-purpose submission tool with no output schema, the definition covers what to send, where it goes, and why contact matters. Nothing an agent needs in order to call 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 both enums are fully documented in the schema, so the schema already does the heavy lifting. The description echoes the same examples (ETH/SOL, 1m/1s/tick) without adding format constraints such as a minimum useful level of detail for featureRequest or useCase.
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 concrete verb and resource: submit feature requests, symbols, timeframes, orderbook depth or execution parameters to the engineering team. This is unmistakably distinct from every sibling, all of which are candle-analysis or backtesting tools, so an agent can route without ambiguity.
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 clear triggering context by enumerating the kinds of gaps that justify a submission (missing symbols, finer timeframes, orderbook depth, execution params). It stops short of stating when NOT to use it — e.g. that bugs belong in category 'bug_or_discrepancy' rather than a feature request, or that support questions should go elsewhere — so it is clear context without explicit exclusions.
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.
2 tool updates
- Changed
evaluate_candle_hypothesis2 fields changed- changed
Input schema / properties / levelPrice / descriptionPrevious value: -"Price to investigate. Historical paths are rebased to the query close; above it means an upward reach, below it a downward reach. If omitted, the neighbour terminal-close P90 above the close is tested (P10 below the close when P90 is not above it) and reported as levelSource. Alias: level"New value: +"Price the caller is investigating. Required. The tool does not fill a neighbour P90, P10, or any other level. Above the query close is an upward reach, below it a downward reach. Alias: level" - added
Input schema / requiredAdded value: +[ + "levelPrice" +]
- Changed
replay_candle_hypothesis2 fields changed- changed
Input schema / properties / levelPrice / descriptionPrevious value: -"Entry level. The trade exists only after price trades through this level. Default is the neighbour P90 above the close"New value: +"Entry level the caller named. Required. Do not invent it from a band." - changed
Input schema / requiredPrevious value: -[ - "targetPrice", - "invalidationPrice" -]New value: +[ + "levelPrice", + "targetPrice", + "invalidationPrice" +]
3 tool updates
- Added
check_candle_order - Changed
investigate_candle_event_hypothesis3 fields changed- changed
Input schema / properties / invalidationPrice / descriptionPrevious value: -"Optional invalidation price on the opposite side of levelPrice."New value: +"Invalidation the caller named, on the opposite side of levelPrice. Used only when supplied. Aliases: stop, stopPrice, invalidation." - changed
Input schema / properties / levelPrice / descriptionPrevious value: -"Price level to test. Defaults to neighbour terminal-close P90 above close (or P10 below)."New value: +"Price level the caller named. If omitted, the tool returns the session profile and does not invent a level from P90 or P10. Alias: level." - changed
Input schema / properties / targetPrice / descriptionPrevious value: -"Optional target price after reaching levelPrice."New value: +"Target the caller named. Used only when supplied. Alias: target."
- Changed
run_candle_research_watch5 fields changed- changed
Input schema / properties / feePctPerSide / descriptionPrevious value: -"Fee percent per side for costed barrier replay. Default 0.1."New value: +"Fee percent per side for costed barrier replay of a named order. Default 0.1." - added
Input schema / properties / invalidationPriceAdded value: +{ + "description": "Invalidation the caller named, on the opposite side of levelPrice. Do not invent this from P10 or P90. Aliases: stop, stopPrice, invalidation.", + "exclusiveMinimum": 0, + "type": "number" +} - added
Input schema / properties / levelPriceAdded value: +{ + "description": "Entry the caller named. Replay runs only when levelPrice, invalidationPrice and targetPrice are all set. Do not invent this from a band. Alias: level.", + "exclusiveMinimum": 0, + "type": "number" +} - added
Input schema / properties / targetPriceAdded value: +{ + "description": "Target the caller named, on the opposite side of levelPrice from the invalidation. Do not invent this from a band. Aliases: target, targetLevel.", + "exclusiveMinimum": 0, + "type": "number" +} - changed
Input schema / properties / topN / descriptionPrevious value: -"How many top radar rows (tightest neighbour bands) to inspect with competing hypotheses and costed replay. Default 3."New value: +"How many top radar rows (tightest neighbour bands) to inspect. Default 3. A named order is replayed on each row. Prices are not invented."
2 tool updates
- Added
investigate_candle_event_hypothesis - Added
run_candle_research_watch
1 tool update
- Changed
get_api_guide2 fields changed- changed
Input schema / properties / topic / descriptionPrevious value: -"'candles' (default): the start-here guide for the listed tools. 'all' adds the legacy full-profile catalog; other topics cover legacy tool families"New value: +"'candles' (default): the start-here guide for the listed tools. 'watch': how any client repeats that loop and when to message the user. 'all' adds the legacy full-profile catalog; other topics cover legacy tool families" - changed
Input schema / properties / topic / enumPrevious value: -[ - "candles", - "all", - "polymarket", - "analogs", - "backtest", - "patterns", - "selector" -]New value: +[ + "candles", + "watch", + "all", + "polymarket", + "analogs", + "backtest", + "patterns", + "selector" +]
1 tool update
- Added
replay_candle_hypothesis
1 tool update
- Changed
evaluate_candle_hypothesis15 fields changed- changed
Input schema / properties / f / descriptionPrevious value: -"Forward horizon in bars. Only the chart presets 5, 10, 30, and 50 are supported"New value: +"Forward horizon in bars: 5, 10, 30 or 50. Defaults to 10" - changed
Input schema / properties / interval / defaultPrevious value: -"5m"New value: +"1h" - changed
Input schema / properties / interval / descriptionPrevious value: -"Supported chart timeframe: 5m, 15m, 1h, 4h, or 1d"New value: +"Supported chart timeframe: 5m, 15m, 1h, 4h, or 1d. Defaults to 1h. Alias: timeframe" - changed
Input schema / properties / invalidationPrice / descriptionPrevious value: -"Optional price that invalidates the user hypothesis after reaching levelPrice. This is an observation threshold, not an executable stop."New value: +"Optional price that invalidates the hypothesis after reaching levelPrice. An observation threshold, not an executable stop. Usable alone or with targetPrice. Aliases: stop, stopPrice, invalidation" - changed
Input schema / properties / levelPrice / descriptionPrevious value: -"Price to investigate. Historical paths are rebased to the query close; above it means an upward reach, below it a downward reach."New value: +"Price to investigate. Historical paths are rebased to the query close; above it means an upward reach, below it a downward reach. If omitted, the neighbour terminal-close P90 above the close is tested (P10 below the close when P90 is not above it) and reported as levelSource. Alias: level" - changed
Input schema / properties / q / descriptionPrevious value: -"Candles in the matched pattern. Only the chart presets 3, 5, 8, and 12 are supported"New value: +"Candles in the matched pattern: 3, 5, 8 or 12. Defaults to 5" - changed
Input schema / properties / targetPrice / descriptionPrevious value: -"Optional user hypothesis target after reaching levelPrice. Supply together with invalidationPrice, on opposite sides of levelPrice."New value: +"Optional hypothesis target after reaching levelPrice. Alone it reports how often touched episodes then reached it; with invalidationPrice (opposite side of levelPrice) it also compares event order. Alias: target" - removed
Input schema / requiredRemoved value: -[ - "levelPrice" -] - added
Output schema / properties / afterTouch / properties / thresholdAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "denominator": { + "const": "touched_episodes", + "type": "string" + }, + "kind": { + "enum": [ + "target", + "invalidation" + ], + "type": "string" + }, + "notReached": { + "minimum": 0, + "type": "integer" + }, + "note": { + "type": "string" + }, + "price": { + "exclusiveMinimum": 0, + "type": "number" + }, + "reachedAfterTouch": { + "minimum": 0, + "type": "integer" + }, + "reachedInTouchBar": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "kind", + "price", + "denominator", + "samples", + "reachedInTouchBar", + "reachedAfterTouch", + "notReached", + "note" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / afterTouch / requiredPrevious value: -[ - "terminalChangeFromLevelPct", - "sequence" -]New value: +[ + "terminalChangeFromLevelPct", + "sequence", + "threshold" +] - changed
Output schema / properties / baseline / anyOfPrevious value: -[ - { - "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" - } -]New value: +[ + { + "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" + } + ] + }, + "threshold": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "denominator": { + "const": "touched_episodes", + "type": "string" + }, + "kind": { + "enum": [ + "target", + "invalidation" + ], + "type": "string" + }, + "notReached": { + "minimum": 0, + "type": "integer" + }, + "note": { + "type": "string" + }, + "price": { + "exclusiveMinimum": 0, + "type": "number" + }, + "reachedAfterTouch": { + "minimum": 0, + "type": "integer" + }, + "reachedInTouchBar": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "kind", + "price", + "denominator", + "samples", + "reachedInTouchBar", + "reachedAfterTouch", + "notReached", + "note" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "terminalChangeFromLevelPct", + "sequence", + "threshold" + ], + "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" + } +] - added
Output schema / properties / hypothesis / properties / thresholdModeAdded value: +{ + "enum": [ + "PAIR", + "SINGLE_THRESHOLD", + "NONE" + ], + "type": "string" +} - changed
Output schema / properties / hypothesis / requiredPrevious value: -[ - "entryPrice", - "levelPrice", - "reachDirection", - "levelOffsetPct", - "targetPrice", - "invalidationPrice" -]New value: +[ + "entryPrice", + "levelPrice", + "reachDirection", + "levelOffsetPct", + "targetPrice", + "invalidationPrice", + "thresholdMode" +] - changed
Output schema / properties / volatilityCheck / properties / analogues / anyOfPrevious value: -[ - { - "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" - } -]New value: +[ + { + "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" + } + ] + }, + "threshold": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "denominator": { + "const": "touched_episodes", + "type": "string" + }, + "kind": { + "enum": [ + "target", + "invalidation" + ], + "type": "string" + }, + "notReached": { + "minimum": 0, + "type": "integer" + }, + "note": { + "type": "string" + }, + "price": { + "exclusiveMinimum": 0, + "type": "number" + }, + "reachedAfterTouch": { + "minimum": 0, + "type": "integer" + }, + "reachedInTouchBar": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "kind", + "price", + "denominator", + "samples", + "reachedInTouchBar", + "reachedAfterTouch", + "notReached", + "note" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "terminalChangeFromLevelPct", + "sequence", + "threshold" + ], + "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" + } +] - changed
Output schema / properties / volatilityCheck / properties / baseline / anyOfPrevious value: -[ - { - "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" - } -]New value: +[ + { + "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" + } + ] + }, + "threshold": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "denominator": { + "const": "touched_episodes", + "type": "string" + }, + "kind": { + "enum": [ + "target", + "invalidation" + ], + "type": "string" + }, + "notReached": { + "minimum": 0, + "type": "integer" + }, + "note": { + "type": "string" + }, + "price": { + "exclusiveMinimum": 0, + "type": "number" + }, + "reachedAfterTouch": { + "minimum": 0, + "type": "integer" + }, + "reachedInTouchBar": { + "minimum": 0, + "type": "integer" + }, + "samples": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "kind", + "price", + "denominator", + "samples", + "reachedInTouchBar", + "reachedAfterTouch", + "notReached", + "note" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "terminalChangeFromLevelPct", + "sequence", + "threshold" + ], + "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" + } +]
2 tool updates
- Added
get_candle_live_pulse - Added
scan_candle_memory_radar
1 tool update
- Added
submit_agent_feedback
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."
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 gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityCmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs112 npm29 PyPIMIT
- AlicenseAqualityDmaintenanceEnables 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.1623 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.